diff --git a/.dockerignore b/.dockerignore index dc99ecb..0fdf199 100644 --- a/.dockerignore +++ b/.dockerignore @@ -4,6 +4,3 @@ **/target/ protocol-testing/*.Dockerfile protocol-testing/docker-compose.yaml -!substreams/target/wasm32-unknown-unknown/release/*.wasm -!evm/out -!evm/cache diff --git a/.github/actions/substreams-docker/action.yml b/.github/actions/substreams-docker/action.yml new file mode 100644 index 0000000..7927789 --- /dev/null +++ b/.github/actions/substreams-docker/action.yml @@ -0,0 +1,49 @@ +name: Build Docker Images +description: Build Docker images +inputs: + protocols: + required: true + description: Protocols to test +runs: + using: "composite" + steps: + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Cache Docker layers + uses: actions/cache@v4 + with: + path: /tmp/.buildx-cache + key: ${{ runner.os }}-buildx-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-buildx- + + - name: Build db image + run: | + docker buildx build \ + --cache-from type=local,src=/tmp/.buildx-cache \ + --cache-to type=local,dest=/tmp/.buildx-cache \ + -f protocol-testing/postgres.Dockerfile \ + -t protocol-testing-db:latest \ + --load . + shell: bash + + - name: Build test-runner image + run: | + docker buildx build \ + --cache-from type=local,src=/tmp/.buildx-cache \ + --cache-to type=local,dest=/tmp/.buildx-cache \ + -f protocol-testing/run.Dockerfile \ + -t protocol-testing-test-runner:latest \ + --load . + shell: bash + + - name: Run protocol tests + env: + PROTOCOLS: ${{ inputs.protocols }} + RPC_URL: ${{ env.RPC_URL }} + SUBSTREAMS_API_TOKEN: ${{ env.SUBSTREAMS_API_TOKEN }} + run: | + docker compose up --abort-on-container-exit --exit-code-from test-runner + shell: bash + working-directory: protocol-testing diff --git a/.github/workflows/substreams.tests.yaml b/.github/workflows/substreams.tests.yaml new file mode 100644 index 0000000..6f4bb7c --- /dev/null +++ b/.github/workflows/substreams.tests.yaml @@ -0,0 +1,90 @@ +name: Substreams Tests + +env: + RPC_URL: ${{ secrets.RPC_URL }} + SUBSTREAMS_API_TOKEN: ${{ secrets.SUBSTREAMS_API_TOKEN }} + AUTH_API_KEY: ${{ secrets.AUTH_API_KEY }} + EXCLUDED_SUBSTREAMS: target|crates|ethereum-template-factory|ethereum-template-singleton + +on: + workflow_dispatch: + pull_request: + paths: + - 'substreams/**' + +jobs: + detect-changes: + runs-on: ubuntu-latest + outputs: + protocol-testing-changed: ${{ steps.protocol-testing-files-changed.outputs.any_changed }} + substreams-changed: ${{ steps.substreams-files-changed.outputs.any_changed }} + all-substreams: ${{ steps.all_substreams.outputs.all_substreams }} + changed-substreams: ${{ steps.changes.outputs.changed_substreams }} + steps: + - uses: actions/checkout@v4 + + - name: Check if any files changed under protocol-testing + id: protocol-testing-files-changed + uses: tj-actions/changed-files@v35 + with: + files: protocol-testing/** + + - name: Check if any files changed under substreams + id: substreams-files-changed + uses: tj-actions/changed-files@v35 + with: + files: substreams/** + + - name: Get all substreams folders + id: all_substreams + run: | + FOLDERS=$(find substreams -mindepth 1 -maxdepth 1 -type d \ + -exec basename {} \; | sort | \ + grep -v -E "^(${EXCLUDED_SUBSTREAMS})$" | \ + tr '\n' ' ') + if [ -z "$FOLDERS" ]; then + echo "No substreams folders found" + else + echo "Substreams folders: $FOLDERS" + fi + echo "all_substreams=$FOLDERS" >> $GITHUB_OUTPUT + + - name: Fetch full git history + if: steps.substreams-files-changed.outputs.any_changed == 'true' + run: git fetch --unshallow || true + + - name: Get changed substreams folders + id: changes + if: steps.substreams-files-changed.outputs.any_changed == 'true' + run: | + CHANGED=$(git diff --name-only origin/main ${{ github.sha }} | \ + grep '^substreams/' | awk -F'/' '{print $2}' | sort -u | \ + grep -v -E "^(${EXCLUDED_SUBSTREAMS})$") + if [ -z "$CHANGED" ]; then + echo "No changed substreams" + else + echo "Changed substreams: $CHANGED" + fi + echo "changed_substreams=$CHANGED" >> $GITHUB_OUTPUT + + test-changed: + runs-on: ubuntu-latest + needs: [detect-changes] + if: needs.detect-changes.outputs.substreams-changed == 'true' && needs.detect-changes.outputs.changed-substreams != '' + steps: + - uses: actions/checkout@v4 + - name: Run tests for changed substreams + uses: ./.github/actions/substreams-docker + with: + protocols: ${{ needs.detect-changes.outputs.changed-substreams }} + + test-all: + runs-on: ubuntu-latest + needs: [detect-changes] + if: github.event_name == 'workflow_dispatch' + steps: + - uses: actions/checkout@v4 + - name: Run all protocol-testing tests + uses: ./.github/actions/substreams-docker + with: + protocols: ${{ needs.detect-changes.outputs.all-substreams }} diff --git a/.gitignore b/.gitignore index bfaeedf..6e0396a 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,6 @@ # will have compiled files and executables debug/ target/ -!substreams/target/wasm32-unknown-unknown/release/*.wasm # Substreams spkg files are build artifacts *.spkg diff --git a/evm/.gitignore b/evm/.gitignore index 01b6f92..409f575 100644 --- a/evm/.gitignore +++ b/evm/.gitignore @@ -1,5 +1,6 @@ # Compiler files cache/ +out/ coverage/ # Ignores development broadcast logs diff --git a/evm/out/AdapterTest.sol/AdapterTest.json b/evm/out/AdapterTest.sol/AdapterTest.json deleted file mode 100644 index 8585ed2..0000000 --- a/evm/out/AdapterTest.sol/AdapterTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"fractionToInt","inputs":[{"name":"price","type":"tuple","internalType":"struct ISwapAdapterTypes.Fraction","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"runPoolBehaviourTest","inputs":[{"name":"adapter","type":"address","internalType":"contract ISwapAdapter"},{"name":"poolIds","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stringPctgs","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LimitExceeded","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotImplemented","inputs":[{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"Unavailable","inputs":[{"name":"reason","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x6080604052346102be57600160ff19600c541617600c55600160ff19601e541617601e556040516080810181811060018060401b0382111761020c5760405261004860406102c2565b6002815261302560f01b6020820152815261006360406102c2565b6004815263302e312560e01b6020820152602082015261008360406102c2565b600381526235302560e81b602082015260408201526100a260406102c2565b60048152633130302560e01b60208201526060820152601f546004601f5580600410610220575b50601f5f9081525f51602061445b5f395f51905f52915b600482106100f75760405161412590816103368239f35b80518051906001600160401b03821161020c5761011485546102e7565b601f81116101d1575b50602090601f83116001146101685792826001949360209386955f9261015d575b50505f19600383901b1c191690841b1786555b019301910190916100e0565b015190505f8061013e565b90601f19831691865f52815f20925f5b8181106101b957509360209360019693879693838895106101a1575b505050811b018655610151565b01515f1960f88460031b161c191690555f8080610194565b82840151855560019094019360209384019301610178565b6101fc90865f5260205f20601f850160051c81019160208610610202575b601f0160051c019061031f565b5f61011d565b90915081906101ef565b634e487b7160e01b5f52604160045260245ffd5b601f5f525f51602061445b5f395f51905f52017fa03837a25210ee280c2113ff4b77ca23440b19d4866cca721c801278fd08d80b5b81811061026257506100c9565b8061026f600192546102e7565b8061027c575b5001610255565b601f8111831461029157505f81555b5f610275565b6102ad90825f5283601f60205f20920160051c8201910161031f565b805f525f602081208183555561028b565b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761020c57604052565b90600182811c92168015610315575b602083101461030157565b634e487b7160e01b5f52602260045260245ffd5b91607f16916102f6565b81811061032a575050565b5f815560010161031f56fe610140806040526004361015610013575f80fd5b5f3560e01c90816308c4174514610d4e575080631ed7831c14610cd15780632ade388014610b0f5780633e5e3c2314610a925780633f7286f414610a1557806366d9a9a01461086557806385226c81146107d2578063916a17c614610544578063a00872f1146104dc578063b5508aa914610442578063ba414fa61461041e578063d170c3cc1461016a578063e20c9f71146100dd5763fa7626d4146100b7575f80fd5b346100d9575f3660031901126100d957602060ff601e54166040519015158152f35b5f80fd5b346100d9575f3660031901126100d95760405180602060155491828152019060155f527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475905f5b81811061014b576101478561013b81870382610dd1565b60405191829182610df2565b0390f35b82546001600160a01b0316845260209093019260019283019201610124565b346100d95760403660031901126100d9576004356001600160a01b038116908181036100d957602435906001600160401b0382116100d957366023830112156100d9578160040135916101bc8361104b565b926101ca6040519485610dd1565b8084526024602085019160051b830101913683116100d957602401905b82821061040e575050506101fa82611178565b51604051906348bd7dfd60e01b825260048201525f60248201525f60448201525f8160648183885af180156103df5761023a915f916103ec575b5061122c565b15925f5b83518110156103ea576102518185611195565b516040519063ecbbc03360e01b825260048201525f8160248183875af180156103df5786915f91610329575b5060019291610323916102a2866001600160a01b0361029b84611178565b51166112d7565b6102b586868060a01b0361029b84611185565b6102ed826102c3868b611195565b51878060a01b036102d385611178565b5116888060a01b036102e486611185565b5116918b6115bb565b6102f78489611195565b5190858060a01b0361030882611185565b51169061031a878060a01b0391611178565b511691886115bb565b0161023e565b9150503d805f833e61033b8183610dd1565b8101906020818303126100d9578051906001600160401b0382116100d957019080601f830112156100d95781516103718161104b565b9161037f6040519384610dd1565b81835260208084019260051b8501019081116100d9576020899401915b8183106103ad57505050600161027d565b825195989593945091929091906001600160a01b03811681036100d9578152939693889392602090810192910161039c565b6040513d5f823e3d90fd5b005b61040891503d805f833e6104008183610dd1565b8101906111a9565b85610234565b81358152602091820191016101e7565b346100d9575f3660031901126100d95760206104386110dd565b6040519015158152f35b346100d9575f3660031901126100d95760195461045e8161104b565b9061046c6040519283610dd1565b80825260195f9081527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b8383106104b057604051806101478782610f07565b6001602081926040516104ce816104c78189610fca565b0382610dd1565b81520192019201919061049b565b346100d95760203660031901126100d957600435601f548110156100d95761050390610f66565b610531576104c761051d6101479260405192838092610fca565b604051918291602083526020830190610e34565b634e487b7160e01b5f525f60045260245ffd5b346100d9575f3660031901126100d957601c546105608161104b565b61056d6040519182610dd1565b8181526020810191601c5f527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211925f905b8282106105b357604051806101478682610e58565b6040516105bf81610d87565b85546001600160a01b031681526040516001870180548083525f91825260208083209084019291905b816007840110610733578460019794600297946020979461064b945491818110610717575b8181106106fb575b8181106106df575b8181106106c3575b8181106106a7575b81811061068b575b818110610671575b1061065d575b500382610dd1565b8382015281520195019101909361059e565b6001600160e01b031916815286018d610643565b828a1b6001600160e01b0319168452928901928b0161063d565b604083901b6001600160e01b0319168452928901928b01610635565b606083901b6001600160e01b0319168452928901928b0161062d565b608083901b6001600160e01b0319168452928901928b01610625565b60a083901b6001600160e01b0319168452928901928b0161061d565b60c083901b6001600160e01b0319168452928901928b01610615565b60e083901b6001600160e01b0319168452928901928b0161060d565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e08201520194019201916105e8565b346100d9575f3660031901126100d957601a546107ee8161104b565b906107fc6040519283610dd1565b808252601a5f9081527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b83831061084057604051806101478782610f07565b600160208192604051610857816104c78189610fca565b81520192019201919061082b565b346100d9575f3660031901126100d957601b546108818161104b565b61088e6040519182610dd1565b8181526020810191601b5f527f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1925f905b8282106108d457604051806101478682610e58565b6040516108e081610d87565b85546001600160a01b031681526040516001870180548083525f91825260208083209084019291905b8160078401106109765784600197946002979460209794610964945491818110610717578181106106fb578181106106df578181106106c3578181106106a75781811061068b57818110610671571061065d57500382610dd1565b838201528152019501910190936108bf565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e0820152019401920191610909565b346100d9575f3660031901126100d95760405180602060175491828152019060175f527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15905f5b818110610a73576101478561013b81870382610dd1565b82546001600160a01b0316845260209093019260019283019201610a5c565b346100d9575f3660031901126100d95760405180602060185491828152019060185f527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e905f5b818110610af0576101478561013b81870382610dd1565b82546001600160a01b0316845260209093019260019283019201610ad9565b346100d9575f3660031901126100d957601d54610b2b8161104b565b90610b396040519283610dd1565b808252602082019081601d5f527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f5f915b838310610c3e57848660405191829160208301906020845251809152604083019060408160051b85010192915f905b828210610ba857505050500390f35b919390929450603f198682030182528451906020604082019260018060a01b0381511683520151916040602083015282518091526060820190602060608260051b8501019401925f5b828110610c135750505050506020806001929601920192018594939192610b99565b9091929394602080610c31600193605f198782030189528951610e34565b9701950193929101610bf1565b604051610c4a81610d87565b82546001600160a01b03168152600183018054610c668161104b565b91610c746040519384610dd1565b81835260208301905f5260205f20905f905b838210610cac575050505060019282602092836002950152815201920192019190610b6a565b600160208192604051610cc3816104c7818a610fca565b815201930191019091610c86565b346100d9575f3660031901126100d95760405180602060165491828152019060165f527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289905f5b818110610d2f576101478561013b81870382610dd1565b82546001600160a01b0316845260209093019260019283019201610d18565b346100d95760403660031901126100d957610d7f602091610d6e81610d87565b600435815260243583820152611080565b604051908152f35b604081019081106001600160401b03821117610da257604052565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b03821117610da257604052565b90601f801991011681019081106001600160401b03821117610da257604052565b60206040818301928281528451809452019201905f5b818110610e155750505090565b82516001600160a01b0316845260209384019390920191600101610e08565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310610e8a57505050505090565b9091929394603f1982820301835285516020606081604085019360018060a01b0381511686520151936040838201528451809452019201905f905b808210610ee45750505060208060019297019301930191939290610e7b565b82516001600160e01b031916845260209384019390920191600190910190610ec5565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310610f3957505050505090565b9091929394602080610f57600193603f198682030187528951610e34565b97019301930191939290610f2a565b601f54811015610f7e57601f5f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b90600182811c92168015610fc0575b6020831014610fac57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610fa1565b5f9291815491610fd983610f92565b808352926001811690811561102e5750600114610ff557505050565b5f9081526020812093945091925b838310611014575060209250010190565b600181602092949394548385870101520191019190611003565b915050602093945060ff929192191683830152151560051b010190565b6001600160401b038111610da25760051b60200190565b811561106c570490565b634e487b7160e01b5f52601260045260245ffd5b80516a084595161401484a0000008102908082046a084595161401484a00000014901517156110ba5760206110b792015190611062565b90565b634e487b7160e01b5f52601160045260245ffd5b908160209103126100d9575190565b60085460ff1680156110ec5790565b50604051630667f9d760e41b81525f5160206140d05f395f51905f5260048201526519985a5b195960d21b60248201526020816044815f5160206140d05f395f51905f525afa9081156103df575f91611146575b50151590565b90506020813d602011611170575b8161116160209383610dd1565b810103126100d957515f611140565b3d9150611154565b805115610f7e5760200190565b805160011015610f7e5760400190565b8051821015610f7e5760209160051b010190565b6020818303126100d9578051906001600160401b0382116100d957019080601f830112156100d9578151906111dd8261104b565b926111eb6040519485610dd1565b82845260208085019360051b8201019182116100d957602001915b8183106112135750505090565b8251600a8110156100d957815260209283019201611206565b5f5b8151811015611275576112418183611195565b51600a8110156112615760051461125a5760010161122e565b5050600190565b634e487b7160e01b5f52602160045260245ffd5b50505f90565b5f5b8151811015611275576112908183611195565b51600a8110156112615760091461125a5760010161127d565b5f5b8151811015611275576112be8183611195565b51600a8110156112615760081461125a576001016112ab565b60405190602082019263095ea7b360e01b845260018060a01b0316928360248401525f1960448401526044835261130f606484610dd1565b82516001600160a01b038316915f91829182855af19061132d612f81565b8261138f575b5081611384575b501561134557505050565b61137d611382936040519063095ea7b360e01b602083015260248201525f604482015260448152611377606482610dd1565b82612fb0565b612fb0565b565b90503b15155f61133a565b805191925081159182156113a7575b5050905f611333565b6113ba92506020809183010191016115a3565b5f8061139e565b6001600160401b038111610da257601f01601f191660200190565b91908260409103126100d9576040516113f481610d87565b6020808294805184520151910152565b6020818303126100d9578051906001600160401b0382116100d9570181601f820112156100d95780516114368161104b565b926114446040519485610dd1565b81845260208085019260061b840101928184116100d957602001915b83831061146e575050505090565b602060409161147d84866113dc565b815201920191611460565b60a0919360209360808301958352600180851b031684830152600180841b03166040820152608060608201528451809452019201905f5b8181106114cc5750505090565b82518452602093840193909201916001016114bf565b906080828203126100d9576115139060408051936114ff85610db6565b8051855260208101516020860152016113dc565b604082015290565b9081526001600160a01b039182166020820152911660408201525f6060820152608081019190915260a00190565b60405190611558606083610dd1565b603682527536103a3790383934b1b29030b33a32b91039bbb0b81760511b6040837f45786563757465642070726963652073686f756c64206265206f72206571756160208201520152565b908160209103126100d9575180151581036100d95790565b6101009490945260405163549387df60e11b8152600481018290526001600160a01b0380841660248301528416604482015291939290915f81806064810160c08490520381836001600160a01b0389165af180156103df575f90612eef575b6116249150611178565b5160a052606060e081905260405161167e916116409082610dd1565b602381527f53656c6c206c696d69742073686f756c6420626520677265617465722074686160208201526206e20360ec1b604082015260a051613073565b60e051505f8061170661173360405161169960e05182610dd1565b603681527f544553543a2054657374696e672070726963657320666f722070616972202573602082015275080b4f88095ccb8814d95b1b081b1a5b5a5d0e88095960521b6040820152604051928391638ef3f39960e01b60208401526080602484015260a4830190610e34565b6001600160a01b038a811660448401528716606483015260a051608483015203601f198101835282610dd1565b6020815191016a636f6e736f6c652e6c6f675afa506040516348bd7dfd60e01b8152600481018390526001600160a01b038086166024830152821660448201525f8180606481010381836001600160a01b0389165af180156103df576117a0915f91612ed5575b5061127b565b90604051916117b060a084610dd1565b60048352608036602085013715612ec9575f5b6117cc83611178565b526103e860a051046117dd83611185565b52815160021015610f7e5760e051820160a05160011c9052815160031015610f7e5760a051608083015260405163155adc9160e31b8152935f858061182886868b8a60048601611488565b0381836001600160a01b0386165af19485156103df575f95612ead575b5061185861185286611178565b51611080565b85515f198101919082116110ba576118766118526118d09389611195565b60e05160405192906118889084610dd1565b603083527f5072696365206174206c696d69742073686f756c6420626520736d616c6c657260208401526f0207468616e20707269636520617420360841b60408401526130e4565b6118dc61185286611178565b85515f1981019081116110ba576119776119905f936118ff61185286958c611195565b60e0516040519291906119129084610dd1565b602d83527f544553543a20507269636520617420303a2025642c207072696365206174207360208401526c195b1b081b1a5b5a5d0e880959609a1b604084015260405194859363ca47c4eb60e01b602086015260e05160248601526084850190610e34565b916044840152606483015203601f198101835282610dd1565b6020815191016a636f6e736f6c652e6c6f675afa5060e0516040516119f6916119b99082610dd1565b602581527f544553543a2054657374696e67206265686176696f7220666f72207072696365602082015264020617420360dc1b6040820152613119565b611a49611a0286611178565b5151604061012081905280519190611a1a9083610dd1565b601882527f4e6f6d696e61746f722073686f756c646e2774206265203000000000000000006020830152613073565b611a9b6020611a5787611178565b5101516101205180519190611a6c9083610dd1565b601a82527f44656e6f6d696e61746f722073686f756c646e277420626520300000000000006020830152613073565b611aa761185286611178565b946101205150611ae9866101205151611ac36101205182610dd1565b6014815273151154d50e88141c9a58d948185d080c0e88095960621b602082015261315d565b6101205151611af781610db6565b5f81525f6020820152610120515190611b0f82610d87565b5f808352602083015261012051015283515f1981019081116110ba57611b359085611195565b5160058181020481036110ba575f80610120515160208101906370a0823160e01b825230602482015260248152611b6d604482610dd1565b51908b5afa50611b8d611b7e612f81565b602080825183010191016110ce565b50601180546001600160a01b0319166001600160a01b038a16179055600f805463ffffffff19166370a08231179055600e5468010000000000000000811015610da25760018101600e55600e54811015610f7e57600e5f5260205f200130905560018060a01b0360115416600f5460e01b60105490611c0a613328565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690815f52602052610120515f2061012051516020810190611c6081611c52888886613311565b03601f198101835282610dd1565b5190205f5260205260ff6003610120515f2001541615612e9f575b6001600160a01b0384165f908152600d60205260409020905f52602052611c52611cb8610120515f20936101205151928391602083019586613311565b5190205f52602052610120515f206001810154926002820154611cdb8186613262565b612ced575b82546101205151630667f9d760e41b81526001600160a01b038616600482015260248101829052959091906020876044815f5160206140d05f395f51905f525afa968715612cac575f97612cb9575b506001908201610100031b5f1901811b1986165f5160206140d05f395f51905f523b156100d95761012051516370ca10bb60e01b81526001600160a01b038716600482015260248101939093526005840290911b1760448201525f81606481835f5160206140d05f395f51905f525af18015612cac57612c98575b50600f5460e01b6020611dfb6024611dc2600d613402565b61012051519384918183019663ffffffff60e01b1687528051918291018484015e810160c051838201520301601f198101835282610dd1565b60115460c051915191928392916001600160a01b03165afa611e1b612f81565b6010549091906001600160fb1b03811681036124715760c05183519093906020811115612c9257506020905b60c051925b828410612c2c575050505015918215612c1e575b5050612b31575050506bffffffffffffffffffffffff60a01b6011541660115563ffffffff19600f5416600f55600e5460c051600e5580612b06575b5060c0516010556013805460ff19169055601454611eb990610f92565b80612aa4575b506101205151634b88b8ad60e11b815260208160048160c0515f5160206140d05f395f51905f525af180156123da5760c051608052612a71575b5060015b84518110156124b7575f80611fb8611fde611f1785610f66565b50611f22868b611195565b51611fca6104c7611f91610120515194611f3e60e05187610dd1565b603086527f544553543a2054657374696e67206265686176696f7220666f7220707269636560208701526f1030ba1012b99037b3103634b6b4ba1760811b61012051870152610120515192838092610fca565b6101205151635821efa160e01b602082015260e05160248201529586946084860190610e34565b84810360231901604486015290610e34565b90606483015203601f198101835282610dd1565b6020815191016a636f6e736f6c652e6c6f675afa506120006118528284611195565b5f8061207861209c8c612013878c611195565b516101205151916120276101205184610dd1565b601783527f544553543a205377617070696e67202564206f662025730000000000000000006020840152610120515194859363038fd88960e31b602086015260e05160248601526084850190610e34565b60448401929092526001600160a01b0316606483015203601f198101835282610dd1565b6020815191016a636f6e736f6c652e6c6f675afa508460808a896120e16120c3878c611195565b516101205151638307c65560e01b815295869485946004860161151b565b038160c05160018060a01b038a165af19081156123da5760c05191612489575b508051806a084595161401484a0000008102046a084595161401484a00000014811517156124715761214e61215a916a084595161401484a000000612146878c611195565b519102611062565b91610120510151611080565b916121a08261012051516121716101205182610dd1565b601d81527f544553543a20202d2045786563757465642070726963653a2020202564000000602082015261315d565b6121e58161012051516121b66101205182610dd1565b601d81527f544553543a20202d20507269636520617420616d6f756e743a20202564000000602082015261315d565b61222a8361012051516121fb6101205182610dd1565b601d81527f544553543a20202d20507269636520616674657220737761703a202564000000602082015261315d565b61010051156123e95760e05161012051516123659461230893909261229c9291906122559083610dd1565b602c82527f50726963652073686f756c642062652067726561746564207468616e2065786560208301526b31baba32b210383934b1b29760a11b61012051830152856131a0565b60e051610120515191906122b09083610dd1565b603782527f45786563757465642070726963652073686f756c64206265206772656174657260208301527f207468616e20707269636520616674657220737761702e00000000000000000061012051830152836130e4565b60e0516101205151919061231c9083610dd1565b602e82527f50726963652073686f756c642062652067726561746564207468616e2070726960208301526d31b29030b33a32b91039bbb0b81760911b61012051830152896130e4565b610120515190631135fc2960e21b8252608051600483015260208260248160c0515f5160206140d05f395f51905f525af19182156123da576001926123ac575b5001611efd565b6123cc9060203d81116123d3575b6123c48183610dd1565b8101906115a3565b505f6123a5565b503d6123ba565b61012051513d60c051823e3d90fd5b6124129061240361246c946123fc611549565b908d6131a0565b61240b611549565b908b6131a0565b61012051519061242460e05183610dd1565b602d82527f50726963652073686f756c64206265206f7220657175616c20746f207072696360208301526c329030b33a32b91039bbb0b81760991b61012051830152896131a0565b612365565b634e487b7160e01b60c051526011600452602460c051fd5b6124aa915060803d81116124b0575b6124a28183610dd1565b8101906114e2565b5f612101565b503d612498565b5050915091939250606960a0510260a051810460691460a0511517156124715761012051516348bd7dfd60e01b815260c08051600483018890526001600160a01b0387811660248501528681166044850152915160649485900497949192849291839188165af180156123da576125379160c05191612a55575b506112a9565b156128f5576125a184610120515161255160e05182610dd1565b603681527f544553543a2054657374696e6720726576657274206265686176696f722061626020820152751bdd99481d1a19481cd95b1b081b1a5b5a5d0e88095960521b6101205182015261315d565b61012051805194906125b39086610dd1565b6001855261012051601f19013660208701376125ce85611178565b52610120515163155adc9160e31b815260c05181806125f38888878c60048601611488565b038160c05160018060a01b0388165af190816128d3575b506128665760016126196131d5565b6308c379a0146127d7575b6123da57612633608094611178565b5194612657610120515196879586948594638307c65560e01b86526004860161151b565b60c051919003926001600160a01b03165af190816127ba575b5061275757600161267f6131d5565b6308c379a0146126d3575b6123da575b61138261012051516126a46101205182610dd1565b601781527f544553543a20416c6c207465737473207061737365642e0000000000000000006020820152613119565b6126db6131f0565b806126e7575b5061268a565b60c05160e05161012051519193506127519291906127059082610dd1565b603281527f544553543a204578706563746564206572726f72207768656e207377617070696020820152716e672061626f7665206c696d69743a20257360701b6101205182015261326f565b5f6126e1565b610120515162461bcd60e51b815260206004820152603360248201527f506f6f6c2073686f756c646e27742062652061626c6520746f20737761702061604482015272189bdd99481d1a19481cd95b1b081b1a5b5a5d606a1b6064820152608490fd5b6127d29060803d6080116124b0576124a28183610dd1565b612670565b6127df6131f0565b806127eb575b50612624565b60c05160e05161012051519193506128609291906128099082610dd1565b603881527f544553543a204578706563746564206572726f72207768656e2066657463686960208201527f6e672070726963652061626f7665206c696d69743a20257300000000000000006101205182015261326f565b5f6127e5565b610120515162461bcd60e51b815260206004820152603b60248201527f506f6f6c2073686f756c646e27742062652061626c6520746f2066657463682060448201527f7072696365732061626f7665207468652073656c6c206c696d697400000000006064820152608490fd5b6128f0903d8060c051833e6128e88183610dd1565b810190611404565b61260a565b60e05161012051516129599186919061290e9082610dd1565b603181527f544553543a2054657374696e67206f7065726174696f6e732061626f766520746020820152701a19481cd95b1b081b1a5b5a5d0e880959607a1b6101205182015261315d565b610120518051949061296b9086610dd1565b6001855261012051601f190136602087013761298685611178565b5261012051519363155adc9160e31b855260c05185806129ac8488878c60048601611488565b038160c05160018060a01b0388165af19081156123da576080956129d592612a3b575b50611178565b51946129f9610120515196879586948594638307c65560e01b86526004860161151b565b60c051919003926001600160a01b03165af180156123da57612a1c575b5061268f565b612a349060803d6080116124b0576124a28183610dd1565b505f612a16565b612a50903d8060c051833e6128e88183610dd1565b6129cf565b612a6b91503d8060c051833e6104008183610dd1565b5f612531565b6020813d602011612a9c575b81612a8a60209383610dd1565b810103126100d957516080525f611ef9565b3d9150612a7d565b601f8111600114612abd575060c0516014555b5f611ebf565b601460c051526001601f602060c05120920160051c820191015b818110612afb57505060c08051601490819052905160208120918190559055612ab7565b5f8155600101612ad7565b600e60c05152602060c05120908101905b818110612b245750611e9c565b60c0518155600101612b17565b54915f5160206140d05f395f51905f523b15612c185761012051516370ca10bb60e01b815260c0516001600160a01b03909316600482015260248101939093526044830152818060648101038160c0515f5160206140d05f395f51905f525af180156123da57612bff575b610120515162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b60c051612c0b91610dd1565b60c051612c185780612b9c565b60c05180fd5b600502141590505f80611e60565b90919294612c3d868360051b613262565b8351811015612c7a57830160200151600387901b91906001600160f81b03191687156008898504141715612471576001921c179501929190611e4c565b634e487b7160e01b60c051526032600452602460c051fd5b90611e47565b5f612ca291610dd1565b5f60c0525f611daa565b61012051513d5f823e3d90fd5b9096506020813d602011612ce5575b81612cd560209383610dd1565b810103126100d957519581611d2f565b3d9150612cc8565b612cf78186613262565b6101000361010081116110ba5760ff81116110ba57610120515163348051d760e11b81526001821b60048201525f816024815f5160206140d05f395f51905f525afa908115612cac575f91612e17575b50602091612ddc606a60019361012051519586917f73746453746f726167652066696e642853746453746f72616765293a20506163828401527f6b656420736c6f742e2057652063616e2774206669742076616c7565206772656101205184015269030ba32b9103a3430b7160b51b60e0518401528051918291018484015e81015f838201520301601f198101855284610dd1565b1b836005021015612ded5750611ce0565b610120515162461bcd60e51b815260206004820152908190612e13906024830190610e34565b0390fd5b90503d805f833e612e288183610dd1565b8101906020818303126100d9578051906001600160401b0382116100d957019181601f840112156100d9578251612e5e816113c1565b92612e6e61012051519485610dd1565b818452602082860101116100d957606a6001935f602084612ddc9582809a018386015e830101529350505091612d47565b612ea7613639565b50611c7b565b612ec29195503d805f833e6128e88183610dd1565b935f611845565b61271060a051046117c3565b612ee991503d805f833e6104008183610dd1565b5f61179a565b503d805f833e612eff8183610dd1565b8101906020818303126100d9578051906001600160401b0382116100d957019080601f830112156100d9578151612f358161104b565b92612f436040519485610dd1565b81845260208085019260051b8201019283116100d957602001905b828210612f71575050506116249061161a565b8151815260209182019101612f5e565b3d15612fab573d90612f92826113c1565b91612fa06040519384610dd1565b82523d5f602084013e565b606090565b8151612fdb926001600160a01b03909216915f91829160200182855af1612fd5612f81565b916132b3565b80519081612fe7575050565b602080612ff89383010191016115a3565b15612fff57565b60405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b6110b79392606092825260208201528160408201520190610e34565b5f5160206140d05f395f51905f523b156100d9576130bb915f916040519384928392636cd1e26960e11b84526004840152846024840152606060448401526064830190610e34565b03815f5160206140d05f395f51905f525afa80156103df576130da5750565b5f61138291610dd1565b905f5160206140d05f395f51905f523b156100d9575f916130bb6040519485938493636cd1e26960e11b855260048501613057565b5f611c52613146829360405192839163104c13eb60e21b6020840152602060248401526044830190610e34565b6020815191016a636f6e736f6c652e6c6f675afa50565b61318c6131465f93928493604051938492632d839cb360e21b6020850152604060248501526064840190610e34565b90604483015203601f198101835282610dd1565b905f5160206140d05f395f51905f523b156100d9575f916130bb6040519485938493630389490b60e61b855260048501613057565b5f9060033d116131e157565b905060045f803e5f5160e01c90565b5f60443d106110b7576040513d600319016004823e8051913d60248401116001600160401b0384111761325c57828201928351916001600160401b038311613254573d8401600319018584016020011161325457506110b792910160200190610dd1565b949350505050565b92915050565b919082018092116110ba57565b6132a16131465f9392611c528594604051948593634b5c427760e01b6020860152604060248601526064850190610e34565b83810360231901604485015290610e34565b906132d757508051156132c857805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580613308575b6132e8575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156132e0565b60209291908391805192839101825e019081520190565b613333601454610f92565b6133f0576040519081826020600e549283815201600e5f5260205f20925f5b8181106133d757505061336792500383610dd1565b81518060051b90808204602014901517156110ba57613385816113c1565b906133936040519283610dd1565b8082526133a2601f19916113c1565b013660208301375f5b83518110156133d257806133c160019286611195565b5160208260051b85010152016133ab565b509150565b8454835260019485019487945060209093019201613352565b6040516110b7816104c7816014610fca565b60078101906134118254610f92565b6134cd57600191500190604051808360208295549384815201905f5260205f20925f5b8181106134b457505061344992500383610dd1565b81518060051b90808204602014901517156110ba57613467816113c1565b906134756040519283610dd1565b808252613484601f19916113c1565b013660208301375f5b83518110156133d257806134a360019286611195565b5160208260051b850101520161348d565b8454835260019485019487945060209093019201613434565b506110b76104c79160405192838092610fca565b905f806020600285015460e01b61353160246134fc88613402565b6040519485918183019563ffffffff60e01b1686528051918291018484015e810186838201520301601f198101845283610dd1565b60048601549151916001600160a01b03165afa600361354e612f81565b930154600581901b906001600160fb1b038116036110ba575f938051602081115f146135d657506020905b5f925b82841061358b57505050509190565b909192956135998783613262565b8351811015610f7e57830160200151600388901b91906001600160f81b031916881560088a85041417156110ba576001921c17960192919061357c565b90613579565b9080601f830112156100d95781516135f38161104b565b926136016040519485610dd1565b81845260208085019260051b8201019283116100d957602001905b8282106136295750505090565b815181526020918201910161361c565b601154600f546010546001600160a01b03909216915f9160e01b61365d600d613402565b90845f52600d60205260405f209063ffffffff60e01b1690815f5260205260405f20604051602081019061369681611c52888886613311565b5190205f5260205260ff600360405f20015416613ef2575f5160206140d05f395f51905f523b156100d95760405163266cf10960e01b81525f81600481835f5160206140d05f395f51905f525af180156103df57613edd575b506136fa600d6134e1565b90506040516365bc948160e01b81528660048201528581602481835f5160206140d05f395f51905f525af1908115613ed2578691613e66575b5080516137a457608460405162461bcd60e51b815260206004820152604060248201527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152fd5b855b8151811015613e5e578160206137bf836137f095611195565b51604051630667f9d760e41b81526001600160a01b038c166004820152602481019190915293849081906044820190565b03815f5160206140d05f395f51905f525afa928315613e53578893613e20575b508215613dc8575b6138228282611195565b51601154604051630667f9d760e41b81526001600160a01b03909116600482018190526024820183905291906020816044815f5160206140d05f395f51905f525afa908115613dbd578b91613d8c575b5061387d600d6134e1565b91909382155f14613d85575f19905b5f5160206140d05f395f51905f523b15613d6c576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810185905260448101919091528c81606481835f5160206140d05f395f51905f525af18015613ce657908d91613d70575b50506138fd600d6134e1565b601154909491506001600160a01b03165f5160206140d05f395f51905f523b15613d6c576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528b81606481835f5160206140d05f395f51905f525af18015613d6157908c91613d48575b505082613d3d575b505015613d33578793889360ff60135416613bad575b6001868601610100031b5f1901851b16841c8103613b9f575090613a17917f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed60808b89611c526139ec8d604051928391602083019586613311565b5190206139f98686611195565b51906040519283528a602084015260408301526060820152a1611195565b519060405191608083018381106001600160401b03821117613b8b5790600393929160405282526020820193845260408201908152606082019360018552898952600d60205260408920868a52602052604089206040516020810190613a8281611c528d8d86613311565b5190208a526020526040892092518355516001830155516002820155019051151560ff801983541691161790555b848452600d60205260408420818552602052604084206040516020810190613add81611c52888886613311565b519020855260205260ff60036040862001541615613b2e576040948452600d602052848420908452602052611c52613b22858520938651928391602083019586613311565b51902082526020522090565b60405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201526e3a143994903737ba103337bab7321760891b6064820152608490fd5b634e487b7160e01b89526041600452602489fd5b935091506001905b016137a6565b9450613bf89350613bbe8383611195565b51601154604051630667f9d760e41b81526001600160a01b0390911660048201526024810182905290959094602090869081906044820190565b03815f5160206140d05f395f51905f525afa948515613d28578a95613cf5575b50613c2486600d613f33565b959096613c3281600d61400c565b60115490939192906001600160a01b03165f5160206140d05f395f51905f523b15613cf1576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528c81606481835f5160206140d05f395f51905f525af18015613ce657908d91613ccd575b505087613cc5575b509495613991575093509150600190613ba7565b96505f613cb1565b81613cd791610dd1565b613ce2578b5f613ca9565b8b80fd5b6040513d8f823e3d90fd5b8e80fd5b9094506020813d8211613d20575b81613d1060209383610dd1565b810103126100d95751935f613c18565b3d9150613d03565b6040513d8c823e3d90fd5b9150600190613ba7565b141590505f8061397b565b81613d5291610dd1565b613d5d578a5f613973565b8a80fd5b6040513d8e823e3d90fd5b8d80fd5b81613d7a91610dd1565b613ce2578b5f6138f1565b8c9061388c565b90506020813d8211613db5575b81613da660209383610dd1565b810103126100d957515f613872565b3d9150613d99565b6040513d8d823e3d90fd5b7f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5613e18613df68484611195565b51604080516001600160a01b038e168152602081019290925290918291820190565b0390a1613818565b9092506020813d8211613e4b575b81613e3b60209383610dd1565b810103126100d95751915f613810565b3d9150613e2e565b6040513d8a823e3d90fd5b505050613ab0565b90503d8087833e613e778183610dd1565b8101604082820312613ece5781516001600160401b038111613eca5781613e9f9184016135dc565b916020810151906001600160401b038211613ec657613ebf9291016135dc565b505f613733565b8880fd5b8780fd5b8680fd5b6040513d88823e3d90fd5b613eea9194505f90610dd1565b5f925f6136ef565b91939092505f52600d60205260405f20905f52602052611c52613f2460405f2093604051928391602083019586613311565b5190205f5260205260405f2090565b91905f5b6101008110613f4a57505090505f905f90565b8060ff0360ff81116110ba576004850154600190911b906001600160a01b03165f5160206140d05f395f51905f523b156100d9576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f5160206140d05f395f51905f525af180156103df57613ffc575b50613fd6846134e1565b81613ff2575b50613fe957600101613f37565b92505060019190565b905015155f613fdc565b5f61400691610dd1565b5f613fcc565b91905f5b610100811061402357505090505f905f90565b60048401546001821b906001600160a01b03165f5160206140d05f395f51905f523b156100d9576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f5160206140d05f395f51905f525af180156103df576140bf575b506140a2846134e1565b816140b5575b50613fe957600101614010565b905015155f6140a8565b5f6140c991610dd1565b5f61409856fe0000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12da2646970667358221220aaa303a2e73c457c5330a4baeaaa08061815030f38cefa5c159eaf6399f2bfd364736f6c634300081b0033a03837a25210ee280c2113ff4b77ca23440b19d4866cca721c801278fd08d807","sourceMap":"360:8685:65:-:0;;;;;;3166:4:2;360:8685:65;;3166:4:2;360:8685:65;;;3166:4:2;360:8685:65;3166:4:2;360:8685:65;;1038:4:12;360:8685:65;;;1038:4:12;360:8685:65;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;360:8685:65;;;;;;;;;:::i;:::-;564:29;360:8685;;-1:-1:-1;;;360:8685:65;;;;;564:29;;360:8685;;;;:::i;:::-;;;;-1:-1:-1;;;360:8685:65;;;;;564:29;;360:8685;;;;:::i;:::-;564:29;360:8685;;-1:-1:-1;;;360:8685:65;;;;564:29;;;360:8685;;;564:29;360:8685;;;564:29;360:8685;;;-1:-1:-1;;360:8685:65;;;;;-1:-1:-1;;;;;;;;;;;360:8685:65;;564:29;360:8685;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;360:8685:65;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3166:4:2;360:8685:65;;;;;;;;;;;-1:-1:-1;;;;360:8685:65;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;360:8685:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3166:4:2;360:8685:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3166:4:2;360:8685:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;360:8685:65;;;;;;;;;;;564:29;360:8685;;;;;;;;-1:-1:-1;;;;;;;;;;;360:8685:65;;;;;;;;;;;;;;3166:4:2;360:8685:65;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;360:8685:65;;;-1:-1:-1;;;;;360:8685:65;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x610140806040526004361015610013575f80fd5b5f3560e01c90816308c4174514610d4e575080631ed7831c14610cd15780632ade388014610b0f5780633e5e3c2314610a925780633f7286f414610a1557806366d9a9a01461086557806385226c81146107d2578063916a17c614610544578063a00872f1146104dc578063b5508aa914610442578063ba414fa61461041e578063d170c3cc1461016a578063e20c9f71146100dd5763fa7626d4146100b7575f80fd5b346100d9575f3660031901126100d957602060ff601e54166040519015158152f35b5f80fd5b346100d9575f3660031901126100d95760405180602060155491828152019060155f527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475905f5b81811061014b576101478561013b81870382610dd1565b60405191829182610df2565b0390f35b82546001600160a01b0316845260209093019260019283019201610124565b346100d95760403660031901126100d9576004356001600160a01b038116908181036100d957602435906001600160401b0382116100d957366023830112156100d9578160040135916101bc8361104b565b926101ca6040519485610dd1565b8084526024602085019160051b830101913683116100d957602401905b82821061040e575050506101fa82611178565b51604051906348bd7dfd60e01b825260048201525f60248201525f60448201525f8160648183885af180156103df5761023a915f916103ec575b5061122c565b15925f5b83518110156103ea576102518185611195565b516040519063ecbbc03360e01b825260048201525f8160248183875af180156103df5786915f91610329575b5060019291610323916102a2866001600160a01b0361029b84611178565b51166112d7565b6102b586868060a01b0361029b84611185565b6102ed826102c3868b611195565b51878060a01b036102d385611178565b5116888060a01b036102e486611185565b5116918b6115bb565b6102f78489611195565b5190858060a01b0361030882611185565b51169061031a878060a01b0391611178565b511691886115bb565b0161023e565b9150503d805f833e61033b8183610dd1565b8101906020818303126100d9578051906001600160401b0382116100d957019080601f830112156100d95781516103718161104b565b9161037f6040519384610dd1565b81835260208084019260051b8501019081116100d9576020899401915b8183106103ad57505050600161027d565b825195989593945091929091906001600160a01b03811681036100d9578152939693889392602090810192910161039c565b6040513d5f823e3d90fd5b005b61040891503d805f833e6104008183610dd1565b8101906111a9565b85610234565b81358152602091820191016101e7565b346100d9575f3660031901126100d95760206104386110dd565b6040519015158152f35b346100d9575f3660031901126100d95760195461045e8161104b565b9061046c6040519283610dd1565b80825260195f9081527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b8383106104b057604051806101478782610f07565b6001602081926040516104ce816104c78189610fca565b0382610dd1565b81520192019201919061049b565b346100d95760203660031901126100d957600435601f548110156100d95761050390610f66565b610531576104c761051d6101479260405192838092610fca565b604051918291602083526020830190610e34565b634e487b7160e01b5f525f60045260245ffd5b346100d9575f3660031901126100d957601c546105608161104b565b61056d6040519182610dd1565b8181526020810191601c5f527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211925f905b8282106105b357604051806101478682610e58565b6040516105bf81610d87565b85546001600160a01b031681526040516001870180548083525f91825260208083209084019291905b816007840110610733578460019794600297946020979461064b945491818110610717575b8181106106fb575b8181106106df575b8181106106c3575b8181106106a7575b81811061068b575b818110610671575b1061065d575b500382610dd1565b8382015281520195019101909361059e565b6001600160e01b031916815286018d610643565b828a1b6001600160e01b0319168452928901928b0161063d565b604083901b6001600160e01b0319168452928901928b01610635565b606083901b6001600160e01b0319168452928901928b0161062d565b608083901b6001600160e01b0319168452928901928b01610625565b60a083901b6001600160e01b0319168452928901928b0161061d565b60c083901b6001600160e01b0319168452928901928b01610615565b60e083901b6001600160e01b0319168452928901928b0161060d565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e08201520194019201916105e8565b346100d9575f3660031901126100d957601a546107ee8161104b565b906107fc6040519283610dd1565b808252601a5f9081527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b83831061084057604051806101478782610f07565b600160208192604051610857816104c78189610fca565b81520192019201919061082b565b346100d9575f3660031901126100d957601b546108818161104b565b61088e6040519182610dd1565b8181526020810191601b5f527f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1925f905b8282106108d457604051806101478682610e58565b6040516108e081610d87565b85546001600160a01b031681526040516001870180548083525f91825260208083209084019291905b8160078401106109765784600197946002979460209794610964945491818110610717578181106106fb578181106106df578181106106c3578181106106a75781811061068b57818110610671571061065d57500382610dd1565b838201528152019501910190936108bf565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e0820152019401920191610909565b346100d9575f3660031901126100d95760405180602060175491828152019060175f527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15905f5b818110610a73576101478561013b81870382610dd1565b82546001600160a01b0316845260209093019260019283019201610a5c565b346100d9575f3660031901126100d95760405180602060185491828152019060185f527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e905f5b818110610af0576101478561013b81870382610dd1565b82546001600160a01b0316845260209093019260019283019201610ad9565b346100d9575f3660031901126100d957601d54610b2b8161104b565b90610b396040519283610dd1565b808252602082019081601d5f527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f5f915b838310610c3e57848660405191829160208301906020845251809152604083019060408160051b85010192915f905b828210610ba857505050500390f35b919390929450603f198682030182528451906020604082019260018060a01b0381511683520151916040602083015282518091526060820190602060608260051b8501019401925f5b828110610c135750505050506020806001929601920192018594939192610b99565b9091929394602080610c31600193605f198782030189528951610e34565b9701950193929101610bf1565b604051610c4a81610d87565b82546001600160a01b03168152600183018054610c668161104b565b91610c746040519384610dd1565b81835260208301905f5260205f20905f905b838210610cac575050505060019282602092836002950152815201920192019190610b6a565b600160208192604051610cc3816104c7818a610fca565b815201930191019091610c86565b346100d9575f3660031901126100d95760405180602060165491828152019060165f527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289905f5b818110610d2f576101478561013b81870382610dd1565b82546001600160a01b0316845260209093019260019283019201610d18565b346100d95760403660031901126100d957610d7f602091610d6e81610d87565b600435815260243583820152611080565b604051908152f35b604081019081106001600160401b03821117610da257604052565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b03821117610da257604052565b90601f801991011681019081106001600160401b03821117610da257604052565b60206040818301928281528451809452019201905f5b818110610e155750505090565b82516001600160a01b0316845260209384019390920191600101610e08565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310610e8a57505050505090565b9091929394603f1982820301835285516020606081604085019360018060a01b0381511686520151936040838201528451809452019201905f905b808210610ee45750505060208060019297019301930191939290610e7b565b82516001600160e01b031916845260209384019390920191600190910190610ec5565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310610f3957505050505090565b9091929394602080610f57600193603f198682030187528951610e34565b97019301930191939290610f2a565b601f54811015610f7e57601f5f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b90600182811c92168015610fc0575b6020831014610fac57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610fa1565b5f9291815491610fd983610f92565b808352926001811690811561102e5750600114610ff557505050565b5f9081526020812093945091925b838310611014575060209250010190565b600181602092949394548385870101520191019190611003565b915050602093945060ff929192191683830152151560051b010190565b6001600160401b038111610da25760051b60200190565b811561106c570490565b634e487b7160e01b5f52601260045260245ffd5b80516a084595161401484a0000008102908082046a084595161401484a00000014901517156110ba5760206110b792015190611062565b90565b634e487b7160e01b5f52601160045260245ffd5b908160209103126100d9575190565b60085460ff1680156110ec5790565b50604051630667f9d760e41b81525f5160206140d05f395f51905f5260048201526519985a5b195960d21b60248201526020816044815f5160206140d05f395f51905f525afa9081156103df575f91611146575b50151590565b90506020813d602011611170575b8161116160209383610dd1565b810103126100d957515f611140565b3d9150611154565b805115610f7e5760200190565b805160011015610f7e5760400190565b8051821015610f7e5760209160051b010190565b6020818303126100d9578051906001600160401b0382116100d957019080601f830112156100d9578151906111dd8261104b565b926111eb6040519485610dd1565b82845260208085019360051b8201019182116100d957602001915b8183106112135750505090565b8251600a8110156100d957815260209283019201611206565b5f5b8151811015611275576112418183611195565b51600a8110156112615760051461125a5760010161122e565b5050600190565b634e487b7160e01b5f52602160045260245ffd5b50505f90565b5f5b8151811015611275576112908183611195565b51600a8110156112615760091461125a5760010161127d565b5f5b8151811015611275576112be8183611195565b51600a8110156112615760081461125a576001016112ab565b60405190602082019263095ea7b360e01b845260018060a01b0316928360248401525f1960448401526044835261130f606484610dd1565b82516001600160a01b038316915f91829182855af19061132d612f81565b8261138f575b5081611384575b501561134557505050565b61137d611382936040519063095ea7b360e01b602083015260248201525f604482015260448152611377606482610dd1565b82612fb0565b612fb0565b565b90503b15155f61133a565b805191925081159182156113a7575b5050905f611333565b6113ba92506020809183010191016115a3565b5f8061139e565b6001600160401b038111610da257601f01601f191660200190565b91908260409103126100d9576040516113f481610d87565b6020808294805184520151910152565b6020818303126100d9578051906001600160401b0382116100d9570181601f820112156100d95780516114368161104b565b926114446040519485610dd1565b81845260208085019260061b840101928184116100d957602001915b83831061146e575050505090565b602060409161147d84866113dc565b815201920191611460565b60a0919360209360808301958352600180851b031684830152600180841b03166040820152608060608201528451809452019201905f5b8181106114cc5750505090565b82518452602093840193909201916001016114bf565b906080828203126100d9576115139060408051936114ff85610db6565b8051855260208101516020860152016113dc565b604082015290565b9081526001600160a01b039182166020820152911660408201525f6060820152608081019190915260a00190565b60405190611558606083610dd1565b603682527536103a3790383934b1b29030b33a32b91039bbb0b81760511b6040837f45786563757465642070726963652073686f756c64206265206f72206571756160208201520152565b908160209103126100d9575180151581036100d95790565b6101009490945260405163549387df60e11b8152600481018290526001600160a01b0380841660248301528416604482015291939290915f81806064810160c08490520381836001600160a01b0389165af180156103df575f90612eef575b6116249150611178565b5160a052606060e081905260405161167e916116409082610dd1565b602381527f53656c6c206c696d69742073686f756c6420626520677265617465722074686160208201526206e20360ec1b604082015260a051613073565b60e051505f8061170661173360405161169960e05182610dd1565b603681527f544553543a2054657374696e672070726963657320666f722070616972202573602082015275080b4f88095ccb8814d95b1b081b1a5b5a5d0e88095960521b6040820152604051928391638ef3f39960e01b60208401526080602484015260a4830190610e34565b6001600160a01b038a811660448401528716606483015260a051608483015203601f198101835282610dd1565b6020815191016a636f6e736f6c652e6c6f675afa506040516348bd7dfd60e01b8152600481018390526001600160a01b038086166024830152821660448201525f8180606481010381836001600160a01b0389165af180156103df576117a0915f91612ed5575b5061127b565b90604051916117b060a084610dd1565b60048352608036602085013715612ec9575f5b6117cc83611178565b526103e860a051046117dd83611185565b52815160021015610f7e5760e051820160a05160011c9052815160031015610f7e5760a051608083015260405163155adc9160e31b8152935f858061182886868b8a60048601611488565b0381836001600160a01b0386165af19485156103df575f95612ead575b5061185861185286611178565b51611080565b85515f198101919082116110ba576118766118526118d09389611195565b60e05160405192906118889084610dd1565b603083527f5072696365206174206c696d69742073686f756c6420626520736d616c6c657260208401526f0207468616e20707269636520617420360841b60408401526130e4565b6118dc61185286611178565b85515f1981019081116110ba576119776119905f936118ff61185286958c611195565b60e0516040519291906119129084610dd1565b602d83527f544553543a20507269636520617420303a2025642c207072696365206174207360208401526c195b1b081b1a5b5a5d0e880959609a1b604084015260405194859363ca47c4eb60e01b602086015260e05160248601526084850190610e34565b916044840152606483015203601f198101835282610dd1565b6020815191016a636f6e736f6c652e6c6f675afa5060e0516040516119f6916119b99082610dd1565b602581527f544553543a2054657374696e67206265686176696f7220666f72207072696365602082015264020617420360dc1b6040820152613119565b611a49611a0286611178565b5151604061012081905280519190611a1a9083610dd1565b601882527f4e6f6d696e61746f722073686f756c646e2774206265203000000000000000006020830152613073565b611a9b6020611a5787611178565b5101516101205180519190611a6c9083610dd1565b601a82527f44656e6f6d696e61746f722073686f756c646e277420626520300000000000006020830152613073565b611aa761185286611178565b946101205150611ae9866101205151611ac36101205182610dd1565b6014815273151154d50e88141c9a58d948185d080c0e88095960621b602082015261315d565b6101205151611af781610db6565b5f81525f6020820152610120515190611b0f82610d87565b5f808352602083015261012051015283515f1981019081116110ba57611b359085611195565b5160058181020481036110ba575f80610120515160208101906370a0823160e01b825230602482015260248152611b6d604482610dd1565b51908b5afa50611b8d611b7e612f81565b602080825183010191016110ce565b50601180546001600160a01b0319166001600160a01b038a16179055600f805463ffffffff19166370a08231179055600e5468010000000000000000811015610da25760018101600e55600e54811015610f7e57600e5f5260205f200130905560018060a01b0360115416600f5460e01b60105490611c0a613328565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690815f52602052610120515f2061012051516020810190611c6081611c52888886613311565b03601f198101835282610dd1565b5190205f5260205260ff6003610120515f2001541615612e9f575b6001600160a01b0384165f908152600d60205260409020905f52602052611c52611cb8610120515f20936101205151928391602083019586613311565b5190205f52602052610120515f206001810154926002820154611cdb8186613262565b612ced575b82546101205151630667f9d760e41b81526001600160a01b038616600482015260248101829052959091906020876044815f5160206140d05f395f51905f525afa968715612cac575f97612cb9575b506001908201610100031b5f1901811b1986165f5160206140d05f395f51905f523b156100d95761012051516370ca10bb60e01b81526001600160a01b038716600482015260248101939093526005840290911b1760448201525f81606481835f5160206140d05f395f51905f525af18015612cac57612c98575b50600f5460e01b6020611dfb6024611dc2600d613402565b61012051519384918183019663ffffffff60e01b1687528051918291018484015e810160c051838201520301601f198101835282610dd1565b60115460c051915191928392916001600160a01b03165afa611e1b612f81565b6010549091906001600160fb1b03811681036124715760c05183519093906020811115612c9257506020905b60c051925b828410612c2c575050505015918215612c1e575b5050612b31575050506bffffffffffffffffffffffff60a01b6011541660115563ffffffff19600f5416600f55600e5460c051600e5580612b06575b5060c0516010556013805460ff19169055601454611eb990610f92565b80612aa4575b506101205151634b88b8ad60e11b815260208160048160c0515f5160206140d05f395f51905f525af180156123da5760c051608052612a71575b5060015b84518110156124b7575f80611fb8611fde611f1785610f66565b50611f22868b611195565b51611fca6104c7611f91610120515194611f3e60e05187610dd1565b603086527f544553543a2054657374696e67206265686176696f7220666f7220707269636560208701526f1030ba1012b99037b3103634b6b4ba1760811b61012051870152610120515192838092610fca565b6101205151635821efa160e01b602082015260e05160248201529586946084860190610e34565b84810360231901604486015290610e34565b90606483015203601f198101835282610dd1565b6020815191016a636f6e736f6c652e6c6f675afa506120006118528284611195565b5f8061207861209c8c612013878c611195565b516101205151916120276101205184610dd1565b601783527f544553543a205377617070696e67202564206f662025730000000000000000006020840152610120515194859363038fd88960e31b602086015260e05160248601526084850190610e34565b60448401929092526001600160a01b0316606483015203601f198101835282610dd1565b6020815191016a636f6e736f6c652e6c6f675afa508460808a896120e16120c3878c611195565b516101205151638307c65560e01b815295869485946004860161151b565b038160c05160018060a01b038a165af19081156123da5760c05191612489575b508051806a084595161401484a0000008102046a084595161401484a00000014811517156124715761214e61215a916a084595161401484a000000612146878c611195565b519102611062565b91610120510151611080565b916121a08261012051516121716101205182610dd1565b601d81527f544553543a20202d2045786563757465642070726963653a2020202564000000602082015261315d565b6121e58161012051516121b66101205182610dd1565b601d81527f544553543a20202d20507269636520617420616d6f756e743a20202564000000602082015261315d565b61222a8361012051516121fb6101205182610dd1565b601d81527f544553543a20202d20507269636520616674657220737761703a202564000000602082015261315d565b61010051156123e95760e05161012051516123659461230893909261229c9291906122559083610dd1565b602c82527f50726963652073686f756c642062652067726561746564207468616e2065786560208301526b31baba32b210383934b1b29760a11b61012051830152856131a0565b60e051610120515191906122b09083610dd1565b603782527f45786563757465642070726963652073686f756c64206265206772656174657260208301527f207468616e20707269636520616674657220737761702e00000000000000000061012051830152836130e4565b60e0516101205151919061231c9083610dd1565b602e82527f50726963652073686f756c642062652067726561746564207468616e2070726960208301526d31b29030b33a32b91039bbb0b81760911b61012051830152896130e4565b610120515190631135fc2960e21b8252608051600483015260208260248160c0515f5160206140d05f395f51905f525af19182156123da576001926123ac575b5001611efd565b6123cc9060203d81116123d3575b6123c48183610dd1565b8101906115a3565b505f6123a5565b503d6123ba565b61012051513d60c051823e3d90fd5b6124129061240361246c946123fc611549565b908d6131a0565b61240b611549565b908b6131a0565b61012051519061242460e05183610dd1565b602d82527f50726963652073686f756c64206265206f7220657175616c20746f207072696360208301526c329030b33a32b91039bbb0b81760991b61012051830152896131a0565b612365565b634e487b7160e01b60c051526011600452602460c051fd5b6124aa915060803d81116124b0575b6124a28183610dd1565b8101906114e2565b5f612101565b503d612498565b5050915091939250606960a0510260a051810460691460a0511517156124715761012051516348bd7dfd60e01b815260c08051600483018890526001600160a01b0387811660248501528681166044850152915160649485900497949192849291839188165af180156123da576125379160c05191612a55575b506112a9565b156128f5576125a184610120515161255160e05182610dd1565b603681527f544553543a2054657374696e6720726576657274206265686176696f722061626020820152751bdd99481d1a19481cd95b1b081b1a5b5a5d0e88095960521b6101205182015261315d565b61012051805194906125b39086610dd1565b6001855261012051601f19013660208701376125ce85611178565b52610120515163155adc9160e31b815260c05181806125f38888878c60048601611488565b038160c05160018060a01b0388165af190816128d3575b506128665760016126196131d5565b6308c379a0146127d7575b6123da57612633608094611178565b5194612657610120515196879586948594638307c65560e01b86526004860161151b565b60c051919003926001600160a01b03165af190816127ba575b5061275757600161267f6131d5565b6308c379a0146126d3575b6123da575b61138261012051516126a46101205182610dd1565b601781527f544553543a20416c6c207465737473207061737365642e0000000000000000006020820152613119565b6126db6131f0565b806126e7575b5061268a565b60c05160e05161012051519193506127519291906127059082610dd1565b603281527f544553543a204578706563746564206572726f72207768656e207377617070696020820152716e672061626f7665206c696d69743a20257360701b6101205182015261326f565b5f6126e1565b610120515162461bcd60e51b815260206004820152603360248201527f506f6f6c2073686f756c646e27742062652061626c6520746f20737761702061604482015272189bdd99481d1a19481cd95b1b081b1a5b5a5d606a1b6064820152608490fd5b6127d29060803d6080116124b0576124a28183610dd1565b612670565b6127df6131f0565b806127eb575b50612624565b60c05160e05161012051519193506128609291906128099082610dd1565b603881527f544553543a204578706563746564206572726f72207768656e2066657463686960208201527f6e672070726963652061626f7665206c696d69743a20257300000000000000006101205182015261326f565b5f6127e5565b610120515162461bcd60e51b815260206004820152603b60248201527f506f6f6c2073686f756c646e27742062652061626c6520746f2066657463682060448201527f7072696365732061626f7665207468652073656c6c206c696d697400000000006064820152608490fd5b6128f0903d8060c051833e6128e88183610dd1565b810190611404565b61260a565b60e05161012051516129599186919061290e9082610dd1565b603181527f544553543a2054657374696e67206f7065726174696f6e732061626f766520746020820152701a19481cd95b1b081b1a5b5a5d0e880959607a1b6101205182015261315d565b610120518051949061296b9086610dd1565b6001855261012051601f190136602087013761298685611178565b5261012051519363155adc9160e31b855260c05185806129ac8488878c60048601611488565b038160c05160018060a01b0388165af19081156123da576080956129d592612a3b575b50611178565b51946129f9610120515196879586948594638307c65560e01b86526004860161151b565b60c051919003926001600160a01b03165af180156123da57612a1c575b5061268f565b612a349060803d6080116124b0576124a28183610dd1565b505f612a16565b612a50903d8060c051833e6128e88183610dd1565b6129cf565b612a6b91503d8060c051833e6104008183610dd1565b5f612531565b6020813d602011612a9c575b81612a8a60209383610dd1565b810103126100d957516080525f611ef9565b3d9150612a7d565b601f8111600114612abd575060c0516014555b5f611ebf565b601460c051526001601f602060c05120920160051c820191015b818110612afb57505060c08051601490819052905160208120918190559055612ab7565b5f8155600101612ad7565b600e60c05152602060c05120908101905b818110612b245750611e9c565b60c0518155600101612b17565b54915f5160206140d05f395f51905f523b15612c185761012051516370ca10bb60e01b815260c0516001600160a01b03909316600482015260248101939093526044830152818060648101038160c0515f5160206140d05f395f51905f525af180156123da57612bff575b610120515162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b60c051612c0b91610dd1565b60c051612c185780612b9c565b60c05180fd5b600502141590505f80611e60565b90919294612c3d868360051b613262565b8351811015612c7a57830160200151600387901b91906001600160f81b03191687156008898504141715612471576001921c179501929190611e4c565b634e487b7160e01b60c051526032600452602460c051fd5b90611e47565b5f612ca291610dd1565b5f60c0525f611daa565b61012051513d5f823e3d90fd5b9096506020813d602011612ce5575b81612cd560209383610dd1565b810103126100d957519581611d2f565b3d9150612cc8565b612cf78186613262565b6101000361010081116110ba5760ff81116110ba57610120515163348051d760e11b81526001821b60048201525f816024815f5160206140d05f395f51905f525afa908115612cac575f91612e17575b50602091612ddc606a60019361012051519586917f73746453746f726167652066696e642853746453746f72616765293a20506163828401527f6b656420736c6f742e2057652063616e2774206669742076616c7565206772656101205184015269030ba32b9103a3430b7160b51b60e0518401528051918291018484015e81015f838201520301601f198101855284610dd1565b1b836005021015612ded5750611ce0565b610120515162461bcd60e51b815260206004820152908190612e13906024830190610e34565b0390fd5b90503d805f833e612e288183610dd1565b8101906020818303126100d9578051906001600160401b0382116100d957019181601f840112156100d9578251612e5e816113c1565b92612e6e61012051519485610dd1565b818452602082860101116100d957606a6001935f602084612ddc9582809a018386015e830101529350505091612d47565b612ea7613639565b50611c7b565b612ec29195503d805f833e6128e88183610dd1565b935f611845565b61271060a051046117c3565b612ee991503d805f833e6104008183610dd1565b5f61179a565b503d805f833e612eff8183610dd1565b8101906020818303126100d9578051906001600160401b0382116100d957019080601f830112156100d9578151612f358161104b565b92612f436040519485610dd1565b81845260208085019260051b8201019283116100d957602001905b828210612f71575050506116249061161a565b8151815260209182019101612f5e565b3d15612fab573d90612f92826113c1565b91612fa06040519384610dd1565b82523d5f602084013e565b606090565b8151612fdb926001600160a01b03909216915f91829160200182855af1612fd5612f81565b916132b3565b80519081612fe7575050565b602080612ff89383010191016115a3565b15612fff57565b60405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b6110b79392606092825260208201528160408201520190610e34565b5f5160206140d05f395f51905f523b156100d9576130bb915f916040519384928392636cd1e26960e11b84526004840152846024840152606060448401526064830190610e34565b03815f5160206140d05f395f51905f525afa80156103df576130da5750565b5f61138291610dd1565b905f5160206140d05f395f51905f523b156100d9575f916130bb6040519485938493636cd1e26960e11b855260048501613057565b5f611c52613146829360405192839163104c13eb60e21b6020840152602060248401526044830190610e34565b6020815191016a636f6e736f6c652e6c6f675afa50565b61318c6131465f93928493604051938492632d839cb360e21b6020850152604060248501526064840190610e34565b90604483015203601f198101835282610dd1565b905f5160206140d05f395f51905f523b156100d9575f916130bb6040519485938493630389490b60e61b855260048501613057565b5f9060033d116131e157565b905060045f803e5f5160e01c90565b5f60443d106110b7576040513d600319016004823e8051913d60248401116001600160401b0384111761325c57828201928351916001600160401b038311613254573d8401600319018584016020011161325457506110b792910160200190610dd1565b949350505050565b92915050565b919082018092116110ba57565b6132a16131465f9392611c528594604051948593634b5c427760e01b6020860152604060248601526064850190610e34565b83810360231901604485015290610e34565b906132d757508051156132c857805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580613308575b6132e8575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156132e0565b60209291908391805192839101825e019081520190565b613333601454610f92565b6133f0576040519081826020600e549283815201600e5f5260205f20925f5b8181106133d757505061336792500383610dd1565b81518060051b90808204602014901517156110ba57613385816113c1565b906133936040519283610dd1565b8082526133a2601f19916113c1565b013660208301375f5b83518110156133d257806133c160019286611195565b5160208260051b85010152016133ab565b509150565b8454835260019485019487945060209093019201613352565b6040516110b7816104c7816014610fca565b60078101906134118254610f92565b6134cd57600191500190604051808360208295549384815201905f5260205f20925f5b8181106134b457505061344992500383610dd1565b81518060051b90808204602014901517156110ba57613467816113c1565b906134756040519283610dd1565b808252613484601f19916113c1565b013660208301375f5b83518110156133d257806134a360019286611195565b5160208260051b850101520161348d565b8454835260019485019487945060209093019201613434565b506110b76104c79160405192838092610fca565b905f806020600285015460e01b61353160246134fc88613402565b6040519485918183019563ffffffff60e01b1686528051918291018484015e810186838201520301601f198101845283610dd1565b60048601549151916001600160a01b03165afa600361354e612f81565b930154600581901b906001600160fb1b038116036110ba575f938051602081115f146135d657506020905b5f925b82841061358b57505050509190565b909192956135998783613262565b8351811015610f7e57830160200151600388901b91906001600160f81b031916881560088a85041417156110ba576001921c17960192919061357c565b90613579565b9080601f830112156100d95781516135f38161104b565b926136016040519485610dd1565b81845260208085019260051b8201019283116100d957602001905b8282106136295750505090565b815181526020918201910161361c565b601154600f546010546001600160a01b03909216915f9160e01b61365d600d613402565b90845f52600d60205260405f209063ffffffff60e01b1690815f5260205260405f20604051602081019061369681611c52888886613311565b5190205f5260205260ff600360405f20015416613ef2575f5160206140d05f395f51905f523b156100d95760405163266cf10960e01b81525f81600481835f5160206140d05f395f51905f525af180156103df57613edd575b506136fa600d6134e1565b90506040516365bc948160e01b81528660048201528581602481835f5160206140d05f395f51905f525af1908115613ed2578691613e66575b5080516137a457608460405162461bcd60e51b815260206004820152604060248201527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152fd5b855b8151811015613e5e578160206137bf836137f095611195565b51604051630667f9d760e41b81526001600160a01b038c166004820152602481019190915293849081906044820190565b03815f5160206140d05f395f51905f525afa928315613e53578893613e20575b508215613dc8575b6138228282611195565b51601154604051630667f9d760e41b81526001600160a01b03909116600482018190526024820183905291906020816044815f5160206140d05f395f51905f525afa908115613dbd578b91613d8c575b5061387d600d6134e1565b91909382155f14613d85575f19905b5f5160206140d05f395f51905f523b15613d6c576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810185905260448101919091528c81606481835f5160206140d05f395f51905f525af18015613ce657908d91613d70575b50506138fd600d6134e1565b601154909491506001600160a01b03165f5160206140d05f395f51905f523b15613d6c576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528b81606481835f5160206140d05f395f51905f525af18015613d6157908c91613d48575b505082613d3d575b505015613d33578793889360ff60135416613bad575b6001868601610100031b5f1901851b16841c8103613b9f575090613a17917f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed60808b89611c526139ec8d604051928391602083019586613311565b5190206139f98686611195565b51906040519283528a602084015260408301526060820152a1611195565b519060405191608083018381106001600160401b03821117613b8b5790600393929160405282526020820193845260408201908152606082019360018552898952600d60205260408920868a52602052604089206040516020810190613a8281611c528d8d86613311565b5190208a526020526040892092518355516001830155516002820155019051151560ff801983541691161790555b848452600d60205260408420818552602052604084206040516020810190613add81611c52888886613311565b519020855260205260ff60036040862001541615613b2e576040948452600d602052848420908452602052611c52613b22858520938651928391602083019586613311565b51902082526020522090565b60405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201526e3a143994903737ba103337bab7321760891b6064820152608490fd5b634e487b7160e01b89526041600452602489fd5b935091506001905b016137a6565b9450613bf89350613bbe8383611195565b51601154604051630667f9d760e41b81526001600160a01b0390911660048201526024810182905290959094602090869081906044820190565b03815f5160206140d05f395f51905f525afa948515613d28578a95613cf5575b50613c2486600d613f33565b959096613c3281600d61400c565b60115490939192906001600160a01b03165f5160206140d05f395f51905f523b15613cf1576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528c81606481835f5160206140d05f395f51905f525af18015613ce657908d91613ccd575b505087613cc5575b509495613991575093509150600190613ba7565b96505f613cb1565b81613cd791610dd1565b613ce2578b5f613ca9565b8b80fd5b6040513d8f823e3d90fd5b8e80fd5b9094506020813d8211613d20575b81613d1060209383610dd1565b810103126100d95751935f613c18565b3d9150613d03565b6040513d8c823e3d90fd5b9150600190613ba7565b141590505f8061397b565b81613d5291610dd1565b613d5d578a5f613973565b8a80fd5b6040513d8e823e3d90fd5b8d80fd5b81613d7a91610dd1565b613ce2578b5f6138f1565b8c9061388c565b90506020813d8211613db5575b81613da660209383610dd1565b810103126100d957515f613872565b3d9150613d99565b6040513d8d823e3d90fd5b7f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5613e18613df68484611195565b51604080516001600160a01b038e168152602081019290925290918291820190565b0390a1613818565b9092506020813d8211613e4b575b81613e3b60209383610dd1565b810103126100d95751915f613810565b3d9150613e2e565b6040513d8a823e3d90fd5b505050613ab0565b90503d8087833e613e778183610dd1565b8101604082820312613ece5781516001600160401b038111613eca5781613e9f9184016135dc565b916020810151906001600160401b038211613ec657613ebf9291016135dc565b505f613733565b8880fd5b8780fd5b8680fd5b6040513d88823e3d90fd5b613eea9194505f90610dd1565b5f925f6136ef565b91939092505f52600d60205260405f20905f52602052611c52613f2460405f2093604051928391602083019586613311565b5190205f5260205260405f2090565b91905f5b6101008110613f4a57505090505f905f90565b8060ff0360ff81116110ba576004850154600190911b906001600160a01b03165f5160206140d05f395f51905f523b156100d9576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f5160206140d05f395f51905f525af180156103df57613ffc575b50613fd6846134e1565b81613ff2575b50613fe957600101613f37565b92505060019190565b905015155f613fdc565b5f61400691610dd1565b5f613fcc565b91905f5b610100811061402357505090505f905f90565b60048401546001821b906001600160a01b03165f5160206140d05f395f51905f523b156100d9576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f5160206140d05f395f51905f525af180156103df576140bf575b506140a2846134e1565b816140b5575b50613fe957600101614010565b905015155f6140a8565b5f6140c991610dd1565b5f61409856fe0000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12da2646970667358221220aaa303a2e73c457c5330a4baeaaa08061815030f38cefa5c159eaf6399f2bfd364736f6c634300081b0033","sourceMap":"360:8685:65:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;360:8685:65;;;;;;1016:26:12;360:8685:65;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;360:8685:65;;;;;;;;2421:18:5;360:8685:65;;;;;;;2421:18:5;360:8685:65;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;360:8685:65;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;360:8685:65;;;;;;-1:-1:-1;;;;;360:8685:65;;;;;;;;;;;-1:-1:-1;;;;;360:8685:65;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1126:10;;;;;;:::i;:::-;360:8685;;;;;;;1102:59;;360:8685;1102:59;;360:8685;;;;;;;;;;;;1102:59;;;;;;;;;;;1075:134;1102:59;360:8685;1102:59;;;360:8685;1075:134;;:::i;:::-;1074:135;1224:13;360:8685;1259:3;360:8685;;1239:18;;;;;1322:10;;;;:::i;:::-;360:8685;;;;;;;1304:29;;360:8685;1304:29;;360:8685;;1304:29;360:8685;1304:29;;;;;;;;;;;360:8685;1304:29;;;1259:3;-1:-1:-1;1442:1:65;;360:8685;1708:14;;1396:17;360:8685;-1:-1:-1;;;;;1354:9:65;360:8685;1354:9;:::i;:::-;360:8685;;1396:17;:::i;:::-;1477;360:8685;;;;;;1435:9;;;:::i;1477:17::-;1588:14;1554:10;;;;;:::i;:::-;360:8685;;;;;;1566:9;;;:::i;:::-;360:8685;;;;;;;1577:9;;;:::i;:::-;360:8685;;1588:14;;;:::i;:::-;1674:10;;;;:::i;:::-;360:8685;;;;;;;1686:9;;;:::i;:::-;360:8685;;;1697:9;360:8685;;;;;1697:9;;:::i;:::-;360:8685;;1708:14;;;:::i;:::-;360:8685;1224:13;;1304:29;;;;;;360:8685;1304:29;;;;;;:::i;:::-;;;360:8685;;;;;;;;;;;-1:-1:-1;;;;;360:8685:65;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1304:29;;;1442:1;1304:29;;360:8685;;;;;;;;-1:-1:-1;360:8685:65;;;;;-1:-1:-1;;;;;360:8685:65;;;;;;;;;;;;;;;;;;;;;;;1304:29;360:8685;;192:59:1;360:8685:65;192:59:1;;;;;1239:18:65;360:8685;1102:59;;;;;;360:8685;1102:59;;;;;;:::i;:::-;;;;;:::i;:::-;;;;360:8685;;;;;;;;;;;;;;;;;;;-1:-1:-1;;360:8685:65;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;360:8685:65;;;;2273:18:5;360:8685:65;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;2273:18:5;360:8685:65;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;360:8685:65;;;;;;534:59;360:8685;534:59;;;;;;;;:::i;:::-;360:8685;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;360:8685:65;;;;3190:18:5;360:8685:65;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3190:18:5;360:8685:65;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;-1:-1:-1;;;;;360:8685:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;360:8685:65;;;;;;;;;;;;-1:-1:-1;;;;;;360:8685:65;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;360:8685:65;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;360:8685:65;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;360:8685:65;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;360:8685:65;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;360:8685:65;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;360:8685:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;360:8685:65;;;;2707:18:5;360:8685:65;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;2707:18:5;360:8685:65;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;360:8685:65;;;;2883:26:5;360:8685:65;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2883:26:5;360:8685:65;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;-1:-1:-1;;;;;360:8685:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;360:8685:65;;;;;;;;3038:18:5;360:8685:65;;;;;;;3038:18:5;360:8685:65;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;360:8685:65;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;360:8685:65;;;;;;;;3331:16:5;360:8685:65;;;;;;;3331:16:5;360:8685:65;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;360:8685:65;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;360:8685:65;;;;3485:19:5;360:8685:65;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;3485:19:5;360:8685:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;360:8685:65;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;360:8685:65;;;;;;;;2563:16:5;360:8685:65;;;;;;;2563:16:5;360:8685:65;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;360:8685:65;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;360:8685:65;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;360:8685:65;;;;;;;:::o;:::-;;;;-1:-1:-1;360:8685:65;;;;;-1:-1:-1;360:8685:65;;1590:14:0;360:8685:65;;;;;-1:-1:-1;;;;;360:8685:65;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;360:8685:65;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;360:8685:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;360:8685:65;;;;;;;;-1:-1:-1;;360:8685:65;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;360:8685:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;534:59;360:8685;;;;;;534:59;-1:-1:-1;360:8685:65;;-1:-1:-1;360:8685:65;;;-1:-1:-1;360:8685:65;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;360:8685:65;;;;;;;;-1:-1:-1;360:8685:65;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;360:8685:65;;;;;;;;;:::o;523:5::-;;;;;;;:::o;:::-;360:8685;;;523:5;;;;;;;;8534:180;360:8685;;523:5;;;;;;;;;;;;;;;8690:17;8655:52;8690:17;;360:8685;8655:52;;:::i;:::-;8534:180;:::o;523:5::-;360:8685;;;-1:-1:-1;523:5:65;;;;;-1:-1:-1;523:5:65;192:59:1;;;;;;;;;;;:::o;1243:204::-;1302:7;360:8685:65;;;;;;;1325:14:1;:::o;1298:143::-;360:8685:65;;;;;;1377:39:1;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;360:8685:65;192:59:1;;;;;;360:8685:65;192:59:1;1377:39;;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;;;;;360:8685:65;1377:39:1;;;1298:143;1377:53;;;1370:60;:::o;1377:39::-;;;192:59;1377:39;;192:59;1377:39;;;;;;192:59;1377:39;;;:::i;:::-;;;192:59;;;;;1377:39;;;;;;-1:-1:-1;1377:39:1;;360:8685:65;;;;;;;;;:::o;:::-;;;1442:1;360:8685;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;360:8685:65;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;8720:323;360:8685;8906:3;360:8685;;8881:23;;;;;8929:15;;;;:::i;:::-;360:8685;;;;;;;;8929:29;8925:79;;360:8685;;8866:13;;8925:79;8978:11;;360:8685;8978:11;:::o;360:8685::-;;;;;;;;;;;;8881:23;;;360:8685;8720:323;:::o;:::-;360:8685;8906:3;360:8685;;8881:23;;;;;8929:15;;;;:::i;:::-;360:8685;;;;;;;2531:24;8929:29;8925:79;;360:8685;;8866:13;;8720:323;360:8685;8906:3;360:8685;;8881:23;;;;;8929:15;;;;:::i;:::-;360:8685;;;;;;;6005:21;8929:29;8925:79;;360:8685;;8866:13;;5926:434:58;360:8685:65;;6065:47:58;;;;360:8685:65;;;;6065:47:58;;360:8685:65;;;;;;6065:47:58;;;;;360:8685:65;1396:17;;192:59:1;;;360:8685:65;6065:47:58;;;;;;;:::i;:::-;8511:25;;-1:-1:-1;;;;;360:8685:65;;;-1:-1:-1;;;;;360:8685:65;8511:25:58;;;;;:::i;:::-;8553:81;;;5926:434;8553:127;;;;5926:434;6127:45;;6123:231;;5926:434;;;:::o;6123:231::-;6232:43;6330:12;360:8685:65;;;;;;;6065:47:58;6232:43;;;6065:47;6232:43;;360:8685:65;-1:-1:-1;6065:47:58;360:8685:65;;;6065:47:58;6232:43;;;6065:47;6232:43;;:::i;:::-;;;:::i;:::-;6330:12;:::i;:::-;5926:434::o;8553:127::-;8650:26;;;:30;;8553:127;;;:81;360:8685:65;;;;-1:-1:-1;8577:22:58;;;:56;;;;8553:81;;;;;;;8577:56;8603:30;;;6065:47;8603:30;;;;;;;;:::i;:::-;8577:56;;;;360:8685:65;-1:-1:-1;;;;;360:8685:65;;;;;;-1:-1:-1;;360:8685:65;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;360:8685:65;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;1590:14:0;;;;;;;;;;;360:8685:65;;;;;;;:::i;:::-;;;1590:14:0;;;;;360:8685:65;1590:14:0;;;;;;:::i;:::-;360:8685:65;1590:14:0;;;;:::o;:::-;360:8685:65;;;-1:-1:-1;;;;;360:8685:65;;;1590:14:0;;;360:8685:65;;;1590:14:0;;;360:8685:65;-1:-1:-1;1590:14:0;;;;;;;360:8685:65;;;;1590:14:0;;;:::o;:::-;360:8685:65;;;;;;;:::i;:::-;1590:14:0;360:8685:65;;-1:-1:-1;;;360:8685:65;1590:14:0;;;;;;;;:::o;:::-;;;;;;;;;;360:8685:65;;;1590:14:0;;;;;:::o;1911:4479:65:-;;;;;;360:8685;;-1:-1:-1;;;2117:44:65;;;;;360:8685;;;-1:-1:-1;;;;;360:8685:65;;;;;;;;;;;;;1911:4479;;;;;2117:44;360:8685;;;;;2117:44;;;;;360:8685;2117:44;-1:-1:-1;;;;;360:8685:65;;2117:44;;;;;;;;;;1911:4479;2117:47;;;;:::i;:::-;360:8685;;;;;;;;;;2174:61;;360:8685;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;360:8685:65;;;;2174:61;;;:::i;:::-;360:8685;;;2117:44;360:8685;;44640:78:15;360:8685:65;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;360:8685:65;;;;;;44640:78:15;;;;;;360:8685:65;44640:78:15;;;360:8685:65;44640:78:15;;;360:8685:65;;;;;;:::i;:::-;-1:-1:-1;;;;;360:8685:65;;;;;;;;;;;;;;;;;;;44640:78:15;-1:-1:-1;;44640:78:15;;;;;;:::i;:::-;1222:159;360:8685:65;;1222:159:15;;591:42;1222:159;;-1:-1:-1;360:8685:65;;-1:-1:-1;;;2467:50:65;;2117:44;2467:50;;360:8685;;;-1:-1:-1;;;;;360:8685:65;;;;;;;;;;;;;2117:44;360:8685;;;;;2467:50;360:8685;;-1:-1:-1;;;;;360:8685:65;;2467:50;;;;;;2440:125;2467:50;2117:44;2467:50;;;1911:4479;2440:125;;:::i;:::-;360:8685;;;;;;;;:::i;:::-;2117:44;360:8685;;;;;;;;8365:37;;;2117:44;8365:37;8352:50;;;:::i;:::-;360:8685;8433:4;523:5;;;8412:25;;;:::i;:::-;360:8685;;;8468:1;360:8685;;;;;;;;523:5;;8420:1;523:5;360:8685;;;;8487:1;360:8685;;;;;;;;;;;;-1:-1:-1;;;2822:49:65;;360:8685;2117:44;360:8685;;2822:49;360:8685;2822:49;;;2117:44;2822:49;;;:::i;:::-;;360:8685;;-1:-1:-1;;;;;360:8685:65;;2822:49;;;;;;;2117:44;2822:49;;;8365:37;2917:9;2903:24;2917:9;;;:::i;:::-;;2903:24;:::i;:::-;360:8685;;-1:-1:-1;;360:8685:65;;;1396:17;360:8685;;;;2941:40;2955:25;2881:174;2955:25;;;:::i;2941:40::-;360:8685;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;360:8685:65;;;;2881:174;:::i;:::-;3152:24;3166:9;;;:::i;3152:24::-;360:8685;;-1:-1:-1;;360:8685:65;;;;;;;;12247:66:15;2117:44:65;3204:25;3190:40;3204:25;;;;;:::i;3190:40::-;360:8685;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;360:8685:65;;;;;;12247:66:15;;;;;;360:8685:65;12247:66:15;;;360:8685:65;;44640:78:15;12247:66;;360:8685:65;;;;;;:::i;:::-;;;;;;;;;;12247:66:15;360:8685:65;;12247:66:15;;;;;;:::i;:::-;1222:159;360:8685:65;;1222:159:15;;591:42;1222:159;;-1:-1:-1;360:8685:65;;;;3251:53;;360:8685;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;360:8685:65;;;;3251:53;:::i;:::-;3314:60;3323:9;;;:::i;:::-;;360:8685;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;3314:60;:::i;:::-;3384:64;360:8685;3393:9;;;:::i;:::-;;:21;360:8685;;;;;;;;;;;:::i;:::-;;;;;;;;;3384:64;:::i;:::-;3480:24;3494:9;;;:::i;3480:24::-;360:8685;;;;3514:49;360:8685;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;360:8685:65;;;;3514:49;:::i;:::-;360:8685;;;;;;:::i;:::-;2117:44;360:8685;;2117:44;360:8685;;;;;;;;;;;:::i;:::-;2117:44;360:8685;;;;;;;;;;;;;-1:-1:-1;;360:8685:65;;;;;;;3635:27;;;;:::i;:::-;360:8685;;523:5;;;;;;;;2117:44;360:8685;;;;;27501:38:3;;360:8685:65;;;;27501:38:3;;3624:4:65;44640:78:15;27501:38:3;;360:8685:65;44640:78:15;27501:38:3;;;360:8685:65;27501:38:3;;:::i;:::-;27484:56;;;;;;27568:30;27484:56;;:::i;:::-;360:8685:65;;;;27568:30:3;;;;;;:::i;:::-;-1:-1:-1;6854:12:8;360:8685:65;;-1:-1:-1;;;;;;360:8685:65;-1:-1:-1;;;;;360:8685:65;;;;;7009:9:8;360:8685:65;;-1:-1:-1;;360:8685:65;27524:10:3;360:8685:65;;;7505:10:8;360:8685:65;;;;;;;8420:1;360:8685;;7505:10:8;360:8685:65;7505:10:8;360:8685:65;;;;;;7505:10:8;2117:44:65;360:8685;;2117:44;360:8685;;3624:4;360:8685;;;;;;;6854:12:8;360:8685:65;;7009:9:8;360:8685:65;;;15610:11:8;360:8685:65;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;360:8685:65;;;;;;27635:8:3;360:8685:65;;;;;15703:15:8;;360:8685:65;;;;;;2117:44;360:8685;;;;;2117:44;360:8685;;;;;15735:37:8;;;;;;;;;;:::i;:::-;;360:8685:65;;15735:37:8;;;;;;:::i;:::-;360:8685:65;15725:48:8;;2117:44:65;360:8685;;;;8487:1;360:8685;;2117:44;360:8685;15703:77:8;360:8685:65;;15702:78:8;15698:126;;8365:37:65;-1:-1:-1;;;;;360:8685:65;;;;;;27635:8:3;360:8685:65;;;;;;2117:44;360:8685;;;15889:37:8;;360:8685:65;;2117:44;360:8685;;;;;15889:37:8;;;360:8685:65;15889:37:8;;;;;:::i;:::-;360:8685:65;15879:48:8;;2117:44:65;360:8685;;;;;2117:44;360:8685;8420:1;15943:15:8;;360:8685:65;15961:16:8;8468:1:65;15961:16:8;;360:8685:65;15943:34:8;;;;:::i;:::-;15938:460;;8365:37:65;360:8685;;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;360:8685:65;;2117:44;16424:32:8;;360:8685:65;192:59:1;;;360:8685:65;;;;;;;;;192:59:1;360:8685:65;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;2117:44:65;16424:32:8;;;8365:37:65;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;360:8685:65;;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;360:8685:65;;2117:44;16587:43:8;;360:8685:65;12810:59:8;;;360:8685:65;;;;;523:5;;360:8685;;;12656:92:8;12810:59;;;360:8685:65;-1:-1:-1;360:8685:65;12810:59:8;360:8685:65;-1:-1:-1;;;;;;;;;;;;16587:43:8;;;;;;;;8365:37:65;-1:-1:-1;7009:9:8;360:8685:65;;;;1364:48:8;44640:78:15;1392:19:8;27635:8:3;1392:19:8;:::i;:::-;360:8685:65;;;1364:48:8;;;;;;360:8685:65;;;;;;;;;;;;;;;;;;;-1:-1:-1;;360:8685:65;;;;1364:48:8;;360:8685:65;;1364:48:8;;;;;;:::i;:::-;6854:12;360:8685:65;-1:-1:-1;;1458:29:8;;-1:-1:-1;;;;1458:29:8;-1:-1:-1;;;;;360:8685:65;1458:29:8;;;;:::i;:::-;15610:11;360:8685:65;;;;-1:-1:-1;;;;;523:5:65;;;;;;-1:-1:-1;;360:8685:65;;-1:-1:-1;;360:8685:65;;11010:13:8;;360:8685:65;;;11010:29:8;360:8685:65;11010:29:8;;-1:-1:-1;;11049:106:8;11069:7;;;;;;1563:24;;;;16724:8;360:8685:65;;;16724:29:8;;11049:106;16720:176;;;;360:8685:65;;;;;;6854:12:8;360:8685:65;;6854:12:8;360:8685:65;;;7009:9:8;360:8685:65;;7009:9:8;360:8685:65;7505:10:8;360:8685:65;11645:19:8;;7505:10;360:8685:65;;;;11049:106:8;-1:-1:-1;;;15610:11:8;360:8685:65;11762:25:8;360:8685:65;;-1:-1:-1;;360:8685:65;;;;;;;;:::i;:::-;;;;11049:106:8;360:8685:65;;;;;;;3697:13;;360:8685;2117:44;;;;;-1:-1:-1;;;;;;;;;;;3697:13:65;;;;;;2117:44;;3697:13;;;;11049:106:8;-1:-1:-1;8420:1:65;3761:3;360:8685;;3741:18;;;;;1222:159:15;3878:14:65;360:8685;12952:65:15;3878:14:65;;;:::i;:::-;3910:10;;;;;:::i;:::-;360:8685;;;;;;;;;;;;;:::i;:::-;;;;;;1590:14:0;;;-1:-1:-1;;;360:8685:65;;1590:14:0;;;360:8685:65;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;360:8685:65;12952:65:15;;;;360:8685:65;44640:78:15;12952:65;;360:8685:65;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;360:8685:65;;;;;;;:::i;:::-;;;;;;12952:65:15;360:8685:65;;12952:65:15;;;;;;:::i;:::-;1222:159;360:8685:65;;1222:159:15;;591:42;1222:159;;;3972:24:65;3986:9;;;;:::i;3972:24::-;1222:159:15;4051:10:65;360:8685;12771:66:15;4051:10:65;;;;;:::i;:::-;360:8685;;;;;;;;;;:::i;:::-;1590:14:0;360:8685:65;;1590:14:0;360:8685:65;1590:14:0;;;360:8685:65;;;12771:66:15;;;;;;360:8685:65;12771:66:15;;;360:8685:65;;44640:78:15;12771:66;;360:8685:65;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;360:8685:65;;;;;12771:66:15;-1:-1:-1;;12771:66:15;;;;;;:::i;:::-;1222:159;360:8685:65;;1222:159:15;;591:42;1222:159;;;4166:10:65;360:8685;4166:10;;4093:97;4166:10;;;;:::i;:::-;360:8685;;;;-1:-1:-1;;;4093:97:65;;360:8685;;;;;2117:44;4093:97;;;:::i;:::-;;2117:44;;;360:8685;;;;;;;4093:97;;;;;;;2117:44;;4093:97;;;3761:3;360:8685;;;523:5;;;;;;;;;;;;;4244:52;4335:26;4286:10;523:5;4286:10;;;;:::i;:::-;360:8685;523:5;;4244:52;:::i;:::-;360:8685;;;4349:11;;4335:26;:::i;:::-;360:8685;4375:60;360:8685;;;;;;;;;:::i;:::-;1590:14:0;360:8685:65;;1590:14:0;360:8685:65;1590:14:0;;;4375:60:65;:::i;:::-;4449;360:8685;;;;;;;;;:::i;:::-;1590:14:0;360:8685:65;;1590:14:0;360:8685:65;1590:14:0;;;4449:60:65;:::i;:::-;4523:61;360:8685;;;;;;;;;:::i;:::-;1590:14:0;360:8685:65;;1590:14:0;360:8685:65;1590:14:0;;;4523:61:65;:::i;:::-;4599:1176;;;;;360:8685;;;;;5013:164;;4819:176;;-1:-1:-1;;4637:164:65;;360:8685;-1:-1:-1;360:8685:65;;;;:::i;:::-;1590:14:0;360:8685:65;;1590:14:0;360:8685:65;1590:14:0;;;-1:-1:-1;;;360:8685:65;;1590:14:0;;;4637:164:65;;:::i;:::-;360:8685;;;;;;;;;;;:::i;:::-;;;;1590:14:0;360:8685:65;1590:14:0;;;;360:8685:65;;1590:14:0;;;4819:176:65;;:::i;:::-;360:8685;;;;;;;;;;;:::i;:::-;1590:14:0;360:8685:65;;1590:14:0;360:8685:65;1590:14:0;;;-1:-1:-1;;;360:8685:65;;1590:14:0;;;5013:164:65;;:::i;:::-;360:8685;;;;;;;5789:25;;360:8685;;2117:44;5789:25;;360:8685;;2117:44;44640:78:15;2117:44:65;;;-1:-1:-1;;;;;;;;;;;5789:25:65;;;;;;;8420:1;5789:25;;;4599:1176;3761:3;360:8685;3726:13;;5789:25;;;360:8685;5789:25;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;360:8685;;;192:59:1;2117:44:65;;192:59:1;;;;;4599:1176:65;5407:172;1590:14:0;5216:173:65;5597:163;1590:14:0;;;:::i;:::-;5216:173:65;;;:::i;:::-;1590:14:0;;:::i;:::-;5407:172:65;;;:::i;:::-;360:8685;;;;;;;;;:::i;:::-;;;;1590:14:0;360:8685:65;1590:14:0;;;-1:-1:-1;;;360:8685:65;;1590:14:0;;;5597:163:65;;:::i;:::-;4599:1176;;523:5;360:8685;;;2117:44;;523:5;6854:12:8;2117:44:65;523:5;44640:78:15;2117:44:65;;523:5;4093:97;;;;360:8685;4093:97;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;3741:18;;;;;;;;;5873:3;523:5;;;;;;;5873:3;523:5;;;;;;;;360:8685;;;-1:-1:-1;;;5941:50:65;;2117:44;;;;5941:50;;360:8685;;;-1:-1:-1;;;;;360:8685:65;;;;;;;;;;;;;;2117:44;;360:8685;523:5;;;;;360:8685;2117:44;;360:8685;;;;;;;5941:50;;;;;;5914:122;2117:44;;;5941:50;;;3721:2104;5914:122;;:::i;:::-;;;;6590;360:8685;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;360:8685:65;;;;;6590:122;:::i;:::-;360:8685;;;;;;;;;;:::i;:::-;8420:1;360:8685;;;;-1:-1:-1;;360:8685:65;;;;;;6783:37;;;:::i;:::-;360:8685;;;;-1:-1:-1;;;6835:57:65;;2117:44;;360:8685;;6835:57;;;;;2117:44;6835:57;;;:::i;:::-;;2117:44;;;360:8685;;;;;;;6835:57;;2117:44;;6835:57;;6047:287;-1:-1:-1;6831:346:65;;8420:1;6831:346;;:::i;:::-;;;;;;;;7259:18;360:8685;6831:346;7259:18;:::i;:::-;360:8685;;7190:97;360:8685;;;;;;;;;;;;;7190:97;;2117:44;7190:97;;;:::i;:::-;2117:44;;7190:97;;;;-1:-1:-1;;;;;360:8685:65;7190:97;;2117:44;;7190:97;;6831:346;-1:-1:-1;7186:342:65;;8420:1;7186:342;;:::i;:::-;;;;;;;;6047:287;6344:39;360:8685;;;;;;;;:::i;:::-;1590:14:0;360:8685:65;;1590:14:0;360:8685:65;1590:14:0;;;6344:39:65;:::i;7186:342::-;7375:153;;:::i;:::-;;;;7186:342;;;;7375:153;2117:44;;360:8685;;;;;2117:44;;-1:-1:-1;7418:99:65;;2117:44;360:8685;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;360:8685:65;;;;;7418:99;:::i;:::-;7375:153;;;7186:342;360:8685;;;-1:-1:-1;;;7302:61:65;;360:8685;2117:44;7302:61;;360:8685;;44640:78:15;360:8685:65;;;;;;;;-1:-1:-1;;;360:8685:65;;;;;;7302:61;7190:97;;;360:8685;7190:97;360:8685;7190:97;;;;;;;:::i;:::-;;;6831:346;7018:159;;:::i;:::-;;;;6831:346;;;;7018:159;2117:44;;360:8685;;;;;2117:44;;-1:-1:-1;7061:105:65;;2117:44;360:8685;;;;;:::i;:::-;;;;;;;;;;;;;;;7061:105;:::i;:::-;7018:159;;;6831:346;360:8685;;;-1:-1:-1;;;6907:99:65;;360:8685;2117:44;6907:99;;360:8685;;44640:78:15;360:8685:65;;;;;;;;;;;;;;;6907:99;6835:57;;;;2117:44;;;6835:57;;;;;;:::i;:::-;;;;;:::i;:::-;;;6047:287;360:8685;;;;;7738:117;;360:8685;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;360:8685:65;;;;;7738:117;:::i;:::-;360:8685;;;;;;;;;;:::i;:::-;8420:1;360:8685;;;;-1:-1:-1;;360:8685:65;;;;;;7926:37;;;:::i;:::-;360:8685;;;;;;;;7974:57;;2117:44;;7974:57;;;;;;;2117:44;7974:57;;;:::i;:::-;;2117:44;;;360:8685;;;;;;;7974:57;;;;;;;360:8685;;8110:18;;7974:57;;6047:287;8110:18;;:::i;:::-;360:8685;;8041:97;360:8685;;;;;;;;;;;;;8041:97;;2117:44;8041:97;;;:::i;:::-;2117:44;;8041:97;;;;-1:-1:-1;;;;;360:8685:65;8041:97;;;;;;;;6047:287;;;;8041:97;;;360:8685;8041:97;360:8685;8041:97;;;;;;;:::i;:::-;;;;;7974:57;;;;2117:44;;;7974:57;;;;;;:::i;:::-;;;5941:50;;;;;2117:44;;;5941:50;;;;;;:::i;:::-;;;;3697:13;360:8685;3697:13;;360:8685;3697:13;;;;;;192:59:1;3697:13:65;;;:::i;:::-;;;192:59:1;;;;;3697:13:65;;;;;;;;-1:-1:-1;3697:13:65;;360:8685;;;;;;;;-1:-1:-1;;;360:8685:65;;;;;;;;11645:19:8;;360:8685:65;8420:1;360:8685;;11645:19:8;;360:8685:65;;;;;;;;;;;;;;;-1:-1:-1;;11645:19:8;;;360:8685:65;;;;;11645:19:8;;360:8685:65;;;;;;;;;;;;;;;;;;;;7505:10:8;11645:19;;360:8685:65;;11645:19:8;;360:8685:65;;;;;;;;;;;;;;;-1:-1:-1;;360:8685:65;;8420:1;360:8685;;;16720:176:8;360:8685:65;16769:41:8;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;360:8685:65;;;-1:-1:-1;;;16769:41:8;;2117:44:65;;-1:-1:-1;;;;;360:8685:65;;;2117:44;16769:41:8;;360:8685:65;12810:59:8;;;360:8685:65;;;;12810:59:8;;;360:8685:65;;;12810:59:8;;;16769:41;2117:44:65;;;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;;;;;16720:176;360:8685:65;;;-1:-1:-1;;;16824:61:8;;360:8685:65;2117:44;16824:61:8;;12810:59;360:8685:65;44640:78:15;12810:59:8;;360:8685:65;12810:59:8;360:8685:65;;;12810:59:8;-1:-1:-1;;;360:8685:65;12810:59:8;;;360:8685:65;;16824:61:8;16769:41;2117:44:65;;16769:41:8;;;:::i;:::-;360:8685:65;;;;16769:41:8;;;360:8685:65;2117:44;;;360:8685;16724:29:8;360:8685:65;523:5;16736:17:8;;;-1:-1:-1;16724:29:8;;;;11078:3;523:5:65;;;;11114:10:8;523:5:65;;360:8685;523:5;11114:10:8;:::i;:::-;360:8685:65;;;;;;;;;;;;8487:1;523:5;;;;;-1:-1:-1;;;;;;360:8685:65;523:5;;11142:1:8;523:5:65;;;;;;;;8420:1;360:8685;;11097:47:8;11078:3;360:8685:65;11054:13:8;;;;;360:8685:65;;;;-1:-1:-1;;360:8685:65;;2117:44;360:8685;44640:78:15;-1:-1:-1;;360:8685:65;11010:29:8;;;;16587:43;2117:44:65;16587:43:8;;;:::i;:::-;2117:44:65;360:8685;;16587:43:8;;;;360:8685:65;;;192:59:1;2117:44:65;192:59:1;;;;;16424:32:8;;;;360:8685:65;16424:32:8;;360:8685:65;16424:32:8;;;;;;192:59:1;16424:32:8;;;:::i;:::-;;;192:59:1;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;:::i;:::-;16021:3;360:8685:65;16021:3:8;360:8685:65;;;;;;;;;;;;-1:-1:-1;;;16314:19:8;;8420:1:65;360:8685;;2117:44;16314:19:8;;360:8685:65;-1:-1:-1;360:8685:65;44640:78:15;360:8685:65;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;2117:44:65;16314:19:8;;;15938:460;360:8685:65;;;16170:185:8;12810:59;8420:1:65;360:8685;;;;16170:185:8;;;12810:59;16170:185;;;12810:59;;360:8685:65;;12810:59:8;;;-1:-1:-1;;;360:8685:65;;12810:59:8;;;360:8685:65;;;;;;12810:59:8;;;360:8685:65;;;2117:44;360:8685;;;;16170:185:8;;360:8685:65;;16170:185:8;;;;;;:::i;:::-;360:8685:65;523:5;360:8685;523:5;16103:21:8;12810:59;;;15938:460;;;12810:59;360:8685:65;;;-1:-1:-1;;;12810:59:8;;360:8685:65;2117:44;12810:59:8;;360:8685:65;;;;;;44640:78:15;360:8685:65;;;;:::i;:::-;12810:59:8;;;16314:19;;;;;2117:44:65;16314:19:8;;;;;;:::i;:::-;;;12810:59;360:8685:65;12810:59:8;;;;;;;;;-1:-1:-1;;;;;12810:59:8;;;;;;;360:8685:65;12810:59:8;;;;;;;;;;;:::i;:::-;360:8685:65;;;;;;;;:::i;:::-;12810:59:8;;;360:8685:65;12810:59:8;;;;;;;;8420:1:65;12810:59:8;2117:44:65;360:8685;12810:59:8;16170:185;12810:59;;;;;;;;360:8685:65;;;;;16314:19:8;;;;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;2822:49:65;;;;;;;2117:44;2822:49;;;;;;:::i;:::-;;;;;8365:37;8397:5;523;;;8365:37;;2467:50;;;;;;2117:44;2467:50;;;;;;:::i;:::-;;;;2117:44;;;;;;;;;;;:::i;:::-;;;360:8685;;;;;;;;;;;-1:-1:-1;;;;;360:8685:65;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;2117:44;;;:47;:44;;;360:8685;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;360:8685:65;;;;:::o;:::-;;;:::o;6764:749:58:-;3256:31:33;;3304:55;;-1:-1:-1;;;;;360:8685:65;;;;2626:1:33;;;;3256:31;;2626:1;360:8685:65;3256:31:33;;;;:::i;:::-;3304:55;;:::i;:::-;360:8685:65;;7289:21:58;;7285:222;;6764:749;;:::o;7285:222::-;3256:31:33;7390:30:58;;;;;;;;;:::i;:::-;360:8685:65;;;6764:749:58:o;360:8685:65:-;;;-1:-1:-1;;;360:8685:65;;3256:31:33;360:8685:65;;;;;;;;;;;;;;-1:-1:-1;;;360:8685:65;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13228:134:1:-;-1:-1:-1;;;;;;;;;;;13326:29:1;;;;360:8685:65;;2117:44;360:8685;;;;;;;;;;;13326:29:1;;;;;360:8685:65;;;;;;;;;;;;;;;;:::i;:::-;13326:29:1;;-1:-1:-1;;;;;;;;;;;13326:29:1;;;;;;;;13228:134;:::o;13326:29::-;2117:44:65;13326:29:1;;;:::i;13228:134::-;;-1:-1:-1;;;;;;;;;;;13326:29:1;;;;;360:8685:65;13326:29:1;360:8685:65;;;;;;;;;;13326:29:1;;;;;;:::i;6598:121:15:-;1222:159;360:8685:65;6669:42:15;6598:121;;360:8685:65;;6669:42:15;;;;;;;;;;;;;;360:8685:65;;;;;;:::i;6669:42:15:-;1222:159;360:8685:65;;1222:159:15;;591:42;1222:159;;;6598:121::o;7546:145::-;360:8685:65;7629:54:15;1222:159;7546:145;;;;360:8685:65;;7629:54:15;;;;;;;;;;360:8685:65;7629:54:15;;;360:8685:65;;;;;;:::i;:::-;;;;;;7629:54:15;360:8685:65;;7629:54:15;;;;;;:::i;15596:134:1:-;;-1:-1:-1;;;;;;;;;;;15694:29:1;;;;;360:8685:65;15694:29:1;360:8685:65;;;;;;;;;;15694:29:1;;;;;;:::i;360:8685:65:-;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;360:8685:65;;;;;;;;;;;;-1:-1:-1;;;;;360:8685:65;;;;;;;;;;;;-1:-1:-1;;;;;360:8685:65;;;;;;;-1:-1:-1;;360:8685:65;;;;;;;;;-1:-1:-1;360:8685:65;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;:::o;:::-;;;;;;;;;;:::o;7846:150:15:-;360:8685:65;7935:53:15;1222:159;7846:150;;360:8685:65;7846:150:15;;360:8685:65;;7935:53:15;;;;;;;;;;360:8685:65;7935:53:15;;;360:8685:65;;;;;;:::i;:::-;;;;-1:-1:-1;;360:8685:65;;;;;;;:::i;4421:582:33:-;;4593:8;;-1:-1:-1;360:8685:65;;5674:21:33;:17;;5846:142;;;;;;5670:385;6025:19;;;5694:1;6025:19;;5694:1;6025:19;4589:408;360:8685:65;;4841:22:33;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:33;4917:24;;;-1:-1:-1;;;;;360:8685:65;;;;4917:24:33;360:8685:65;;;4917:24:33;4841:49;4867:18;;;:23;4841:49;;360:8685:65;;;;;;;;;;;;;;;;;;;;;:::o;953:236:8:-;360:8685:65;1052:14:8;360:8685:65;;:::i;:::-;1052:14:8;;360:8685:65;;;;;;1109:10:8;360:8685:65;;;;;;1109:10:8;1077:1;360:8685:65;;1077:1:8;360:8685:65;;1077:1:8;360:8685:65;;;;;;;;;;;;;;:::i;:::-;;;523:5;;;;;;;360:8685;523:5;;;;;;;360:8685;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;1077:1:8;11360:3;360:8685:65;;11346:12:8;;;;;11391:4;;1109:10;11391:4;;;:::i;:::-;360:8685:65;;11456:84:8;523:5:65;11456:84:8;;;;;360:8685:65;11331:13:8;;11346:12;-1:-1:-1;11346:12:8;-1:-1:-1;1094:26:8:o;360:8685:65:-;;;;;1109:10:8;360:8685:65;;;;;;-1:-1:-1;360:8685:65;;;;;;;;1048:135:8;360:8685:65;;;;;;1052:14:8;360:8685:65;:::i;953:236:8:-;1052:14;;;360:8685:65;;;;;:::i;:::-;1052:21:8;;1109:10;;;;360:8685:65;;;;;;;;;;;;;;;1077:1:8;360:8685:65;;1077:1:8;360:8685:65;;1077:1:8;360:8685:65;;;;;;;;;;;;;;:::i;:::-;;;523:5;;;;;;;360:8685;523:5;;;;;;;360:8685;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;1077:1:8;11360:3;360:8685:65;;11346:12:8;;;;;11391:4;;1109:10;11391:4;;;:::i;:::-;360:8685:65;;11456:84:8;523:5:65;11456:84:8;;;;;360:8685:65;11331:13:8;;360:8685:65;;;;;1109:10:8;360:8685:65;;;;;;-1:-1:-1;360:8685:65;;;;;;;;1048:135:8;360:8685:65;;;;;;;;;;;:::i;1251:343:8:-;;-1:-1:-1;1381:9:8;1364:48;1381:9;;;360:8685:65;;;1364:48:8;360:8685:65;1392:19:8;;;:::i;:::-;360:8685:65;;1364:48:8;;;;;;360:8685:65;;;;;;;;;;;;;;;;;;;;;;;;1364:48:8;;360:8685:65;;1364:48:8;;;;;;:::i;:::-;360:8685:65;1458:12:8;;360:8685:65;1458:29:8;;;-1:-1:-1;;;;;360:8685:65;1458:29:8;;1540:11;1458:29;;:::i;:::-;1540:11;;360:8685:65;523:5;;;;;-1:-1:-1;;;;;523:5:65;;;;;-1:-1:-1;360:8685:65;;;1364:48:8;11010:13;;:29;1364:48;;;11010:29;1364:48;11010:29;;-1:-1:-1;11049:106:8;11069:7;;;;;;1563:24;;;;;1251:343;:::o;11078:3::-;11114:10;;;;;;;;:::i;:::-;360:8685:65;;;;;;;;;1364:48:8;360:8685:65;;1540:11:8;523:5:65;;;;;-1:-1:-1;;;;;;360:8685:65;523:5;;11142:1:8;523:5:65;;;;;;;;360:8685;;;11097:47:8;11078:3;360:8685:65;11054:13:8;;;;;11010:29;;;;643:59;;;;;;;;;;;;;;;:::i;:::-;360:8685:65;;;;;;;:::i;:::-;643:59:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;192::1;;643::8;;;;;;;;;;4249:2493;4361:12;360:8685:65;4397:9:8;360:8685:65;4438:11:8;360:8685:65;-1:-1:-1;;;;;360:8685:65;;;;2117:44;;360:8685;;4481:19:8;27635:8:3;4481:19:8;:::i;:::-;4551:15;360:8685:65;2117:44;360:8685;27635:8:3;360:8685:65;;;2117:44;360:8685;;;;;;;;2117:44;360:8685;;;;2117:44;360:8685;;;;4583:37:8;;;;;;;;;;:::i;:::-;360:8685:65;4573:48:8;;2117:44:65;360:8685;;;;4438:11:8;360:8685:65;2117:44;360:8685;4551:77:8;360:8685:65;;4547:255:8;;-1:-1:-1;;;;;;;;;;;4811:11:8;;;;360:8685:65;;-1:-1:-1;;;4811:11:8;;2117:44:65;360:8685;4361:12:8;360:8685:65;2117:44;-1:-1:-1;;;;;;;;;;;4811:11:8;;;;;;;;4249:2493;4857:16;;27635:8:3;4857:16:8;:::i;:::-;360:8685:65;;;;;;;4911:25:8;;;4361:12;4911:25;;360:8685:65;4911:25:8;;;;;-1:-1:-1;;;;;;;;;;;4911:25:8;;;;;;;;;;;4249:2493;-1:-1:-1;360:8685:65;;4951:12:8;;4984:74;360:8685:65;;12810:59:8;;;4984:74;;360:8685:65;4361:12:8;4984:74;;643:59;360:8685:65;4911:25:8;643:59;;360:8685:65;643:59:8;360:8685:65;;;643:59:8;;;;;;4984:74;4947:1461;5094:13;5127:3;360:8685:65;;5109:16:8;;;;;5178:8;360:8685:65;5178:8:8;;5165:22;5178:8;;:::i;:::-;360:8685:65;;;-1:-1:-1;;;5165:22:8;;-1:-1:-1;;;;;360:8685:65;;4361:12:8;5165:22;;360:8685:65;192:59:1;;;360:8685:65;;;;;;;;;192:59:1;;;;;5165:22:8;;;-1:-1:-1;;;;;;;;;;;5165:22:8;;;;;;;;;;;5127:3;5209:18;;;5205:114;;5127:3;5369:8;;;;:::i;:::-;360:8685:65;4361:12:8;360:8685:65;;;-1:-1:-1;;;1978:27:8;;-1:-1:-1;;;;;360:8685:65;;;4361:12:8;1978:27;;360:8685:65;;;192:59:1;;;360:8685:65;;;;;;;192:59:1;360:8685:65;-1:-1:-1;;;;;;;;;;;1978:27:8;;;;;;;;;;;5127:3;2057:16;;27635:8:3;2057:16:8;:::i;:::-;2102:65;;;:29;;:65;:29;;;-1:-1:-1;;1396:17:65;2102:65:8;-1:-1:-1;;;;;;;;;;;2177:37:8;;;;360:8685:65;;-1:-1:-1;;;2177:37:8;;-1:-1:-1;;;;;360:8685:65;;;;4361:12:8;2177:37;;360:8685:65;12810:59:8;;;360:8685:65;;;12810:59:8;;;360:8685:65;;;;;;12810:59:8;360:8685:65;;-1:-1:-1;;;;;;;;;;;2177:37:8;;;;;;;;;;;2102:65;2254:16;;;27635:8:3;2254:16:8;:::i;:::-;4361:12;360:8685:65;;;;-1:-1:-1;;;;;;360:8685:65;-1:-1:-1;;;;;;;;;;;2281:43:8;;;;360:8685:65;;-1:-1:-1;;;2281:43:8;;-1:-1:-1;;;;;360:8685:65;;;;4361:12:8;2281:43;;360:8685:65;12810:59:8;;;360:8685:65;;;;12810:59:8;;;360:8685:65;;;;;;12810:59:8;360:8685:65;;-1:-1:-1;;;;;;;;;;;2281:43:8;;;;;;;;;;;2102:65;2343:46;;;;;2102:65;5341:37;;;5337:92;;5447:50;;;360:8685:65;;5520:25:8;360:8685:65;;5516:256:8;;2102:65;12275:113;;;;;;;-1:-1:-1;;12275:113:8;;;5902:57;360:8685:65;;5998:29:8;;5994:84;;360:8685:65;;6319:8:8;360:8685:65;6101:89:8;643:59;360:8685:65;;6132:37:8;;360:8685:65;;;6132:37:8;;;360:8685:65;6132:37:8;;;;;:::i;:::-;360:8685:65;6122:48:8;;6180:8;;;;:::i;:::-;360:8685:65;;;;;;;643:59:8;360:8685:65;643:59:8;;360:8685:65;;643:59:8;;360:8685:65;643:59:8;;;360:8685:65;6101:89:8;6319:8;:::i;:::-;360:8685:65;;;;;643:59:8;360:8685:65;;;;;-1:-1:-1;;;;;360:8685:65;;;;;;4438:11:8;360:8685:65;;;;;;;;6302:58:8;;360:8685:65;;;;6302:58:8;;360:8685:65;;;643:59:8;6302:58;;643:59;360:8685:65;643:59:8;;360:8685:65;;;27635:8:3;360:8685:65;;;;;;;;;;;;;;;;6240:37:8;;;;;;;;;;:::i;:::-;360:8685:65;6230:48:8;;360:8685:65;;;;;;;;;643:59:8;;360:8685:65;;643:59:8;;;360:8685:65;4397:9:8;643:59;;;;;;360:8685:65;;;;;643:59:8;;;;;;;;5089:1309;360:8685:65;;;27635:8:3;360:8685:65;;;;;;;;;;;;;;;;6471:37:8;;;;;;;;;;:::i;:::-;360:8685:65;6461:48:8;;360:8685:65;;;;;4438:11:8;360:8685:65;;;6439:77:8;360:8685:65;;643:59:8;;;360:8685:65;6664:15:8;360:8685:65;;27635:8:3;360:8685:65;;;;;;;;;;6696:37:8;;360:8685:65;;;;;;6696:37:8;;;360:8685:65;6696:37:8;;;;;:::i;:::-;360:8685:65;6686:48:8;;360:8685:65;;;;;4249:2493:8;:::o;643:59::-;360:8685:65;;-1:-1:-1;;;643:59:8;;360:8685:65;4361:12:8;643:59;;;;4911:25;643:59;;360:8685:65;643:59:8;360:8685:65;;;643:59:8;-1:-1:-1;;;643:59:8;;;;;;;360:8685:65;-1:-1:-1;;;360:8685:65;;;4361:12:8;360:8685:65;4911:25:8;360:8685:65;;5994:84:8;6051:8;;;;360:8685:65;6051:8:8;5094:13;360:8685:65;5094:13:8;;5516:256;5654:8;;3216:27;5654:8;;;;;;:::i;:::-;360:8685:65;4361:12:8;360:8685:65;;;-1:-1:-1;;;3216:27:8;;-1:-1:-1;;;;;360:8685:65;;;4361:12:8;3216:27;;360:8685:65;192:59:1;;;360:8685:65;;;;;;;;;;;;;192:59:1;;;;;3216:27:8;;;-1:-1:-1;;;;;;;;;;;3216:27:8;;;;;;;;;;;5516:256;3293:28;;;27635:8:3;3293:28:8;:::i;:::-;3372:29;;;;;27635:8:3;3372:29:8;:::i;:::-;4361:12;360:8685:65;;;;;;-1:-1:-1;;;;;360:8685:65;-1:-1:-1;;;;;;;;;;;3497:43:8;;;;360:8685:65;;-1:-1:-1;;;3497:43:8;;-1:-1:-1;;;;;360:8685:65;;;;4361:12:8;3497:43;;360:8685:65;12810:59:8;;;360:8685:65;;;;12810:59:8;;;360:8685:65;;;;;;12810:59:8;360:8685:65;;-1:-1:-1;;;;;;;;;;;3497:43:8;;;;;;;;;;;5516:256;3558:23;;;;;5516:256;5601:62;;5689:6;5516:256;5685:69;5723:8;;;;;360:8685:65;5723:8:8;;;3558:23;;-1:-1:-1;3558:23:8;;;3497:43;;;;;:::i;:::-;360:8685:65;;3497:43:8;;;;360:8685:65;;;;3497:43:8;360:8685:65;;192:59:1;360:8685:65;;192:59:1;;;;3497:43:8;360:8685:65;;;3216:27:8;;;;360:8685:65;3216:27:8;;;;;;;;;192:59:1;3216:27:8;;;:::i;:::-;;;192:59:1;;;;;3216:27:8;;;;;;;-1:-1:-1;3216:27:8;;;360:8685:65;;192:59:1;360:8685:65;;192:59:1;;;;5337:92:8;5402:8;;360:8685:65;5402:8:8;;;2343:46;2355:33;;;-1:-1:-1;2343:46:8;;;;2281:43;;;;;:::i;:::-;360:8685:65;;2281:43:8;;;;360:8685:65;;;;2281:43:8;360:8685:65;;192:59:1;360:8685:65;;192:59:1;;;;2281:43:8;360:8685:65;;;2177:37:8;;;;;:::i;:::-;360:8685:65;;2177:37:8;;;;2102:65;;;;;1978:27;;;360:8685:65;1978:27:8;;;;;;;;;192:59:1;1978:27:8;;;:::i;:::-;;;192:59:1;;;;;1978:27:8;;;;;;-1:-1:-1;1978:27:8;;;360:8685:65;;192:59:1;360:8685:65;;192:59:1;;;;5205:114:8;5256:44;;5290:8;;;;:::i;:::-;360:8685:65;;;;-1:-1:-1;;;;;360:8685:65;;;;192:59:1;;;360:8685:65;;;;;;;;192:59:1;;;;5256:44:8;;;;5205:114;;5165:22;;;;360:8685:65;5165:22:8;;;;;;;;;192:59:1;5165:22:8;;;:::i;:::-;;;192:59:1;;;;;5165:22:8;;;;;;;-1:-1:-1;5165:22:8;;;360:8685:65;;192:59:1;360:8685:65;;192:59:1;;;;5109:16:8;;;;;;4911:25;;;;;;;;;;;;:::i;:::-;;;360:8685:65;643:59:8;;;;;;;;-1:-1:-1;;;;;643:59:8;;;;;;;;;;:::i;:::-;;360:8685:65;643:59:8;;;;-1:-1:-1;;;;;643:59:8;;;;;;;;;:::i;:::-;;4911:25;;;643:59;360:8685:65;;;643:59:8;360:8685:65;;;643:59:8;360:8685:65;;;4911:25:8;360:8685:65;;192:59:1;360:8685:65;;192:59:1;;;;4811:11:8;;;;;2117:44:65;4811:11:8;;:::i;:::-;2117:44:65;4811:11:8;;;;4547:255;4720:15;;;;;2117:44:65;360:8685;27635:8:3;360:8685:65;;;2117:44;360:8685;;2117:44;360:8685;;;4752:37:8;;360:8685:65;2117:44;360:8685;;;;4752:37:8;;;360:8685:65;4752:37:8;;;;;:::i;:::-;360:8685:65;4742:48:8;;2117:44:65;360:8685;;;;2117:44;360:8685;4713:78:8;:::o;2560:514::-;;;2695:1;2698:12;2707:3;2698:12;;;;3050:17;;;;2695:1;3050:17;2695:1;2560:514;:::o;2712:8::-;360:8685:65;2771:3:8;360:8685:65;2771:3:8;360:8685:65;;;;2824:12:8;;;360:8685:65;;;;;;-1:-1:-1;;;;;360:8685:65;-1:-1:-1;;;;;;;;;;;2815:49:8;;;;360:8685:65;;-1:-1:-1;;;2815:49:8;;-1:-1:-1;;;;;360:8685:65;;;;2824:12:8;2815:49;;360:8685:65;12810:59:8;;;360:8685:65;;;12810:59:8;;;360:8685:65;;;;-1:-1:-1;360:8685:65;12810:59:8;360:8685:65;-1:-1:-1;;;;;;;;;;;;2815:49:8;;;;;;;;2712:8;2910:16;;;;:::i;:::-;2945:30;;;2712:8;2941:90;;;360:8685:65;;2678:18:8;;2941:90;2995:21;;;360:8685:65;2995:21:8;;:::o;2945:30::-;2957:17;;;;2945:30;;;2815:49;2695:1;2815:49;;;:::i;:::-;;;;2560:514;;;4551:10;2698:12;2707:3;2698:12;;;;3050:17;;;;4551:10;3050:17;4551:10;2560:514;:::o;2712:8::-;2824:12;;;360:8685:65;;;;;-1:-1:-1;;;;;360:8685:65;-1:-1:-1;;;;;;;;;;;2815:49:8;;;;360:8685:65;;-1:-1:-1;;;2815:49:8;;-1:-1:-1;;;;;360:8685:65;;;;2824:12:8;2815:49;;360:8685:65;12810:59:8;;;360:8685:65;;;12810:59:8;;;360:8685:65;;;;-1:-1:-1;360:8685:65;12810:59:8;360:8685:65;-1:-1:-1;;;;;;;;;;;;2815:49:8;;;;;;;;2712:8;2910:16;;;;:::i;:::-;2945:30;;;2712:8;2941:90;;;360:8685:65;;2678:18:8;;2945:30;2957:17;;;;2945:30;;;2815:49;4551:10;2815:49;;;:::i;:::-;;;","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","fractionToInt((uint256,uint256))":"08c41745","runPoolBehaviourTest(address,bytes32[])":"d170c3cc","stringPctgs(uint256)":"a00872f1","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"LimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"Unavailable\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"fsig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keysHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"SlotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"WARNING_UninitedSlot\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction\",\"name\":\"price\",\"type\":\"tuple\"}],\"name\":\"fractionToInt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISwapAdapter\",\"name\":\"adapter\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"poolIds\",\"type\":\"bytes32[]\"}],\"name\":\"runPoolBehaviourTest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"stringPctgs\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"LimitExceeded(uint256)\":[{\"details\":\"The LimitExceeded error is thrown when a limit has been exceeded. E.g. the specified amount can't be traded safely.\"}],\"NotImplemented(string)\":[{\"details\":\"The NotImplemented error is thrown when a function is not implemented.\"}],\"Unavailable(string)\":[{\"details\":\"The Unavailable error is thrown when a pool or swap is not available for unexpected reason. E.g. it was paused due to a bug.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/AdapterTest.sol\":\"AdapterTest\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b\",\"dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54\",\"dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678\",\"dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdToml.sol\":{\"keccak256\":\"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d\",\"dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e\",\"dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a\",\"dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/libraries/EfficientERC20.sol\":{\"keccak256\":\"0x825d7f6aa98465b3c5b5a08d24cadfbb0a06f44693beec4e00ad2fe2824b4ef0\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2a5b53d7d634f50f27a1e45ce9136a054f1f19efc3dcfc1f85c8b1bbeac735fa\",\"dweb:/ipfs/QmQSeQyF86HLRnvKgQogia8W2eoWzncG2m1GkYMnp84DJZ\"]},\"src/libraries/FractionMath.sol\":{\"keccak256\":\"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c\",\"dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr\"]},\"test/AdapterTest.sol\":{\"keccak256\":\"0x56850be2bb3898eee065c3d77aadb6d181ee789da32f30b1d415d5521397fa43\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://8ca34143db16aa27c42ee3f8566ee466095d4aedcc4ea1c7726aa9c593f4fbd0\",\"dweb:/ipfs/QmWBTLXZKbTuT5kVpAbyGCxKRdhsmzWRPZPiTqZMg9BXhd\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"type":"error","name":"LimitExceeded"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"NotImplemented"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"Unavailable"},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"bytes4","name":"fsig","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"keysHash","type":"bytes32","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"SlotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"WARNING_UninitedSlot","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct ISwapAdapterTypes.Fraction","name":"price","type":"tuple","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}],"stateMutability":"pure","type":"function","name":"fractionToInt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"contract ISwapAdapter","name":"adapter","type":"address"},{"internalType":"bytes32[]","name":"poolIds","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"runPoolBehaviourTest"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"stringPctgs","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/AdapterTest.sol":"AdapterTest"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef","urls":["bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b","dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d","urls":["bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54","dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3","urls":["bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678","dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdToml.sol":{"keccak256":"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab","urls":["bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d","dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe","urls":["bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e","dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456","urls":["bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a","dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/libraries/EfficientERC20.sol":{"keccak256":"0x825d7f6aa98465b3c5b5a08d24cadfbb0a06f44693beec4e00ad2fe2824b4ef0","urls":["bzz-raw://2a5b53d7d634f50f27a1e45ce9136a054f1f19efc3dcfc1f85c8b1bbeac735fa","dweb:/ipfs/QmQSeQyF86HLRnvKgQogia8W2eoWzncG2m1GkYMnp84DJZ"],"license":"UNLICENSED"},"src/libraries/FractionMath.sol":{"keccak256":"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735","urls":["bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c","dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr"],"license":"AGPL-3.0-or-later"},"test/AdapterTest.sol":{"keccak256":"0x56850be2bb3898eee065c3d77aadb6d181ee789da32f30b1d415d5521397fa43","urls":["bzz-raw://8ca34143db16aa27c42ee3f8566ee466095d4aedcc4ea1c7726aa9c593f4fbd0","dweb:/ipfs/QmWBTLXZKbTuT5kVpAbyGCxKRdhsmzWRPZPiTqZMg9BXhd"],"license":"AGPL-3.0-or-later"}},"version":1},"id":65} \ No newline at end of file diff --git a/evm/out/Address.sol/Address.json b/evm/out/Address.sol/Address.json deleted file mode 100644 index b8ebfa6..0000000 --- a/evm/out/Address.sol/Address.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220675523db4eb672ca51c97374f5b6ae09702c147ee759ed9ea46f2195176db17064736f6c634300081b0033","sourceMap":"233:5830:33:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea2646970667358221220675523db4eb672ca51c97374f5b6ae09702c147ee759ed9ea46f2195176db17064736f6c634300081b0033","sourceMap":"233:5830:33:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/Address.sol":"Address"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"}},"version":1},"id":33} \ No newline at end of file diff --git a/evm/out/AngleAdapter.sol/AngleAdapter.json b/evm/out/AngleAdapter.sol/AngleAdapter.json deleted file mode 100644 index d10e6b3..0000000 --- a/evm/out/AngleAdapter.sol/AngleAdapter.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_transmuter","type":"address","internalType":"contract ITransmuter"}],"stateMutability":"nonpayable"},{"type":"function","name":"getCapabilities","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"capabilities","type":"uint8[]","internalType":"enum ISwapAdapterTypes.Capability[]"}],"stateMutability":"pure"},{"type":"function","name":"getLimits","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"}],"outputs":[{"name":"limits","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getPoolIds","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"pure"},{"type":"function","name":"getTokens","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"price","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct ISwapAdapterTypes.Fraction[]","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}],"stateMutability":"pure"},{"type":"function","name":"swap","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"},{"name":"side","type":"uint8","internalType":"enum ISwapAdapterTypes.OrderSide"},{"name":"specifiedAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"trade","type":"tuple","internalType":"struct ISwapAdapterTypes.Trade","components":[{"name":"calculatedAmount","type":"uint256","internalType":"uint256"},{"name":"gasUsed","type":"uint256","internalType":"uint256"},{"name":"price","type":"tuple","internalType":"struct ISwapAdapterTypes.Fraction","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"nonpayable"},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LimitExceeded","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotImplemented","inputs":[{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"Unavailable","inputs":[{"name":"reason","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x60a03461008c57601f6116e038819003918201601f19168301916001600160401b038311848410176100905780849260209460405283398101031261008c57516001600160a01b038116810361008c5760805260405161163b90816100a58239608051818181607e015281816103ba01528181610afc01528181610c3a01528181610d0e0152610eb30152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c90816323eeca01146108e45750806348bd7dfd146108435780638307c655146107e0578063a9270fbe1461037e578063aad6e488146102b55763ecbbc0331461005e575f80fd5b346101f25760203660031901126101f25760405163b718136160e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316905f81600481855afa9081156101fe575f9161021d575b50805160018101809111610209576100ed6100d7826109ee565b916100e560405193846109cd565b8083526109ee565b602082019290601f19013684375f5b815181101561012d576001906001600160a01b0361011a8285610a36565b51166101268286610a36565b52016100fc565b506020600492946040519384809263ee565a6360e01b82525afa9182156101fe575f926101bb575b50610164909392935183610a36565b6001600160a01b0390911690526040805160208082529251928101839052928392918301915f5b818110610199575050500390f35b82516001600160a01b031684528594506020938401939092019160010161018b565b9091506020813d6020116101f6575b816101d7602093836109cd565b810103126101f2576101eb6101649161101e565b9190610155565b5f80fd5b3d91506101ca565b6040513d5f823e3d90fd5b634e487b7160e01b5f52601160045260245ffd5b90503d805f833e61022e81836109cd565b8101906020818303126101f2578051906001600160401b0382116101f257019080601f830112156101f2578151610264816109ee565b9261027260405194856109cd565b81845260208085019260051b8201019283116101f257602001905b82821061029d575050505f6100bd565b602080916102aa8461101e565b81520191019061028d565b346101f25760803660031901126101f2576102ce610938565b506102d761094e565b506064356001600160401b0381116101f257366023820112156101f25780600401359060246020610307846109ee565b61031460405191826109cd565b848152019260051b820101903682116101f257602401915b81831061036e57604051631d04569d60e21b8152602060048201526012602482015271416e676c65416461707465722e707269636560701b6044820152606490fd5b823581526020928301920161032c565b346101f25761038c36610964565b60405192509061039d6060846109cd565b600283526020830191604036843760405163ee565a6360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602081600481855afa9081156101fe575f916107a6575b506001600160a01b038381169116810361061f5750604051630333522160e41b81526001600160a01b038416600482018190525f82602481865afa9182156101fe575f926105fb575b50815160ff161561057a5750906104b993610468602061018081969501510151611406565b61047188610a05565b525b61047c87610a05565b516040516322c1d75360e11b815260048101919091526001600160a01b039182166024820152921660448301529092839190829081906064820190565b03915afa9081156101fe575f91610548575b506104d583610a26565b52600a6104e183610a26565b51046104ec83610a26565b52600a6104f883610a05565b510461050383610a05565b52905b604051918291602083019060208452518091526040830191905f5b81811061052f575050500390f35b8251845285945060209384019390920191600101610521565b90506020813d602011610572575b81610563602093836109cd565b810103126101f25751836104cb565b3d9150610556565b60249150602090604051928380926370a0823160e01b82528660048301525afa9081156101fe575f916105c1575b50906104b993602093926105bb88610a05565b52610473565b929190506020833d6020116105f3575b816105de602093836109cd565b810103126101f25791519091906104b96105a8565b3d91506105d1565b6106189192503d805f833e61061081836109cd565b810190611169565b9087610443565b604051630333522160e41b815260048101829052929392905f82602481865afa9182156101fe575f9261078a575b50815160ff161561070957509061068693610672602061018081969501510151611406565b61067b88610a26565b525b61047c87610a26565b03915afa9081156101fe575f916106d7575b506106a283610a05565b52600a6106ae83610a26565b51046106b983610a26565b52600a6106c583610a05565b51046106d083610a05565b5290610506565b90506020813d602011610701575b816106f2602093836109cd565b810103126101f2575183610698565b3d91506106e5565b60249150602090604051928380926370a0823160e01b82528660048301525afa9081156101fe575f91610750575b5090610686936020939261074a88610a26565b5261067d565b929190506020833d602011610782575b8161076d602093836109cd565b810103126101f2579151909190610686610737565b3d9150610760565b61079f9192503d805f833e61061081836109cd565b908761064d565b90506020813d6020116107d8575b816107c1602093836109cd565b810103126101f2576107d29061101e565b866103fa565b3d91506107b4565b346101f25760a03660031901126101f2576107f9610938565b61080161094e565b6064359160028310156101f25760809261081e9260843592610a70565b6020604080519280518452828101518385015201518051604084015201516060820152f35b346101f25761085136610964565b5050506040516108626060826109cd565b60028152602081016040368237600161087a83610a05565b52600261088683610a26565b52604051906020820192602083525180935260408201905f935b8085106108ad5783830384f35b9091825190600a8210156108d057602081600193829352019301940193906108a0565b634e487b7160e01b5f52602160045260245ffd5b346101f25760403660031901126101f257631d04569d60e21b815260206004820152601760248201527f416e676c65416461707465722e676574506f6f6c4964730000000000000000006044820152606490fd5b602435906001600160a01b03821682036101f257565b604435906001600160a01b03821682036101f257565b60609060031901126101f257600435906024356001600160a01b03811681036101f257906044356001600160a01b03811681036101f25790565b604081019081106001600160401b038211176109b957604052565b634e487b7160e01b5f52604160045260245ffd5b90601f801991011681019081106001600160401b038211176109b957604052565b6001600160401b0381116109b95760051b60200190565b805115610a125760200190565b634e487b7160e01b5f52603260045260245ffd5b805160011015610a125760400190565b8051821015610a125760209160051b010190565b60405190610a578261099e565b5f6020838281520152565b519060ff821682036101f257565b91939260405194606086018681106001600160401b038211176109b9576040525f86525f6020870152604051610aa58161099e565b5f81525f6020820152604087015285821561101657505a9060028110156108d05715918215610e83576001600160a01b03851690610ae5813033856114d2565b60405163095ea7b360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201819052602482018390529290916020836044815f865af19081156101fe5760209360c492610e58575b505f60405195869485936301db50ff60e51b85526004850152826024850152604484015260018060a01b038a1660648401523360848401528160a48401525af19081156101fe575f91610e26575b5086525b5a81039081116102095760208601528015610db85760405163313ce56760e01b81526020816004816001600160a01b0388165afa9081156101fe575f91610d7e575b50905b610be8610a4a565b5015610cc257610c3691610bfd6020926113f5565b6040516322c1d75360e11b8152600481018290526001600160a01b03958616602482015291909416604482015291829081906064820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156101fe575f91610c90575b50905b60405191610c828361099e565b825260208201526040830152565b90506020813d602011610cba575b81610cab602093836109cd565b810103126101f257515f610c72565b3d9150610c9e565b610d0a91610cd16020926113f5565b604051639525f3ab60e01b8152600481018290526001600160a01b03958616602482015291909416604482015291829081906064820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156101fe575f91610d4c575b50610c75565b90506020813d602011610d76575b81610d67602093836109cd565b810103126101f257515f610d46565b3d9150610d5a565b90506020813d602011610db0575b81610d99602093836109cd565b810103126101f257610daa90610a62565b5f610bdd565b3d9150610d8c565b60405163313ce56760e01b81526020816004816001600160a01b0387165afa9081156101fe575f91610dec575b5090610be0565b90506020813d602011610e1e575b81610e07602093836109cd565b810103126101f257610e1890610a62565b5f610de5565b3d9150610dfa565b90506020813d602011610e50575b81610e41602093836109cd565b810103126101f257515f610b97565b3d9150610e34565b610e7790853d8711610e7c575b610e6f81836109cd565b8101906113dd565b610b49565b503d610e65565b604051639525f3ab60e01b8152600481018290526001600160a01b038681166024830152858116604483015290917f000000000000000000000000000000000000000000000000000000000000000090911690602083606481855afa9283156101fe575f93610fe2575b506001600160a01b038716610f04843033846114d2565b60405163095ea7b360e01b81526001600160a01b038416600482015260248101859052916020836044815f865af19081156101fe5760209360c492610fc7575b505f6040519586948593635c92b3fd60e11b8552600485015282196024850152604484015260018060a01b038b1660648401523360848401528160a48401525af180156101fe57610f98575b508652610b9b565b610fb99060203d602011610fc0575b610fb181836109cd565b8101906113ce565b505f610f90565b503d610fa7565b610fdd90853d8711610e7c57610e6f81836109cd565b610f44565b9092506020813d60201161100e575b81610ffe602093836109cd565b810103126101f25751915f610eed565b3d9150610ff1565b955050505050565b51906001600160a01b03821682036101f257565b9080601f830112156101f25781519061104a826109ee565b9261105860405194856109cd565b82845260208085019360051b8201019182116101f257602001915b8183106110805750505090565b82516001600160401b03811681036101f257815260209283019201611073565b9080601f830112156101f2578151906110b8826109ee565b926110c660405194856109cd565b82845260208085019360051b8201019182116101f257602001915b8183106110ee5750505090565b82518060070b81036101f2578152602092830192016110e1565b6001600160401b0381116109b957601f01601f191660200190565b81601f820112156101f25780519061113a82611108565b9261114860405194856109cd565b828452602083830101116101f257815f9260208093018386015e8301015290565b6020818303126101f2578051906001600160401b0382116101f25701906101a0828203126101f257604051916101a083018381106001600160401b038211176109b9576040526111b881610a62565b83526111c660208201610a62565b60208401526111d760408201610a62565b60408401526111e860608201610a62565b60608401526111f960808201610a62565b608084015260a08101516001600160d81b03811681036101f25760a084015260c08101516001600160401b0381116101f25782611237918301611032565b60c084015260e08101516001600160401b0381116101f2578261125b9183016110a0565b60e08401526101008101516001600160401b0381116101f25782611280918301611032565b6101008401526101208101516001600160401b0381116101f257826112a69183016110a0565b6101208401526101408101516001600160401b0381116101f257826112cc918301611123565b6101408401526101608101516001600160401b0381116101f257826112f2918301611123565b610160840152610180810151906001600160401b0382116101f257016040818303126101f257604051916113258361099e565b81516001600160401b0381116101f257820181601f820112156101f257805161134d816109ee565b9161135b60405193846109cd565b81835260208084019260051b820101908482116101f257602001915b8183106113ae57505050835260208201516001600160401b0381116101f2576113a09201611123565b602082015261018082015290565b82516001600160a01b03811681036101f257815260209283019201611377565b908160209103126101f2575190565b908160209103126101f2575180151581036101f25790565b60ff16604d811161020957600a0a90565b905f91805181016040828203126101f25760208201519160018310156101f2576040810151916001600160401b0383116101f25761144b926020809201920101611123565b90156114545750565b9091506020818051810103126101f257602001516001600160a01b038116908190036101f25760206004916040519283809263e8c9bee560e01b82525afa9081156101fe575f916114a3575090565b90506020813d6020116114ca575b816114be602093836109cd565b810103126101f2575190565b3d91506114b1565b6040516323b872dd60e01b602082019081526001600160a01b0393841660248301529390921660448301526064808301949094529281529161155c915f9182919061151e6084876109cd565b60018060a01b031694519082865af13d1561159f573d9061153e82611108565b9161154c60405193846109cd565b82523d5f602084013e5b836115a7565b8051908115159182611584575b50506115725750565b635274afe760e01b5f5260045260245ffd5b61159792506020809183010191016113dd565b155f80611569565b606090611556565b906115cb57508051156115bc57805190602001fd5b63d6bda27560e01b5f5260045ffd5b815115806115fc575b6115dc575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156115d456fea2646970667358221220c5c3311a5d17cff62dfcf36c9e310f0750eec2ab8f1197d1bad4f9fd1daec9a564736f6c634300081b0033","sourceMap":"920:7543:40:-:0;;;;;;;;;;;;;-1:-1:-1;;920:7543:40;;;;-1:-1:-1;;;;;920:7543:40;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;920:7543:40;;;;;;1083:24;;920:7543;;;;;;;;1083:24;920:7543;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;920:7543:40;;;;;;-1:-1:-1;920:7543:40;;;;;-1:-1:-1;920:7543:40","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f3560e01c90816323eeca01146108e45750806348bd7dfd146108435780638307c655146107e0578063a9270fbe1461037e578063aad6e488146102b55763ecbbc0331461005e575f80fd5b346101f25760203660031901126101f25760405163b718136160e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316905f81600481855afa9081156101fe575f9161021d575b50805160018101809111610209576100ed6100d7826109ee565b916100e560405193846109cd565b8083526109ee565b602082019290601f19013684375f5b815181101561012d576001906001600160a01b0361011a8285610a36565b51166101268286610a36565b52016100fc565b506020600492946040519384809263ee565a6360e01b82525afa9182156101fe575f926101bb575b50610164909392935183610a36565b6001600160a01b0390911690526040805160208082529251928101839052928392918301915f5b818110610199575050500390f35b82516001600160a01b031684528594506020938401939092019160010161018b565b9091506020813d6020116101f6575b816101d7602093836109cd565b810103126101f2576101eb6101649161101e565b9190610155565b5f80fd5b3d91506101ca565b6040513d5f823e3d90fd5b634e487b7160e01b5f52601160045260245ffd5b90503d805f833e61022e81836109cd565b8101906020818303126101f2578051906001600160401b0382116101f257019080601f830112156101f2578151610264816109ee565b9261027260405194856109cd565b81845260208085019260051b8201019283116101f257602001905b82821061029d575050505f6100bd565b602080916102aa8461101e565b81520191019061028d565b346101f25760803660031901126101f2576102ce610938565b506102d761094e565b506064356001600160401b0381116101f257366023820112156101f25780600401359060246020610307846109ee565b61031460405191826109cd565b848152019260051b820101903682116101f257602401915b81831061036e57604051631d04569d60e21b8152602060048201526012602482015271416e676c65416461707465722e707269636560701b6044820152606490fd5b823581526020928301920161032c565b346101f25761038c36610964565b60405192509061039d6060846109cd565b600283526020830191604036843760405163ee565a6360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602081600481855afa9081156101fe575f916107a6575b506001600160a01b038381169116810361061f5750604051630333522160e41b81526001600160a01b038416600482018190525f82602481865afa9182156101fe575f926105fb575b50815160ff161561057a5750906104b993610468602061018081969501510151611406565b61047188610a05565b525b61047c87610a05565b516040516322c1d75360e11b815260048101919091526001600160a01b039182166024820152921660448301529092839190829081906064820190565b03915afa9081156101fe575f91610548575b506104d583610a26565b52600a6104e183610a26565b51046104ec83610a26565b52600a6104f883610a05565b510461050383610a05565b52905b604051918291602083019060208452518091526040830191905f5b81811061052f575050500390f35b8251845285945060209384019390920191600101610521565b90506020813d602011610572575b81610563602093836109cd565b810103126101f25751836104cb565b3d9150610556565b60249150602090604051928380926370a0823160e01b82528660048301525afa9081156101fe575f916105c1575b50906104b993602093926105bb88610a05565b52610473565b929190506020833d6020116105f3575b816105de602093836109cd565b810103126101f25791519091906104b96105a8565b3d91506105d1565b6106189192503d805f833e61061081836109cd565b810190611169565b9087610443565b604051630333522160e41b815260048101829052929392905f82602481865afa9182156101fe575f9261078a575b50815160ff161561070957509061068693610672602061018081969501510151611406565b61067b88610a26565b525b61047c87610a26565b03915afa9081156101fe575f916106d7575b506106a283610a05565b52600a6106ae83610a26565b51046106b983610a26565b52600a6106c583610a05565b51046106d083610a05565b5290610506565b90506020813d602011610701575b816106f2602093836109cd565b810103126101f2575183610698565b3d91506106e5565b60249150602090604051928380926370a0823160e01b82528660048301525afa9081156101fe575f91610750575b5090610686936020939261074a88610a26565b5261067d565b929190506020833d602011610782575b8161076d602093836109cd565b810103126101f2579151909190610686610737565b3d9150610760565b61079f9192503d805f833e61061081836109cd565b908761064d565b90506020813d6020116107d8575b816107c1602093836109cd565b810103126101f2576107d29061101e565b866103fa565b3d91506107b4565b346101f25760a03660031901126101f2576107f9610938565b61080161094e565b6064359160028310156101f25760809261081e9260843592610a70565b6020604080519280518452828101518385015201518051604084015201516060820152f35b346101f25761085136610964565b5050506040516108626060826109cd565b60028152602081016040368237600161087a83610a05565b52600261088683610a26565b52604051906020820192602083525180935260408201905f935b8085106108ad5783830384f35b9091825190600a8210156108d057602081600193829352019301940193906108a0565b634e487b7160e01b5f52602160045260245ffd5b346101f25760403660031901126101f257631d04569d60e21b815260206004820152601760248201527f416e676c65416461707465722e676574506f6f6c4964730000000000000000006044820152606490fd5b602435906001600160a01b03821682036101f257565b604435906001600160a01b03821682036101f257565b60609060031901126101f257600435906024356001600160a01b03811681036101f257906044356001600160a01b03811681036101f25790565b604081019081106001600160401b038211176109b957604052565b634e487b7160e01b5f52604160045260245ffd5b90601f801991011681019081106001600160401b038211176109b957604052565b6001600160401b0381116109b95760051b60200190565b805115610a125760200190565b634e487b7160e01b5f52603260045260245ffd5b805160011015610a125760400190565b8051821015610a125760209160051b010190565b60405190610a578261099e565b5f6020838281520152565b519060ff821682036101f257565b91939260405194606086018681106001600160401b038211176109b9576040525f86525f6020870152604051610aa58161099e565b5f81525f6020820152604087015285821561101657505a9060028110156108d05715918215610e83576001600160a01b03851690610ae5813033856114d2565b60405163095ea7b360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201819052602482018390529290916020836044815f865af19081156101fe5760209360c492610e58575b505f60405195869485936301db50ff60e51b85526004850152826024850152604484015260018060a01b038a1660648401523360848401528160a48401525af19081156101fe575f91610e26575b5086525b5a81039081116102095760208601528015610db85760405163313ce56760e01b81526020816004816001600160a01b0388165afa9081156101fe575f91610d7e575b50905b610be8610a4a565b5015610cc257610c3691610bfd6020926113f5565b6040516322c1d75360e11b8152600481018290526001600160a01b03958616602482015291909416604482015291829081906064820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156101fe575f91610c90575b50905b60405191610c828361099e565b825260208201526040830152565b90506020813d602011610cba575b81610cab602093836109cd565b810103126101f257515f610c72565b3d9150610c9e565b610d0a91610cd16020926113f5565b604051639525f3ab60e01b8152600481018290526001600160a01b03958616602482015291909416604482015291829081906064820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156101fe575f91610d4c575b50610c75565b90506020813d602011610d76575b81610d67602093836109cd565b810103126101f257515f610d46565b3d9150610d5a565b90506020813d602011610db0575b81610d99602093836109cd565b810103126101f257610daa90610a62565b5f610bdd565b3d9150610d8c565b60405163313ce56760e01b81526020816004816001600160a01b0387165afa9081156101fe575f91610dec575b5090610be0565b90506020813d602011610e1e575b81610e07602093836109cd565b810103126101f257610e1890610a62565b5f610de5565b3d9150610dfa565b90506020813d602011610e50575b81610e41602093836109cd565b810103126101f257515f610b97565b3d9150610e34565b610e7790853d8711610e7c575b610e6f81836109cd565b8101906113dd565b610b49565b503d610e65565b604051639525f3ab60e01b8152600481018290526001600160a01b038681166024830152858116604483015290917f000000000000000000000000000000000000000000000000000000000000000090911690602083606481855afa9283156101fe575f93610fe2575b506001600160a01b038716610f04843033846114d2565b60405163095ea7b360e01b81526001600160a01b038416600482015260248101859052916020836044815f865af19081156101fe5760209360c492610fc7575b505f6040519586948593635c92b3fd60e11b8552600485015282196024850152604484015260018060a01b038b1660648401523360848401528160a48401525af180156101fe57610f98575b508652610b9b565b610fb99060203d602011610fc0575b610fb181836109cd565b8101906113ce565b505f610f90565b503d610fa7565b610fdd90853d8711610e7c57610e6f81836109cd565b610f44565b9092506020813d60201161100e575b81610ffe602093836109cd565b810103126101f25751915f610eed565b3d9150610ff1565b955050505050565b51906001600160a01b03821682036101f257565b9080601f830112156101f25781519061104a826109ee565b9261105860405194856109cd565b82845260208085019360051b8201019182116101f257602001915b8183106110805750505090565b82516001600160401b03811681036101f257815260209283019201611073565b9080601f830112156101f2578151906110b8826109ee565b926110c660405194856109cd565b82845260208085019360051b8201019182116101f257602001915b8183106110ee5750505090565b82518060070b81036101f2578152602092830192016110e1565b6001600160401b0381116109b957601f01601f191660200190565b81601f820112156101f25780519061113a82611108565b9261114860405194856109cd565b828452602083830101116101f257815f9260208093018386015e8301015290565b6020818303126101f2578051906001600160401b0382116101f25701906101a0828203126101f257604051916101a083018381106001600160401b038211176109b9576040526111b881610a62565b83526111c660208201610a62565b60208401526111d760408201610a62565b60408401526111e860608201610a62565b60608401526111f960808201610a62565b608084015260a08101516001600160d81b03811681036101f25760a084015260c08101516001600160401b0381116101f25782611237918301611032565b60c084015260e08101516001600160401b0381116101f2578261125b9183016110a0565b60e08401526101008101516001600160401b0381116101f25782611280918301611032565b6101008401526101208101516001600160401b0381116101f257826112a69183016110a0565b6101208401526101408101516001600160401b0381116101f257826112cc918301611123565b6101408401526101608101516001600160401b0381116101f257826112f2918301611123565b610160840152610180810151906001600160401b0382116101f257016040818303126101f257604051916113258361099e565b81516001600160401b0381116101f257820181601f820112156101f257805161134d816109ee565b9161135b60405193846109cd565b81835260208084019260051b820101908482116101f257602001915b8183106113ae57505050835260208201516001600160401b0381116101f2576113a09201611123565b602082015261018082015290565b82516001600160a01b03811681036101f257815260209283019201611377565b908160209103126101f2575190565b908160209103126101f2575180151581036101f25790565b60ff16604d811161020957600a0a90565b905f91805181016040828203126101f25760208201519160018310156101f2576040810151916001600160401b0383116101f25761144b926020809201920101611123565b90156114545750565b9091506020818051810103126101f257602001516001600160a01b038116908190036101f25760206004916040519283809263e8c9bee560e01b82525afa9081156101fe575f916114a3575090565b90506020813d6020116114ca575b816114be602093836109cd565b810103126101f2575190565b3d91506114b1565b6040516323b872dd60e01b602082019081526001600160a01b0393841660248301529390921660448301526064808301949094529281529161155c915f9182919061151e6084876109cd565b60018060a01b031694519082865af13d1561159f573d9061153e82611108565b9161154c60405193846109cd565b82523d5f602084013e5b836115a7565b8051908115159182611584575b50506115725750565b635274afe760e01b5f5260045260245ffd5b61159792506020809183010191016113dd565b155f80611569565b606090611556565b906115cb57508051156115bc57805190602001fd5b63d6bda27560e01b5f5260045ffd5b815115806115fc575b6115dc575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156115d456fea2646970667358221220c5c3311a5d17cff62dfcf36c9e310f0750eec2ab8f1197d1bad4f9fd1daec9a564736f6c634300081b0033","sourceMap":"920:7543:40:-:0;;;;;;;;;;;;;;;;;;;;;;;;6053:41;;920:7543;6053:41;;;920:7543;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;920:7543:40;;;;;;-1:-1:-1;;;5600:30:40;;:10;-1:-1:-1;;;;;920:7543:40;;;;;;;5600:30;;;;;;;920:7543;5600:30;;;920:7543;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;-1:-1:-1;;920:7543:40;;;;;5758:3;920:7543;;5725:31;;;;;920:7543;;-1:-1:-1;;;;;5797:23:40;920:7543;5797:23;;:::i;:::-;920:7543;;5777:44;;;;:::i;:::-;920:7543;;5710:13;;5725:31;;920:7543;;5725:31;;920:7543;;;;;;;;;5879:20;;;;;;;;;920:7543;5879:20;;;5705:127;920:7543;5841:58;920:7543;;;;;5841:58;;:::i;:::-;-1:-1:-1;;;;;920:7543:40;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;920:7543:40;;;;;;;;;;;;;;;-1:-1:-1;;;;;920:7543:40;;;;;-1:-1:-1;920:7543:40;;;;;;;;;;;;;5879:20;;;;920:7543;5879:20;;920:7543;5879:20;;;;;;920:7543;5879:20;;;:::i;:::-;;;920:7543;;;;;5841:58;920:7543;;:::i;:::-;5879:20;;;;920:7543;;;;5879:20;;;-1:-1:-1;5879:20:40;;;920:7543;;;;;;;;;;;;;;;;;;;;;5600:30;;;;;920:7543;5600:30;;;;;;:::i;:::-;;;920:7543;;;;;;;;;;;-1:-1:-1;;;;;920:7543:40;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;5600:30;;;;;;920:7543;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;920:7543:40;;;;;;:::i;:::-;;;;:::i;:::-;;;;-1:-1:-1;;;;;920:7543:40;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1680:36:40;;920:7543;;1680:36;;920:7543;;;;;;-1:-1:-1;;;920:7543:40;;;;;;1680:36;920:7543;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;920:7543:40;;;;;:::i;:::-;3570:1;920:7543;;;;;;;;;;;;-1:-1:-1;;;3656:20:40;;3618:10;-1:-1:-1;;;;;920:7543:40;;;;;;;3656:20;;;;;;;920:7543;3656:20;;;920:7543;-1:-1:-1;;;;;;920:7543:40;;;;;3644:32;;920:7543;;-1:-1:-1;920:7543:40;;-1:-1:-1;;;3772:39:40;;-1:-1:-1;;;;;920:7543:40;;;3772:39;;920:7543;;;-1:-1:-1;920:7543:40;3772:39;920:7543;3772:39;;;;;;;;920:7543;3772:39;;;3640:1233;-1:-1:-1;920:7543:40;;;;3829:24;920:7543;;3929:22;;4096:50;3929:22;3905:54;920:7543;3929:22;;;;;;:29;;3905:54;:::i;:::-;3873:86;;;:::i;:::-;920:7543;3825:246;4115:9;;;:::i;:::-;920:7543;;;-1:-1:-1;;;4096:50:40;;920:7543;4096:50;;920:7543;;;;-1:-1:-1;;;;;920:7543:40;;;;;;;;;;;;;;;;;-1:-1:-1;920:7543:40;;;;;;;;;4096:50;;;;;;;;;;920:7543;4096:50;;;3825:246;4084:62;;;;:::i;:::-;920:7543;575:2;4172:9;;;:::i;:::-;920:7543;575:2;4160:44;;;:::i;:::-;920:7543;575:2;4230:9;;;:::i;:::-;920:7543;575:2;4218:44;;;:::i;:::-;920:7543;3640:1233;;920:7543;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;920:7543:40;;;;;;;;;;;;;4096:50;;;920:7543;4096:50;;920:7543;4096:50;;;;;;920:7543;4096:50;;;:::i;:::-;;;920:7543;;;;;4096:50;;;;;;-1:-1:-1;4096:50:40;;3825:246;3772:39;920:7543;;;;;;;;;;;;;4010:46;;;920:7543;4010:46;;920:7543;4010:46;;;;;;;920:7543;4010:46;;;3825:246;3998:58;;4096:50;3998:58;920:7543;3998:58;;;;;:::i;:::-;920:7543;3825:246;;4010:46;;;;;920:7543;4010:46;;920:7543;4010:46;;;;;;920:7543;4010:46;;;:::i;:::-;;;920:7543;;;;;;4010:46;;;4096:50;4010:46;;;;;-1:-1:-1;4010:46:40;;3772:39;;;;;;;920:7543;3772:39;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;3640:1233;920:7543;;-1:-1:-1;;;4374:38:40;;920:7543;4374:38;;920:7543;;;;;;;-1:-1:-1;920:7543:40;4374:38;920:7543;4374:38;;;;;;;;920:7543;4374:38;;;3640:1233;-1:-1:-1;920:7543:40;;;;4430:24;920:7543;;4530:22;;4696:50;4530:22;4506:54;920:7543;4530:22;;;;;;:29;;4506:54;:::i;:::-;4474:86;;;:::i;:::-;920:7543;4426:245;4715:9;;;:::i;4696:50::-;;;;;;;;;;920:7543;4696:50;;;4426:245;4684:62;;;;:::i;:::-;920:7543;575:2;4772:9;;;:::i;:::-;920:7543;575:2;4760:44;;;:::i;:::-;920:7543;575:2;4830:9;;;:::i;:::-;920:7543;575:2;4818:44;;;:::i;:::-;920:7543;3640:1233;;;4696:50;;;920:7543;4696:50;;920:7543;4696:50;;;;;;920:7543;4696:50;;;:::i;:::-;;;920:7543;;;;;4696:50;;;;;;-1:-1:-1;4696:50:40;;4426:245;4374:38;920:7543;;;;;;;;;;;;;4611:45;;;920:7543;4611:45;;920:7543;4611:45;;;;;;;920:7543;4611:45;;;4426:245;4599:57;;4696:50;4599:57;920:7543;4599:57;;;;;:::i;:::-;920:7543;4426:245;;4611:45;;;;;920:7543;4611:45;;920:7543;4611:45;;;;;;920:7543;4611:45;;;:::i;:::-;;;920:7543;;;;;;4611:45;;;4696:50;4611:45;;;;;-1:-1:-1;4611:45:40;;4374:38;;;;;;;920:7543;4374:38;;;;;;:::i;:::-;;;;;3656:20;;;920:7543;3656:20;;920:7543;3656:20;;;;;;920:7543;3656:20;;;:::i;:::-;;;920:7543;;;;;;;:::i;:::-;3656:20;;;;;;-1:-1:-1;3656:20:40;;920:7543;;;;;;-1:-1:-1;;920:7543:40;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;5114:1;920:7543;;;;;;;;;5144:20;5126:38;;;:::i;:::-;920:7543;5114:1;5174:37;;;:::i;:::-;920:7543;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5144:20;920:7543;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;920:7543:40;;;;-1:-1:-1;;;6053:41:40;;920:7543;;6053:41;;920:7543;;;;;;;;;;;6053:41;;;920:7543;;;;-1:-1:-1;;;;;920:7543:40;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;920:7543:40;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;920:7543:40;;;;;;;;;-1:-1:-1;;;;;920:7543:40;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;920:7543:40;;;;;;;:::o;:::-;;;;-1:-1:-1;920:7543:40;;;;;-1:-1:-1;920:7543:40;;;;;;;;;;;;;;-1:-1:-1;;;;;920:7543:40;;;;;;;:::o;:::-;-1:-1:-1;;;;;920:7543:40;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;5144:20;920:7543;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;920:7543:40;;;;;;;:::o;:::-;;;;;;;;;;:::o;2061:798::-;;;;920:7543;;;;;;;;;-1:-1:-1;;;;;920:7543:40;;;;;;;-1:-1:-1;920:7543:40;;-1:-1:-1;920:7543:40;;;;;;;;;:::i;:::-;-1:-1:-1;920:7543:40;;-1:-1:-1;920:7543:40;;;;;;;;2226:18;2260:20;;2256:63;;2349:9;;920:7543;;;;;;;2372:22;;;;;;-1:-1:-1;;;;;920:7543:40;;;7451:6;7444:4;;7424:10;920:7543;7451:6;:::i;:::-;920:7543;;-1:-1:-1;;;7468:54:40;;-1:-1:-1;;;;;7502:10:40;920:7543;7468:54;;;920:7543;;;;;;;;;;;;;;;;-1:-1:-1;920:7543:40;7468:54;;;;;;;920:7543;7468:54;7551:94;7468:54;;;2368:217;920:7543;-1:-1:-1;920:7543:40;;;;;;;;;;7551:94;;7468:54;7551:94;;920:7543;;;;;;;;;;;;;;;;;;;;;7424:10;920:7543;;;;;;;;;7551:94;;;;;;;-1:-1:-1;7551:94:40;;;2368:217;920:7543;;;2368:217;2622:9;920:7543;;;;;;;;2594:13;;920:7543;2658:123;;;;920:7543;;-1:-1:-1;;;2695:36:40;;920:7543;;2695:36;920:7543;-1:-1:-1;;;;;920:7543:40;;2695:36;;;;;;;-1:-1:-1;2695:36:40;;;2658:123;;;;920:7543;;:::i;:::-;-1:-1:-1;6651:22:40;;;6740:47;6700:14;;920:7543;6700:14;;:::i;:::-;920:7543;;-1:-1:-1;;;6740:47:40;;;;;920:7543;;;-1:-1:-1;;;;;920:7543:40;;;;;;;;;;;;;;;;;;;;;;;;;6740:47;;920:7543;6740:10;-1:-1:-1;;;;;920:7543:40;6740:47;;;;;;;-1:-1:-1;6740:47:40;;;6647:282;6728:59;6647:282;;920:7543;;;;;;:::i;:::-;;;;6945:29;;920:7543;;2791:11;;:61;2061:798::o;6740:47::-;;;920:7543;6740:47;;920:7543;6740:47;;;;;;920:7543;6740:47;;;:::i;:::-;;;920:7543;;;;;6740:47;;;;;;-1:-1:-1;6740:47:40;;6647:282;6869:49;6830:14;;920:7543;6830:14;;:::i;:::-;920:7543;;-1:-1:-1;;;6869:49:40;;;;;920:7543;;;-1:-1:-1;;;;;920:7543:40;;;;;;;;;;;;;;;;;;;;;;;;;6869:49;;920:7543;6869:10;-1:-1:-1;;;;;920:7543:40;6869:49;;;;;;;-1:-1:-1;6869:49:40;;;6647:282;6858:60;6647:282;;6869:49;;;920:7543;6869:49;;920:7543;6869:49;;;;;;920:7543;6869:49;;;:::i;:::-;;;920:7543;;;;;6869:49;;;;;;-1:-1:-1;6869:49:40;;2695:36;;;920:7543;2695:36;;920:7543;2695:36;;;;;;920:7543;2695:36;;;:::i;:::-;;;920:7543;;;;;;;:::i;:::-;2695:36;;;;;;-1:-1:-1;2695:36:40;;2658:123;920:7543;;-1:-1:-1;;;2746:35:40;;920:7543;;2746:35;920:7543;-1:-1:-1;;;;;920:7543:40;;2746:35;;;;;;;-1:-1:-1;2746:35:40;;;2658:123;;;;;2746:35;;;920:7543;2746:35;;920:7543;2746:35;;;;;;920:7543;2746:35;;;:::i;:::-;;;920:7543;;;;;;;:::i;:::-;2746:35;;;;;;-1:-1:-1;2746:35:40;;7551:94;;;920:7543;7551:94;;920:7543;7551:94;;;;;;920:7543;7551:94;;;:::i;:::-;;;920:7543;;;;;7551:94;;;;;;-1:-1:-1;7551:94:40;;7468:54;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;2368:217;920:7543;;-1:-1:-1;;;8093:51:40;;;;;920:7543;;;-1:-1:-1;;;;;920:7543:40;;;;;;;;;;;;;;;;8093:10;920:7543;;;;;;;;;8093:51;;;;;;;-1:-1:-1;8093:51:40;;;2368:217;-1:-1:-1;;;;;;920:7543:40;;8230:16;8223:4;;8203:10;920:7543;8230:16;:::i;:::-;920:7543;;-1:-1:-1;;;8266:64:40;;-1:-1:-1;;;;;920:7543:40;;8093:51;8266:64;;920:7543;;;;;;;;;;;;-1:-1:-1;8266:64:40;;;;;;;;920:7543;8266:64;8340:114;8266:64;;;2368:217;920:7543;-1:-1:-1;920:7543:40;;;;;;;;;;8340:114;;8093:51;8340:114;;920:7543;8391:17;;920:7543;;;;;;;;;;;;;;;;;;;8203:10;920:7543;;;;;;;;;8340:114;;;;;;;;2368:217;920:7543;;;2368:217;;8340:114;;;920:7543;8340:114;920:7543;8340:114;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;8266:64;;;;;;;;;;;;;:::i;:::-;;;8093:51;;;;920:7543;8093:51;;920:7543;8093:51;;;;;;920:7543;8093:51;;;:::i;:::-;;;920:7543;;;;;8093:51;;;;;;;-1:-1:-1;8093:51:40;;2256:63;2296:12;-1:-1:-1;;;;;2296:12:40:o;920:7543::-;;;-1:-1:-1;;;;;920:7543:40;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;920:7543:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;920:7543:40;;;;;;-1:-1:-1;;920:7543:40;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;920:7543:40;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;920:7543:40;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;920:7543:40;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;920:7543:40;;;;;;;;;;;;;;-1:-1:-1;;;;;920:7543:40;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;920:7543:40;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;920:7543:40;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;920:7543:40;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;920:7543:40;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;920:7543:40;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;920:7543:40;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;920:7543:40;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;920:7543:40;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;920:7543:40;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;18042:340::-;;920:7543;;;;18633:40;;920:7543;;;;;;;18633:40;;;920:7543;;;;;;;;;;;;;-1:-1:-1;;;;;920:7543:40;;;;;18633:40;;;;;920:7543;;;;:::i;:::-;;18264:35;18260:116;;18042:340;:::o;18260:116::-;920:7543;;;18633:40;920:7543;;;18322:28;;920:7543;;;;18633:40;18322:28;920:7543;-1:-1:-1;;;;;920:7543:40;;;;;;;;18633:40;18322:43;920:7543;;;;;;;;;;18322:43;;;;;;;;;920:7543;18322:43;;;18315:50;;:::o;18322:43::-;;;18633:40;18322:43;;18633:40;18322:43;;;;;;920:7543;18322:43;;;:::i;:::-;;;920:7543;;;;;18315:50;:::o;18322:43::-;;;-1:-1:-1;18322:43:40;;1702:188:32;920:7543:40;;-1:-1:-1;;;1829:53:32;;;;;;-1:-1:-1;;;;;920:7543:40;;;1829:53:32;;;920:7543:40;;;;;;;;;;;;;;;;;1829:53:32;;;920:7543:40;3304:55:33;;-1:-1:-1;;;;1829:53:32;;;920:7543:40;1829:53:32;:::i;:::-;920:7543:40;;;;;;3256:31:33;;;;;;;920:7543:40;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;1829:53:32;920:7543:40;;;;3304:55:33;;:::i;:::-;920:7543:40;;6960:22:32;;;;:57;;;;920:7543:40;6956:135:32;;;;1702:188;:::o;6956:135::-;7040:40;;;-1:-1:-1;7040:40:32;;920:7543:40;1829:53:32;-1:-1:-1;7040:40:32;6960:57;6987:30;;;1829:53;6987:30;;;;;;;;:::i;:::-;6986:31;6960:57;;;;920:7543:40;;;;;4421:582:33;;4593:8;;-1:-1:-1;920:7543:40;;5674:21:33;:17;;5846:142;;;;;;5670:385;6025:19;;;5694:1;6025:19;;5694:1;6025:19;4589:408;920:7543:40;;4841:22:33;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:33;4917:24;;;-1:-1:-1;;;;;920:7543:40;;;;4917:24:33;920:7543:40;;;4917:24:33;4841:49;4867:18;;;:23;4841:49;","linkReferences":{},"immutableReferences":{"52444":[{"start":126,"length":32},{"start":954,"length":32},{"start":2812,"length":32},{"start":3130,"length":32},{"start":3342,"length":32},{"start":3763,"length":32}]}},"methodIdentifiers":{"getCapabilities(bytes32,address,address)":"48bd7dfd","getLimits(bytes32,address,address)":"a9270fbe","getPoolIds(uint256,uint256)":"23eeca01","getTokens(bytes32)":"ecbbc033","price(bytes32,address,address,uint256[])":"aad6e488","swap(bytes32,address,address,uint8,uint256)":"8307c655"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ITransmuter\",\"name\":\"_transmuter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"LimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"Unavailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getCapabilities\",\"outputs\":[{\"internalType\":\"enum ISwapAdapterTypes.Capability[]\",\"name\":\"capabilities\",\"type\":\"uint8[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"}],\"name\":\"getLimits\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"limits\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getPoolIds\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"getTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"name\":\"price\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"enum ISwapAdapterTypes.OrderSide\",\"name\":\"side\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"calculatedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction\",\"name\":\"price\",\"type\":\"tuple\"}],\"internalType\":\"struct ISwapAdapterTypes.Trade\",\"name\":\"trade\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Information about prices: When swapping collateral to agEUR, the trade price will not decrease(amountOut). Instead, when swapping agEUR to collateral, it will, because agEUR is minted, and this mechanism is used to stabilize the agEUR price.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"LimitExceeded(uint256)\":[{\"details\":\"The LimitExceeded error is thrown when a limit has been exceeded. E.g. the specified amount can't be traded safely.\"}],\"NotImplemented(string)\":[{\"details\":\"The NotImplemented error is thrown when a function is not implemented.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}],\"Unavailable(string)\":[{\"details\":\"The Unavailable error is thrown when a pool or swap is not available for unexpected reason. E.g. it was paused due to a bug.\"}]},\"kind\":\"dev\",\"methods\":{\"getCapabilities(bytes32,address,address)\":{\"params\":{\"poolId\":\"The ID of the trading pool.\"},\"returns\":{\"capabilities\":\"An array of Capability.\"}},\"getLimits(bytes32,address,address)\":{\"details\":\"Mint may have no limits, but we underestimate them to make sure, with the same amount of sellToken. We use the quoteIn (incl. fee), because calculating fee requires a part of the implementation of the Angle Diamond Storage, and therefore redundant functions and excessive contract size, with an high complexity. In addition, we underestimate to RESERVE_LIMIT_FACTOR to ensure swaps with OrderSide.Buy won't fail anyway.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\"},\"returns\":{\"limits\":\"An array of size two indicating the limit amount for the sell token (maximum the pool is willing to buy in sell token) as well as the limit amount of the buy token (maximum the pool is willing to sell in buy token).\"}},\"getTokens(bytes32)\":{\"details\":\"Since Angle has no pool IDs but supports 3 tokens(agToken and the collaterals), we return all the available collaterals and the agToken(agEUR)\",\"params\":{\"poolId\":\"The ID of the trading pool.\"},\"returns\":{\"tokens\":\"An array of address contracts.\"}},\"price(bytes32,address,address,uint256[])\":{\"details\":\"It is not possible to reproduce the swap in a view mode (like Bancor, Uniswap v2, etc..) as the swap produce a change of storage in the Angle protocol, that impacts the price post trade. Due to the architecture of Angle, it's not possible to calculate the storage modifications of Angle inside the adapter.\"},\"swap(bytes32,address,address,uint8,uint256)\":{\"details\":\"The price post trade is indipendent by the amount, since is the price with minimal fees with 0 slippage. In Angle there is no price with 0 slippage, so we use the PRECISE_UNIT (10^18, that is a small value) as input amount to have a slippage ---> 0.\"}},\"title\":\"AngleAdapter\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCapabilities(bytes32,address,address)\":{\"notice\":\"Retrieves the capabilities of the selected pool.\"},\"getLimits(bytes32,address,address)\":{\"notice\":\"Retrieves the limits for each token.\"},\"getTokens(bytes32)\":{\"notice\":\"Retrieves the tokens in the selected pool.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/angle/AngleAdapter.sol\":\"AngleAdapter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/angle/AngleAdapter.sol\":{\"keccak256\":\"0x51397895e82efaf858a0aa7fbc0629844ff4ac17c5f4f43d1c2ab13c1072b46c\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://05a3e26a8cb9d82385c6eea9dcd244a66c3f403a74536a0e687dcaf729d1b664\",\"dweb:/ipfs/QmWTnGs2huvac7YDFPMf95XZ4QnbGTKtnTHsBGJTDUcCD5\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract ITransmuter","name":"_transmuter","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"type":"error","name":"LimitExceeded"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"NotImplemented"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"Unavailable"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function","name":"getCapabilities","outputs":[{"internalType":"enum ISwapAdapterTypes.Capability[]","name":"capabilities","type":"uint8[]"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"}],"stateMutability":"view","type":"function","name":"getLimits","outputs":[{"internalType":"uint256[]","name":"limits","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function","name":"getPoolIds","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getTokens","outputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"pure","type":"function","name":"price","outputs":[{"internalType":"struct ISwapAdapterTypes.Fraction[]","name":"","type":"tuple[]","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"},{"internalType":"enum ISwapAdapterTypes.OrderSide","name":"side","type":"uint8"},{"internalType":"uint256","name":"specifiedAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swap","outputs":[{"internalType":"struct ISwapAdapterTypes.Trade","name":"trade","type":"tuple","components":[{"internalType":"uint256","name":"calculatedAmount","type":"uint256"},{"internalType":"uint256","name":"gasUsed","type":"uint256"},{"internalType":"struct ISwapAdapterTypes.Fraction","name":"price","type":"tuple","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]}]}],"devdoc":{"kind":"dev","methods":{"getCapabilities(bytes32,address,address)":{"params":{"poolId":"The ID of the trading pool."},"returns":{"capabilities":"An array of Capability."}},"getLimits(bytes32,address,address)":{"details":"Mint may have no limits, but we underestimate them to make sure, with the same amount of sellToken. We use the quoteIn (incl. fee), because calculating fee requires a part of the implementation of the Angle Diamond Storage, and therefore redundant functions and excessive contract size, with an high complexity. In addition, we underestimate to RESERVE_LIMIT_FACTOR to ensure swaps with OrderSide.Buy won't fail anyway.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold."},"returns":{"limits":"An array of size two indicating the limit amount for the sell token (maximum the pool is willing to buy in sell token) as well as the limit amount of the buy token (maximum the pool is willing to sell in buy token)."}},"getTokens(bytes32)":{"details":"Since Angle has no pool IDs but supports 3 tokens(agToken and the collaterals), we return all the available collaterals and the agToken(agEUR)","params":{"poolId":"The ID of the trading pool."},"returns":{"tokens":"An array of address contracts."}},"price(bytes32,address,address,uint256[])":{"details":"It is not possible to reproduce the swap in a view mode (like Bancor, Uniswap v2, etc..) as the swap produce a change of storage in the Angle protocol, that impacts the price post trade. Due to the architecture of Angle, it's not possible to calculate the storage modifications of Angle inside the adapter."},"swap(bytes32,address,address,uint8,uint256)":{"details":"The price post trade is indipendent by the amount, since is the price with minimal fees with 0 slippage. In Angle there is no price with 0 slippage, so we use the PRECISE_UNIT (10^18, that is a small value) as input amount to have a slippage ---> 0."}},"version":1},"userdoc":{"kind":"user","methods":{"getCapabilities(bytes32,address,address)":{"notice":"Retrieves the capabilities of the selected pool."},"getLimits(bytes32,address,address)":{"notice":"Retrieves the limits for each token."},"getTokens(bytes32)":{"notice":"Retrieves the tokens in the selected pool."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/angle/AngleAdapter.sol":"AngleAdapter"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/angle/AngleAdapter.sol":{"keccak256":"0x51397895e82efaf858a0aa7fbc0629844ff4ac17c5f4f43d1c2ab13c1072b46c","urls":["bzz-raw://05a3e26a8cb9d82385c6eea9dcd244a66c3f403a74536a0e687dcaf729d1b664","dweb:/ipfs/QmWTnGs2huvac7YDFPMf95XZ4QnbGTKtnTHsBGJTDUcCD5"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"}},"version":1},"id":40} \ No newline at end of file diff --git a/evm/out/AngleAdapter.sol/IAgToken.json b/evm/out/AngleAdapter.sol/IAgToken.json deleted file mode 100644 index fee1b4e..0000000 --- a/evm/out/AngleAdapter.sol/IAgToken.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"addMinter","inputs":[{"name":"minter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"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":"burnFrom","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"burner","type":"address","internalType":"address"},{"name":"sender","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"burnSelf","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"burner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"isMinter","inputs":[{"name":"minter","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeMinter","inputs":[{"name":"minter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTreasury","inputs":[{"name":"_treasury","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"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}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addMinter(address)":"983b2d56","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burnFrom(uint256,address,address)":"350ebe04","burnSelf(uint256,address)":"2b471d8e","decimals()":"313ce567","isMinter(address)":"aa271e1a","mint(address,uint256)":"40c10f19","removeMinter(address)":"3092afd5","setTreasury(address)":"f0f44260","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"minter\",\"type\":\"address\"}],\"name\":\"addMinter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"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\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"burner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"burner\",\"type\":\"address\"}],\"name\":\"burnSelf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"}],\"name\":\"isMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"}],\"name\":\"removeMinter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_treasury\",\"type\":\"address\"}],\"name\":\"setTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":{\"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\":{\"addMinter(address)\":{\"details\":\"Zero address checks are performed directly in the `Treasury` contract\",\"params\":{\"minter\":\"Minter address to add\"}},\"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\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"burnFrom(uint256,address,address)\":{\"details\":\"This method is to be called by a contract with the minter right after being requested to do so by a `sender` address willing to burn tokens from another `burner` addressThe method checks the allowance between the `sender` and the `burner`\",\"params\":{\"amount\":\"Amount of tokens to burn\",\"burner\":\"Address to burn from\",\"sender\":\"Address which requested the burn from `burner`\"}},\"burnSelf(uint256,address)\":{\"details\":\"This method is to be called by a contract with a minter right on the AgToken after being requested to do so by an address willing to burn tokens from its address\",\"params\":{\"amount\":\"Amount of tokens to burn\",\"burner\":\"Address to burn from\"}},\"isMinter(address)\":{\"params\":{\"minter\":\"Address for which the minting right should be checked\"},\"returns\":{\"_0\":\"Whether the address has the right to mint agTokens or not\"}},\"mint(address,uint256)\":{\"params\":{\"account\":\"Address to mint to\",\"amount\":\"Amount to mint\"}},\"removeMinter(address)\":{\"details\":\"This function can also be called by a minter wishing to revoke itself\",\"params\":{\"minter\":\"Minter address to remove\"}},\"setTreasury(address)\":{\"params\":{\"_treasury\":\"New treasury address\"}},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addMinter(address)\":{\"notice\":\"Adds a minter in the contract\"},\"burnFrom(uint256,address,address)\":{\"notice\":\"Burns `amount` tokens from a `burner` address after being asked to by `sender`\"},\"burnSelf(uint256,address)\":{\"notice\":\"Burns `amount` tokens from a `burner` address\"},\"decimals()\":{\"notice\":\"Amount of decimals of the stablecoin\"},\"isMinter(address)\":{\"notice\":\"Checks whether an address has the right to mint agTokens\"},\"mint(address,uint256)\":{\"notice\":\"Lets a whitelisted contract mint agTokens\"},\"removeMinter(address)\":{\"notice\":\"Removes a minter from the contract\"},\"setTreasury(address)\":{\"notice\":\"Sets a new treasury contract\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/angle/AngleAdapter.sol\":\"IAgToken\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/angle/AngleAdapter.sol\":{\"keccak256\":\"0x51397895e82efaf858a0aa7fbc0629844ff4ac17c5f4f43d1c2ab13c1072b46c\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://05a3e26a8cb9d82385c6eea9dcd244a66c3f403a74536a0e687dcaf729d1b664\",\"dweb:/ipfs/QmWTnGs2huvac7YDFPMf95XZ4QnbGTKtnTHsBGJTDUcCD5\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"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":"minter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addMinter"},{"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":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"burner","type":"address"},{"internalType":"address","name":"sender","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"burnFrom"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"burner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"burnSelf"},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"stateMutability":"view","type":"function","name":"isMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeMinter"},{"inputs":[{"internalType":"address","name":"_treasury","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTreasury"},{"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":{"addMinter(address)":{"details":"Zero address checks are performed directly in the `Treasury` contract","params":{"minter":"Minter address to add"}},"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":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"burnFrom(uint256,address,address)":{"details":"This method is to be called by a contract with the minter right after being requested to do so by a `sender` address willing to burn tokens from another `burner` addressThe method checks the allowance between the `sender` and the `burner`","params":{"amount":"Amount of tokens to burn","burner":"Address to burn from","sender":"Address which requested the burn from `burner`"}},"burnSelf(uint256,address)":{"details":"This method is to be called by a contract with a minter right on the AgToken after being requested to do so by an address willing to burn tokens from its address","params":{"amount":"Amount of tokens to burn","burner":"Address to burn from"}},"isMinter(address)":{"params":{"minter":"Address for which the minting right should be checked"},"returns":{"_0":"Whether the address has the right to mint agTokens or not"}},"mint(address,uint256)":{"params":{"account":"Address to mint to","amount":"Amount to mint"}},"removeMinter(address)":{"details":"This function can also be called by a minter wishing to revoke itself","params":{"minter":"Minter address to remove"}},"setTreasury(address)":{"params":{"_treasury":"New treasury address"}},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{"addMinter(address)":{"notice":"Adds a minter in the contract"},"burnFrom(uint256,address,address)":{"notice":"Burns `amount` tokens from a `burner` address after being asked to by `sender`"},"burnSelf(uint256,address)":{"notice":"Burns `amount` tokens from a `burner` address"},"decimals()":{"notice":"Amount of decimals of the stablecoin"},"isMinter(address)":{"notice":"Checks whether an address has the right to mint agTokens"},"mint(address,uint256)":{"notice":"Lets a whitelisted contract mint agTokens"},"removeMinter(address)":{"notice":"Removes a minter from the contract"},"setTreasury(address)":{"notice":"Sets a new treasury contract"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/angle/AngleAdapter.sol":"IAgToken"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/angle/AngleAdapter.sol":{"keccak256":"0x51397895e82efaf858a0aa7fbc0629844ff4ac17c5f4f43d1c2ab13c1072b46c","urls":["bzz-raw://05a3e26a8cb9d82385c6eea9dcd244a66c3f403a74536a0e687dcaf729d1b664","dweb:/ipfs/QmWTnGs2huvac7YDFPMf95XZ4QnbGTKtnTHsBGJTDUcCD5"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"}},"version":1},"id":40} \ No newline at end of file diff --git a/evm/out/AngleAdapter.sol/IManager.json b/evm/out/AngleAdapter.sol/IManager.json deleted file mode 100644 index dd594c6..0000000 --- a/evm/out/AngleAdapter.sol/IManager.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"invest","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"maxAvailable","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"release","inputs":[{"name":"asset","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"totalAssets","inputs":[],"outputs":[{"name":"balances","type":"uint256[]","internalType":"uint256[]"},{"name":"totalValue","type":"uint256","internalType":"uint256"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"invest(uint256)":"2afcf480","maxAvailable()":"e8c9bee5","release(address,address,uint256)":"8bfb07c9","totalAssets()":"01e1d114"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"invest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxAvailable\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"release\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"totalValue\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"invest(uint256)\":{\"details\":\"MUST revert if the manager cannot accept these fundsMUST have received the funds beforehand\"},\"maxAvailable()\":{\"details\":\"Useful for integrators using `quoteIn` and `quoteOut`\"},\"release(address,address,uint256)\":{\"details\":\"MUST be callable only by the transmuter\"},\"totalAssets()\":{\"details\":\"MUST NOT revert\",\"returns\":{\"balances\":\"Balances of all the subCollaterals handled by the manager\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"invest(uint256)\":{\"notice\":\"Hook to invest `amount` of `collateral`\"},\"maxAvailable()\":{\"notice\":\"Gives the maximum amount of collateral immediately available for a transfer\"},\"totalAssets()\":{\"notice\":\"Returns the amount of collateral managed by the Manager\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/angle/AngleAdapter.sol\":\"IManager\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/angle/AngleAdapter.sol\":{\"keccak256\":\"0x51397895e82efaf858a0aa7fbc0629844ff4ac17c5f4f43d1c2ab13c1072b46c\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://05a3e26a8cb9d82385c6eea9dcd244a66c3f403a74536a0e687dcaf729d1b664\",\"dweb:/ipfs/QmWTnGs2huvac7YDFPMf95XZ4QnbGTKtnTHsBGJTDUcCD5\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"invest"},{"inputs":[],"stateMutability":"view","type":"function","name":"maxAvailable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"release"},{"inputs":[],"stateMutability":"view","type":"function","name":"totalAssets","outputs":[{"internalType":"uint256[]","name":"balances","type":"uint256[]"},{"internalType":"uint256","name":"totalValue","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"invest(uint256)":{"details":"MUST revert if the manager cannot accept these fundsMUST have received the funds beforehand"},"maxAvailable()":{"details":"Useful for integrators using `quoteIn` and `quoteOut`"},"release(address,address,uint256)":{"details":"MUST be callable only by the transmuter"},"totalAssets()":{"details":"MUST NOT revert","returns":{"balances":"Balances of all the subCollaterals handled by the manager"}}},"version":1},"userdoc":{"kind":"user","methods":{"invest(uint256)":{"notice":"Hook to invest `amount` of `collateral`"},"maxAvailable()":{"notice":"Gives the maximum amount of collateral immediately available for a transfer"},"totalAssets()":{"notice":"Returns the amount of collateral managed by the Manager"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/angle/AngleAdapter.sol":"IManager"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/angle/AngleAdapter.sol":{"keccak256":"0x51397895e82efaf858a0aa7fbc0629844ff4ac17c5f4f43d1c2ab13c1072b46c","urls":["bzz-raw://05a3e26a8cb9d82385c6eea9dcd244a66c3f403a74536a0e687dcaf729d1b664","dweb:/ipfs/QmWTnGs2huvac7YDFPMf95XZ4QnbGTKtnTHsBGJTDUcCD5"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"}},"version":1},"id":40} \ No newline at end of file diff --git a/evm/out/AngleAdapter.sol/ITransmuter.json b/evm/out/AngleAdapter.sol/ITransmuter.json deleted file mode 100644 index 777435b..0000000 --- a/evm/out/AngleAdapter.sol/ITransmuter.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"accessControlManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"addCollateral","inputs":[{"name":"collateral","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"adjustStablecoins","inputs":[{"name":"collateral","type":"address","internalType":"address"},{"name":"amount","type":"uint128","internalType":"uint128"},{"name":"increase","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"agToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"changeAllowance","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"facetAddress","inputs":[{"name":"_functionSelector","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"facetAddress_","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"facetAddresses","inputs":[],"outputs":[{"name":"facetAddresses_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"facetFunctionSelectors","inputs":[{"name":"_facet","type":"address","internalType":"address"}],"outputs":[{"name":"_facetFunctionSelectors","type":"bytes4[]","internalType":"bytes4[]"}],"stateMutability":"view"},{"type":"function","name":"getCollateralBurnFees","inputs":[{"name":"collateral","type":"address","internalType":"address"}],"outputs":[{"name":"xFeeBurn","type":"uint64[]","internalType":"uint64[]"},{"name":"yFeeBurn","type":"int64[]","internalType":"int64[]"}],"stateMutability":"view"},{"type":"function","name":"getCollateralDecimals","inputs":[{"name":"collateral","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"getCollateralInfo","inputs":[{"name":"collateral","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Collateral","components":[{"name":"isManaged","type":"uint8","internalType":"uint8"},{"name":"isMintLive","type":"uint8","internalType":"uint8"},{"name":"isBurnLive","type":"uint8","internalType":"uint8"},{"name":"decimals","type":"uint8","internalType":"uint8"},{"name":"onlyWhitelisted","type":"uint8","internalType":"uint8"},{"name":"normalizedStables","type":"uint216","internalType":"uint216"},{"name":"xFeeMint","type":"uint64[]","internalType":"uint64[]"},{"name":"yFeeMint","type":"int64[]","internalType":"int64[]"},{"name":"xFeeBurn","type":"uint64[]","internalType":"uint64[]"},{"name":"yFeeBurn","type":"int64[]","internalType":"int64[]"},{"name":"oracleConfig","type":"bytes","internalType":"bytes"},{"name":"whitelistData","type":"bytes","internalType":"bytes"},{"name":"managerData","type":"tuple","internalType":"struct ManagerStorage","components":[{"name":"subCollaterals","type":"address[]","internalType":"contract IERC20[]"},{"name":"config","type":"bytes","internalType":"bytes"}]}]}],"stateMutability":"view"},{"type":"function","name":"getCollateralList","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getCollateralMintFees","inputs":[{"name":"collateral","type":"address","internalType":"address"}],"outputs":[{"name":"xFeeMint","type":"uint64[]","internalType":"uint64[]"},{"name":"yFeeMint","type":"int64[]","internalType":"int64[]"}],"stateMutability":"view"},{"type":"function","name":"getCollateralRatio","inputs":[],"outputs":[{"name":"collatRatio","type":"uint64","internalType":"uint64"},{"name":"stablecoinsIssued","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCollateralWhitelistData","inputs":[{"name":"collateral","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getIssuedByCollateral","inputs":[{"name":"collateral","type":"address","internalType":"address"}],"outputs":[{"name":"stablecoinsFromCollateral","type":"uint256","internalType":"uint256"},{"name":"stablecoinsIssued","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getManagerData","inputs":[{"name":"collateral","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"},{"name":"","type":"address[]","internalType":"address[]"},{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getOracle","inputs":[{"name":"collateral","type":"address","internalType":"address"}],"outputs":[{"name":"oracleType","type":"uint8","internalType":"uint8"},{"name":"targetType","type":"uint8","internalType":"uint8"},{"name":"oracleData","type":"bytes","internalType":"bytes"},{"name":"targetData","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getOracleValues","inputs":[{"name":"collateral","type":"address","internalType":"address"}],"outputs":[{"name":"mint","type":"uint256","internalType":"uint256"},{"name":"burn","type":"uint256","internalType":"uint256"},{"name":"ratio","type":"uint256","internalType":"uint256"},{"name":"minRatio","type":"uint256","internalType":"uint256"},{"name":"redemption","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getRedemptionFees","inputs":[],"outputs":[{"name":"xRedemptionCurve","type":"uint64[]","internalType":"uint64[]"},{"name":"yRedemptionCurve","type":"int64[]","internalType":"int64[]"}],"stateMutability":"view"},{"type":"function","name":"getTotalIssued","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"implementation","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isPaused","inputs":[{"name":"collateral","type":"address","internalType":"address"},{"name":"action","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isTrusted","inputs":[{"name":"sender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isTrustedSeller","inputs":[{"name":"sender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isValidSelector","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isWhitelistedCollateral","inputs":[{"name":"collateral","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isWhitelistedForCollateral","inputs":[{"name":"collateral","type":"address","internalType":"address"},{"name":"sender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"isWhitelistedForType","inputs":[{"name":"whitelistType","type":"uint8","internalType":"uint8"},{"name":"sender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"quoteIn","inputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"tokenIn","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"address"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"quoteOut","inputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"tokenIn","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"address"}],"outputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"quoteRedemptionCurve","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"tokens","type":"address[]","internalType":"address[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"recoverERC20","inputs":[{"name":"collateral","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"redeem","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"minAmountOuts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"tokens","type":"address[]","internalType":"address[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"redeemWithForfeit","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"minAmountOuts","type":"uint256[]","internalType":"uint256[]"},{"name":"forfeitTokens","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"tokens","type":"address[]","internalType":"address[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"revokeCollateral","inputs":[{"name":"collateral","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sellRewards","inputs":[{"name":"minAmountOut","type":"uint256","internalType":"uint256"},{"name":"payload","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"setAccessControlManager","inputs":[{"name":"_newAccessControlManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDummyImplementation","inputs":[{"name":"_implementation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setFees","inputs":[{"name":"collateral","type":"address","internalType":"address"},{"name":"xFee","type":"uint64[]","internalType":"uint64[]"},{"name":"yFee","type":"int64[]","internalType":"int64[]"},{"name":"mint","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOracle","inputs":[{"name":"collateral","type":"address","internalType":"address"},{"name":"oracleConfig","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRedemptionCurveParams","inputs":[{"name":"xFee","type":"uint64[]","internalType":"uint64[]"},{"name":"yFee","type":"int64[]","internalType":"int64[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setWhitelistStatus","inputs":[{"name":"collateral","type":"address","internalType":"address"},{"name":"whitelistStatus","type":"uint8","internalType":"uint8"},{"name":"whitelistData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swapExactInput","inputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOutMin","type":"uint256","internalType":"uint256"},{"name":"tokenIn","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapExactInputWithPermit","inputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOutMin","type":"uint256","internalType":"uint256"},{"name":"tokenIn","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"permitData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapExactOutput","inputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"amountInMax","type":"uint256","internalType":"uint256"},{"name":"tokenIn","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapExactOutputWithPermit","inputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"amountInMax","type":"uint256","internalType":"uint256"},{"name":"tokenIn","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"permitData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"togglePause","inputs":[{"name":"collateral","type":"address","internalType":"address"},{"name":"pausedType","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"toggleTrusted","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"t","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"toggleWhitelist","inputs":[{"name":"whitelistType","type":"uint8","internalType":"uint8"},{"name":"who","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateNormalizer","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"increase","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"accessControlManager()":"b4a0bdf3","addCollateral(address)":"f0d2d5a8","adjustStablecoins(address,uint128,bool)":"c1cdee7e","agToken()":"ee565a63","changeAllowance(address,address,uint256)":"87c8ab7a","facetAddress(bytes4)":"cdffacc6","facetAddresses()":"52ef6b2c","facetFunctionSelectors(address)":"adfca15e","getCollateralBurnFees(address)":"847da7be","getCollateralDecimals(address)":"eb7aac5f","getCollateralInfo(address)":"33352210","getCollateralList()":"b7181361","getCollateralMintFees(address)":"b85780bc","getCollateralRatio()":"cd377c53","getCollateralWhitelistData(address)":"782513bd","getIssuedByCollateral(address)":"94e35d9e","getManagerData(address)":"4ea3e343","getOracle(address)":"10d3d22e","getOracleValues(address)":"38c269eb","getRedemptionFees()":"adc9d1f7","getTotalIssued()":"8db9653f","implementation()":"5c60da1b","isPaused(address,uint8)":"0d126627","isTrusted(address)":"96d64879","isTrustedSeller(address)":"fe7d0c54","isValidSelector(bytes4)":"77dc3429","isWhitelistedCollateral(address)":"f9839d89","isWhitelistedForCollateral(address,address)":"a52aefd4","isWhitelistedForType(uint8,address)":"99eeca49","quoteIn(uint256,address,address)":"4583aea6","quoteOut(uint256,address,address)":"9525f3ab","quoteRedemptionCurve(uint256)":"d703a0cd","recoverERC20(address,address,address,uint256)":"5c3eebda","redeem(uint256,address,uint256,uint256[])":"815822c1","redeemWithForfeit(uint256,address,uint256,uint256[],address[])":"2e7639bc","revokeCollateral(address)":"1f0ec8ee","sellRewards(uint256,bytes)":"05b41934","setAccessControlManager(address)":"0e32cb86","setDummyImplementation(address)":"c39aa07d","setFees(address,uint64[],int64[],bool)":"629feb62","setOracle(address,bytes)":"b13b0847","setRedemptionCurveParams(uint64[],int64[])":"4eec47b9","setWhitelistStatus(address,uint8,bytes)":"1b0c7182","swapExactInput(uint256,uint256,address,address,address,uint256)":"3b6a1fe0","swapExactInputWithPermit(uint256,uint256,address,address,uint256,bytes)":"d92c6cb2","swapExactOutput(uint256,uint256,address,address,address,uint256)":"b92567fa","swapExactOutputWithPermit(uint256,uint256,address,address,uint256,bytes)":"c10a6287","togglePause(address,uint8)":"a9e6a1a4","toggleTrusted(address,uint8)":"7c0343a1","toggleWhitelist(uint8,address)":"b607d099","updateNormalizer(uint256,bool)":"fd7daaf8"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"accessControlManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"}],\"name\":\"addCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"increase\",\"type\":\"bool\"}],\"name\":\"adjustStablecoins\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"agToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"changeAllowance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_functionSelector\",\"type\":\"bytes4\"}],\"name\":\"facetAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"facetAddress_\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"facetAddresses\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"facetAddresses_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_facet\",\"type\":\"address\"}],\"name\":\"facetFunctionSelectors\",\"outputs\":[{\"internalType\":\"bytes4[]\",\"name\":\"_facetFunctionSelectors\",\"type\":\"bytes4[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"}],\"name\":\"getCollateralBurnFees\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"xFeeBurn\",\"type\":\"uint64[]\"},{\"internalType\":\"int64[]\",\"name\":\"yFeeBurn\",\"type\":\"int64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"}],\"name\":\"getCollateralDecimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"}],\"name\":\"getCollateralInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"isManaged\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"isMintLive\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"isBurnLive\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"onlyWhitelisted\",\"type\":\"uint8\"},{\"internalType\":\"uint216\",\"name\":\"normalizedStables\",\"type\":\"uint216\"},{\"internalType\":\"uint64[]\",\"name\":\"xFeeMint\",\"type\":\"uint64[]\"},{\"internalType\":\"int64[]\",\"name\":\"yFeeMint\",\"type\":\"int64[]\"},{\"internalType\":\"uint64[]\",\"name\":\"xFeeBurn\",\"type\":\"uint64[]\"},{\"internalType\":\"int64[]\",\"name\":\"yFeeBurn\",\"type\":\"int64[]\"},{\"internalType\":\"bytes\",\"name\":\"oracleConfig\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"whitelistData\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"subCollaterals\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"internalType\":\"struct ManagerStorage\",\"name\":\"managerData\",\"type\":\"tuple\"}],\"internalType\":\"struct Collateral\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCollateralList\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"}],\"name\":\"getCollateralMintFees\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"xFeeMint\",\"type\":\"uint64[]\"},{\"internalType\":\"int64[]\",\"name\":\"yFeeMint\",\"type\":\"int64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCollateralRatio\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"collatRatio\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"stablecoinsIssued\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"}],\"name\":\"getCollateralWhitelistData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"}],\"name\":\"getIssuedByCollateral\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"stablecoinsFromCollateral\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"stablecoinsIssued\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"}],\"name\":\"getManagerData\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"}],\"name\":\"getOracle\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"oracleType\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"targetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"oracleData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"targetData\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"}],\"name\":\"getOracleValues\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"mint\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"burn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"redemption\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRedemptionFees\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"xRedemptionCurve\",\"type\":\"uint64[]\"},{\"internalType\":\"int64[]\",\"name\":\"yRedemptionCurve\",\"type\":\"int64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalIssued\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"action\",\"type\":\"uint8\"}],\"name\":\"isPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"isTrusted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"isTrustedSeller\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"isValidSelector\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"}],\"name\":\"isWhitelistedCollateral\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"isWhitelistedForCollateral\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"whitelistType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"isWhitelistedForType\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"}],\"name\":\"quoteIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"}],\"name\":\"quoteOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"quoteRedemptionCurve\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"recoverERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountOuts\",\"type\":\"uint256[]\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountOuts\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"forfeitTokens\",\"type\":\"address[]\"}],\"name\":\"redeemWithForfeit\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"}],\"name\":\"revokeCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"sellRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newAccessControlManager\",\"type\":\"address\"}],\"name\":\"setAccessControlManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_implementation\",\"type\":\"address\"}],\"name\":\"setDummyImplementation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"xFee\",\"type\":\"uint64[]\"},{\"internalType\":\"int64[]\",\"name\":\"yFee\",\"type\":\"int64[]\"},{\"internalType\":\"bool\",\"name\":\"mint\",\"type\":\"bool\"}],\"name\":\"setFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"oracleConfig\",\"type\":\"bytes\"}],\"name\":\"setOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"xFee\",\"type\":\"uint64[]\"},{\"internalType\":\"int64[]\",\"name\":\"yFee\",\"type\":\"int64[]\"}],\"name\":\"setRedemptionCurveParams\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"whitelistStatus\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"whitelistData\",\"type\":\"bytes\"}],\"name\":\"setWhitelistStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"permitData\",\"type\":\"bytes\"}],\"name\":\"swapExactInputWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"permitData\",\"type\":\"bytes\"}],\"name\":\"swapExactOutputWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"pausedType\",\"type\":\"uint8\"}],\"name\":\"togglePause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"t\",\"type\":\"uint8\"}],\"name\":\"toggleTrusted\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"whitelistType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"}],\"name\":\"toggleWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"increase\",\"type\":\"bool\"}],\"name\":\"updateNormalizer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/angle/AngleAdapter.sol\":\"ITransmuter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/angle/AngleAdapter.sol\":{\"keccak256\":\"0x51397895e82efaf858a0aa7fbc0629844ff4ac17c5f4f43d1c2ab13c1072b46c\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://05a3e26a8cb9d82385c6eea9dcd244a66c3f403a74536a0e687dcaf729d1b664\",\"dweb:/ipfs/QmWTnGs2huvac7YDFPMf95XZ4QnbGTKtnTHsBGJTDUcCD5\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"accessControlManager","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"collateral","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addCollateral"},{"inputs":[{"internalType":"address","name":"collateral","type":"address"},{"internalType":"uint128","name":"amount","type":"uint128"},{"internalType":"bool","name":"increase","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"adjustStablecoins"},{"inputs":[],"stateMutability":"view","type":"function","name":"agToken","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"changeAllowance"},{"inputs":[{"internalType":"bytes4","name":"_functionSelector","type":"bytes4"}],"stateMutability":"view","type":"function","name":"facetAddress","outputs":[{"internalType":"address","name":"facetAddress_","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"facetAddresses","outputs":[{"internalType":"address[]","name":"facetAddresses_","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"_facet","type":"address"}],"stateMutability":"view","type":"function","name":"facetFunctionSelectors","outputs":[{"internalType":"bytes4[]","name":"_facetFunctionSelectors","type":"bytes4[]"}]},{"inputs":[{"internalType":"address","name":"collateral","type":"address"}],"stateMutability":"view","type":"function","name":"getCollateralBurnFees","outputs":[{"internalType":"uint64[]","name":"xFeeBurn","type":"uint64[]"},{"internalType":"int64[]","name":"yFeeBurn","type":"int64[]"}]},{"inputs":[{"internalType":"address","name":"collateral","type":"address"}],"stateMutability":"view","type":"function","name":"getCollateralDecimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"address","name":"collateral","type":"address"}],"stateMutability":"view","type":"function","name":"getCollateralInfo","outputs":[{"internalType":"struct Collateral","name":"","type":"tuple","components":[{"internalType":"uint8","name":"isManaged","type":"uint8"},{"internalType":"uint8","name":"isMintLive","type":"uint8"},{"internalType":"uint8","name":"isBurnLive","type":"uint8"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"uint8","name":"onlyWhitelisted","type":"uint8"},{"internalType":"uint216","name":"normalizedStables","type":"uint216"},{"internalType":"uint64[]","name":"xFeeMint","type":"uint64[]"},{"internalType":"int64[]","name":"yFeeMint","type":"int64[]"},{"internalType":"uint64[]","name":"xFeeBurn","type":"uint64[]"},{"internalType":"int64[]","name":"yFeeBurn","type":"int64[]"},{"internalType":"bytes","name":"oracleConfig","type":"bytes"},{"internalType":"bytes","name":"whitelistData","type":"bytes"},{"internalType":"struct ManagerStorage","name":"managerData","type":"tuple","components":[{"internalType":"contract IERC20[]","name":"subCollaterals","type":"address[]"},{"internalType":"bytes","name":"config","type":"bytes"}]}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCollateralList","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"collateral","type":"address"}],"stateMutability":"view","type":"function","name":"getCollateralMintFees","outputs":[{"internalType":"uint64[]","name":"xFeeMint","type":"uint64[]"},{"internalType":"int64[]","name":"yFeeMint","type":"int64[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCollateralRatio","outputs":[{"internalType":"uint64","name":"collatRatio","type":"uint64"},{"internalType":"uint256","name":"stablecoinsIssued","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"collateral","type":"address"}],"stateMutability":"view","type":"function","name":"getCollateralWhitelistData","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"collateral","type":"address"}],"stateMutability":"view","type":"function","name":"getIssuedByCollateral","outputs":[{"internalType":"uint256","name":"stablecoinsFromCollateral","type":"uint256"},{"internalType":"uint256","name":"stablecoinsIssued","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"collateral","type":"address"}],"stateMutability":"view","type":"function","name":"getManagerData","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"collateral","type":"address"}],"stateMutability":"view","type":"function","name":"getOracle","outputs":[{"internalType":"uint8","name":"oracleType","type":"uint8"},{"internalType":"uint8","name":"targetType","type":"uint8"},{"internalType":"bytes","name":"oracleData","type":"bytes"},{"internalType":"bytes","name":"targetData","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"collateral","type":"address"}],"stateMutability":"view","type":"function","name":"getOracleValues","outputs":[{"internalType":"uint256","name":"mint","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"ratio","type":"uint256"},{"internalType":"uint256","name":"minRatio","type":"uint256"},{"internalType":"uint256","name":"redemption","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getRedemptionFees","outputs":[{"internalType":"uint64[]","name":"xRedemptionCurve","type":"uint64[]"},{"internalType":"int64[]","name":"yRedemptionCurve","type":"int64[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getTotalIssued","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"collateral","type":"address"},{"internalType":"uint8","name":"action","type":"uint8"}],"stateMutability":"view","type":"function","name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"stateMutability":"view","type":"function","name":"isTrusted","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"stateMutability":"view","type":"function","name":"isTrustedSeller","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"stateMutability":"view","type":"function","name":"isValidSelector","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"collateral","type":"address"}],"stateMutability":"view","type":"function","name":"isWhitelistedCollateral","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"collateral","type":"address"},{"internalType":"address","name":"sender","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"isWhitelistedForCollateral","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint8","name":"whitelistType","type":"uint8"},{"internalType":"address","name":"sender","type":"address"}],"stateMutability":"view","type":"function","name":"isWhitelistedForType","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"}],"stateMutability":"view","type":"function","name":"quoteIn","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"}],"stateMutability":"view","type":"function","name":"quoteOut","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function","name":"quoteRedemptionCurve","outputs":[{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"collateral","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"recoverERC20"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256[]","name":"minAmountOuts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"redeem","outputs":[{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256[]","name":"minAmountOuts","type":"uint256[]"},{"internalType":"address[]","name":"forfeitTokens","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"redeemWithForfeit","outputs":[{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"collateral","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeCollateral"},{"inputs":[{"internalType":"uint256","name":"minAmountOut","type":"uint256"},{"internalType":"bytes","name":"payload","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"sellRewards","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_newAccessControlManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setAccessControlManager"},{"inputs":[{"internalType":"address","name":"_implementation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDummyImplementation"},{"inputs":[{"internalType":"address","name":"collateral","type":"address"},{"internalType":"uint64[]","name":"xFee","type":"uint64[]"},{"internalType":"int64[]","name":"yFee","type":"int64[]"},{"internalType":"bool","name":"mint","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setFees"},{"inputs":[{"internalType":"address","name":"collateral","type":"address"},{"internalType":"bytes","name":"oracleConfig","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"setOracle"},{"inputs":[{"internalType":"uint64[]","name":"xFee","type":"uint64[]"},{"internalType":"int64[]","name":"yFee","type":"int64[]"}],"stateMutability":"nonpayable","type":"function","name":"setRedemptionCurveParams"},{"inputs":[{"internalType":"address","name":"collateral","type":"address"},{"internalType":"uint8","name":"whitelistStatus","type":"uint8"},{"internalType":"bytes","name":"whitelistData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"setWhitelistStatus"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapExactInput","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bytes","name":"permitData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"swapExactInputWithPermit","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapExactOutput","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bytes","name":"permitData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"swapExactOutputWithPermit","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"collateral","type":"address"},{"internalType":"uint8","name":"pausedType","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"togglePause"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint8","name":"t","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"toggleTrusted"},{"inputs":[{"internalType":"uint8","name":"whitelistType","type":"uint8"},{"internalType":"address","name":"who","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"toggleWhitelist"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"increase","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"updateNormalizer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/angle/AngleAdapter.sol":"ITransmuter"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/angle/AngleAdapter.sol":{"keccak256":"0x51397895e82efaf858a0aa7fbc0629844ff4ac17c5f4f43d1c2ab13c1072b46c","urls":["bzz-raw://05a3e26a8cb9d82385c6eea9dcd244a66c3f403a74536a0e687dcaf729d1b664","dweb:/ipfs/QmWTnGs2huvac7YDFPMf95XZ4QnbGTKtnTHsBGJTDUcCD5"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"}},"version":1},"id":40} \ No newline at end of file diff --git a/evm/out/AngleAdapter.sol/LibManager.json b/evm/out/AngleAdapter.sol/LibManager.json deleted file mode 100644 index 4fcf552..0000000 --- a/evm/out/AngleAdapter.sol/LibManager.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220ddd172f48471e18f5f97a924d7a3393bd65db70642125d6cfda27d67c8bbfd3864736f6c634300081b0033","sourceMap":"15543:3139:40:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea2646970667358221220ddd172f48471e18f5f97a924d7a3393bd65db70642125d6cfda27d67c8bbfd3864736f6c634300081b0033","sourceMap":"15543:3139:40:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Angle Labs, Inc.\",\"details\":\"Managed collateral assets may be handled through external smart contracts or directly through this libraryThere is no implementation at this point for a managed collateral handled through this library, and a new specific `ManagerType` would need to be added in this case\",\"kind\":\"dev\",\"methods\":{},\"title\":\"LibManager\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/angle/AngleAdapter.sol\":\"LibManager\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/angle/AngleAdapter.sol\":{\"keccak256\":\"0x51397895e82efaf858a0aa7fbc0629844ff4ac17c5f4f43d1c2ab13c1072b46c\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://05a3e26a8cb9d82385c6eea9dcd244a66c3f403a74536a0e687dcaf729d1b664\",\"dweb:/ipfs/QmWTnGs2huvac7YDFPMf95XZ4QnbGTKtnTHsBGJTDUcCD5\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/angle/AngleAdapter.sol":"LibManager"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/angle/AngleAdapter.sol":{"keccak256":"0x51397895e82efaf858a0aa7fbc0629844ff4ac17c5f4f43d1c2ab13c1072b46c","urls":["bzz-raw://05a3e26a8cb9d82385c6eea9dcd244a66c3f403a74536a0e687dcaf729d1b664","dweb:/ipfs/QmWTnGs2huvac7YDFPMf95XZ4QnbGTKtnTHsBGJTDUcCD5"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"}},"version":1},"id":40} \ No newline at end of file diff --git a/evm/out/AngleAdapter.t.sol/AngleAdapterTest.json b/evm/out/AngleAdapter.t.sol/AngleAdapterTest.json deleted file mode 100644 index ea7a99a..0000000 --- a/evm/out/AngleAdapter.t.sol/AngleAdapterTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testGetCapabilitiesAngle","inputs":[{"name":"pair","type":"bytes32","internalType":"bytes32"},{"name":"t0","type":"address","internalType":"address"},{"name":"t1","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testGetLimitsAngle","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testGetTokensAngle","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapBuyIncreasingAngle","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapFuzzAngleMint","inputs":[{"name":"specifiedAmount","type":"uint256","internalType":"uint256"},{"name":"isBuy","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapFuzzAngleRedeem","inputs":[{"name":"specifiedAmount","type":"uint256","internalType":"uint256"},{"name":"isBuy","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapSellIncreasingAngle","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"LimitExceeded","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotImplemented","inputs":[{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"Unavailable","inputs":[{"name":"reason","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x60808060405234602f57600160ff19600c541617600c55600160ff19601e541617601e55616d5690816100348239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c9081630a9254e414613c1e575080631ed7831c14613ba057806321079a9214613b105780632ade38801461395157806333ed1a1c14612cf65780633e5e3c2314612c785780633f7286f414612bfa5780634f9eed5514611ff45780635ffccd931461190157806366d9a9a01461175357806385226c81146116c15780638bdd39a214610791578063916a17c614610505578063a391347a146103aa578063b5508aa914610311578063ba414fa6146102ec578063ccfab64a146101a2578063e20c9f71146101145763fa7626d4146100ef575f80fd5b34610111578060031936011261011157602060ff601e54166040519015158152f35b80fd5b503461011157806003193601126101115760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b8181106101835761017f8561017381870382614163565b60405191829182613f9a565b0390f35b82546001600160a01b031684526020909301926001928301920161015c565b5034610111576060366003190112610111576024356001600160a01b038116908190036102e857816044356001600160a01b038116908190036102e857606460018060a01b03601e5460081c169360405194859384926348bd7dfd60e01b84526004356004850152602484015260448301525afa80156102dd578290610231575b61022e91505161451f565b80f35b503d8083833e6102418183614163565b8101906020818303126102d5578051906001600160401b0382116102d957019080601f830112156102d55781519061027882614224565b926102866040519485614163565b82845260208085019360051b8201019182116102d157602001915b8183106102b45750505061022e90610223565b8251600a8110156102cd578152602092830192016102a1565b8580fd5b8480fd5b8280fd5b8380fd5b6040513d84823e3d90fd5b5080fd5b50346101115780600319360112610111576020610307614484565b6040519015158152f35b503461011157806003193601126101115760195461032e81614224565b9161033c6040519384614163565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b83831061037e576040518061017f87826140ce565b60016020819260405161039c8161039581896142ec565b0382614163565b815201920192019190610369565b5034610111578060031936011261011157601e5460405163ecbbc03360e01b815260048101839052919081908390602490829060081c6001600160a01b03165afa80156104f8578190610460575b819250515f516020616cc15f395f51905f523b1561045d576040519063a8d4d1d960e01b825260048201526002602482015281816044815f516020616cc15f395f51905f525afa80156102dd5761044c5750f35b8161045691614163565b6101115780f35b50fd5b503d8082843e6104708184614163565b8201916020818403126102e8578051906001600160401b0382116102d5570182601f820112156102e8578051926104a684614224565b916104b46040519384614163565b84835260208084019560051b8201019182116102d957602001935b8185106104e05750508192506103f8565b602080916104ed87614210565b8152019401936104cf565b50604051903d90823e3d90fd5b5034610111578060031936011261011157601c5461052281614224565b906105306040519283614163565b808252601c8352827f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b838310610573576040518061017f878261401f565b60405161057f8161412d565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b8160078401106106f2578460019794600297946020979461060a9454918181106106d6575b8181106106ba575b81811061069e575b818110610682575b818110610666575b81811061064a575b818110610630575b1061061c575b500382614163565b8382015281520192019201919061055e565b6001600160e01b031916815286015f610602565b828a1b6001600160e01b0319168452928901928b016105fc565b604083901b6001600160e01b0319168452928901928b016105f4565b606083901b6001600160e01b0319168452928901928b016105ec565b608083901b6001600160e01b0319168452928901928b016105e4565b60a083901b6001600160e01b0319168452928901928b016105dc565b60c083901b6001600160e01b0319168452928901928b016105d4565b60e083901b6001600160e01b0319168452928901928b016105cc565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e08201520194019201916105a7565b5034610111576107a036614000565b156116b85760646001915b60018060a01b03601e5460081c168460018060a01b03601f5416916040519485809263549387df60e11b82528460048301528560248301525f516020616ce15f395f51905f5260448301525afa928315610edc578593611694575b50600284101561168057846001851493845f146111c35761082891925061438e565b518210806111ba575b5f516020616cc15f395f51905f523b156102e857604051632631f2b160e11b8152901515600482015281816024815f516020616cc15f395f51905f525afa80156102dd576111a5575b50506108f160018060a01b03601f5416858060405160208101906370a0823160e01b8252306024820152602481526108b3604482614163565b5190845afa506108d36108c4614628565b60208082518301019101614201565b5060018060a01b03166001600160601b0360a01b6011541617601155565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015611191576001810180600e5581101561117d57600e8552602085200130905560018060a01b0360115416600f5460e01b6010549061094b61466e565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b169081895260205260408820604051602081019061099d8161098f888886614657565b03601f198101835282614163565b519020895260205260ff600360408a200154161561116f575b6001600160a01b0384165f908152600d6020526040902090885260205261098f6109ef6040892093604051928391602083019586614657565b51902086526020528460408120916001830154926002810154610a1281866145dd565b61104d578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f516020616cc15f395f51905f525afa968715610d2f578697611014575b506001908201610100031b5f1901811b1986165f516020616cc15f395f51905f523b156102cd576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528381606481835f516020616cc15f395f51905f525af1908115610cf0578491610fff575b5050610ae761482a565b9015908115610ff3575b50610f165750505050610b02615310565b601f54601e5460405163095ea7b360e01b81526001600160a01b0360089290921c821660048201525f19602482015291602091839160449183918a91165af18015610edc57610ee7575b505b6040516370a0823160e01b8152306004820152906020826024815f516020616ce15f395f51905f525afa918215610edc578592610ea8575b50601f546040516370a0823160e01b815230600482015293906001600160a01b0316602085602481845afa948515610e9d578795610e69575b50601e54604051638307c65560e01b81529596608092879260081c6001600160a01b03169183918b918391610bf9918a9160048501614420565b03925af1938415610d2f578694610e38575b508351610c16578580f35b15610d3a576040516370a0823160e01b81523060048201526020816024815f516020616ce15f395f51905f525afa908115610d2f578691610cfb575b50610c6692610c6091614477565b9061457b565b51601f546040516370a0823160e01b815230600482015290602090829060249082906001600160a01b03165afa908115610cf0578491610cb8575b50610c6090610caf93614477565b5f808080808580f35b90506020813d602011610ce8575b81610cd360209383614163565b81010312610ce45751610caf610ca1565b5f80fd5b3d9150610cc6565b6040513d86823e3d90fd5b90506020813d602011610d27575b81610d1660209383614163565b81010312610ce45751610c66610c52565b3d9150610d09565b6040513d88823e3d90fd5b601f546040516370a0823160e01b815230600482015292949290602090829060249082906001600160a01b03165afa908115610d2f578691610e04575b50610c6090610d8593614477565b516040516370a0823160e01b81523060048201526020816024815f516020616ce15f395f51905f525afa908115610cf0578491610dd0575b50610dcb92610c6091614477565b610caf565b90506020813d602011610dfc575b81610deb60209383614163565b81010312610ce45751610dcb610dbd565b3d9150610dde565b90506020813d602011610e30575b81610e1f60209383614163565b81010312610ce45751610d85610d77565b3d9150610e12565b610e5b91945060803d608011610e62575b610e538183614163565b8101906143ca565b925f610c0b565b503d610e49565b94506020853d602011610e95575b81610e8460209383614163565b81010312610ce45793519382610bbf565b3d9150610e77565b6040513d89823e3d90fd5b9091506020813d602011610ed4575b81610ec460209383614163565b81010312610ce45751905f610b86565b3d9150610eb7565b6040513d87823e3d90fd5b610f089060203d602011610f0f575b610f008183614163565b8101906143b2565b505f610b4c565b503d610ef6565b82945054905f516020616cc15f395f51905f523b156102d5576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810191909152604481019290925281606481835f516020616cc15f395f51905f525af180156102dd57610fde575b60405162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b610fe9828092614163565b6101115780610f7d565b5f19141590505f610af1565b8161100991614163565b6102d557825f610add565b955095506020853d602011611045575b8161103160209383614163565b81010312610ce45793519489949081610a63565b3d9150611024565b6110588491866145dd565b61010003610100811161115b5760ff811161115b5760405163348051d760e11b8152600190911b600482015281816024815f516020616cc15f395f51905f525afa9081156102dd57606a60209284611113936111339692611137575b506040519485925f516020616d015f395f51905f52828501525f516020616ca15f395f51905f52604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f198101835282614163565b60405162461bcd60e51b8152602060048201529182916024830190613fdc565b0390fd5b6111549192503d8084833e61114c8183614163565b81019061419f565b90866110b4565b634e487b7160e01b82526011600452602482fd5b611177614a46565b506109b6565b634e487b7160e01b85526032600452602485fd5b634e487b7160e01b85526041600452602485fd5b816111af91614163565b6102d957835f61087a565b50811515610831565b6111cc9061436d565b51831080611677575b5f516020616cc15f395f51905f523b156102e857604051632631f2b160e11b8152901515600482015281816024815f516020616cc15f395f51905f525afa80156102dd57611662575b50908161124c9260405160208101906370a0823160e01b8252306024820152602481526108b3604482614163565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015611191576001810180600e5581101561117d57600e8552602085200130905560018060a01b0360115416600f5460e01b601054906112a661466e565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908189526020526040882060405160208101906112ea8161098f888886614657565b519020895260205260ff600360408a2001541615611654575b6001600160a01b0384165f908152600d6020526040902090885260205261098f61133c6040892093604051928391602083019586614657565b5190208652602052846040812091600183015492600281015461135f81866145dd565b611520575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f516020616cc15f395f51905f525afa968715610d2f5786976114e7575b506001908201610100031b5f1901811b198616915f516020616cc15f395f51905f523b156102cd576040516370ca10bb60e01b81526001600160a01b038616600482015260248101919091529087901b9190911760448201528381606481835f516020616cc15f395f51905f525af1908115610cf05784916114d2575b50508461143961482a565b9190159182156114c7575b5050610f165750505050611456615310565b601f54601e5460405163095ea7b360e01b81526001600160a01b0360089290921c8216600482015260248101849052916020918391168188816044810103925af18015610edc576114a8575b50610b4e565b6114c09060203d602011610f0f57610f008183614163565b505f6114a2565b14159050855f611444565b816114dc91614163565b6102d557825f61142e565b955095506020853d602011611518575b8161150460209383614163565b81010312610ce457935194899490816113b1565b3d91506114f7565b9091925061152e81856145dd565b6101000361010081116116405760ff81116116405760405163348051d760e11b8152600190911b6004820181905289826024815f516020616cc15f395f51905f525afa801561163557606a6115e6916020948d9161161b575b506040519485915f516020616d015f395f51905f52828401525f516020616ca15f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018d838201520301601f198101845283614163565b8610156115f7575090879291611364565b60405162461bcd60e51b815260206004820152908190611133906024830190613fdc565b61162f91503d808f833e61114c8183614163565b5f611587565b6040513d8c823e3d90fd5b634e487b7160e01b89526011600452602489fd5b61165c614a46565b50611303565b8161166c91614163565b6102d157845f61121e565b508215156111d5565b634e487b7160e01b85526021600452602485fd5b6116b19193503d8087833e6116a98183614163565b81019061423b565b915f610806565b606482916107ab565b5034610111578060031936011261011157601a546116de81614224565b916116ec6040519384614163565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b83831061172e576040518061017f87826140ce565b6001602081926040516117458161039581896142ec565b815201920192019190611719565b5034610111578060031936011261011157601b5461177081614224565b9061177e6040519283614163565b808252601b8352827f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1602084015b8383106117c1576040518061017f878261401f565b6040516117cd8161412d565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b81600784011061186257846001979460029794602097946118509454918181106106d6578181106106ba5781811061069e57818110610682578181106106665781811061064a57818110610630571061061c57500382614163565b838201528152019201920191906117ac565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e08201520194019201916117f5565b503461011157806003193601126101115780610ca0906040516119248382614163565b60648152601f19830180366020840137845b60648110611f9c575061194c6040519485614163565b60648452825b818110611f605750506001905b60648210611aba57505060015b60638110611978578380f35b611982818461439e565b51516001820190818311611aa65761199a828661439e565b51515f516020616cc15f395f51905f523b156102d15760405191638466f41560e01b83526004830152602482015283816044815f516020616cc15f395f51905f525afa8015610cf0578490611a8f575b5050611a1560406119fb848761439e565b5101516040611a0c5f19948861439e565b510151906145ea565b830b145f516020616cc15f395f51905f523b156102d5576040519063a598288560e01b8252600482015282816024815f516020616cc15f395f51905f525afa8015611a8457908391611a6c575b505060010161196c565b90611a7691614163565b8184126102e857815f611a62565b6040513d85823e3d90fd5b611a9891614163565b8285126102d5575f836119ea565b634e487b7160e01b84526011600452602484fd5b909160405190634b88b8ad60e11b8252602082600481845f516020616cc15f395f51905f525af19182156104f8578192611f2d575b5080611f1957508492611b2f60018060a01b03601f5416878060405160208101906370a0823160e01b8252306024820152602481526108b3604482614163565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015611f05576001810180600e55811015611ef157600e8752602087200130905560018060a01b0360115416600f5460e01b60105490611b8961466e565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818b5260205260408a206040516020810190611bcd8161098f888886614657565b5190208b5260205260ff600360408c2001541615611ee3575b6001600160a01b0384165f908152600d60205260409020908a5260205261098f611c1f60408b2093604051928391602083019586614657565b51902088526020528660408120916001830154926002810154611c4281866145dd565b61104d578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f516020616cc15f395f51905f525afa968715610d2f578697611eab575b506001908201610100031b5f1901811b1986165f516020616cc15f395f51905f523b156102cd576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528381606481835f516020616cc15f395f51905f525af1908115610cf0578491611e96575b5050611d1761482a565b9015908115611e8a575b50610f165750505050611d32615310565b601f54601e5460405163095ea7b360e01b81526001600160a01b0360089290921c821660048201525f19602482015291602091839160449183918c91165af18015610e9d57611e6c575b50601e54601f54611dc6916080916001600160a01b039081169160081c1660018a611da7878a61439e565b51604051638307c65560e01b8152968795869485939160048501614420565b03925af1908115610e9d578791611e4e575b50611de3828761439e565b52611dee818661439e565b5060405191631135fc2960e21b83526004830152602082602481895f516020616cc15f395f51905f525af1918215610d2f57600192611e30575b50019061195f565b611e479060203d8111610f0f57610f008183614163565b505f611e28565b611e66915060803d8111610e6257610e538183614163565b5f611dd8565b611e839060203d8111610f0f57610f008183614163565b505f611d7c565b5f19141590505f611d21565b81611ea091614163565b6102d557825f611d0d565b955095506020853d8211611edb575b81611ec760209383614163565b81010312610ce4579351948b949081611c93565b3d9150611eba565b611eeb614a46565b50611be6565b634e487b7160e01b87526032600452602487fd5b634e487b7160e01b87526041600452602487fd5b634e487b7160e01b81526021600452602490fd5b9091506020813d8211611f58575b81611f4860209383614163565b81010312610ce457519080611aef565b3d9150611f3b565b602090604051611f6f81614148565b8581528583820152604051611f838161412d565b8681528684820152604082015282828801015201611952565b9280611f195750849280606402606481048203611fe0576305f5e100820290808204620f42401490151715611fe05760019190611fd9828661439e565b5201611936565b634e487b7160e01b87526011600452602487fd5b50346101115761200336614000565b15612bf45760015b601e54601f5460405163549387df60e11b8152600481018690525f516020616ce15f395f51905f5260248201526001600160a01b039182166044820152929185918491606491839160081c165afa918215610cf0578492612bd8575b506002811015612bc457836001821492835f1461272b576120879061438e565b51841080612722575b5f516020616cc15f395f51905f523b156102e857604051632631f2b160e11b8152901515600482015281816024815f516020616cc15f395f51905f525afa80156102dd5761270d575b508060405160208101906370a0823160e01b825230602482015260248152612102604482614163565b51905f516020616ce15f395f51905f525afa506121206108c4614628565b50601180546001600160a01b0319165f516020616ce15f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b811015611191576001810180600e5581101561117d57600e8552602085200130905560018060a01b0360115416600f5460e01b6010549061219a61466e565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908189526020526040882060405160208101906121de8161098f888886614657565b519020895260205260ff600360408a20015416156126ff575b6001600160a01b0384165f908152600d6020526040902090885260205261098f6122306040892093604051928391602083019586614657565b5190208652602052846040812091600183015492600281015461225381866145dd565b61104d578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f516020616cc15f395f51905f525afa968715610d2f5786976126c6575b506001908201610100031b5f1901811b1986165f516020616cc15f395f51905f523b156102cd576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528381606481835f516020616cc15f395f51905f525af1908115610cf05784916126b1575b505061232861482a565b90159081156126a5575b50610f165750505050612343615310565b601e5460405163095ea7b360e01b815260089190911c6001600160a01b031660048201525f196024820152602081604481885f516020616ce15f395f51905f525af18015610edc57612686575b505b6040516370a0823160e01b8152306004820152926020846024815f516020616ce15f395f51905f525afa938415610edc578594612652575b50601f546040516370a0823160e01b81523060048201526001600160a01b03909116939092602084602481885afa938415610e9d57879461261d575b5060809060a460018060a01b03601e5460081c1696896040519889948593638307c65560e01b85528360048601525f516020616ce15f395f51905f526024860152604485015260648401528760848401525af1938415610d2f5786946125fc575b508351612472578580f35b1561253857601f546040516370a0823160e01b815230600482015290602090829060249082906001600160a01b03165afa908115610d2f578691612504575b506124bf92610c6091614477565b516040516370a0823160e01b81523060048201526020816024815f516020616ce15f395f51905f525afa908115610cf0578491610cb85750610c6090610caf93614477565b90506020813d602011612530575b8161251f60209383614163565b81010312610ce457516124bf6124b1565b3d9150612512565b6040516370a0823160e01b81523060048201529193916020816024815f516020616ce15f395f51905f525afa908115610d2f5786916125c8575b50610c609061258093614477565b51601f546040516370a0823160e01b815230600482015290602090829060249082906001600160a01b03165afa908115610cf0578491610dd05750610dcb92610c6091614477565b90506020813d6020116125f4575b816125e360209383614163565b81010312610ce45751612580612572565b3d91506125d6565b61261691945060803d608011610e6257610e538183614163565b925f612467565b9093506020813d60201161264a575b8161263960209383614163565b81010312610ce45751926080612406565b3d915061262c565b9093506020813d60201161267e575b8161266e60209383614163565b81010312610ce45751925f6123ca565b3d9150612661565b61269e9060203d602011610f0f57610f008183614163565b505f612390565b5f19141590505f612332565b816126bb91614163565b6102d557825f61231e565b955095506020853d6020116126f7575b816126e360209383614163565b81010312610ce457935194899490816122a4565b3d91506126d6565b612707614a46565b506121f7565b8161271791614163565b6102d957835f6120d9565b50831515612090565b6127349061436d565b51841080612bbb575b5f516020616cc15f395f51905f523b156102e857604051632631f2b160e11b8152901515600482015281816024815f516020616cc15f395f51905f525afa80156102dd57612ba6575b508060405160208101906370a0823160e01b8252306024820152602481526127af604482614163565b51905f516020616ce15f395f51905f525afa506127cd6108c4614628565b50601180546001600160a01b0319165f516020616ce15f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b811015611191576001810180600e5581101561117d57600e8552602085200130905560018060a01b0360115416600f5460e01b6010549061284761466e565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b169081895260205260408820604051602081019061288b8161098f888886614657565b519020895260205260ff600360408a2001541615612b98575b6001600160a01b0384165f908152600d6020526040902090885260205261098f6128dd6040892093604051928391602083019586614657565b5190208652602052846040812091600183015492600281015461290081866145dd565b612ac2575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f516020616cc15f395f51905f525afa968715610d2f578697612a89575b506001908201610100031b5f1901811b198616915f516020616cc15f395f51905f523b156102cd576040516370ca10bb60e01b81526001600160a01b038616600482015260248101919091529089901b9190911760448201528381606481835f516020616cc15f395f51905f525af1908115610cf0578491612a74575b5050866129da61482a565b919015918215612a69575b5050610f1657505050506129f7615310565b601e5460405163095ea7b360e01b815260089190911c6001600160a01b0316600482015260248101849052602081604481885f516020616ce15f395f51905f525af18015610edc57612a4a575b50612392565b612a629060203d602011610f0f57610f008183614163565b505f612a44565b14159050875f6129e5565b81612a7e91614163565b6102d557825f6129cf565b955095506020853d602011612aba575b81612aa660209383614163565b81010312610ce45793519489949081612952565b3d9150612a99565b90919250612ad081856145dd565b6101000361010081116116405760ff81116116405760405163348051d760e11b8152600190911b6004820181905289826024815f516020616cc15f395f51905f525afa801561163557606a612b87916020948d9161161b57506040519485915f516020616d015f395f51905f52828401525f516020616ca15f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018d838201520301601f198101845283614163565b8810156115f7575090879291612905565b612ba0614a46565b506128a4565b81612bb091614163565b6102d957835f612786565b5083151561273d565b634e487b7160e01b84526021600452602484fd5b612bed9192503d8086833e6116a98183614163565b905f612067565b8161200b565b503461011157806003193601126101115760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b818110612c595761017f8561017381870382614163565b82546001600160a01b0316845260209093019260019283019201612c42565b503461011157806003193601126101115760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b818110612cd75761017f8561017381870382614163565b82546001600160a01b0316845260209093019260019283019201612cc0565b5034610111578060031936011261011157610ca0604051612d178282614163565b60648152601f1982019182366020840137839160019384935b86606482106138fe575050612d486040519384614163565b60648352855b8181106138b95750508290815b612ea9575b5050815b612d6c578380f35b6063821015612ea557612d7f828261439e565b515183830190818411612e91578590612d98838561439e565b51515f516020616cc15f395f51905f523b156102d55760405191638466f41560e01b83526004830152602482015281816044815f516020616cc15f395f51905f525afa80156102dd57612e7c575b5050612e086040612df7858561439e565b5101516040611a0c5f19948661439e565b850b14915f516020616cc15f395f51905f523b156102d1576040519263a598288560e01b845260048401528480846024815f516020616cc15f395f51905f525afa9384156104f8578594612e61575b5050820191612d64565b8192945090612e6f91614163565b6102d9578291845f612e57565b81612e8691614163565b6102d157845f612de6565b634e487b7160e01b86526011600452602486fd5b8380f35b90919260648310156138b25750604051634b88b8ad60e11b81529185602084600481845f516020616cc15f395f51905f525af19384156104f857819461387d575b5061386957841561345b57601f546001600160a01b0316612f39612f0e838561439e565b5191888060405160208101906370a0823160e01b8252306024820152602481526108b3604482614163565b6370a0823163ffffffff19600f541617600f55600e54600160401b8110156134475786810180600e5581101561343357600e8852307fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd9190910155601154600f5460105489926001600160a01b03169160e01b612fb461466e565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818652602052604085206040516020810190612ff88161098f888886614657565b519020865260205260ff60036040872001541615613425575b6001600160a01b0384165f908152600d6020526040902090855260205261098f61304a6040862093604051928391602083019586614657565b5190208352602052604082208881015493600282015461306a81876145dd565b61331a575b8254604051630667f9d760e41b81526001600160a01b038616600482015260248101829052969091906020886044815f516020616cc15f395f51905f525afa978815610e9d5787986132e2575b506001908201610100031b5f1901811b198716915f516020616cc15f395f51905f523b156132de576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528481606481835f516020616cc15f395f51905f525af1908115610edc5785916132c9575b505061314361482a565b9190159182156132be575b5050610f165750505050613160615310565b601f54601e546131bc9160209160081c6001600160a01b039081169116613187858761439e565b5160405163095ea7b360e01b81526001600160a01b0390931660048401526024830152909283919082908b9082906044820190565b03925af18015610e9d576132a0575b505b601e54601f546131f6916080916001600160a01b039081169160081c168980611da7878961439e565b03925af1908115610e9d578791613282575b50613213828661439e565b5261321e818561439e565b5060405192631135fc2960e21b84526004840152602083602481895f516020616cc15f395f51905f525af1908115610d2f5785938492613264575b500190829392612d5b565b61327b9060203d8111610f0f57610f008183614163565b505f613259565b61329a915060803d8111610e6257610e538183614163565b5f613208565b6132b79060203d8111610f0f57610f008183614163565b505f6131cb565b141590505f8061314e565b816132d391614163565b6102d957835f613139565b8680fd5b965096506020863d8211613312575b816132fe60209383614163565b81010312610ce4579451958c9590816130bc565b3d91506132f1565b909192935061332981866145dd565b6101000361010081116134115760ff81116134115760405163348051d760e11b8152908b901b600482018190528c80836024815f516020616cc15f395f51905f525afa9283156104f85760209382606a926133e394926133f5575b506040519586925f516020616d015f395f51905f52828501525f516020616ca15f395f51905f52604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f198101845283614163565b8310156115f75750908a93929161306f565b61340a9192503d8084833e61114c8183614163565b905f613384565b634e487b7160e01b8c52601160045260248cfd5b61342d614a46565b50613011565b634e487b7160e01b88526032600452602488fd5b634e487b7160e01b88526041600452602488fd5b935061349460018060a01b03601f54165f8060405160208101906370a0823160e01b8252306024820152602481526108b3604482614163565b6370a0823163ffffffff19600f541617600f55600e5493600160401b8510156138555784600e555f94600e5f5260205f200130905560018060a01b0360115416600f5460e01b601054906134e661466e565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690815f5260205260405f20604051602081019061352a8161098f888886614657565b5190205f5260205260ff600360405f2001541615613847575b6001600160a01b0384165f908152600d60205260409020905f5260205261098f61357c60405f2093604051928391602083019586614657565b5190205f5260205260405f2090815491600281015461359b81856145dd565b613759578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052949091906020866044815f516020616cc15f395f51905f525afa95861561371b575f96613726575b506001908201610100031b5f1901811b1985165f516020616cc15f395f51905f523b15610ce4576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201525f81606481835f516020616cc15f395f51905f525af1801561371b57613704575b5090889161366f61482a565b90159081156136f8575b50610f16575050505061368a615310565b601f54601e5460405163095ea7b360e01b81526001600160a01b0360089290921c821660048201525f19602482015291602091839160449183918c91165af18015610e9d576136da575b506131cd565b6136f19060203d8111610f0f57610f008183614163565b505f6136d4565b5f19141590505f613679565b613712919299505f90614163565b5f97905f613663565b6040513d5f823e3d90fd5b9095506020813d8211613751575b8161374160209383614163565b81010312610ce4575194816135ec565b3d9150613734565b61376390846145dd565b6101000361010081116138335760ff106138335760405163348051d760e11b81525f60048201819052816024815f516020616cc15f395f51905f525afa90811561371b57611113606a611133936020935f91613819575b506040519384915f516020616d015f395f51905f52828401525f516020616ca15f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81015f838201520301601f198101835282614163565b61382d91503d805f833e61114c8183614163565b856137ba565b634e487b7160e01b5f52601160045260245ffd5b61384f614a46565b50613543565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b86526021600452602486fd5b9350506020833d82116138aa575b8161389860209383614163565b81010312610ce457859251925f612eea565b3d915061388b565b9291612d60565b602091929394506040516138cc81614148565b87815287838201526040516138e08161412d565b88815288848201526040820152828287010152019084939291612d4e565b9091929394506138695780606402906064820481036138335768056bc75e2d63100000810291808304670de0b6b3a76400001490151715613833578591613945828661439e565b52019084939291612d30565b5034610111578060031936011261011157601d5461396e81614224565b61397b6040519182614163565b818152601d83526020810191837f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f845b838310613a7f5786858760405192839260208401906020855251809152604084019160408260051b8601019392815b8383106139e75786860387f35b919395509193603f198782030183528551906020604082019260018060a01b0381511683520151916040602083015282518091526060820190602060608260051b850101940192855b828110613a54575050505050602080600192970193019301909286959492936139da565b9091929394602080613a72600193605f198782030189528951613fdc565b9701950193929101613a30565b604051613a8b8161412d565b82546001600160a01b03168152600183018054613aa781614224565b91613ab56040519384614163565b8183528a526020808b20908b9084015b838210613aeb5750505050600192826020928360029501528152019201920191906139ab565b600160208192604051613b0281610395818a6142ec565b815201930191019091613ac5565b5034610111578060031936011261011157601e54601f5460405163549387df60e11b8152600481018490526001600160a01b0391821660248201525f516020616ce15f395f51905f5260448201529183918391606491839160081c165afa80156102dd5761022e918391613b86575b505161451f565b613b9a91503d8085833e6116a98183614163565b5f613b7f565b503461011157806003193601126101115760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b818110613bff5761017f8561017381870382614163565b82546001600160a01b0316845260209093019260019283019201613be8565b905034610ce4575f366003190112610ce45763975a6ce960e01b81526020600482015260076024820152661b585a5b9b995d60ca1b60448201525f816064815f516020616cc15f395f51905f525afa90811561371b57613ca5916020915f91613f80575b50604051809381926371ee464d60e01b8352604060048401526044830190613fdc565b630120b92a602483015203815f5f516020616cc15f395f51905f525af1801561371b57613f51575b506040516116e0808201908282106001600160401b038311176138555760209183916155c1833972253582b2a3fe112feec532221d9708c64cefab81520301905ff0801561371b57601e8054610100600160a81b03191660089290921b610100600160a81b0316919091179081905560405163ee565a6360e01b815260208160048172253582b2a3fe112feec532221d9708c64cefab5afa90811561371b575f91613f17575b5060018060a01b03166001600160601b0360a01b601f541617601f555f516020616cc15f395f51905f523b15610ce457604080516318caf8e360e31b815260089290921c6001600160a01b031660048301526024820152600c60448201526b20b733b632a0b230b83a32b960a11b60648201525f81608481835f516020616cc15f395f51905f525af1801561371b57613f04575b50601f5481906001600160a01b03165f516020616cc15f395f51905f523b1561045d57604051906318caf8e360e31b8252600482015260406024820152600560448201526430b3a2aaa960d91b60648201528181608481835f516020616cc15f395f51905f525af180156102dd57613eef575b50505f516020616cc15f395f51905f523b1561011157806040516318caf8e360e31b81525f516020616ce15f395f51905f5260048201526040602482015260046044820152634555524360e01b60648201528181608481835f516020616cc15f395f51905f525af180156102dd5761044c5750f35b81613ef991614163565b61011157805f613e7a565b613f1091505f90614163565b5f5f613e07565b90506020813d602011613f49575b81613f3260209383614163565b81010312610ce457613f4390614210565b5f613d73565b3d9150613f25565b6020813d602011613f78575b81613f6a60209383614163565b81010312610ce45751613ccd565b3d9150613f5d565b613f9491503d805f833e61114c8183614163565b5f613c82565b60206040818301928281528451809452019201905f5b818110613fbd5750505090565b82516001600160a01b0316845260209384019390920191600101613fb0565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6040906003190112610ce457600435906024358015158103610ce45790565b602081016020825282518091526040820191602060408360051b8301019401925f915b83831061405157505050505090565b9091929394603f1982820301835285516020606081604085019360018060a01b0381511686520151936040838201528451809452019201905f905b8082106140ab5750505060208060019297019301930191939290614042565b82516001600160e01b03191684526020938401939092019160019091019061408c565b602081016020825282518091526040820191602060408360051b8301019401925f915b83831061410057505050505090565b909192939460208061411e600193603f198682030187528951613fdc565b970193019301919392906140f1565b604081019081106001600160401b0382111761385557604052565b606081019081106001600160401b0382111761385557604052565b90601f801991011681019081106001600160401b0382111761385557604052565b6001600160401b03811161385557601f01601f191660200190565b602081830312610ce4578051906001600160401b038211610ce4570181601f82011215610ce4578051906141d282614184565b926141e06040519485614163565b82845260208383010111610ce457815f9260208093018386015e8301015290565b90816020910312610ce4575190565b51906001600160a01b0382168203610ce457565b6001600160401b0381116138555760051b60200190565b602081830312610ce4578051906001600160401b038211610ce457019080601f83011215610ce457815161426e81614224565b9261427c6040519485614163565b81845260208085019260051b820101928311610ce457602001905b8282106142a45750505090565b8151815260209182019101614297565b90600182811c921680156142e2575b60208310146142ce57565b634e487b7160e01b5f52602260045260245ffd5b91607f16916142c3565b5f92918154916142fb836142b4565b8083529260018116908115614350575060011461431757505050565b5f9081526020812093945091925b838310614336575060209250010190565b600181602092949394548385870101520191019190614325565b915050602093945060ff929192191683830152151560051b010190565b80511561437a5760200190565b634e487b7160e01b5f52603260045260245ffd5b80516001101561437a5760400190565b805182101561437a5760209160051b010190565b90816020910312610ce457518015158103610ce45790565b8091039060808212610ce45760408051926143e484614148565b8251845260208301516020850152603f190112610ce45760606040519161440a8361412d565b6040810151835201516020820152604082015290565b5f81526001600160a01b0390911660208201525f516020616ce15f395f51905f52604082015260a081019392919060028210156144635760809160608201520152565b634e487b7160e01b5f52602160045260245ffd5b9190820391821161383357565b60085460ff1680156144935790565b50604051630667f9d760e41b81525f516020616cc15f395f51905f5260048201526519985a5b195960d21b60248201526020816044815f516020616cc15f395f51905f525afa90811561371b575f916144ed575b50151590565b90506020813d602011614517575b8161450860209383614163565b81010312610ce457515f6144e7565b3d91506144fb565b5f516020616cc15f395f51905f523b15610ce4576040519063260a5b1560e21b82526004820152600260248201525f816044815f516020616cc15f395f51905f525afa801561371b5761456f5750565b5f61457991614163565b565b905f516020616cc15f395f51905f523b15610ce4576040519163260a5b1560e21b8352600483015260248201525f816044815f516020616cc15f395f51905f525afa801561371b5761456f5750565b8181029291811591840414171561383357565b9190820180921161383357565b61460a9060206145ff825182860151906145ca565b9351910151906145ca565b908082036146185750505f90565b111561462357600190565b5f1990565b3d15614652573d9061463982614184565b916146476040519384614163565b82523d5f602084013e565b606090565b60209291908391805192839101825e019081520190565b6146796014546142b4565b614736576040519081826020600e549283815201600e5f5260205f20925f5b81811061471d5750506146ad92500383614163565b81518060051b9080820460201490151715613833576146cb81614184565b906146d96040519283614163565b8082526146e8601f1991614184565b013660208301375f5b835181101561471857806147076001928661439e565b5160208260051b85010152016146f1565b509150565b8454835260019485019487945060209093019201614698565b604051614748816103958160146142ec565b90565b600781019061475a82546142b4565b61481657600191500190604051808360208295549384815201905f5260205f20925f5b8181106147fd57505061479292500383614163565b81518060051b9080820460201490151715613833576147b081614184565b906147be6040519283614163565b8082526147cd601f1991614184565b013660208301375f5b835181101561471857806147ec6001928661439e565b5160208260051b85010152016147d6565b845483526001948501948794506020909301920161477d565b5061474861039591604051928380926142ec565b5f806020600f5460e01b6148786024614843600d61474b565b6040519485918183019563ffffffff60e01b1686528051918291018484015e810186838201520301601f198101845283614163565b6011549151916001600160a01b03165afa90614892614628565b601054909290600581901b906001600160fb1b03811603613833575f938051602081115f1461491d57506020905b5f925b8284106148d257505050509190565b909192956148e087836145dd565b835181101561437a57830160200151600388901b91906001600160f81b031916881560088a8504141715613833576001921c1796019291906148c3565b906148c0565b905f806020600285015460e01b61493e60246148438861474b565b60048601549151916001600160a01b03165afa600361495b614628565b930154600581901b906001600160fb1b03811603613833575f938051602081115f146149e357506020905b5f925b82841061499857505050509190565b909192956149a687836145dd565b835181101561437a57830160200151600388901b91906001600160f81b031916881560088a8504141715613833576001921c179601929190614989565b90614986565b9080601f83011215610ce4578151614a0081614224565b92614a0e6040519485614163565b81845260208085019260051b820101928311610ce457602001905b828210614a365750505090565b8151815260209182019101614a29565b601154600f546010546001600160a01b03909216915f9160e01b614a6a600d61474b565b90845f52600d60205260405f209063ffffffff60e01b1690815f5260205260405f206040516020810190614aa38161098f888886614657565b5190205f5260205260ff600360405f200154166152cf575f516020616cc15f395f51905f523b15610ce45760405163266cf10960e01b81525f81600481835f516020616cc15f395f51905f525af1801561371b576152ba575b50614b07600d614923565b90506040516365bc948160e01b81528660048201528581602481835f516020616cc15f395f51905f525af1908115610d2f578691615252575b508051614bb157608460405162461bcd60e51b815260206004820152604060248201527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152fd5b855b815181101561524a57816020614bcc83614bfd9561439e565b51604051630667f9d760e41b81526001600160a01b038c166004820152602481019190915293849081906044820190565b03815f516020616cc15f395f51905f525afa92831561523f57889361520c575b5082156151b4575b614c2f828261439e565b51601154604051630667f9d760e41b81526001600160a01b03909116600482018190526024820183905291906020816044815f516020616cc15f395f51905f525afa9081156151a9578b91615178575b50614c8a600d614923565b91909382155f14615171575f19905b5f516020616cc15f395f51905f523b15615158576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810185905260448101919091528c81606481835f516020616cc15f395f51905f525af180156150dd57908d9161515c575b5050614d0a600d614923565b601154909491506001600160a01b03165f516020616cc15f395f51905f523b15615158576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528b81606481835f516020616cc15f395f51905f525af1801561514d57908c91615134575b505082615129575b50501561511f578793889360ff60135416614fa4575b6001868601610100031b5f1901851b16841c8103614f96575090614e24917f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed60808b8961098f614df98d604051928391602083019586614657565b519020614e06868661439e565b51906040519283528a602084015260408301526060820152a161439e565b51906040519060808201928284106001600160401b038511176138555760039360405282526020820193845260408201908152606082019360018552898952600d60205260408920868a52602052604089206040516020810190614e8d8161098f8d8d86614657565b5190208a526020526040892092518355516001830155516002820155019051151560ff801983541691161790555b848452600d60205260408420818552602052604084206040516020810190614ee88161098f888886614657565b519020855260205260ff60036040862001541615614f39576040948452600d60205284842090845260205261098f614f2d858520938651928391602083019586614657565b51902082526020522090565b60405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201526e3a143994903737ba103337bab7321760891b6064820152608490fd5b935091506001905b01614bb3565b9450614fef9350614fb5838361439e565b51601154604051630667f9d760e41b81526001600160a01b0390911660048201526024810182905290959094602090869081906044820190565b03815f516020616cc15f395f51905f525afa948515611635578a956150ec575b5061501b86600d615424565b95909661502981600d6154fd565b60115490939192906001600160a01b03165f516020616cc15f395f51905f523b156150e8576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528c81606481835f516020616cc15f395f51905f525af180156150dd57908d916150c4575b5050876150bc575b509495614d9e575093509150600190614f9e565b96505f6150a8565b816150ce91614163565b6150d9578b5f6150a0565b8b80fd5b6040513d8f823e3d90fd5b8e80fd5b9094506020813d8211615117575b8161510760209383614163565b81010312610ce45751935f61500f565b3d91506150fa565b9150600190614f9e565b141590505f80614d88565b8161513e91614163565b615149578a5f614d80565b8a80fd5b6040513d8e823e3d90fd5b8d80fd5b8161516691614163565b6150d9578b5f614cfe565b8c90614c99565b90506020813d82116151a1575b8161519260209383614163565b81010312610ce457515f614c7f565b3d9150615185565b6040513d8d823e3d90fd5b7f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a56152046151e2848461439e565b51604080516001600160a01b038e168152602081019290925290918291820190565b0390a1614c25565b9092506020813d8211615237575b8161522760209383614163565b81010312610ce45751915f614c1d565b3d915061521a565b6040513d8a823e3d90fd5b505050614ebb565b90503d8087833e6152638183614163565b81016040828203126132de5781516001600160401b0381116152b6578161528b9184016149e9565b916020810151906001600160401b0382116152b2576152ab9291016149e9565b505f614b40565b8880fd5b8780fd5b6152c79194505f90614163565b5f925f614afc565b91939092505f52600d60205260405f20905f5260205261098f61530160405f2093604051928391602083019586614657565b5190205f5260205260405f2090565b6001600160601b0360a01b6011541660115563ffffffff19600f5416600f55600e545f600e55806153e2575b505f60105560ff19601354166013556153566014546142b4565b8061535e5750565b601f811160011461537057505f601455565b60145f52601f0160051c7fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec017fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ed5b8181106153d757505060145f525f602081208160145555565b5f81556001016153be565b600e5f527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd908101905b818110615419575061533c565b5f815560010161540c565b91905f5b610100811061543b57505090505f905f90565b8060ff0360ff8111613833576004850154600190911b906001600160a01b03165f516020616cc15f395f51905f523b15610ce4576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f516020616cc15f395f51905f525af1801561371b576154ed575b506154c784614923565b816154e3575b506154da57600101615428565b92505060019190565b905015155f6154cd565b5f6154f791614163565b5f6154bd565b91905f5b610100811061551457505090505f905f90565b60048401546001821b906001600160a01b03165f516020616cc15f395f51905f523b15610ce4576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f516020616cc15f395f51905f525af1801561371b576155b0575b5061559384614923565b816155a6575b506154da57600101615501565b905015155f615599565b5f6155ba91614163565b5f61558956fe60a03461008c57601f6116e038819003918201601f19168301916001600160401b038311848410176100905780849260209460405283398101031261008c57516001600160a01b038116810361008c5760805260405161163b90816100a58239608051818181607e015281816103ba01528181610afc01528181610c3a01528181610d0e0152610eb30152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c90816323eeca01146108e45750806348bd7dfd146108435780638307c655146107e0578063a9270fbe1461037e578063aad6e488146102b55763ecbbc0331461005e575f80fd5b346101f25760203660031901126101f25760405163b718136160e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316905f81600481855afa9081156101fe575f9161021d575b50805160018101809111610209576100ed6100d7826109ee565b916100e560405193846109cd565b8083526109ee565b602082019290601f19013684375f5b815181101561012d576001906001600160a01b0361011a8285610a36565b51166101268286610a36565b52016100fc565b506020600492946040519384809263ee565a6360e01b82525afa9182156101fe575f926101bb575b50610164909392935183610a36565b6001600160a01b0390911690526040805160208082529251928101839052928392918301915f5b818110610199575050500390f35b82516001600160a01b031684528594506020938401939092019160010161018b565b9091506020813d6020116101f6575b816101d7602093836109cd565b810103126101f2576101eb6101649161101e565b9190610155565b5f80fd5b3d91506101ca565b6040513d5f823e3d90fd5b634e487b7160e01b5f52601160045260245ffd5b90503d805f833e61022e81836109cd565b8101906020818303126101f2578051906001600160401b0382116101f257019080601f830112156101f2578151610264816109ee565b9261027260405194856109cd565b81845260208085019260051b8201019283116101f257602001905b82821061029d575050505f6100bd565b602080916102aa8461101e565b81520191019061028d565b346101f25760803660031901126101f2576102ce610938565b506102d761094e565b506064356001600160401b0381116101f257366023820112156101f25780600401359060246020610307846109ee565b61031460405191826109cd565b848152019260051b820101903682116101f257602401915b81831061036e57604051631d04569d60e21b8152602060048201526012602482015271416e676c65416461707465722e707269636560701b6044820152606490fd5b823581526020928301920161032c565b346101f25761038c36610964565b60405192509061039d6060846109cd565b600283526020830191604036843760405163ee565a6360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602081600481855afa9081156101fe575f916107a6575b506001600160a01b038381169116810361061f5750604051630333522160e41b81526001600160a01b038416600482018190525f82602481865afa9182156101fe575f926105fb575b50815160ff161561057a5750906104b993610468602061018081969501510151611406565b61047188610a05565b525b61047c87610a05565b516040516322c1d75360e11b815260048101919091526001600160a01b039182166024820152921660448301529092839190829081906064820190565b03915afa9081156101fe575f91610548575b506104d583610a26565b52600a6104e183610a26565b51046104ec83610a26565b52600a6104f883610a05565b510461050383610a05565b52905b604051918291602083019060208452518091526040830191905f5b81811061052f575050500390f35b8251845285945060209384019390920191600101610521565b90506020813d602011610572575b81610563602093836109cd565b810103126101f25751836104cb565b3d9150610556565b60249150602090604051928380926370a0823160e01b82528660048301525afa9081156101fe575f916105c1575b50906104b993602093926105bb88610a05565b52610473565b929190506020833d6020116105f3575b816105de602093836109cd565b810103126101f25791519091906104b96105a8565b3d91506105d1565b6106189192503d805f833e61061081836109cd565b810190611169565b9087610443565b604051630333522160e41b815260048101829052929392905f82602481865afa9182156101fe575f9261078a575b50815160ff161561070957509061068693610672602061018081969501510151611406565b61067b88610a26565b525b61047c87610a26565b03915afa9081156101fe575f916106d7575b506106a283610a05565b52600a6106ae83610a26565b51046106b983610a26565b52600a6106c583610a05565b51046106d083610a05565b5290610506565b90506020813d602011610701575b816106f2602093836109cd565b810103126101f2575183610698565b3d91506106e5565b60249150602090604051928380926370a0823160e01b82528660048301525afa9081156101fe575f91610750575b5090610686936020939261074a88610a26565b5261067d565b929190506020833d602011610782575b8161076d602093836109cd565b810103126101f2579151909190610686610737565b3d9150610760565b61079f9192503d805f833e61061081836109cd565b908761064d565b90506020813d6020116107d8575b816107c1602093836109cd565b810103126101f2576107d29061101e565b866103fa565b3d91506107b4565b346101f25760a03660031901126101f2576107f9610938565b61080161094e565b6064359160028310156101f25760809261081e9260843592610a70565b6020604080519280518452828101518385015201518051604084015201516060820152f35b346101f25761085136610964565b5050506040516108626060826109cd565b60028152602081016040368237600161087a83610a05565b52600261088683610a26565b52604051906020820192602083525180935260408201905f935b8085106108ad5783830384f35b9091825190600a8210156108d057602081600193829352019301940193906108a0565b634e487b7160e01b5f52602160045260245ffd5b346101f25760403660031901126101f257631d04569d60e21b815260206004820152601760248201527f416e676c65416461707465722e676574506f6f6c4964730000000000000000006044820152606490fd5b602435906001600160a01b03821682036101f257565b604435906001600160a01b03821682036101f257565b60609060031901126101f257600435906024356001600160a01b03811681036101f257906044356001600160a01b03811681036101f25790565b604081019081106001600160401b038211176109b957604052565b634e487b7160e01b5f52604160045260245ffd5b90601f801991011681019081106001600160401b038211176109b957604052565b6001600160401b0381116109b95760051b60200190565b805115610a125760200190565b634e487b7160e01b5f52603260045260245ffd5b805160011015610a125760400190565b8051821015610a125760209160051b010190565b60405190610a578261099e565b5f6020838281520152565b519060ff821682036101f257565b91939260405194606086018681106001600160401b038211176109b9576040525f86525f6020870152604051610aa58161099e565b5f81525f6020820152604087015285821561101657505a9060028110156108d05715918215610e83576001600160a01b03851690610ae5813033856114d2565b60405163095ea7b360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201819052602482018390529290916020836044815f865af19081156101fe5760209360c492610e58575b505f60405195869485936301db50ff60e51b85526004850152826024850152604484015260018060a01b038a1660648401523360848401528160a48401525af19081156101fe575f91610e26575b5086525b5a81039081116102095760208601528015610db85760405163313ce56760e01b81526020816004816001600160a01b0388165afa9081156101fe575f91610d7e575b50905b610be8610a4a565b5015610cc257610c3691610bfd6020926113f5565b6040516322c1d75360e11b8152600481018290526001600160a01b03958616602482015291909416604482015291829081906064820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156101fe575f91610c90575b50905b60405191610c828361099e565b825260208201526040830152565b90506020813d602011610cba575b81610cab602093836109cd565b810103126101f257515f610c72565b3d9150610c9e565b610d0a91610cd16020926113f5565b604051639525f3ab60e01b8152600481018290526001600160a01b03958616602482015291909416604482015291829081906064820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156101fe575f91610d4c575b50610c75565b90506020813d602011610d76575b81610d67602093836109cd565b810103126101f257515f610d46565b3d9150610d5a565b90506020813d602011610db0575b81610d99602093836109cd565b810103126101f257610daa90610a62565b5f610bdd565b3d9150610d8c565b60405163313ce56760e01b81526020816004816001600160a01b0387165afa9081156101fe575f91610dec575b5090610be0565b90506020813d602011610e1e575b81610e07602093836109cd565b810103126101f257610e1890610a62565b5f610de5565b3d9150610dfa565b90506020813d602011610e50575b81610e41602093836109cd565b810103126101f257515f610b97565b3d9150610e34565b610e7790853d8711610e7c575b610e6f81836109cd565b8101906113dd565b610b49565b503d610e65565b604051639525f3ab60e01b8152600481018290526001600160a01b038681166024830152858116604483015290917f000000000000000000000000000000000000000000000000000000000000000090911690602083606481855afa9283156101fe575f93610fe2575b506001600160a01b038716610f04843033846114d2565b60405163095ea7b360e01b81526001600160a01b038416600482015260248101859052916020836044815f865af19081156101fe5760209360c492610fc7575b505f6040519586948593635c92b3fd60e11b8552600485015282196024850152604484015260018060a01b038b1660648401523360848401528160a48401525af180156101fe57610f98575b508652610b9b565b610fb99060203d602011610fc0575b610fb181836109cd565b8101906113ce565b505f610f90565b503d610fa7565b610fdd90853d8711610e7c57610e6f81836109cd565b610f44565b9092506020813d60201161100e575b81610ffe602093836109cd565b810103126101f25751915f610eed565b3d9150610ff1565b955050505050565b51906001600160a01b03821682036101f257565b9080601f830112156101f25781519061104a826109ee565b9261105860405194856109cd565b82845260208085019360051b8201019182116101f257602001915b8183106110805750505090565b82516001600160401b03811681036101f257815260209283019201611073565b9080601f830112156101f2578151906110b8826109ee565b926110c660405194856109cd565b82845260208085019360051b8201019182116101f257602001915b8183106110ee5750505090565b82518060070b81036101f2578152602092830192016110e1565b6001600160401b0381116109b957601f01601f191660200190565b81601f820112156101f25780519061113a82611108565b9261114860405194856109cd565b828452602083830101116101f257815f9260208093018386015e8301015290565b6020818303126101f2578051906001600160401b0382116101f25701906101a0828203126101f257604051916101a083018381106001600160401b038211176109b9576040526111b881610a62565b83526111c660208201610a62565b60208401526111d760408201610a62565b60408401526111e860608201610a62565b60608401526111f960808201610a62565b608084015260a08101516001600160d81b03811681036101f25760a084015260c08101516001600160401b0381116101f25782611237918301611032565b60c084015260e08101516001600160401b0381116101f2578261125b9183016110a0565b60e08401526101008101516001600160401b0381116101f25782611280918301611032565b6101008401526101208101516001600160401b0381116101f257826112a69183016110a0565b6101208401526101408101516001600160401b0381116101f257826112cc918301611123565b6101408401526101608101516001600160401b0381116101f257826112f2918301611123565b610160840152610180810151906001600160401b0382116101f257016040818303126101f257604051916113258361099e565b81516001600160401b0381116101f257820181601f820112156101f257805161134d816109ee565b9161135b60405193846109cd565b81835260208084019260051b820101908482116101f257602001915b8183106113ae57505050835260208201516001600160401b0381116101f2576113a09201611123565b602082015261018082015290565b82516001600160a01b03811681036101f257815260209283019201611377565b908160209103126101f2575190565b908160209103126101f2575180151581036101f25790565b60ff16604d811161020957600a0a90565b905f91805181016040828203126101f25760208201519160018310156101f2576040810151916001600160401b0383116101f25761144b926020809201920101611123565b90156114545750565b9091506020818051810103126101f257602001516001600160a01b038116908190036101f25760206004916040519283809263e8c9bee560e01b82525afa9081156101fe575f916114a3575090565b90506020813d6020116114ca575b816114be602093836109cd565b810103126101f2575190565b3d91506114b1565b6040516323b872dd60e01b602082019081526001600160a01b0393841660248301529390921660448301526064808301949094529281529161155c915f9182919061151e6084876109cd565b60018060a01b031694519082865af13d1561159f573d9061153e82611108565b9161154c60405193846109cd565b82523d5f602084013e5b836115a7565b8051908115159182611584575b50506115725750565b635274afe760e01b5f5260045260245ffd5b61159792506020809183010191016113dd565b155f80611569565b606090611556565b906115cb57508051156115bc57805190602001fd5b63d6bda27560e01b5f5260045ffd5b815115806115fc575b6115dc575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156115d456fea2646970667358221220c5c3311a5d17cff62dfcf36c9e310f0750eec2ab8f1197d1bad4f9fd1daec9a564736f6c634300081b00336b656420736c6f742e2057652063616e2774206669742076616c7565206772650000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d0000000000000000000000001abaea1f7c830bd89acc67ec4af516284b1bc33c73746453746f726167652066696e642853746453746f72616765293a20506163a2646970667358221220fe342330c9be0b50a54a73ef75c197af50af4868f95261de6c909f79571f3a4864736f6c634300081b0033","sourceMap":"324:6416:66:-:0;;;;;;;3166:4:2;324:6416:66;;3166:4:2;324:6416:66;;;3166:4:2;324:6416:66;3166:4:2;324:6416:66;;1038:4:12;324:6416:66;;;1038:4:12;324:6416:66;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f905f3560e01c9081630a9254e414613c1e575080631ed7831c14613ba057806321079a9214613b105780632ade38801461395157806333ed1a1c14612cf65780633e5e3c2314612c785780633f7286f414612bfa5780634f9eed5514611ff45780635ffccd931461190157806366d9a9a01461175357806385226c81146116c15780638bdd39a214610791578063916a17c614610505578063a391347a146103aa578063b5508aa914610311578063ba414fa6146102ec578063ccfab64a146101a2578063e20c9f71146101145763fa7626d4146100ef575f80fd5b34610111578060031936011261011157602060ff601e54166040519015158152f35b80fd5b503461011157806003193601126101115760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b8181106101835761017f8561017381870382614163565b60405191829182613f9a565b0390f35b82546001600160a01b031684526020909301926001928301920161015c565b5034610111576060366003190112610111576024356001600160a01b038116908190036102e857816044356001600160a01b038116908190036102e857606460018060a01b03601e5460081c169360405194859384926348bd7dfd60e01b84526004356004850152602484015260448301525afa80156102dd578290610231575b61022e91505161451f565b80f35b503d8083833e6102418183614163565b8101906020818303126102d5578051906001600160401b0382116102d957019080601f830112156102d55781519061027882614224565b926102866040519485614163565b82845260208085019360051b8201019182116102d157602001915b8183106102b45750505061022e90610223565b8251600a8110156102cd578152602092830192016102a1565b8580fd5b8480fd5b8280fd5b8380fd5b6040513d84823e3d90fd5b5080fd5b50346101115780600319360112610111576020610307614484565b6040519015158152f35b503461011157806003193601126101115760195461032e81614224565b9161033c6040519384614163565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b83831061037e576040518061017f87826140ce565b60016020819260405161039c8161039581896142ec565b0382614163565b815201920192019190610369565b5034610111578060031936011261011157601e5460405163ecbbc03360e01b815260048101839052919081908390602490829060081c6001600160a01b03165afa80156104f8578190610460575b819250515f516020616cc15f395f51905f523b1561045d576040519063a8d4d1d960e01b825260048201526002602482015281816044815f516020616cc15f395f51905f525afa80156102dd5761044c5750f35b8161045691614163565b6101115780f35b50fd5b503d8082843e6104708184614163565b8201916020818403126102e8578051906001600160401b0382116102d5570182601f820112156102e8578051926104a684614224565b916104b46040519384614163565b84835260208084019560051b8201019182116102d957602001935b8185106104e05750508192506103f8565b602080916104ed87614210565b8152019401936104cf565b50604051903d90823e3d90fd5b5034610111578060031936011261011157601c5461052281614224565b906105306040519283614163565b808252601c8352827f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b838310610573576040518061017f878261401f565b60405161057f8161412d565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b8160078401106106f2578460019794600297946020979461060a9454918181106106d6575b8181106106ba575b81811061069e575b818110610682575b818110610666575b81811061064a575b818110610630575b1061061c575b500382614163565b8382015281520192019201919061055e565b6001600160e01b031916815286015f610602565b828a1b6001600160e01b0319168452928901928b016105fc565b604083901b6001600160e01b0319168452928901928b016105f4565b606083901b6001600160e01b0319168452928901928b016105ec565b608083901b6001600160e01b0319168452928901928b016105e4565b60a083901b6001600160e01b0319168452928901928b016105dc565b60c083901b6001600160e01b0319168452928901928b016105d4565b60e083901b6001600160e01b0319168452928901928b016105cc565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e08201520194019201916105a7565b5034610111576107a036614000565b156116b85760646001915b60018060a01b03601e5460081c168460018060a01b03601f5416916040519485809263549387df60e11b82528460048301528560248301525f516020616ce15f395f51905f5260448301525afa928315610edc578593611694575b50600284101561168057846001851493845f146111c35761082891925061438e565b518210806111ba575b5f516020616cc15f395f51905f523b156102e857604051632631f2b160e11b8152901515600482015281816024815f516020616cc15f395f51905f525afa80156102dd576111a5575b50506108f160018060a01b03601f5416858060405160208101906370a0823160e01b8252306024820152602481526108b3604482614163565b5190845afa506108d36108c4614628565b60208082518301019101614201565b5060018060a01b03166001600160601b0360a01b6011541617601155565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015611191576001810180600e5581101561117d57600e8552602085200130905560018060a01b0360115416600f5460e01b6010549061094b61466e565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b169081895260205260408820604051602081019061099d8161098f888886614657565b03601f198101835282614163565b519020895260205260ff600360408a200154161561116f575b6001600160a01b0384165f908152600d6020526040902090885260205261098f6109ef6040892093604051928391602083019586614657565b51902086526020528460408120916001830154926002810154610a1281866145dd565b61104d578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f516020616cc15f395f51905f525afa968715610d2f578697611014575b506001908201610100031b5f1901811b1986165f516020616cc15f395f51905f523b156102cd576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528381606481835f516020616cc15f395f51905f525af1908115610cf0578491610fff575b5050610ae761482a565b9015908115610ff3575b50610f165750505050610b02615310565b601f54601e5460405163095ea7b360e01b81526001600160a01b0360089290921c821660048201525f19602482015291602091839160449183918a91165af18015610edc57610ee7575b505b6040516370a0823160e01b8152306004820152906020826024815f516020616ce15f395f51905f525afa918215610edc578592610ea8575b50601f546040516370a0823160e01b815230600482015293906001600160a01b0316602085602481845afa948515610e9d578795610e69575b50601e54604051638307c65560e01b81529596608092879260081c6001600160a01b03169183918b918391610bf9918a9160048501614420565b03925af1938415610d2f578694610e38575b508351610c16578580f35b15610d3a576040516370a0823160e01b81523060048201526020816024815f516020616ce15f395f51905f525afa908115610d2f578691610cfb575b50610c6692610c6091614477565b9061457b565b51601f546040516370a0823160e01b815230600482015290602090829060249082906001600160a01b03165afa908115610cf0578491610cb8575b50610c6090610caf93614477565b5f808080808580f35b90506020813d602011610ce8575b81610cd360209383614163565b81010312610ce45751610caf610ca1565b5f80fd5b3d9150610cc6565b6040513d86823e3d90fd5b90506020813d602011610d27575b81610d1660209383614163565b81010312610ce45751610c66610c52565b3d9150610d09565b6040513d88823e3d90fd5b601f546040516370a0823160e01b815230600482015292949290602090829060249082906001600160a01b03165afa908115610d2f578691610e04575b50610c6090610d8593614477565b516040516370a0823160e01b81523060048201526020816024815f516020616ce15f395f51905f525afa908115610cf0578491610dd0575b50610dcb92610c6091614477565b610caf565b90506020813d602011610dfc575b81610deb60209383614163565b81010312610ce45751610dcb610dbd565b3d9150610dde565b90506020813d602011610e30575b81610e1f60209383614163565b81010312610ce45751610d85610d77565b3d9150610e12565b610e5b91945060803d608011610e62575b610e538183614163565b8101906143ca565b925f610c0b565b503d610e49565b94506020853d602011610e95575b81610e8460209383614163565b81010312610ce45793519382610bbf565b3d9150610e77565b6040513d89823e3d90fd5b9091506020813d602011610ed4575b81610ec460209383614163565b81010312610ce45751905f610b86565b3d9150610eb7565b6040513d87823e3d90fd5b610f089060203d602011610f0f575b610f008183614163565b8101906143b2565b505f610b4c565b503d610ef6565b82945054905f516020616cc15f395f51905f523b156102d5576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810191909152604481019290925281606481835f516020616cc15f395f51905f525af180156102dd57610fde575b60405162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b610fe9828092614163565b6101115780610f7d565b5f19141590505f610af1565b8161100991614163565b6102d557825f610add565b955095506020853d602011611045575b8161103160209383614163565b81010312610ce45793519489949081610a63565b3d9150611024565b6110588491866145dd565b61010003610100811161115b5760ff811161115b5760405163348051d760e11b8152600190911b600482015281816024815f516020616cc15f395f51905f525afa9081156102dd57606a60209284611113936111339692611137575b506040519485925f516020616d015f395f51905f52828501525f516020616ca15f395f51905f52604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f198101835282614163565b60405162461bcd60e51b8152602060048201529182916024830190613fdc565b0390fd5b6111549192503d8084833e61114c8183614163565b81019061419f565b90866110b4565b634e487b7160e01b82526011600452602482fd5b611177614a46565b506109b6565b634e487b7160e01b85526032600452602485fd5b634e487b7160e01b85526041600452602485fd5b816111af91614163565b6102d957835f61087a565b50811515610831565b6111cc9061436d565b51831080611677575b5f516020616cc15f395f51905f523b156102e857604051632631f2b160e11b8152901515600482015281816024815f516020616cc15f395f51905f525afa80156102dd57611662575b50908161124c9260405160208101906370a0823160e01b8252306024820152602481526108b3604482614163565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015611191576001810180600e5581101561117d57600e8552602085200130905560018060a01b0360115416600f5460e01b601054906112a661466e565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908189526020526040882060405160208101906112ea8161098f888886614657565b519020895260205260ff600360408a2001541615611654575b6001600160a01b0384165f908152600d6020526040902090885260205261098f61133c6040892093604051928391602083019586614657565b5190208652602052846040812091600183015492600281015461135f81866145dd565b611520575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f516020616cc15f395f51905f525afa968715610d2f5786976114e7575b506001908201610100031b5f1901811b198616915f516020616cc15f395f51905f523b156102cd576040516370ca10bb60e01b81526001600160a01b038616600482015260248101919091529087901b9190911760448201528381606481835f516020616cc15f395f51905f525af1908115610cf05784916114d2575b50508461143961482a565b9190159182156114c7575b5050610f165750505050611456615310565b601f54601e5460405163095ea7b360e01b81526001600160a01b0360089290921c8216600482015260248101849052916020918391168188816044810103925af18015610edc576114a8575b50610b4e565b6114c09060203d602011610f0f57610f008183614163565b505f6114a2565b14159050855f611444565b816114dc91614163565b6102d557825f61142e565b955095506020853d602011611518575b8161150460209383614163565b81010312610ce457935194899490816113b1565b3d91506114f7565b9091925061152e81856145dd565b6101000361010081116116405760ff81116116405760405163348051d760e11b8152600190911b6004820181905289826024815f516020616cc15f395f51905f525afa801561163557606a6115e6916020948d9161161b575b506040519485915f516020616d015f395f51905f52828401525f516020616ca15f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018d838201520301601f198101845283614163565b8610156115f7575090879291611364565b60405162461bcd60e51b815260206004820152908190611133906024830190613fdc565b61162f91503d808f833e61114c8183614163565b5f611587565b6040513d8c823e3d90fd5b634e487b7160e01b89526011600452602489fd5b61165c614a46565b50611303565b8161166c91614163565b6102d157845f61121e565b508215156111d5565b634e487b7160e01b85526021600452602485fd5b6116b19193503d8087833e6116a98183614163565b81019061423b565b915f610806565b606482916107ab565b5034610111578060031936011261011157601a546116de81614224565b916116ec6040519384614163565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b83831061172e576040518061017f87826140ce565b6001602081926040516117458161039581896142ec565b815201920192019190611719565b5034610111578060031936011261011157601b5461177081614224565b9061177e6040519283614163565b808252601b8352827f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1602084015b8383106117c1576040518061017f878261401f565b6040516117cd8161412d565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b81600784011061186257846001979460029794602097946118509454918181106106d6578181106106ba5781811061069e57818110610682578181106106665781811061064a57818110610630571061061c57500382614163565b838201528152019201920191906117ac565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e08201520194019201916117f5565b503461011157806003193601126101115780610ca0906040516119248382614163565b60648152601f19830180366020840137845b60648110611f9c575061194c6040519485614163565b60648452825b818110611f605750506001905b60648210611aba57505060015b60638110611978578380f35b611982818461439e565b51516001820190818311611aa65761199a828661439e565b51515f516020616cc15f395f51905f523b156102d15760405191638466f41560e01b83526004830152602482015283816044815f516020616cc15f395f51905f525afa8015610cf0578490611a8f575b5050611a1560406119fb848761439e565b5101516040611a0c5f19948861439e565b510151906145ea565b830b145f516020616cc15f395f51905f523b156102d5576040519063a598288560e01b8252600482015282816024815f516020616cc15f395f51905f525afa8015611a8457908391611a6c575b505060010161196c565b90611a7691614163565b8184126102e857815f611a62565b6040513d85823e3d90fd5b611a9891614163565b8285126102d5575f836119ea565b634e487b7160e01b84526011600452602484fd5b909160405190634b88b8ad60e11b8252602082600481845f516020616cc15f395f51905f525af19182156104f8578192611f2d575b5080611f1957508492611b2f60018060a01b03601f5416878060405160208101906370a0823160e01b8252306024820152602481526108b3604482614163565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015611f05576001810180600e55811015611ef157600e8752602087200130905560018060a01b0360115416600f5460e01b60105490611b8961466e565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818b5260205260408a206040516020810190611bcd8161098f888886614657565b5190208b5260205260ff600360408c2001541615611ee3575b6001600160a01b0384165f908152600d60205260409020908a5260205261098f611c1f60408b2093604051928391602083019586614657565b51902088526020528660408120916001830154926002810154611c4281866145dd565b61104d578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f516020616cc15f395f51905f525afa968715610d2f578697611eab575b506001908201610100031b5f1901811b1986165f516020616cc15f395f51905f523b156102cd576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528381606481835f516020616cc15f395f51905f525af1908115610cf0578491611e96575b5050611d1761482a565b9015908115611e8a575b50610f165750505050611d32615310565b601f54601e5460405163095ea7b360e01b81526001600160a01b0360089290921c821660048201525f19602482015291602091839160449183918c91165af18015610e9d57611e6c575b50601e54601f54611dc6916080916001600160a01b039081169160081c1660018a611da7878a61439e565b51604051638307c65560e01b8152968795869485939160048501614420565b03925af1908115610e9d578791611e4e575b50611de3828761439e565b52611dee818661439e565b5060405191631135fc2960e21b83526004830152602082602481895f516020616cc15f395f51905f525af1918215610d2f57600192611e30575b50019061195f565b611e479060203d8111610f0f57610f008183614163565b505f611e28565b611e66915060803d8111610e6257610e538183614163565b5f611dd8565b611e839060203d8111610f0f57610f008183614163565b505f611d7c565b5f19141590505f611d21565b81611ea091614163565b6102d557825f611d0d565b955095506020853d8211611edb575b81611ec760209383614163565b81010312610ce4579351948b949081611c93565b3d9150611eba565b611eeb614a46565b50611be6565b634e487b7160e01b87526032600452602487fd5b634e487b7160e01b87526041600452602487fd5b634e487b7160e01b81526021600452602490fd5b9091506020813d8211611f58575b81611f4860209383614163565b81010312610ce457519080611aef565b3d9150611f3b565b602090604051611f6f81614148565b8581528583820152604051611f838161412d565b8681528684820152604082015282828801015201611952565b9280611f195750849280606402606481048203611fe0576305f5e100820290808204620f42401490151715611fe05760019190611fd9828661439e565b5201611936565b634e487b7160e01b87526011600452602487fd5b50346101115761200336614000565b15612bf45760015b601e54601f5460405163549387df60e11b8152600481018690525f516020616ce15f395f51905f5260248201526001600160a01b039182166044820152929185918491606491839160081c165afa918215610cf0578492612bd8575b506002811015612bc457836001821492835f1461272b576120879061438e565b51841080612722575b5f516020616cc15f395f51905f523b156102e857604051632631f2b160e11b8152901515600482015281816024815f516020616cc15f395f51905f525afa80156102dd5761270d575b508060405160208101906370a0823160e01b825230602482015260248152612102604482614163565b51905f516020616ce15f395f51905f525afa506121206108c4614628565b50601180546001600160a01b0319165f516020616ce15f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b811015611191576001810180600e5581101561117d57600e8552602085200130905560018060a01b0360115416600f5460e01b6010549061219a61466e565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908189526020526040882060405160208101906121de8161098f888886614657565b519020895260205260ff600360408a20015416156126ff575b6001600160a01b0384165f908152600d6020526040902090885260205261098f6122306040892093604051928391602083019586614657565b5190208652602052846040812091600183015492600281015461225381866145dd565b61104d578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f516020616cc15f395f51905f525afa968715610d2f5786976126c6575b506001908201610100031b5f1901811b1986165f516020616cc15f395f51905f523b156102cd576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528381606481835f516020616cc15f395f51905f525af1908115610cf05784916126b1575b505061232861482a565b90159081156126a5575b50610f165750505050612343615310565b601e5460405163095ea7b360e01b815260089190911c6001600160a01b031660048201525f196024820152602081604481885f516020616ce15f395f51905f525af18015610edc57612686575b505b6040516370a0823160e01b8152306004820152926020846024815f516020616ce15f395f51905f525afa938415610edc578594612652575b50601f546040516370a0823160e01b81523060048201526001600160a01b03909116939092602084602481885afa938415610e9d57879461261d575b5060809060a460018060a01b03601e5460081c1696896040519889948593638307c65560e01b85528360048601525f516020616ce15f395f51905f526024860152604485015260648401528760848401525af1938415610d2f5786946125fc575b508351612472578580f35b1561253857601f546040516370a0823160e01b815230600482015290602090829060249082906001600160a01b03165afa908115610d2f578691612504575b506124bf92610c6091614477565b516040516370a0823160e01b81523060048201526020816024815f516020616ce15f395f51905f525afa908115610cf0578491610cb85750610c6090610caf93614477565b90506020813d602011612530575b8161251f60209383614163565b81010312610ce457516124bf6124b1565b3d9150612512565b6040516370a0823160e01b81523060048201529193916020816024815f516020616ce15f395f51905f525afa908115610d2f5786916125c8575b50610c609061258093614477565b51601f546040516370a0823160e01b815230600482015290602090829060249082906001600160a01b03165afa908115610cf0578491610dd05750610dcb92610c6091614477565b90506020813d6020116125f4575b816125e360209383614163565b81010312610ce45751612580612572565b3d91506125d6565b61261691945060803d608011610e6257610e538183614163565b925f612467565b9093506020813d60201161264a575b8161263960209383614163565b81010312610ce45751926080612406565b3d915061262c565b9093506020813d60201161267e575b8161266e60209383614163565b81010312610ce45751925f6123ca565b3d9150612661565b61269e9060203d602011610f0f57610f008183614163565b505f612390565b5f19141590505f612332565b816126bb91614163565b6102d557825f61231e565b955095506020853d6020116126f7575b816126e360209383614163565b81010312610ce457935194899490816122a4565b3d91506126d6565b612707614a46565b506121f7565b8161271791614163565b6102d957835f6120d9565b50831515612090565b6127349061436d565b51841080612bbb575b5f516020616cc15f395f51905f523b156102e857604051632631f2b160e11b8152901515600482015281816024815f516020616cc15f395f51905f525afa80156102dd57612ba6575b508060405160208101906370a0823160e01b8252306024820152602481526127af604482614163565b51905f516020616ce15f395f51905f525afa506127cd6108c4614628565b50601180546001600160a01b0319165f516020616ce15f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b811015611191576001810180600e5581101561117d57600e8552602085200130905560018060a01b0360115416600f5460e01b6010549061284761466e565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b169081895260205260408820604051602081019061288b8161098f888886614657565b519020895260205260ff600360408a2001541615612b98575b6001600160a01b0384165f908152600d6020526040902090885260205261098f6128dd6040892093604051928391602083019586614657565b5190208652602052846040812091600183015492600281015461290081866145dd565b612ac2575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f516020616cc15f395f51905f525afa968715610d2f578697612a89575b506001908201610100031b5f1901811b198616915f516020616cc15f395f51905f523b156102cd576040516370ca10bb60e01b81526001600160a01b038616600482015260248101919091529089901b9190911760448201528381606481835f516020616cc15f395f51905f525af1908115610cf0578491612a74575b5050866129da61482a565b919015918215612a69575b5050610f1657505050506129f7615310565b601e5460405163095ea7b360e01b815260089190911c6001600160a01b0316600482015260248101849052602081604481885f516020616ce15f395f51905f525af18015610edc57612a4a575b50612392565b612a629060203d602011610f0f57610f008183614163565b505f612a44565b14159050875f6129e5565b81612a7e91614163565b6102d557825f6129cf565b955095506020853d602011612aba575b81612aa660209383614163565b81010312610ce45793519489949081612952565b3d9150612a99565b90919250612ad081856145dd565b6101000361010081116116405760ff81116116405760405163348051d760e11b8152600190911b6004820181905289826024815f516020616cc15f395f51905f525afa801561163557606a612b87916020948d9161161b57506040519485915f516020616d015f395f51905f52828401525f516020616ca15f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018d838201520301601f198101845283614163565b8810156115f7575090879291612905565b612ba0614a46565b506128a4565b81612bb091614163565b6102d957835f612786565b5083151561273d565b634e487b7160e01b84526021600452602484fd5b612bed9192503d8086833e6116a98183614163565b905f612067565b8161200b565b503461011157806003193601126101115760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b818110612c595761017f8561017381870382614163565b82546001600160a01b0316845260209093019260019283019201612c42565b503461011157806003193601126101115760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b818110612cd75761017f8561017381870382614163565b82546001600160a01b0316845260209093019260019283019201612cc0565b5034610111578060031936011261011157610ca0604051612d178282614163565b60648152601f1982019182366020840137839160019384935b86606482106138fe575050612d486040519384614163565b60648352855b8181106138b95750508290815b612ea9575b5050815b612d6c578380f35b6063821015612ea557612d7f828261439e565b515183830190818411612e91578590612d98838561439e565b51515f516020616cc15f395f51905f523b156102d55760405191638466f41560e01b83526004830152602482015281816044815f516020616cc15f395f51905f525afa80156102dd57612e7c575b5050612e086040612df7858561439e565b5101516040611a0c5f19948661439e565b850b14915f516020616cc15f395f51905f523b156102d1576040519263a598288560e01b845260048401528480846024815f516020616cc15f395f51905f525afa9384156104f8578594612e61575b5050820191612d64565b8192945090612e6f91614163565b6102d9578291845f612e57565b81612e8691614163565b6102d157845f612de6565b634e487b7160e01b86526011600452602486fd5b8380f35b90919260648310156138b25750604051634b88b8ad60e11b81529185602084600481845f516020616cc15f395f51905f525af19384156104f857819461387d575b5061386957841561345b57601f546001600160a01b0316612f39612f0e838561439e565b5191888060405160208101906370a0823160e01b8252306024820152602481526108b3604482614163565b6370a0823163ffffffff19600f541617600f55600e54600160401b8110156134475786810180600e5581101561343357600e8852307fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd9190910155601154600f5460105489926001600160a01b03169160e01b612fb461466e565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818652602052604085206040516020810190612ff88161098f888886614657565b519020865260205260ff60036040872001541615613425575b6001600160a01b0384165f908152600d6020526040902090855260205261098f61304a6040862093604051928391602083019586614657565b5190208352602052604082208881015493600282015461306a81876145dd565b61331a575b8254604051630667f9d760e41b81526001600160a01b038616600482015260248101829052969091906020886044815f516020616cc15f395f51905f525afa978815610e9d5787986132e2575b506001908201610100031b5f1901811b198716915f516020616cc15f395f51905f523b156132de576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528481606481835f516020616cc15f395f51905f525af1908115610edc5785916132c9575b505061314361482a565b9190159182156132be575b5050610f165750505050613160615310565b601f54601e546131bc9160209160081c6001600160a01b039081169116613187858761439e565b5160405163095ea7b360e01b81526001600160a01b0390931660048401526024830152909283919082908b9082906044820190565b03925af18015610e9d576132a0575b505b601e54601f546131f6916080916001600160a01b039081169160081c168980611da7878961439e565b03925af1908115610e9d578791613282575b50613213828661439e565b5261321e818561439e565b5060405192631135fc2960e21b84526004840152602083602481895f516020616cc15f395f51905f525af1908115610d2f5785938492613264575b500190829392612d5b565b61327b9060203d8111610f0f57610f008183614163565b505f613259565b61329a915060803d8111610e6257610e538183614163565b5f613208565b6132b79060203d8111610f0f57610f008183614163565b505f6131cb565b141590505f8061314e565b816132d391614163565b6102d957835f613139565b8680fd5b965096506020863d8211613312575b816132fe60209383614163565b81010312610ce4579451958c9590816130bc565b3d91506132f1565b909192935061332981866145dd565b6101000361010081116134115760ff81116134115760405163348051d760e11b8152908b901b600482018190528c80836024815f516020616cc15f395f51905f525afa9283156104f85760209382606a926133e394926133f5575b506040519586925f516020616d015f395f51905f52828501525f516020616ca15f395f51905f52604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f198101845283614163565b8310156115f75750908a93929161306f565b61340a9192503d8084833e61114c8183614163565b905f613384565b634e487b7160e01b8c52601160045260248cfd5b61342d614a46565b50613011565b634e487b7160e01b88526032600452602488fd5b634e487b7160e01b88526041600452602488fd5b935061349460018060a01b03601f54165f8060405160208101906370a0823160e01b8252306024820152602481526108b3604482614163565b6370a0823163ffffffff19600f541617600f55600e5493600160401b8510156138555784600e555f94600e5f5260205f200130905560018060a01b0360115416600f5460e01b601054906134e661466e565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690815f5260205260405f20604051602081019061352a8161098f888886614657565b5190205f5260205260ff600360405f2001541615613847575b6001600160a01b0384165f908152600d60205260409020905f5260205261098f61357c60405f2093604051928391602083019586614657565b5190205f5260205260405f2090815491600281015461359b81856145dd565b613759578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052949091906020866044815f516020616cc15f395f51905f525afa95861561371b575f96613726575b506001908201610100031b5f1901811b1985165f516020616cc15f395f51905f523b15610ce4576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201525f81606481835f516020616cc15f395f51905f525af1801561371b57613704575b5090889161366f61482a565b90159081156136f8575b50610f16575050505061368a615310565b601f54601e5460405163095ea7b360e01b81526001600160a01b0360089290921c821660048201525f19602482015291602091839160449183918c91165af18015610e9d576136da575b506131cd565b6136f19060203d8111610f0f57610f008183614163565b505f6136d4565b5f19141590505f613679565b613712919299505f90614163565b5f97905f613663565b6040513d5f823e3d90fd5b9095506020813d8211613751575b8161374160209383614163565b81010312610ce4575194816135ec565b3d9150613734565b61376390846145dd565b6101000361010081116138335760ff106138335760405163348051d760e11b81525f60048201819052816024815f516020616cc15f395f51905f525afa90811561371b57611113606a611133936020935f91613819575b506040519384915f516020616d015f395f51905f52828401525f516020616ca15f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81015f838201520301601f198101835282614163565b61382d91503d805f833e61114c8183614163565b856137ba565b634e487b7160e01b5f52601160045260245ffd5b61384f614a46565b50613543565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b86526021600452602486fd5b9350506020833d82116138aa575b8161389860209383614163565b81010312610ce457859251925f612eea565b3d915061388b565b9291612d60565b602091929394506040516138cc81614148565b87815287838201526040516138e08161412d565b88815288848201526040820152828287010152019084939291612d4e565b9091929394506138695780606402906064820481036138335768056bc75e2d63100000810291808304670de0b6b3a76400001490151715613833578591613945828661439e565b52019084939291612d30565b5034610111578060031936011261011157601d5461396e81614224565b61397b6040519182614163565b818152601d83526020810191837f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f845b838310613a7f5786858760405192839260208401906020855251809152604084019160408260051b8601019392815b8383106139e75786860387f35b919395509193603f198782030183528551906020604082019260018060a01b0381511683520151916040602083015282518091526060820190602060608260051b850101940192855b828110613a54575050505050602080600192970193019301909286959492936139da565b9091929394602080613a72600193605f198782030189528951613fdc565b9701950193929101613a30565b604051613a8b8161412d565b82546001600160a01b03168152600183018054613aa781614224565b91613ab56040519384614163565b8183528a526020808b20908b9084015b838210613aeb5750505050600192826020928360029501528152019201920191906139ab565b600160208192604051613b0281610395818a6142ec565b815201930191019091613ac5565b5034610111578060031936011261011157601e54601f5460405163549387df60e11b8152600481018490526001600160a01b0391821660248201525f516020616ce15f395f51905f5260448201529183918391606491839160081c165afa80156102dd5761022e918391613b86575b505161451f565b613b9a91503d8085833e6116a98183614163565b5f613b7f565b503461011157806003193601126101115760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b818110613bff5761017f8561017381870382614163565b82546001600160a01b0316845260209093019260019283019201613be8565b905034610ce4575f366003190112610ce45763975a6ce960e01b81526020600482015260076024820152661b585a5b9b995d60ca1b60448201525f816064815f516020616cc15f395f51905f525afa90811561371b57613ca5916020915f91613f80575b50604051809381926371ee464d60e01b8352604060048401526044830190613fdc565b630120b92a602483015203815f5f516020616cc15f395f51905f525af1801561371b57613f51575b506040516116e0808201908282106001600160401b038311176138555760209183916155c1833972253582b2a3fe112feec532221d9708c64cefab81520301905ff0801561371b57601e8054610100600160a81b03191660089290921b610100600160a81b0316919091179081905560405163ee565a6360e01b815260208160048172253582b2a3fe112feec532221d9708c64cefab5afa90811561371b575f91613f17575b5060018060a01b03166001600160601b0360a01b601f541617601f555f516020616cc15f395f51905f523b15610ce457604080516318caf8e360e31b815260089290921c6001600160a01b031660048301526024820152600c60448201526b20b733b632a0b230b83a32b960a11b60648201525f81608481835f516020616cc15f395f51905f525af1801561371b57613f04575b50601f5481906001600160a01b03165f516020616cc15f395f51905f523b1561045d57604051906318caf8e360e31b8252600482015260406024820152600560448201526430b3a2aaa960d91b60648201528181608481835f516020616cc15f395f51905f525af180156102dd57613eef575b50505f516020616cc15f395f51905f523b1561011157806040516318caf8e360e31b81525f516020616ce15f395f51905f5260048201526040602482015260046044820152634555524360e01b60648201528181608481835f516020616cc15f395f51905f525af180156102dd5761044c5750f35b81613ef991614163565b61011157805f613e7a565b613f1091505f90614163565b5f5f613e07565b90506020813d602011613f49575b81613f3260209383614163565b81010312610ce457613f4390614210565b5f613d73565b3d9150613f25565b6020813d602011613f78575b81613f6a60209383614163565b81010312610ce45751613ccd565b3d9150613f5d565b613f9491503d805f833e61114c8183614163565b5f613c82565b60206040818301928281528451809452019201905f5b818110613fbd5750505090565b82516001600160a01b0316845260209384019390920191600101613fb0565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6040906003190112610ce457600435906024358015158103610ce45790565b602081016020825282518091526040820191602060408360051b8301019401925f915b83831061405157505050505090565b9091929394603f1982820301835285516020606081604085019360018060a01b0381511686520151936040838201528451809452019201905f905b8082106140ab5750505060208060019297019301930191939290614042565b82516001600160e01b03191684526020938401939092019160019091019061408c565b602081016020825282518091526040820191602060408360051b8301019401925f915b83831061410057505050505090565b909192939460208061411e600193603f198682030187528951613fdc565b970193019301919392906140f1565b604081019081106001600160401b0382111761385557604052565b606081019081106001600160401b0382111761385557604052565b90601f801991011681019081106001600160401b0382111761385557604052565b6001600160401b03811161385557601f01601f191660200190565b602081830312610ce4578051906001600160401b038211610ce4570181601f82011215610ce4578051906141d282614184565b926141e06040519485614163565b82845260208383010111610ce457815f9260208093018386015e8301015290565b90816020910312610ce4575190565b51906001600160a01b0382168203610ce457565b6001600160401b0381116138555760051b60200190565b602081830312610ce4578051906001600160401b038211610ce457019080601f83011215610ce457815161426e81614224565b9261427c6040519485614163565b81845260208085019260051b820101928311610ce457602001905b8282106142a45750505090565b8151815260209182019101614297565b90600182811c921680156142e2575b60208310146142ce57565b634e487b7160e01b5f52602260045260245ffd5b91607f16916142c3565b5f92918154916142fb836142b4565b8083529260018116908115614350575060011461431757505050565b5f9081526020812093945091925b838310614336575060209250010190565b600181602092949394548385870101520191019190614325565b915050602093945060ff929192191683830152151560051b010190565b80511561437a5760200190565b634e487b7160e01b5f52603260045260245ffd5b80516001101561437a5760400190565b805182101561437a5760209160051b010190565b90816020910312610ce457518015158103610ce45790565b8091039060808212610ce45760408051926143e484614148565b8251845260208301516020850152603f190112610ce45760606040519161440a8361412d565b6040810151835201516020820152604082015290565b5f81526001600160a01b0390911660208201525f516020616ce15f395f51905f52604082015260a081019392919060028210156144635760809160608201520152565b634e487b7160e01b5f52602160045260245ffd5b9190820391821161383357565b60085460ff1680156144935790565b50604051630667f9d760e41b81525f516020616cc15f395f51905f5260048201526519985a5b195960d21b60248201526020816044815f516020616cc15f395f51905f525afa90811561371b575f916144ed575b50151590565b90506020813d602011614517575b8161450860209383614163565b81010312610ce457515f6144e7565b3d91506144fb565b5f516020616cc15f395f51905f523b15610ce4576040519063260a5b1560e21b82526004820152600260248201525f816044815f516020616cc15f395f51905f525afa801561371b5761456f5750565b5f61457991614163565b565b905f516020616cc15f395f51905f523b15610ce4576040519163260a5b1560e21b8352600483015260248201525f816044815f516020616cc15f395f51905f525afa801561371b5761456f5750565b8181029291811591840414171561383357565b9190820180921161383357565b61460a9060206145ff825182860151906145ca565b9351910151906145ca565b908082036146185750505f90565b111561462357600190565b5f1990565b3d15614652573d9061463982614184565b916146476040519384614163565b82523d5f602084013e565b606090565b60209291908391805192839101825e019081520190565b6146796014546142b4565b614736576040519081826020600e549283815201600e5f5260205f20925f5b81811061471d5750506146ad92500383614163565b81518060051b9080820460201490151715613833576146cb81614184565b906146d96040519283614163565b8082526146e8601f1991614184565b013660208301375f5b835181101561471857806147076001928661439e565b5160208260051b85010152016146f1565b509150565b8454835260019485019487945060209093019201614698565b604051614748816103958160146142ec565b90565b600781019061475a82546142b4565b61481657600191500190604051808360208295549384815201905f5260205f20925f5b8181106147fd57505061479292500383614163565b81518060051b9080820460201490151715613833576147b081614184565b906147be6040519283614163565b8082526147cd601f1991614184565b013660208301375f5b835181101561471857806147ec6001928661439e565b5160208260051b85010152016147d6565b845483526001948501948794506020909301920161477d565b5061474861039591604051928380926142ec565b5f806020600f5460e01b6148786024614843600d61474b565b6040519485918183019563ffffffff60e01b1686528051918291018484015e810186838201520301601f198101845283614163565b6011549151916001600160a01b03165afa90614892614628565b601054909290600581901b906001600160fb1b03811603613833575f938051602081115f1461491d57506020905b5f925b8284106148d257505050509190565b909192956148e087836145dd565b835181101561437a57830160200151600388901b91906001600160f81b031916881560088a8504141715613833576001921c1796019291906148c3565b906148c0565b905f806020600285015460e01b61493e60246148438861474b565b60048601549151916001600160a01b03165afa600361495b614628565b930154600581901b906001600160fb1b03811603613833575f938051602081115f146149e357506020905b5f925b82841061499857505050509190565b909192956149a687836145dd565b835181101561437a57830160200151600388901b91906001600160f81b031916881560088a8504141715613833576001921c179601929190614989565b90614986565b9080601f83011215610ce4578151614a0081614224565b92614a0e6040519485614163565b81845260208085019260051b820101928311610ce457602001905b828210614a365750505090565b8151815260209182019101614a29565b601154600f546010546001600160a01b03909216915f9160e01b614a6a600d61474b565b90845f52600d60205260405f209063ffffffff60e01b1690815f5260205260405f206040516020810190614aa38161098f888886614657565b5190205f5260205260ff600360405f200154166152cf575f516020616cc15f395f51905f523b15610ce45760405163266cf10960e01b81525f81600481835f516020616cc15f395f51905f525af1801561371b576152ba575b50614b07600d614923565b90506040516365bc948160e01b81528660048201528581602481835f516020616cc15f395f51905f525af1908115610d2f578691615252575b508051614bb157608460405162461bcd60e51b815260206004820152604060248201527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152fd5b855b815181101561524a57816020614bcc83614bfd9561439e565b51604051630667f9d760e41b81526001600160a01b038c166004820152602481019190915293849081906044820190565b03815f516020616cc15f395f51905f525afa92831561523f57889361520c575b5082156151b4575b614c2f828261439e565b51601154604051630667f9d760e41b81526001600160a01b03909116600482018190526024820183905291906020816044815f516020616cc15f395f51905f525afa9081156151a9578b91615178575b50614c8a600d614923565b91909382155f14615171575f19905b5f516020616cc15f395f51905f523b15615158576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810185905260448101919091528c81606481835f516020616cc15f395f51905f525af180156150dd57908d9161515c575b5050614d0a600d614923565b601154909491506001600160a01b03165f516020616cc15f395f51905f523b15615158576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528b81606481835f516020616cc15f395f51905f525af1801561514d57908c91615134575b505082615129575b50501561511f578793889360ff60135416614fa4575b6001868601610100031b5f1901851b16841c8103614f96575090614e24917f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed60808b8961098f614df98d604051928391602083019586614657565b519020614e06868661439e565b51906040519283528a602084015260408301526060820152a161439e565b51906040519060808201928284106001600160401b038511176138555760039360405282526020820193845260408201908152606082019360018552898952600d60205260408920868a52602052604089206040516020810190614e8d8161098f8d8d86614657565b5190208a526020526040892092518355516001830155516002820155019051151560ff801983541691161790555b848452600d60205260408420818552602052604084206040516020810190614ee88161098f888886614657565b519020855260205260ff60036040862001541615614f39576040948452600d60205284842090845260205261098f614f2d858520938651928391602083019586614657565b51902082526020522090565b60405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201526e3a143994903737ba103337bab7321760891b6064820152608490fd5b935091506001905b01614bb3565b9450614fef9350614fb5838361439e565b51601154604051630667f9d760e41b81526001600160a01b0390911660048201526024810182905290959094602090869081906044820190565b03815f516020616cc15f395f51905f525afa948515611635578a956150ec575b5061501b86600d615424565b95909661502981600d6154fd565b60115490939192906001600160a01b03165f516020616cc15f395f51905f523b156150e8576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528c81606481835f516020616cc15f395f51905f525af180156150dd57908d916150c4575b5050876150bc575b509495614d9e575093509150600190614f9e565b96505f6150a8565b816150ce91614163565b6150d9578b5f6150a0565b8b80fd5b6040513d8f823e3d90fd5b8e80fd5b9094506020813d8211615117575b8161510760209383614163565b81010312610ce45751935f61500f565b3d91506150fa565b9150600190614f9e565b141590505f80614d88565b8161513e91614163565b615149578a5f614d80565b8a80fd5b6040513d8e823e3d90fd5b8d80fd5b8161516691614163565b6150d9578b5f614cfe565b8c90614c99565b90506020813d82116151a1575b8161519260209383614163565b81010312610ce457515f614c7f565b3d9150615185565b6040513d8d823e3d90fd5b7f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a56152046151e2848461439e565b51604080516001600160a01b038e168152602081019290925290918291820190565b0390a1614c25565b9092506020813d8211615237575b8161522760209383614163565b81010312610ce45751915f614c1d565b3d915061521a565b6040513d8a823e3d90fd5b505050614ebb565b90503d8087833e6152638183614163565b81016040828203126132de5781516001600160401b0381116152b6578161528b9184016149e9565b916020810151906001600160401b0382116152b2576152ab9291016149e9565b505f614b40565b8880fd5b8780fd5b6152c79194505f90614163565b5f925f614afc565b91939092505f52600d60205260405f20905f5260205261098f61530160405f2093604051928391602083019586614657565b5190205f5260205260405f2090565b6001600160601b0360a01b6011541660115563ffffffff19600f5416600f55600e545f600e55806153e2575b505f60105560ff19601354166013556153566014546142b4565b8061535e5750565b601f811160011461537057505f601455565b60145f52601f0160051c7fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec017fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ed5b8181106153d757505060145f525f602081208160145555565b5f81556001016153be565b600e5f527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd908101905b818110615419575061533c565b5f815560010161540c565b91905f5b610100811061543b57505090505f905f90565b8060ff0360ff8111613833576004850154600190911b906001600160a01b03165f516020616cc15f395f51905f523b15610ce4576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f516020616cc15f395f51905f525af1801561371b576154ed575b506154c784614923565b816154e3575b506154da57600101615428565b92505060019190565b905015155f6154cd565b5f6154f791614163565b5f6154bd565b91905f5b610100811061551457505090505f905f90565b60048401546001821b906001600160a01b03165f516020616cc15f395f51905f523b15610ce4576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f516020616cc15f395f51905f525af1801561371b576155b0575b5061559384614923565b816155a6575b506154da57600101615501565b905015155f615599565b5f6155ba91614163565b5f61558956fe60a03461008c57601f6116e038819003918201601f19168301916001600160401b038311848410176100905780849260209460405283398101031261008c57516001600160a01b038116810361008c5760805260405161163b90816100a58239608051818181607e015281816103ba01528181610afc01528181610c3a01528181610d0e0152610eb30152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c90816323eeca01146108e45750806348bd7dfd146108435780638307c655146107e0578063a9270fbe1461037e578063aad6e488146102b55763ecbbc0331461005e575f80fd5b346101f25760203660031901126101f25760405163b718136160e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316905f81600481855afa9081156101fe575f9161021d575b50805160018101809111610209576100ed6100d7826109ee565b916100e560405193846109cd565b8083526109ee565b602082019290601f19013684375f5b815181101561012d576001906001600160a01b0361011a8285610a36565b51166101268286610a36565b52016100fc565b506020600492946040519384809263ee565a6360e01b82525afa9182156101fe575f926101bb575b50610164909392935183610a36565b6001600160a01b0390911690526040805160208082529251928101839052928392918301915f5b818110610199575050500390f35b82516001600160a01b031684528594506020938401939092019160010161018b565b9091506020813d6020116101f6575b816101d7602093836109cd565b810103126101f2576101eb6101649161101e565b9190610155565b5f80fd5b3d91506101ca565b6040513d5f823e3d90fd5b634e487b7160e01b5f52601160045260245ffd5b90503d805f833e61022e81836109cd565b8101906020818303126101f2578051906001600160401b0382116101f257019080601f830112156101f2578151610264816109ee565b9261027260405194856109cd565b81845260208085019260051b8201019283116101f257602001905b82821061029d575050505f6100bd565b602080916102aa8461101e565b81520191019061028d565b346101f25760803660031901126101f2576102ce610938565b506102d761094e565b506064356001600160401b0381116101f257366023820112156101f25780600401359060246020610307846109ee565b61031460405191826109cd565b848152019260051b820101903682116101f257602401915b81831061036e57604051631d04569d60e21b8152602060048201526012602482015271416e676c65416461707465722e707269636560701b6044820152606490fd5b823581526020928301920161032c565b346101f25761038c36610964565b60405192509061039d6060846109cd565b600283526020830191604036843760405163ee565a6360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602081600481855afa9081156101fe575f916107a6575b506001600160a01b038381169116810361061f5750604051630333522160e41b81526001600160a01b038416600482018190525f82602481865afa9182156101fe575f926105fb575b50815160ff161561057a5750906104b993610468602061018081969501510151611406565b61047188610a05565b525b61047c87610a05565b516040516322c1d75360e11b815260048101919091526001600160a01b039182166024820152921660448301529092839190829081906064820190565b03915afa9081156101fe575f91610548575b506104d583610a26565b52600a6104e183610a26565b51046104ec83610a26565b52600a6104f883610a05565b510461050383610a05565b52905b604051918291602083019060208452518091526040830191905f5b81811061052f575050500390f35b8251845285945060209384019390920191600101610521565b90506020813d602011610572575b81610563602093836109cd565b810103126101f25751836104cb565b3d9150610556565b60249150602090604051928380926370a0823160e01b82528660048301525afa9081156101fe575f916105c1575b50906104b993602093926105bb88610a05565b52610473565b929190506020833d6020116105f3575b816105de602093836109cd565b810103126101f25791519091906104b96105a8565b3d91506105d1565b6106189192503d805f833e61061081836109cd565b810190611169565b9087610443565b604051630333522160e41b815260048101829052929392905f82602481865afa9182156101fe575f9261078a575b50815160ff161561070957509061068693610672602061018081969501510151611406565b61067b88610a26565b525b61047c87610a26565b03915afa9081156101fe575f916106d7575b506106a283610a05565b52600a6106ae83610a26565b51046106b983610a26565b52600a6106c583610a05565b51046106d083610a05565b5290610506565b90506020813d602011610701575b816106f2602093836109cd565b810103126101f2575183610698565b3d91506106e5565b60249150602090604051928380926370a0823160e01b82528660048301525afa9081156101fe575f91610750575b5090610686936020939261074a88610a26565b5261067d565b929190506020833d602011610782575b8161076d602093836109cd565b810103126101f2579151909190610686610737565b3d9150610760565b61079f9192503d805f833e61061081836109cd565b908761064d565b90506020813d6020116107d8575b816107c1602093836109cd565b810103126101f2576107d29061101e565b866103fa565b3d91506107b4565b346101f25760a03660031901126101f2576107f9610938565b61080161094e565b6064359160028310156101f25760809261081e9260843592610a70565b6020604080519280518452828101518385015201518051604084015201516060820152f35b346101f25761085136610964565b5050506040516108626060826109cd565b60028152602081016040368237600161087a83610a05565b52600261088683610a26565b52604051906020820192602083525180935260408201905f935b8085106108ad5783830384f35b9091825190600a8210156108d057602081600193829352019301940193906108a0565b634e487b7160e01b5f52602160045260245ffd5b346101f25760403660031901126101f257631d04569d60e21b815260206004820152601760248201527f416e676c65416461707465722e676574506f6f6c4964730000000000000000006044820152606490fd5b602435906001600160a01b03821682036101f257565b604435906001600160a01b03821682036101f257565b60609060031901126101f257600435906024356001600160a01b03811681036101f257906044356001600160a01b03811681036101f25790565b604081019081106001600160401b038211176109b957604052565b634e487b7160e01b5f52604160045260245ffd5b90601f801991011681019081106001600160401b038211176109b957604052565b6001600160401b0381116109b95760051b60200190565b805115610a125760200190565b634e487b7160e01b5f52603260045260245ffd5b805160011015610a125760400190565b8051821015610a125760209160051b010190565b60405190610a578261099e565b5f6020838281520152565b519060ff821682036101f257565b91939260405194606086018681106001600160401b038211176109b9576040525f86525f6020870152604051610aa58161099e565b5f81525f6020820152604087015285821561101657505a9060028110156108d05715918215610e83576001600160a01b03851690610ae5813033856114d2565b60405163095ea7b360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201819052602482018390529290916020836044815f865af19081156101fe5760209360c492610e58575b505f60405195869485936301db50ff60e51b85526004850152826024850152604484015260018060a01b038a1660648401523360848401528160a48401525af19081156101fe575f91610e26575b5086525b5a81039081116102095760208601528015610db85760405163313ce56760e01b81526020816004816001600160a01b0388165afa9081156101fe575f91610d7e575b50905b610be8610a4a565b5015610cc257610c3691610bfd6020926113f5565b6040516322c1d75360e11b8152600481018290526001600160a01b03958616602482015291909416604482015291829081906064820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156101fe575f91610c90575b50905b60405191610c828361099e565b825260208201526040830152565b90506020813d602011610cba575b81610cab602093836109cd565b810103126101f257515f610c72565b3d9150610c9e565b610d0a91610cd16020926113f5565b604051639525f3ab60e01b8152600481018290526001600160a01b03958616602482015291909416604482015291829081906064820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156101fe575f91610d4c575b50610c75565b90506020813d602011610d76575b81610d67602093836109cd565b810103126101f257515f610d46565b3d9150610d5a565b90506020813d602011610db0575b81610d99602093836109cd565b810103126101f257610daa90610a62565b5f610bdd565b3d9150610d8c565b60405163313ce56760e01b81526020816004816001600160a01b0387165afa9081156101fe575f91610dec575b5090610be0565b90506020813d602011610e1e575b81610e07602093836109cd565b810103126101f257610e1890610a62565b5f610de5565b3d9150610dfa565b90506020813d602011610e50575b81610e41602093836109cd565b810103126101f257515f610b97565b3d9150610e34565b610e7790853d8711610e7c575b610e6f81836109cd565b8101906113dd565b610b49565b503d610e65565b604051639525f3ab60e01b8152600481018290526001600160a01b038681166024830152858116604483015290917f000000000000000000000000000000000000000000000000000000000000000090911690602083606481855afa9283156101fe575f93610fe2575b506001600160a01b038716610f04843033846114d2565b60405163095ea7b360e01b81526001600160a01b038416600482015260248101859052916020836044815f865af19081156101fe5760209360c492610fc7575b505f6040519586948593635c92b3fd60e11b8552600485015282196024850152604484015260018060a01b038b1660648401523360848401528160a48401525af180156101fe57610f98575b508652610b9b565b610fb99060203d602011610fc0575b610fb181836109cd565b8101906113ce565b505f610f90565b503d610fa7565b610fdd90853d8711610e7c57610e6f81836109cd565b610f44565b9092506020813d60201161100e575b81610ffe602093836109cd565b810103126101f25751915f610eed565b3d9150610ff1565b955050505050565b51906001600160a01b03821682036101f257565b9080601f830112156101f25781519061104a826109ee565b9261105860405194856109cd565b82845260208085019360051b8201019182116101f257602001915b8183106110805750505090565b82516001600160401b03811681036101f257815260209283019201611073565b9080601f830112156101f2578151906110b8826109ee565b926110c660405194856109cd565b82845260208085019360051b8201019182116101f257602001915b8183106110ee5750505090565b82518060070b81036101f2578152602092830192016110e1565b6001600160401b0381116109b957601f01601f191660200190565b81601f820112156101f25780519061113a82611108565b9261114860405194856109cd565b828452602083830101116101f257815f9260208093018386015e8301015290565b6020818303126101f2578051906001600160401b0382116101f25701906101a0828203126101f257604051916101a083018381106001600160401b038211176109b9576040526111b881610a62565b83526111c660208201610a62565b60208401526111d760408201610a62565b60408401526111e860608201610a62565b60608401526111f960808201610a62565b608084015260a08101516001600160d81b03811681036101f25760a084015260c08101516001600160401b0381116101f25782611237918301611032565b60c084015260e08101516001600160401b0381116101f2578261125b9183016110a0565b60e08401526101008101516001600160401b0381116101f25782611280918301611032565b6101008401526101208101516001600160401b0381116101f257826112a69183016110a0565b6101208401526101408101516001600160401b0381116101f257826112cc918301611123565b6101408401526101608101516001600160401b0381116101f257826112f2918301611123565b610160840152610180810151906001600160401b0382116101f257016040818303126101f257604051916113258361099e565b81516001600160401b0381116101f257820181601f820112156101f257805161134d816109ee565b9161135b60405193846109cd565b81835260208084019260051b820101908482116101f257602001915b8183106113ae57505050835260208201516001600160401b0381116101f2576113a09201611123565b602082015261018082015290565b82516001600160a01b03811681036101f257815260209283019201611377565b908160209103126101f2575190565b908160209103126101f2575180151581036101f25790565b60ff16604d811161020957600a0a90565b905f91805181016040828203126101f25760208201519160018310156101f2576040810151916001600160401b0383116101f25761144b926020809201920101611123565b90156114545750565b9091506020818051810103126101f257602001516001600160a01b038116908190036101f25760206004916040519283809263e8c9bee560e01b82525afa9081156101fe575f916114a3575090565b90506020813d6020116114ca575b816114be602093836109cd565b810103126101f2575190565b3d91506114b1565b6040516323b872dd60e01b602082019081526001600160a01b0393841660248301529390921660448301526064808301949094529281529161155c915f9182919061151e6084876109cd565b60018060a01b031694519082865af13d1561159f573d9061153e82611108565b9161154c60405193846109cd565b82523d5f602084013e5b836115a7565b8051908115159182611584575b50506115725750565b635274afe760e01b5f5260045260245ffd5b61159792506020809183010191016113dd565b155f80611569565b606090611556565b906115cb57508051156115bc57805190602001fd5b63d6bda27560e01b5f5260045ffd5b815115806115fc575b6115dc575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156115d456fea2646970667358221220c5c3311a5d17cff62dfcf36c9e310f0750eec2ab8f1197d1bad4f9fd1daec9a564736f6c634300081b00336b656420736c6f742e2057652063616e2774206669742076616c7565206772650000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d0000000000000000000000001abaea1f7c830bd89acc67ec4af516284b1bc33c73746453746f726167652066696e642853746453746f72616765293a20506163a2646970667358221220fe342330c9be0b50a54a73ef75c197af50af4868f95261de6c909f79571f3a4864736f6c634300081b0033","sourceMap":"324:6416:66:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1016:26:12;324:6416:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2421:18:5;324:6416:66;;;;;;;2421:18:5;324:6416:66;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;324:6416:66;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;324:6416:66;;;;;;-1:-1:-1;;;;;324:6416:66;;;;;;;;;;;-1:-1:-1;;;;;324:6416:66;;;;;;;;6284:37;837:28;324:6416;;;;6284:7;586:55;;;324:6416;;;;1590:14:0;;;;;;;;6284:37:66;;324:6416;;;6284:37;;1590:14:0;324:6416:66;;;;;;;;6284:37;;;;;;;;;;324:6416;6332:23;324:6416;;;6332:23;:::i;:::-;324:6416;;6284:37;;;;;;;;;;;:::i;:::-;;;324:6416;;;;;;;;;;;-1:-1:-1;;;;;324:6416:66;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1590:14:0;324:6416:66;;1590:14:0;;;:::i;:::-;324:6416:66;;;;;;;;;;;;;;;;;;;;;;;;;;;6284:37;;;6332:23;6284:37;;;324:6416;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6284:37;324:6416;;1590:14:0;324:6416:66;;1590:14:0;;;;324:6416:66;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;2273:18:5;324:6416:66;;;;:::i;:::-;;1590:14:0;324:6416:66;;1590:14:0;;;:::i;:::-;324:6416:66;;;2273:18:5;324:6416:66;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6441:7;586:55;324:6416;;-1:-1:-1;;;6441:29:66;;324:6416;6441:29;;1590:14:0;;;324:6416:66;;;;;;6441:29;;324:6416;;586:55;;-1:-1:-1;;;;;324:6416:66;6441:29;;;;;;;;;;324:6416;;;;;-1:-1:-1;;;;;;;;;;;15559:24:1;;;;324:6416:66;;1590:14:0;;;;15559:24:1;;324:6416:66;15559:24:1;;1590:14:0;6505:1:66;6441:29;324:6416;;1590:14:0;15559:24:1;;;;-1:-1:-1;;;;;;;;;;;15559:24:1;;;;;;;;324:6416:66;;15559:24:1;;;;;:::i;:::-;324:6416:66;;15559:24:1;324:6416:66;15559:24:1;324:6416:66;;6441:29;;;;;;;;;;;:::i;:::-;;;324:6416;;;;;;;;;;;-1:-1:-1;;;;;324:6416:66;;;;;;;;;;;;;;;;;;;:::i;:::-;;1590:14:0;324:6416:66;;1590:14:0;;;:::i;:::-;324:6416:66;;;;;;;;;;;;;;;;;;;;;;;;;;;6441:29;;;;;;;324:6416;;586:55;;;;;:::i;:::-;324:6416;;;;;;;;6441:29;324:6416;;;1590:14:0;;;;;;;;324:6416:66;;;;;;;;;;;;;3190:18:5;324:6416:66;;;;:::i;:::-;;1590:14:0;324:6416:66;;1590:14:0;;;:::i;:::-;324:6416:66;;;3190:18:5;324:6416:66;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;1590:14:0;;;:::i;:::-;324:6416:66;;-1:-1:-1;;;;;324:6416:66;;;;;837:28;324:6416;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1590:14:0;324:6416:66;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;324:6416:66;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;324:6416:66;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;324:6416:66;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;324:6416:66;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;324:6416:66;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;324:6416:66;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;324:6416:66;;;;;;;;;;;;;;;;;;;;;;1590:14:0;324:6416:66;1590:14:0;324:6416:66;;;;;;1590:14:0;324:6416:66;1590:14:0;;324:6416:66;;;;;;;1590:14:0;324:6416:66;1590:14:0;;324:6416:66;;;;;;;1590:14:0;324:6416:66;1590:14:0;;324:6416:66;;;;;;;1590:14:0;324:6416:66;1590:14:0;;324:6416:66;;;;;;;1590:14:0;324:6416:66;1590:14:0;;324:6416:66;;;;;;;1590:14:0;324:6416:66;1590:14:0;;324:6416:66;;;;;;;1590:14:0;324:6416:66;;;;;;;;;;;;;;;;;;;;:::i;:::-;2941:38;;;3063:54;2949:13;2941:38;;837:28;324:6416;;;;3063:7;586:55;;;324:6416;;837:28;324:6416;;;;3095:5;586:55;324:6416;;;;1590:14:0;;;;;;;3063:54:66;;;324:6416;3063:54;;1590:14:0;324:6416:66;;;;;-1:-1:-1;;;;;;;;;;;324:6416:66;;;;3063:54;;;;;;;;;;;2941:38;324:6416;;;;;;;3132:21;3140:13;3132:21;;3128:467;;;3132:21;;;3197:9;;;;;:::i;:::-;324:6416;3179:27;;:50;;;3128:467;-1:-1:-1;;;;;;;;;;;3169:61:66;;;;324:6416;;-1:-1:-1;;;3169:61:66;;324:6416;;;;3169:61;;324:6416;3169:61;324:6416;;;-1:-1:-1;;;;;;;;;;;3169:61:66;;;;;;;;3128:467;324:6416;;6854:22:8;837:28:66;324:6416;;;;3095:5;586:55;324:6416;;;;;;27501:38:3;;1590:14:0;;;;27501:38:3;;3274:4:66;324:6416;27501:38:3;;324:6416:66;;27501:38:3;;;324:6416:66;27501:38:3;;:::i;:::-;27484:56;;;;;;27568:30;27484:56;;:::i;:::-;324:6416:66;;;;27568:30:3;;;;;;:::i;:::-;;837:28:66;324:6416;;;;;-1:-1:-1;;;;;586:55:66;;6854:12:8;586:55:66;;;6854:12:8;586:55:66;;6854:22:8;27524:10:3;324:6416:66;;7009:9:8;324:6416:66;;;7009:9:8;324:6416:66;7505:10:8;324:6416:66;-1:-1:-1;;;324:6416:66;;;;;3140:13;324:6416;;;7505:10:8;324:6416:66;;;;;;7505:10:8;324:6416:66;;;;;;3274:4;324:6416;;837:28;324:6416;;;;6854:12:8;324:6416:66;;7009:9:8;324:6416:66;;1590:14:0;15610:11:8;324:6416:66;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;324:6416:66;;;;;;27635:8:3;324:6416:66;;;;;15703:15:8;;324:6416:66;;;;;;;;;;;;;;;;15735:37:8;;;;;;;;;;:::i;:::-;;683:3:66;;15735:37:8;;;;;;:::i;:::-;324:6416:66;15725:48:8;;324:6416:66;;;;;;;;;15703:77:8;324:6416:66;;15702:78:8;15698:126;;3128:467:66;-1:-1:-1;;;;;324:6416:66;;;;;;27635:8:3;324:6416:66;;;;;;;;;;15889:37:8;;324:6416:66;;;;;;15889:37:8;;;324:6416:66;15889:37:8;;;;;:::i;:::-;324:6416:66;15879:48:8;;324:6416:66;;;;;;;;15943:15:8;3140:13:66;15943:15:8;;324:6416:66;15961:16:8;324:6416:66;15961:16:8;;324:6416:66;15943:34:8;;;;:::i;:::-;15938:460;;324:6416:66;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;324:6416:66;;;16424:32:8;;324:6416:66;;;;1590:14:0;;;324:6416:66;;;;;;;;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;3128:467:66;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;324:6416:66;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;324:6416:66;;;16587:43:8;;324:6416:66;12810:59:8;;;1590:14:0;;;;-1:-1:-1;;324:6416:66;;;12656:92:8;12810:59;;;1590:14:0;324:6416:66;;12810:59:8;324:6416:66;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;3128:467:66;16678:31:8;;;;:::i;:::-;16724:8;;324:6416:66;;;16724:29:8;;3128:467:66;16720:176:8;;;14785:4;;;;;;:::i;:::-;3095:5:66;586:55;3063:7;586:55;324:6416;;-1:-1:-1;;;3313:50:66;;-1:-1:-1;;;;;586:55:66;;;;;324:6416;;;3313:50;;324:6416;-1:-1:-1;;324:6416:66;;;1590:14:0;324:6416:66;;;;;;;;;;;;3313:50;;;;;;;;3128:467;;;324:6416;;-1:-1:-1;;;3628:29:66;;3651:4;324:6416;3628:29;;324:6416;;;;;;-1:-1:-1;;;;;;;;;;;3628:29:66;;;;;;;;;;;3128:467;-1:-1:-1;3095:5:66;586:55;324:6416;;-1:-1:-1;;;3691:30:66;;3651:4;324:6416;3691:30;;324:6416;;;-1:-1:-1;;;;;324:6416:66;;;;;;3691:30;;;;;;;;;;;3128:467;-1:-1:-1;3063:7:66;586:55;324:6416;;-1:-1:-1;;;3753:94:66;;324:6416;;3753:94;;324:6416;;586:55;;-1:-1:-1;;;;;324:6416:66;;;;;;;;3753:94;;324:6416;;;3753:94;;;:::i;:::-;;;;;;;;;;;;;;3128:467;324:6416;;;3858:725;;324:6416;;;3858:725;3908:21;;;324:6416;;-1:-1:-1;;;4016:29:66;;3651:4;324:6416;4016:29;;324:6416;;;;;-1:-1:-1;;;;;;;;;;;4016:29:66;;;;;;;;;;;3904:669;4016:44;;;;;;:::i;:::-;;;:::i;:::-;324:6416;3095:5;586:55;324:6416;;-1:-1:-1;;;4186:30:66;;3651:4;324:6416;4186:30;;324:6416;;;;;;;;;;-1:-1:-1;;;;;324:6416:66;4186:30;;;;;;;;;;;3904:669;4170:46;;;;;;:::i;:::-;3858:725;;;;;324:6416;;;4186:30;;;324:6416;4186:30;;324:6416;4186:30;;;;;;1590:14:0;4186:30:66;;;:::i;:::-;;;1590:14:0;;;;;4170:46:66;4186:30;;1590:14:0;-1:-1:-1;324:6416:66;;4186:30;;;-1:-1:-1;4186:30:66;;;324:6416;;1590:14:0;324:6416:66;;1590:14:0;;;;4016:29:66;;;324:6416;4016:29;;324:6416;4016:29;;;;;;1590:14:0;4016:29:66;;;:::i;:::-;;;1590:14:0;;;;;4016:44:66;:29;;;;;-1:-1:-1;4016:29:66;;;324:6416;;1590:14:0;324:6416:66;;1590:14:0;;;;3904:669:66;3095:5;586:55;324:6416;;-1:-1:-1;;;4356:30:66;;3651:4;324:6416;4356:30;;324:6416;;;;;;;;;;;;;-1:-1:-1;;;;;324:6416:66;4356:30;;;;;;;;;;;3904:669;4340:46;;;;;;:::i;:::-;324:6416;;;-1:-1:-1;;;4496:29:66;;3651:4;324:6416;4496:29;;324:6416;;;;;-1:-1:-1;;;;;;;;;;;4496:29:66;;;;;;;;;;;3904:669;4496:44;;;;;;:::i;:::-;3904:669;;4496:29;;;324:6416;4496:29;;324:6416;4496:29;;;;;;1590:14:0;4496:29:66;;;:::i;:::-;;;1590:14:0;;;;;4496:44:66;:29;;;;;-1:-1:-1;4496:29:66;;4356:30;;;324:6416;4356:30;;324:6416;4356:30;;;;;;1590:14:0;4356:30:66;;;:::i;:::-;;;1590:14:0;;;;;4340:46:66;4356:30;;;;;-1:-1:-1;4356:30:66;;3753:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;3691:30;;;324:6416;3691:30;;324:6416;3691:30;;;;;;1590:14:0;3691:30:66;;;:::i;:::-;;;1590:14:0;;;;;;;;3691:30:66;;;;;-1:-1:-1;3691:30:66;;;324:6416;;1590:14:0;324:6416:66;;1590:14:0;;;;3628:29:66;;;;324:6416;3628:29;;324:6416;3628:29;;;;;;1590:14:0;3628:29:66;;;:::i;:::-;;;1590:14:0;;;;;3628:29:66;;;;;;;-1:-1:-1;3628:29:66;;;324:6416;;1590:14:0;324:6416:66;;1590:14:0;;;;3313:50:66;;;324:6416;3313:50;324:6416;3313:50;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;16720:176:8;324:6416:66;;;;16769:41:8;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;324:6416:66;;-1:-1:-1;;;16769:41:8;;-1:-1:-1;;;;;324:6416:66;;;;;16769:41:8;;324:6416:66;12810:59:8;;;1590:14:0;;;;12810:59:8;;;1590:14:0;;;;324:6416:66;12810:59:8;324:6416:66;16769:41:8;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;;;;;16720:176;324:6416:66;;-1:-1:-1;;;16824:61:8;;324:6416:66;;16824:61:8;;12810:59;;324:6416:66;12810:59:8;;324:6416:66;12810:59:8;324:6416:66;;;12810:59:8;-1:-1:-1;;;3063:54:66;12810:59:8;;;16824:61;;;16769:41;;;;;;:::i;:::-;324:6416:66;;16769:41:8;;;16724:29;-1:-1:-1;;16736:17:8;;;-1:-1:-1;5495:17:66;16724:29:8;;16587:43;;;;;:::i;:::-;324:6416:66;;16587:43:8;;;;16424:32;;;;;324:6416:66;16424:32:8;;324:6416:66;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;:::i;:::-;16021:3;324:6416:66;16021:3:8;324:6416:66;;;;;;;;;;;-1:-1:-1;;;16314:19:8;;3140:13:66;324:6416;;;;16314:19:8;;1590:14:0;16314:19:8;324:6416:66;;;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;12810:59;324:6416:66;16314:19:8;;16170:185;16314:19;12810:59;16314:19;;;;15938:460;324:6416:66;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;324:6416:66;12810:59:8;;;-1:-1:-1;;;324:6416:66;12810:59:8;;;324:6416:66;;;;;;12810:59:8;;;324:6416:66;;;;;;;;16170:185:8;;683:3:66;;16170:185:8;;;;;;:::i;:::-;324:6416:66;;-1:-1:-1;;;12810:59:8;;324:6416:66;;12810:59:8;;;324:6416:66;;;;12810:59:8;;;;:::i;:::-;;;;16314:19;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;324:6416:66;-1:-1:-1;;;324:6416:66;;6854:12:8;324:6416:66;;;1590:14:0;324:6416:66;15698:126:8;13208:33;;:::i;:::-;;15698:126;;324:6416:66;-1:-1:-1;;;324:6416:66;;;;;;1590:14:0;324:6416:66;;-1:-1:-1;;;1590:14:0;;;324:6416:66;1590:14:0;324:6416:66;1590:14:0;;3169:61:66;;;;;:::i;:::-;324:6416;;3169:61;;;;3179:50;3210:19;;;;3179:50;;3128:467;3422:9;;;:::i;:::-;324:6416;3404:27;;:50;;;3128:467;-1:-1:-1;;;;;;;;;;;3394:61:66;;;;324:6416;;-1:-1:-1;;;3394:61:66;;324:6416;;;;3394:61;;324:6416;3394:61;324:6416;;;-1:-1:-1;;;;;;;;;;;3394:61:66;;;;;;;;3128:467;324:6416;;;6854:22:8;324:6416:66;;;;27501:38:3;;1590:14:0;;;;27501:38:3;;3499:4:66;324:6416;27501:38:3;;324:6416:66;;27501:38:3;;;324:6416:66;27501:38:3;;:::i;6854:22:8:-;27524:10:3;324:6416:66;;7009:9:8;324:6416:66;;;7009:9:8;324:6416:66;7505:10:8;324:6416:66;-1:-1:-1;;;324:6416:66;;;;;3140:13;324:6416;;;7505:10:8;324:6416:66;;;;;;7505:10:8;324:6416:66;;;;;;3499:4;324:6416;;837:28;324:6416;;;;6854:12:8;324:6416:66;;7009:9:8;324:6416:66;;1590:14:0;15610:11:8;324:6416:66;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;324:6416:66;;;;;;27635:8:3;324:6416:66;;;;;15703:15:8;;324:6416:66;;;;;;;;;;;;;;;;15735:37:8;;;;;;;;;;:::i;:::-;324:6416:66;15725:48:8;;324:6416:66;;;;;;;;;15703:77:8;324:6416:66;;15702:78:8;15698:126;;3128:467:66;-1:-1:-1;;;;;324:6416:66;;;;;;27635:8:3;324:6416:66;;;;;;;;;;15889:37:8;;324:6416:66;;;;;;15889:37:8;;;324:6416:66;15889:37:8;;;;;:::i;:::-;324:6416:66;15879:48:8;;324:6416:66;;;;;;;;15943:15:8;3140:13:66;15943:15:8;;324:6416:66;15961:16:8;324:6416:66;15961:16:8;;324:6416:66;15943:34:8;;;;:::i;:::-;15938:460;;3128:467:66;324:6416;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;324:6416:66;;;16424:32:8;;324:6416:66;;;;1590:14:0;;;324:6416:66;;;;;;;;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;3128:467:66;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;324:6416:66;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;324:6416:66;;;16587:43:8;;324:6416:66;12810:59:8;;;1590:14:0;;;;324:6416:66;;;;12656:92:8;;;;12810:59;;;1590:14:0;324:6416:66;;12810:59:8;324:6416:66;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;3128:467:66;16678:31:8;;;;;:::i;:::-;16724:8;;;324:6416:66;;;16724:29:8;;3128:467:66;16720:176:8;;;;14785:4;;;;;;:::i;:::-;3095:5:66;586:55;3063:7;586:55;324:6416;;-1:-1:-1;;;3536:48:66;;-1:-1:-1;;;;;586:55:66;;;;;324:6416;;;3536:48;;324:6416;;;;1590:14:0;;;324:6416:66;;;;;;;;;;;;3536:48;;;;;;;;;;3128:467;;;;3536:48;;;324:6416;3536:48;324:6416;3536:48;;;;;;;:::i;:::-;;;;;16724:29:8;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;324:6416:66;;16587:43:8;;;;16424:32;;;;;324:6416:66;16424:32:8;;324:6416:66;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;;;;:::i;:::-;16021:3;324:6416:66;16021:3:8;324:6416:66;;;;;;;;;;;-1:-1:-1;;;16314:19:8;;3140:13:66;324:6416;;;;16314:19:8;;1590:14:0;;;16314:19:8;324:6416:66;;;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;12810:59;16170:185;16314:19;324:6416:66;16314:19:8;;;;;15938:460;324:6416:66;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;324:6416:66;12810:59:8;;;-1:-1:-1;;;324:6416:66;12810:59:8;;;324:6416:66;;;;;;12810:59:8;;;324:6416:66;;;;;;;;16170:185:8;;683:3:66;;16170:185:8;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;;;;;12810:59;324:6416:66;;-1:-1:-1;;;12810:59:8;;324:6416:66;;12810:59:8;;;324:6416:66;;;12810:59:8;;324:6416:66;12810:59:8;;;;:::i;16314:19::-;;;-1:-1:-1;16314:19:8;;;;;;;;;:::i;:::-;;;;;324:6416:66;;1590:14:0;324:6416:66;;1590:14:0;;;;324:6416:66;-1:-1:-1;;;324:6416:66;;6854:12:8;324:6416:66;;;1590:14:0;324:6416:66;15698:126:8;13208:33;;:::i;:::-;;15698:126;;3394:61:66;;;;;:::i;:::-;324:6416;;3394:61;;;;3404:50;3435:19;;;;3404:50;;324:6416;-1:-1:-1;;;324:6416:66;;;;;;1590:14:0;324:6416:66;3063:54;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;2941:38;3063:54;2941:38;;;;324:6416;;;;;;;;;;;;;2707:18:5;324:6416:66;;;;:::i;:::-;;1590:14:0;324:6416:66;;1590:14:0;;;:::i;:::-;324:6416:66;;;2707:18:5;324:6416:66;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;2883:26:5;324:6416:66;;;;:::i;:::-;;1590:14:0;324:6416:66;;1590:14:0;;;:::i;:::-;324:6416:66;;;2883:26:5;324:6416:66;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;1590:14:0;;;:::i;:::-;324:6416:66;;-1:-1:-1;;;;;324:6416:66;;;;;837:28;324:6416;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;1590:14:0;324:6416:66;1590:14:0;324:6416:66;;;;;;1590:14:0;324:6416:66;1590:14:0;;324:6416:66;;;;;;;1590:14:0;324:6416:66;1590:14:0;;324:6416:66;;;;;;;1590:14:0;324:6416:66;1590:14:0;;324:6416:66;;;;;;;1590:14:0;324:6416:66;1590:14:0;;324:6416:66;;;;;;;1590:14:0;324:6416:66;1590:14:0;;324:6416:66;;;;;;;1590:14:0;324:6416:66;1590:14:0;;324:6416:66;;;;;;;1590:14:0;324:6416:66;;;;;;;;;;;;;;;;;;;;;;;;;4794:10;324:6416;;;;1590:14:0;;;;:::i;:::-;683:3:66;324:6416;;-1:-1:-1;;683:3:66;;;324:6416;683:3;;;;4887:13;4902:19;683:3;4902:19;;;;324:6416;1590:14:0;324:6416:66;;1590:14:0;;;:::i;:::-;683:3:66;324:6416;;683:3;;;;;;;5170:13;;6130;5165:601;5185:19;683:3;5185:19;;;;5781:13;;6130;5796:23;324:6416;5796:23;;;;324:6416;;;5821:3;5849:9;;;;:::i;:::-;;324:6416;6130:13;683:3;;;;;;;;5877:13;;;;:::i;:::-;;324:6416;-1:-1:-1;;;;;;;;;;;14375:24:1;;;;324:6416:66;;1590:14:0;;;;14375:24:1;;324:6416:66;14375:24:1;;1590:14:0;27501:38:3;324:6416:66;;1590:14:0;14375:24:1;;27501:38:3;14375:24:1;-1:-1:-1;;;;;;;;;;;14375:24:1;;;;;;;;;;5821:3:66;5951:9;;:53;324:6416;5951:9;;;;:::i;:::-;;:15;;324:6416;5984:13;5495:17;;5984:13;;;:::i;:::-;;:19;;5951:53;;:::i;:::-;683:3;;5951:59;-1:-1:-1;;;;;;;;;;;1872:20:1;;;;324:6416:66;;1590:14:0;;;;1872:20:1;;324:6416:66;1872:20:1;;324:6416:66;1872:20:1;;27501:38:3;1872:20:1;-1:-1:-1;;;;;;;;;;;1872:20:1;;;;;;;;;;;5821:3:66;;;6130:13;683:3;5781:13;;1872:20:1;;;;;:::i;:::-;324:6416:66;;;;;1872:20:1;;;;;324:6416:66;;1590:14:0;324:6416:66;;1590:14:0;;;;14375:24:1;;;;:::i;:::-;324:6416:66;;;;;14375:24:1;;;;683:3:66;-1:-1:-1;;;324:6416:66;;6854:12:8;324:6416:66;;27501:38:3;1590:14:0;324:6416:66;5206:3;324:6416;;;;1590:14:0;;;;5238:13:66;;683:3;5238:13;324:6416;5238:13;;-1:-1:-1;;;;;;;;;;;5238:13:66;;;;;;;;;;;5206:3;324:6416;;;;5266:330;;324:6416;6854:22:8;837:28:66;324:6416;;;;5665:5;586:55;324:6416;;;;;683:3;27501:38:3;;1590:14:0;;;;27501:38:3;;5488:4:66;27501:38:3;;;324:6416:66;27501:38:3;;;;;;;:::i;6854:22:8:-;27524:10:3;324:6416:66;;7009:9:8;324:6416:66;;;7009:9:8;324:6416:66;7505:10:8;324:6416:66;-1:-1:-1;;;324:6416:66;;;;;6130:13;324:6416;;;7505:10:8;324:6416:66;;;;;;7505:10:8;324:6416:66;;683:3;324:6416;;;5488:4;324:6416;;837:28;324:6416;;;;6854:12:8;324:6416:66;;7009:9:8;324:6416:66;;1590:14:0;15610:11:8;324:6416:66;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;324:6416:66;;;;;;27635:8:3;324:6416:66;;;;;15703:15:8;;324:6416:66;;;;;;;;683:3;324:6416;;;;;;683:3;15735:37:8;;;;;;;;;;:::i;:::-;324:6416:66;15725:48:8;;324:6416:66;;683:3;324:6416;;;;;;15703:77:8;324:6416:66;;15702:78:8;15698:126;;5206:3:66;-1:-1:-1;;;;;324:6416:66;;;;;;27635:8:3;324:6416:66;;;;;;;;683:3;324:6416;15889:37:8;;324:6416:66;;;;;;15889:37:8;;;683:3:66;15889:37:8;;;;;:::i;:::-;324:6416:66;15879:48:8;;324:6416:66;;683:3;324:6416;;;;;15943:15:8;6130:13:66;15943:15:8;;324:6416:66;15961:16:8;324:6416:66;15961:16:8;;324:6416:66;15943:34:8;;;;:::i;:::-;15938:460;;324:6416:66;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;324:6416:66;;;16424:32:8;;324:6416:66;;;;1590:14:0;;;324:6416:66;;;;683:3;324:6416;;;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;5206:3:66;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;324:6416:66;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;324:6416:66;;;16587:43:8;;324:6416:66;12810:59:8;;;1590:14:0;;;;-1:-1:-1;;324:6416:66;;;12656:92:8;12810:59;;;1590:14:0;324:6416:66;;12810:59:8;324:6416:66;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;5206:3:66;16678:31:8;;;;:::i;:::-;16724:8;;324:6416:66;;;16724:29:8;;5206:3:66;16720:176:8;;;14785:4;;;;;;:::i;:::-;5665:5:66;586:55;5621:7;586:55;324:6416;;-1:-1:-1;;;5531:50:66;;-1:-1:-1;;;;;586:55:66;;;;;324:6416;;;5531:50;;324:6416;-1:-1:-1;;27501:38:3;324:6416:66;;1590:14:0;324:6416:66;683:3;;324:6416;;27501:38:3;;324:6416:66;;;;;5531:50;;;;;;;;5206:3;-1:-1:-1;5621:7:66;586:55;5665:5;586:55;5621:97;;;;-1:-1:-1;;;;;324:6416:66;;;;586:55;;324:6416;837:28;5694:10;;;;;:::i;:::-;324:6416;;;-1:-1:-1;;;5621:97:66;;324:6416;;;;;;;;;5621:97;;;:::i;:::-;;;;;;;;;;;;;;5206:3;5609:109;;;;;:::i;:::-;;;;;;:::i;:::-;;324:6416;;1590:14:0;;;;5732:23:66;;324:6416;5732:23;;1590:14:0;683:3:66;5732:23;27501:38:3;5732:23:66;;-1:-1:-1;;;;;;;;;;;5732:23:66;;;;;;;6130:13;5732:23;;;5206:3;;683;5170:13;;;5732:23;;;683:3;5732:23;;;;;;;;;:::i;:::-;;;;;5621:97;;;;;;;;;;;;;;:::i;:::-;;;;5531:50;;;683:3;5531:50;;;;;;;;;:::i;:::-;;;;;16724:29:8;-1:-1:-1;;16736:17:8;;;-1:-1:-1;5495:17:66;16724:29:8;;16587:43;;;;;:::i;:::-;324:6416:66;;16587:43:8;;;;16424:32;;;;;683:3:66;16424:32:8;;;;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15698:126;13208:33;;:::i;:::-;;15698:126;;324:6416:66;-1:-1:-1;;;324:6416:66;;;;;27501:38:3;1590:14:0;324:6416:66;;-1:-1:-1;;;1590:14:0;;;324:6416:66;1590:14:0;27501:38:3;1590:14:0;;324:6416:66;-1:-1:-1;;;324:6416:66;;;;;27501:38:3;;324:6416:66;5238:13;;;;683:3;5238:13;;;;;;;;;1590:14:0;5238:13:66;;;:::i;:::-;;;1590:14:0;;;;;;;5238:13:66;;;;;-1:-1:-1;5238:13:66;;683:3;;324:6416;;;1590:14:0;;;:::i;:::-;683:3:66;;;;;;;;324:6416;;1590:14:0;;;:::i;:::-;683:3:66;;;;;;;;324:6416;683:3;;;;;;;;;;;;4923;324:6416;;;;4955:99;;683:3;;;;;;;;;;;;;;;;;;5046:7;683:3;;;;;;;6130:13;;4955:99;4942:112;4955:99;4942:112;;:::i;:::-;324:6416;683:3;4887:13;;683:3;-1:-1:-1;;;324:6416:66;;;;;;1590:14:0;324:6416:66;;;;;;;;;:::i;:::-;1175:38;;;1183:13;1175:38;1297:7;586:55;1344:5;586:55;324:6416;;-1:-1:-1;;;1297:54:66;;324:6416;1297:54;;1590:14:0;;;-1:-1:-1;;;;;;;;;;;324:6416:66;;;;-1:-1:-1;;;;;324:6416:66;;;;;;;;;;;;;1297:54;;324:6416;;586:55;;324:6416;1297:54;;;;;;;;;;;1175:38;324:6416;;;;;;;1366:21;1374:13;1366:21;;1362:463;;;1366:21;;;1431:9;;;:::i;:::-;324:6416;1413:27;;:50;;;1362:463;-1:-1:-1;;;;;;;;;;;1403:61:66;;;;324:6416;;-1:-1:-1;;;1403:61:66;;324:6416;;;;1403:61;;324:6416;1403:61;324:6416;;;-1:-1:-1;;;;;;;;;;;1403:61:66;;;;;;;;1362:463;324:6416;;;;;27501:38:3;;1590:14:0;;;;27501:38:3;;1507:4:66;324:6416;27501:38:3;;324:6416:66;;27501:38:3;;;324:6416:66;27501:38:3;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;-1:-1:-1;6854:12:8;586:55:66;;-1:-1:-1;;;;;;586:55:66;-1:-1:-1;;;;;;;;;;;586:55:66;;;27524:10:3;324:6416:66;;7009:9:8;324:6416:66;;;7009:9:8;324:6416:66;7505:10:8;324:6416:66;-1:-1:-1;;;324:6416:66;;;;;1374:13;324:6416;;;7505:10:8;324:6416:66;;;;;;7505:10:8;324:6416:66;;;;;;1507:4;324:6416;;837:28;324:6416;;;;6854:12:8;324:6416:66;;7009:9:8;324:6416:66;;1590:14:0;15610:11:8;324:6416:66;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;324:6416:66;;;;;;27635:8:3;324:6416:66;;;;;15703:15:8;;324:6416:66;;;;;;;;;;;;;;;;15735:37:8;;;;;;;;;;:::i;:::-;324:6416:66;15725:48:8;;324:6416:66;;;;;;;;;15703:77:8;324:6416:66;;15702:78:8;15698:126;;1362:463:66;-1:-1:-1;;;;;324:6416:66;;;;;;27635:8:3;324:6416:66;;;;;;;;;;15889:37:8;;324:6416:66;;;;;;15889:37:8;;;324:6416:66;15889:37:8;;;;;:::i;:::-;324:6416:66;15879:48:8;;324:6416:66;;;;;;;;15943:15:8;1374:13:66;15943:15:8;;324:6416:66;15961:16:8;324:6416:66;15961:16:8;;324:6416:66;15943:34:8;;;;:::i;:::-;15938:460;;324:6416:66;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;324:6416:66;;;16424:32:8;;324:6416:66;;;;1590:14:0;;;324:6416:66;;;;;;;;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;1362:463:66;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;324:6416:66;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;324:6416:66;;;16587:43:8;;324:6416:66;12810:59:8;;;1590:14:0;;;;-1:-1:-1;;324:6416:66;;;12656:92:8;12810:59;;;1590:14:0;324:6416:66;;12810:59:8;324:6416:66;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;1362:463:66;16678:31:8;;;;:::i;:::-;16724:8;;324:6416:66;;;16724:29:8;;1362:463:66;16720:176:8;;;14785:4;;;;;;:::i;:::-;1297:7:66;586:55;324:6416;;-1:-1:-1;;;1546:49:66;;586:55;;;;;-1:-1:-1;;;;;324:6416:66;;1546:49;;324:6416;-1:-1:-1;;324:6416:66;;;1590:14:0;324:6416:66;;;;1546:49;-1:-1:-1;;;;;;;;;;;1546:49:66;;;;;;;;1362:463;;;324:6416;;-1:-1:-1;;;1858:29:66;;1881:4;324:6416;1858:29;;324:6416;;;;;;-1:-1:-1;;;;;;;;;;;1858:29:66;;;;;;;;;;;1362:463;-1:-1:-1;1344:5:66;586:55;324:6416;;-1:-1:-1;;;1921:30:66;;1881:4;324:6416;1921:30;;324:6416;-1:-1:-1;;;;;324:6416:66;;;;;;;;;;;1921:30;;;;;;;;;;;1362:463;324:6416;;;1983:94;837:28;324:6416;;;;1297:7;586:55;;;324:6416;;;;;1590:14:0;;;;;;;;1983:94:66;;;324:6416;1983:94;;1590:14:0;-1:-1:-1;;;;;;;;;;;324:6416:66;;;;;;;;1297:54;324:6416;;;;;;;1590:14:0;1983:94:66;;;;;;;;;;;1362:463;324:6416;;;2088:725;;324:6416;;;2088:725;2138:21;;;1344:5;586:55;324:6416;;-1:-1:-1;;;2246:30:66;;1881:4;324:6416;2246:30;;324:6416;;;;;;;;;;-1:-1:-1;;;;;324:6416:66;2246:30;;;;;;;;;;;2134:669;2246:46;;;;;;:::i;:::-;324:6416;;;-1:-1:-1;;;2417:29:66;;1881:4;324:6416;2417:29;;324:6416;;;;;-1:-1:-1;;;;;;;;;;;2417:29:66;;;;;;;;;;;2402:44;;;;;;:::i;2246:30::-;;;324:6416;2246:30;;324:6416;2246:30;;;;;;1590:14:0;2246:30:66;;;:::i;:::-;;;1590:14:0;;;;;2246:46:66;:30;;;;;-1:-1:-1;2246:30:66;;2134:669;324:6416;;-1:-1:-1;;;2585:29:66;;1881:4;324:6416;2585:29;;324:6416;;;;;;;;-1:-1:-1;;;;;;;;;;;2585:29:66;;;;;;;;;;;2134:669;2570:44;;;;;;:::i;:::-;324:6416;1344:5;586:55;324:6416;;-1:-1:-1;;;2724:30:66;;1881:4;324:6416;2724:30;;324:6416;;;;;;;;;;-1:-1:-1;;;;;324:6416:66;2724:30;;;;;;;;;;;:46;;;;;;:::i;2585:29::-;;;324:6416;2585:29;;324:6416;2585:29;;;;;;1590:14:0;2585:29:66;;;:::i;:::-;;;1590:14:0;;;;;2570:44:66;2585:29;;;;;-1:-1:-1;2585:29:66;;1983:94;;;;;324:6416;1983:94;324:6416;1983:94;;;;;;;:::i;:::-;;;;;1921:30;;;;324:6416;1921:30;;324:6416;1921:30;;;;;;1590:14:0;1921:30:66;;;:::i;:::-;;;1590:14:0;;;;;;324:6416:66;1921:30;;;;;-1:-1:-1;1921:30:66;;1858:29;;;;324:6416;1858:29;;324:6416;1858:29;;;;;;1590:14:0;1858:29:66;;;:::i;:::-;;;1590:14:0;;;;;1858:29:66;;;;;;;-1:-1:-1;1858:29:66;;1546:49;;;324:6416;1546:49;324:6416;1546:49;;;;;;;:::i;:::-;;;;;16724:29:8;-1:-1:-1;;16736:17:8;;;-1:-1:-1;5495:17:66;16724:29:8;;16587:43;;;;;:::i;:::-;324:6416:66;;16587:43:8;;;;16424:32;;;;;324:6416:66;16424:32:8;;324:6416:66;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15698:126;13208:33;;:::i;:::-;;15698:126;;1403:61:66;;;;;:::i;:::-;324:6416;;1403:61;;;;1413:50;1444:19;;;;1413:50;;1362:463;1654:9;;;:::i;:::-;324:6416;1636:27;;:50;;;1362:463;-1:-1:-1;;;;;;;;;;;1626:61:66;;;;324:6416;;-1:-1:-1;;;1626:61:66;;324:6416;;;;1626:61;;324:6416;1626:61;324:6416;;;-1:-1:-1;;;;;;;;;;;1626:61:66;;;;;;;;1362:463;324:6416;;;;;27501:38:3;;1590:14:0;;;;27501:38:3;;1730:4:66;324:6416;27501:38:3;;324:6416:66;;27501:38:3;;;324:6416:66;27501:38:3;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;-1:-1:-1;6854:12:8;586:55:66;;-1:-1:-1;;;;;;586:55:66;-1:-1:-1;;;;;;;;;;;586:55:66;;;27524:10:3;324:6416:66;;7009:9:8;324:6416:66;;;7009:9:8;324:6416:66;7505:10:8;324:6416:66;-1:-1:-1;;;324:6416:66;;;;;1374:13;324:6416;;;7505:10:8;324:6416:66;;;;;;7505:10:8;324:6416:66;;;;;;1730:4;324:6416;;837:28;324:6416;;;;6854:12:8;324:6416:66;;7009:9:8;324:6416:66;;1590:14:0;15610:11:8;324:6416:66;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;324:6416:66;;;;;;27635:8:3;324:6416:66;;;;;15703:15:8;;324:6416:66;;;;;;;;;;;;;;;;15735:37:8;;;;;;;;;;:::i;:::-;324:6416:66;15725:48:8;;324:6416:66;;;;;;;;;15703:77:8;324:6416:66;;15702:78:8;15698:126;;1362:463:66;-1:-1:-1;;;;;324:6416:66;;;;;;27635:8:3;324:6416:66;;;;;;;;;;15889:37:8;;324:6416:66;;;;;;15889:37:8;;;324:6416:66;15889:37:8;;;;;:::i;:::-;324:6416:66;15879:48:8;;324:6416:66;;;;;;;;15943:15:8;1374:13:66;15943:15:8;;324:6416:66;15961:16:8;324:6416:66;15961:16:8;;324:6416:66;15943:34:8;;;;:::i;:::-;15938:460;;1362:463:66;324:6416;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;324:6416:66;;;16424:32:8;;324:6416:66;;;;1590:14:0;;;324:6416:66;;;;;;;;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;1362:463:66;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;324:6416:66;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;324:6416:66;;;16587:43:8;;324:6416:66;12810:59:8;;;1590:14:0;;;;324:6416:66;;;;12656:92:8;;;;12810:59;;;1590:14:0;324:6416:66;;12810:59:8;324:6416:66;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;1362:463:66;16678:31:8;;;;;:::i;:::-;16724:8;;;324:6416:66;;;16724:29:8;;1362:463:66;16720:176:8;;;;14785:4;;;;;;:::i;:::-;1297:7:66;586:55;324:6416;;-1:-1:-1;;;1767:47:66;;586:55;;;;;-1:-1:-1;;;;;324:6416:66;;1767:47;;324:6416;;;;1590:14:0;;;324:6416:66;;;;1767:47;-1:-1:-1;;;;;;;;;;;1767:47:66;;;;;;;;1362:463;;;;1767:47;;;324:6416;1767:47;324:6416;1767:47;;;;;;;:::i;:::-;;;;;16724:29:8;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;324:6416:66;;16587:43:8;;;;16424:32;;;;;324:6416:66;16424:32:8;;324:6416:66;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;;;;:::i;:::-;16021:3;324:6416:66;16021:3:8;324:6416:66;;;;;;;;;;;-1:-1:-1;;;16314:19:8;;1374:13:66;324:6416;;;;16314:19:8;;1590:14:0;;;16314:19:8;324:6416:66;;;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;12810:59;16170:185;16314:19;324:6416:66;16314:19:8;;;;;324:6416:66;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;324:6416:66;12810:59:8;;;-1:-1:-1;;;324:6416:66;12810:59:8;;;324:6416:66;;;;;;12810:59:8;;;324:6416:66;;;;;;;;16170:185:8;;683:3:66;;16170:185:8;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;1626:61:66;;;;;:::i;:::-;324:6416;;1626:61;;;;1636:50;1667:19;;;;1636:50;;324:6416;-1:-1:-1;;;324:6416:66;;;;;;1590:14:0;324:6416:66;1297:54;;;;;;;;;;;;;;:::i;:::-;;;;;1175:38;;;;324:6416;;;;;;;;;;;;;;;;;;3038:18:5;324:6416:66;;;;;;;3038:18:5;324:6416:66;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;324:6416:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3331:16:5;324:6416:66;;;;;;;3331:16:5;324:6416:66;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;324:6416:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1590:14:0;;;;:::i;:::-;683:3:66;324:6416;;-1:-1:-1;;683:3:66;;;;324:6416;683:3;;;;4887:13;683:3;;4882:183;;;4902:19;;683:3;4902:19;;;;324:6416;;1590:14:0;324:6416:66;;1590:14:0;;;:::i;:::-;683:3:66;324:6416;;683:3;;;;;;;5170:13;;;;;683:3;;;5165:601;5781:13;;;683:3;;;324:6416;;;5821:3;324:6416;5796:23;;;;;5849:9;;;;:::i;:::-;;324:6416;683:3;;;;;;;;;5877:13;;;;;;:::i;:::-;;324:6416;-1:-1:-1;;;;;;;;;;;14375:24:1;;;;324:6416:66;;1590:14:0;;;;14375:24:1;;324:6416:66;14375:24:1;;1590:14:0;5732:23:66;324:6416;;1590:14:0;14375:24:1;;;;-1:-1:-1;;;;;;;;;;;14375:24:1;;;;;;;;5821:3:66;5951:9;;:53;324:6416;5951:9;;;;:::i;:::-;;:15;;324:6416;5984:13;5495:17;;5984:13;;;:::i;5951:53::-;683:3;;5951:59;1872:20:1;-1:-1:-1;;;;;;;;;;;1872:20:1;;;;324:6416:66;;1590:14:0;;;;1872:20:1;;324:6416:66;1872:20:1;;324:6416:66;1872:20:1;;;5732:23:66;1872:20:1;-1:-1:-1;;;;;;;;;;;1872:20:1;;;;;;;;;;;5821:3:66;;;;683;5781:13;;;1872:20:1;;;;;;;;;:::i;:::-;324:6416:66;;1872:20:1;;;;;;14375:24;;;;;:::i;:::-;324:6416:66;;14375:24:1;;;;683:3:66;-1:-1:-1;;;324:6416:66;;;;;5732:23;1590:14:0;324:6416:66;5796:23;324:6416;;;5206:3;5185:19;;;683:3;5185:19;;;;;-1:-1:-1;324:6416:66;;-1:-1:-1;;;5238:13:66;;324:6416;5238:13;683:3;324:6416;;;5238:13;-1:-1:-1;;;;;;;;;;;5238:13:66;;;;;;;;;;;5206:3;324:6416;;;5270:22;;;;5665:5;586:55;-1:-1:-1;;;;;324:6416:66;6854:22:8;5348:10:66;;;;:::i;:::-;324:6416;;;;;;683:3;27501:38:3;;1590:14:0;;;;27501:38:3;;5341:4:66;5732:23;27501:38:3;;324:6416:66;5732:23;27501:38:3;;;;;;:::i;6854:22:8:-;27524:10:3;324:6416:66;;7009:9:8;324:6416:66;;;7009:9:8;324:6416:66;7505:10:8;324:6416:66;-1:-1:-1;;;324:6416:66;;;;;;;;;7505:10:8;324:6416:66;;;;;;7505:10:8;324:6416:66;;5341:4;324:6416;;;;;;6854:12:8;324:6416:66;7009:9:8;324:6416:66;15610:11:8;324:6416:66;;;-1:-1:-1;;;;;324:6416:66;;;1590:14:0;15653:34:8;;:::i;:::-;-1:-1:-1;;;;;324:6416:66;;;;;;27635:8:3;324:6416:66;;;;;15703:15:8;;324:6416:66;;;;;;;;683:3;324:6416;;;;;;683:3;15735:37:8;;;;;;;;;;:::i;:::-;324:6416:66;15725:48:8;;324:6416:66;;683:3;324:6416;;;;;;15703:77:8;324:6416:66;;15702:78:8;15698:126;;5266:330:66;-1:-1:-1;;;;;324:6416:66;;;;;;27635:8:3;324:6416:66;;;;;;;;683:3;324:6416;15889:37:8;;324:6416:66;;;;;;15889:37:8;;;683:3:66;15889:37:8;;;;;:::i;:::-;324:6416:66;15879:48:8;;324:6416:66;;683:3;324:6416;;;;15943:15:8;;;324:6416:66;15961:16:8;324:6416:66;15961:16:8;;324:6416:66;15943:34:8;;;;:::i;:::-;15938:460;;5266:330:66;324:6416;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;324:6416:66;;;16424:32:8;;324:6416:66;;;;1590:14:0;;;324:6416:66;;;;683:3;324:6416;;;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;5266:330:66;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;324:6416:66;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;324:6416:66;;;16587:43:8;;324:6416:66;12810:59:8;;;1590:14:0;;;;324:6416:66;;;;12656:92:8;;;;12810:59;;;1590:14:0;324:6416:66;;12810:59:8;324:6416:66;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;5266:330:66;16678:31:8;;;;:::i;:::-;16724:8;;;324:6416:66;;;16724:29:8;;5266:330:66;16720:176:8;;;;14785:4;;;;;;:::i;:::-;5665:5:66;586:55;5621:7;586:55;5377:43;;683:3;;586:55;;-1:-1:-1;;;;;324:6416:66;;;;;5409:10;;;;:::i;:::-;324:6416;;;-1:-1:-1;;;5377:43:66;;-1:-1:-1;;;;;324:6416:66;;;;5377:43;;324:6416;;;;1590:14:0;324:6416:66;;;;-1:-1:-1;324:6416:66;;;;;;;;;;;5377:43;;;;;;;;;;;5266:330;;;5621:7;586:55;5665:5;586:55;5621:97;;;;-1:-1:-1;;;;;324:6416:66;;;;586:55;;324:6416;5694:10;;;;;;:::i;5621:97::-;;;;;;;;;;;;;;5266:330;5609:109;;;;;:::i;:::-;;;;;;:::i;:::-;;324:6416;;1590:14:0;;;;5732:23:66;;324:6416;5732:23;;1590:14:0;683:3:66;5732:23;;;;-1:-1:-1;;;;;;;;;;;5732:23:66;;;;;;;;;;;;;5266:330;5206:3;683;5170:13;;;;;;5732:23;;;683:3;5732:23;;;;;;;;;:::i;:::-;;;;;5621:97;;;;;;;;;;;;;;:::i;:::-;;;;5377:43;;;683:3;5377:43;;;;;;;;;:::i;:::-;;;;;16724:29:8;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;324:6416:66;;16587:43:8;;;;;324:6416:66;;;16424:32:8;;;;;683:3:66;16424:32:8;;;;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;;;;;:::i;:::-;16021:3;324:6416:66;16021:3:8;324:6416:66;;;;;;;;;;;-1:-1:-1;;;16314:19:8;;324:6416:66;;;;;16314:19:8;;1590:14:0;;;16314:19:8;;324:6416:66;5732:23;324:6416;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;683:3:66;16314:19:8;;12810:59;16314:19;16170:185;16314:19;;;;15938:460;324:6416:66;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;324:6416:66;12810:59:8;;;-1:-1:-1;;;683:3:66;12810:59:8;;;324:6416:66;;;;;;12810:59:8;;;324:6416:66;;;;;;;;16170:185:8;;683:3:66;;16170:185:8;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;;;;;;16314:19;;;;;;;;;;;;;;:::i;:::-;;;;;324:6416:66;-1:-1:-1;;;324:6416:66;;6854:12:8;324:6416:66;;5732:23;1590:14:0;324:6416:66;15698:126:8;13208:33;;:::i;:::-;;15698:126;;324:6416:66;-1:-1:-1;;;324:6416:66;;;;;5732:23;1590:14:0;324:6416:66;;-1:-1:-1;;;1590:14:0;;;324:6416:66;1590:14:0;5732:23:66;1590:14:0;;5266:330:66;324:6416;;6854:22:8;837:28:66;324:6416;;;;5665:5;586:55;324:6416;-1:-1:-1;324:6416:66;;;683:3;27501:38:3;;1590:14:0;;;;27501:38:3;;5488:4:66;5732:23;27501:38:3;;324:6416:66;5732:23;27501:38:3;;;;;;:::i;6854:22:8:-;27524:10:3;324:6416:66;;7009:9:8;324:6416:66;;;7009:9:8;324:6416:66;7505:10:8;324:6416:66;;-1:-1:-1;;;324:6416:66;;;;;;7505:10:8;324:6416:66;-1:-1:-1;324:6416:66;7505:10:8;-1:-1:-1;324:6416:66;683:3;-1:-1:-1;324:6416:66;;5488:4;324:6416;;837:28;324:6416;;;;6854:12:8;324:6416:66;;7009:9:8;324:6416:66;;1590:14:0;15610:11:8;324:6416:66;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;324:6416:66;;;;;;27635:8:3;324:6416:66;;;;;15703:15:8;;324:6416:66;;;;;;-1:-1:-1;324:6416:66;683:3;324:6416;;-1:-1:-1;324:6416:66;;;683:3;15735:37:8;;;;;;;;;;:::i;:::-;324:6416:66;15725:48:8;;-1:-1:-1;324:6416:66;683:3;324:6416;;;;-1:-1:-1;324:6416:66;15703:77:8;324:6416:66;;15702:78:8;15698:126;;5266:330:66;-1:-1:-1;;;;;324:6416:66;;;;;;27635:8:3;324:6416:66;;;;;;-1:-1:-1;324:6416:66;683:3;324:6416;15889:37:8;;324:6416:66;-1:-1:-1;324:6416:66;;;;15889:37:8;;;683:3:66;15889:37:8;;;;;:::i;:::-;324:6416:66;15879:48:8;;-1:-1:-1;324:6416:66;683:3;324:6416;;-1:-1:-1;324:6416:66;;;;15961:16:8;324:6416:66;15961:16:8;;324:6416:66;15943:34:8;;;;:::i;:::-;15938:460;;324:6416:66;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;324:6416:66;;;16424:32:8;;324:6416:66;;;;1590:14:0;;;324:6416:66;;;;683:3;324:6416;;;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;-1:-1:-1;16424:32:8;;;5266:330:66;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;324:6416:66;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;324:6416:66;;;16587:43:8;;324:6416:66;12810:59:8;;;1590:14:0;;;;-1:-1:-1;;324:6416:66;;;12656:92:8;12810:59;;;1590:14:0;-1:-1:-1;324:6416:66;12810:59:8;324:6416:66;-1:-1:-1;;;;;;;;;;;;16587:43:8;;;;;;;;5266:330:66;16678:31:8;;;;;;:::i;:::-;16724:8;;324:6416:66;;;16724:29:8;;5266:330:66;16720:176:8;;;14785:4;;;;;;:::i;:::-;5665:5:66;586:55;5621:7;586:55;324:6416;;-1:-1:-1;;;5531:50:66;;-1:-1:-1;;;;;586:55:66;;;;;324:6416;;;5531:50;;324:6416;-1:-1:-1;;5732:23:66;324:6416;;1590:14:0;324:6416:66;683:3;;324:6416;;27501:38:3;;324:6416:66;;;;;5531:50;;;;;;;;5266:330;;;;5531:50;;;683:3;5531:50;;;;;;;;;:::i;:::-;;;;;16724:29:8;-1:-1:-1;;16736:17:8;;;-1:-1:-1;5495:17:66;16724:29:8;;16587:43;;;;;;-1:-1:-1;16587:43:8;;:::i;:::-;-1:-1:-1;16587:43:8;;;;;;324:6416:66;;1590:14:0;-1:-1:-1;1590:14:0;;;;;16424:32:8;;;;683:3:66;16424:32:8;;;;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;:::i;:::-;16021:3;324:6416:66;16021:3:8;324:6416:66;;;;;-1:-1:-1;324:6416:66;;;;-1:-1:-1;;;16314:19:8;;-1:-1:-1;324:6416:66;16314:19:8;;1590:14:0;;;324:6416:66;5732:23;324:6416;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;16170:185;12810:59;;16314:19;683:3:66;16314:19:8;-1:-1:-1;16314:19:8;;;15938:460;324:6416:66;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;324:6416:66;12810:59:8;;;-1:-1:-1;;;683:3:66;12810:59:8;;;324:6416:66;;;;;;12810:59:8;;;324:6416:66;;;-1:-1:-1;324:6416:66;;;;16170:185:8;;683:3:66;;16170:185:8;;;;;;:::i;16314:19::-;;;;;;-1:-1:-1;16314:19:8;;;;;;:::i;:::-;;;;324:6416:66;1590:14:0;;;-1:-1:-1;324:6416:66;6854:12:8;324:6416:66;;5732:23;-1:-1:-1;324:6416:66;15698:126:8;13208:33;;:::i;:::-;;15698:126;;324:6416:66;1590:14:0;;;-1:-1:-1;1590:14:0;;324:6416:66;1590:14:0;5732:23:66;-1:-1:-1;1590:14:0;324:6416:66;-1:-1:-1;;;324:6416:66;;;;;5732:23;1590:14:0;324:6416:66;5238:13;;;;683:3;5238:13;;;;;;;;;1590:14:0;5238:13:66;;;:::i;:::-;;;1590:14:0;;;;;;;5238:13:66;;;;;;;-1:-1:-1;5238:13:66;;5185:19;;;;;683:3;;324:6416;;;;;;;1590:14:0;;;:::i;:::-;683:3:66;;;;;;;;324:6416;;1590:14:0;;;:::i;:::-;683:3:66;;;;;;;;324:6416;683:3;;;;;;;;;;;;;;;;;4923;324:6416;;;;;;;;683:3;;;;;;;;;;;;;;;;;;5007:8;683:3;;;;;;;4955:99;;4942:112;;;;:::i;:::-;324:6416;683:3;4887:13;;;;;;;324:6416;;;;;;;;;;;;;3485:19:5;324:6416:66;;;;:::i;:::-;1590:14:0;324:6416:66;;1590:14:0;;;:::i;:::-;324:6416:66;;;3485:19:5;324:6416:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;837:28;324:6416;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;1590:14:0;;;:::i;:::-;324:6416:66;;-1:-1:-1;;;;;324:6416:66;;;837:28;324:6416;;;;;;;:::i;:::-;;1590:14:0;324:6416:66;;1590:14:0;;;:::i;:::-;324:6416:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6640:7;586:55;6672:5;586:55;324:6416;;-1:-1:-1;;;6640:54:66;;324:6416;6640:54;;1590:14:0;;;-1:-1:-1;;;;;324:6416:66;;;;;;;-1:-1:-1;;;;;;;;;;;324:6416:66;;;;;;;;;6640:54;;324:6416;;586:55;;324:6416;6640:54;;;;;;6705:26;6640:54;;;;;324:6416;;;6705:26;:::i;6640:54::-;;;;;;;;;;;;;:::i;:::-;;;;324:6416;;;;;;;;;;;;;;;;;;2563:16:5;324:6416:66;;;;;;;2563:16:5;324:6416:66;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;324:6416:66;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;324:6416:66;;;;-1:-1:-1;;;785:20:66;;1590:14:0;324:6416:66;785:20;;1590:14:0;;;;;324:6416:66;-1:-1:-1;;;324:6416:66;;;1590:14:0;-1:-1:-1;785:20:66;;;-1:-1:-1;;;;;;;;;;;785:20:66;;;;;;;1590:14:0;785:20:66;1590:14:0;785:20:66;324:6416;785:20;;;324:6416;;;;1590:14:0;;;;;;;765:52:66;;324:6416;;765:52;;1590:14:0;324:6416:66;1590:14:0;;;;:::i;:::-;747:8:66;1590:14:0;;;;765:52:66;;324:6416;-1:-1:-1;;;;;;;;;;;765:52:66;;;;;;;;324:6416;;;;837:28;;;;;;;;-1:-1:-1;;;;;837:28:66;;;;;1590:14:0;837:28:66;;;;;;598:42;586:55;;837:28;;;324:6416;837:28;;;;;827:38;586:55;;-1:-1:-1;;;;;;586:55:66;;;;;;-1:-1:-1;;;;;586:55:66;;;;;;;;;324:6416;;-1:-1:-1;;;890:20:66;;1590:14:0;324:6416:66;;;598:42;890:20;;;;;;;324:6416;890:20;;;324:6416;;837:28;324:6416;;;;;-1:-1:-1;;;;;586:55:66;;875:36;586:55;;;875:36;586:55;-1:-1:-1;;;;;;;;;;;922:42:66;;;;324:6416;;;-1:-1:-1;;;922:42:66;;586:55;;;;;-1:-1:-1;;;;;324:6416:66;;922:42;;324:6416;1590:14:0;586:55:66;;;;324:6416;586:55;;324:6416;-1:-1:-1;;;785:20:66;324:6416;;586:55;-1:-1:-1;324:6416:66;922:42;324:6416;-1:-1:-1;;;;;;;;;;;;922:42:66;;;;;;;;324:6416;-1:-1:-1;875:36:66;586:55;324:6416;;-1:-1:-1;;;;;324:6416:66;-1:-1:-1;;;;;;;;;;;974:33:66;;;;324:6416;;1590:14:0;;;;974:33:66;;324:6416;974:33;;324:6416;;1590:14:0;586:55:66;;;;324:6416;586:55;;324:6416;-1:-1:-1;;;785:20:66;324:6416;;586:55;974:33;;922:42;974:33;;-1:-1:-1;;;;;;;;;;;974:33:66;;;;;;;;324:6416;1017:31;;-1:-1:-1;;;;;;;;;;;1017:31:66;;;;324:6416;;;1590:14:0;;;1017:31:66;;-1:-1:-1;;;;;;;;;;;324:6416:66;1017:31;;324:6416;;1590:14:0;488:50:66;;;324:6416;;488:50;;324:6416;-1:-1:-1;;;785:20:66;324:6416;;488:50;1017:31;;922:42;1017:31;;-1:-1:-1;;;;;;;;;;;1017:31:66;;;;;;;;324:6416;;974:33;;;;;:::i;:::-;324:6416;;974:33;;;;922:42;;;;324:6416;922:42;;:::i;:::-;324:6416;922:42;;;890:20;;;1590:14:0;890:20:66;;1590:14:0;890:20:66;;;;;;1590:14:0;890:20:66;;;:::i;:::-;;;586:55;;;;;;;:::i;:::-;890:20;;;;;;-1:-1:-1;890:20:66;;765:52;1590:14:0;765:52:66;;1590:14:0;765:52:66;;;;;;1590:14:0;765:52:66;;;:::i;:::-;;;1590:14:0;;;;;765:52:66;;;;;-1:-1:-1;765:52:66;;785:20;;;;;;324:6416;785:20;;;;;;:::i;:::-;;;;324:6416;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;324:6416:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;324:6416:66;;;;;;;;-1:-1:-1;;324:6416:66;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;837:28;324:6416;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;324:6416:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1590:14:0;324:6416:66;1590:14:0;;;;;-1:-1:-1;;;;;1590:14:0;;;;;324:6416:66;1590:14:0;:::o;:::-;324:6416:66;1590:14:0;;;;;-1:-1:-1;;;;;1590:14:0;;;;;;;:::o;:::-;;324:6416:66;683:3;;324:6416;;;1590:14:0;;;;;-1:-1:-1;;;;;1590:14:0;;;;;;;:::o;:::-;-1:-1:-1;;;;;1590:14:0;;;;324:6416:66;;-1:-1:-1;;324:6416:66;1590:14:0;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;1590:14:0;;;;;;;;;;;;;;;;;;;:::i;:::-;324:6416:66;1590:14:0;324:6416:66;;1590:14:0;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;1590:14:0;;;;;;;;324:6416:66;;;;;1590:14:0;:::o;:::-;;;;;;;;;;;:::o;586:55:66:-;;;-1:-1:-1;;;;;324:6416:66;;;;;;586:55::o;324:6416::-;-1:-1:-1;;;;;324:6416:66;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;324:6416:66;;;;;;;;;;;;;;;;;;;:::i;:::-;;1590:14:0;324:6416:66;;1590:14:0;;;:::i;:::-;324:6416:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;1590:14:0;;324:6416:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;1590:14:0;;;324:6416:66;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;324:6416:66;;;;;;;;-1:-1:-1;324:6416:66;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;586:55;324:6416;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;1590:14:0;;;324:6416:66;;;;;;;;;;;1374:13;324:6416;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;1590:14:0;;;;:::i;:::-;;;324:6416:66;;;;;1590:14:0;324:6416:66;;;;;;;;;;;;;1590:14:0;;;;:::i;:::-;324:6416:66;;;1590:14:0;324:6416:66;;;1590:14:0;324:6416:66;;;;;;;;;:::o;:::-;;1590:14:0;;-1:-1:-1;;;;;324:6416:66;;;;;;;-1:-1:-1;;;;;;;;;;;324:6416:66;;;;;;;;;;;;;;;;;;;;;;;;1590:14:0;324:6416:66:o;:::-;1590:14:0;;;324:6416:66;;;;;;;;;;;;;;;;;;:::o;1243:204:1:-;1302:7;324:6416:66;;;;;;;1325:14:1;:::o;1298:143::-;324:6416:66;;;1590:14:0;;;1377:39:1;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;324:6416:66;192:59:1;;;;;;1590:14:0;192:59:1;1377:39;;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;;;;;324:6416:66;1377:39:1;;;1298:143;1377:53;;;1370:60;:::o;1377:39::-;;;192:59;1377:39;;192:59;1377:39;;;;;;1590:14:0;1377:39:1;;;:::i;:::-;;;1590:14:0;;;;;1377:39:1;;;;;;-1:-1:-1;1377:39:1;;2270:110;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;324:6416:66;;1590:14:0;;;;2349:24:1;;;;;1590:14:0;6729:1:66;324:6416;;;1590:14:0;-1:-1:-1;2349:24:1;;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;;;;;2270:110;:::o;2349:24::-;-1:-1:-1;2349:24:1;;;:::i;:::-;2270:110::o;:::-;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;324:6416:66;;1590:14:0;;;;2349:24:1;;;;;1590:14:0;324:6416:66;;;1590:14:0;-1:-1:-1;2349:24:1;;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;;;;;2270:110;:::o;683:3:66:-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;426:547:59:-;688:35;426:547;637:17;619:35;324:6416:66;;637:17:59;;;324:6416:66;619:35:59;;:::i;:::-;324:6416:66;;706:17:59;;324:6416:66;688:35:59;;:::i;:::-;769:30;;;;;;801:8;;324:6416:66;801:8:59;:::o;765:201::-;867:29;;;;905:1;898:8;:::o;863:103::-;-1:-1:-1;;5495:17:66;957:9:59:o;324:6416:66:-;;;;;;;;;;:::i;:::-;;1590:14:0;324:6416:66;;1590:14:0;;;:::i;:::-;324:6416:66;;;-1:-1:-1;324:6416:66;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;1590:14:0;;;324:6416:66;;:::o;953:236:8:-;324:6416:66;1052:14:8;324:6416:66;;:::i;:::-;1052:14:8;;324:6416:66;;;;;;1109:10:8;324:6416:66;;;;;;1109:10:8;1077:1;324:6416:66;;1077:1:8;324:6416:66;;1077:1:8;324:6416:66;;;;;;;;;;;;;;:::i;:::-;;;683:3;;;;;;;324:6416;683:3;;;;;;;324:6416;;;:::i;:::-;;1590:14:0;324:6416:66;;1590:14:0;;;:::i;:::-;324:6416:66;;;;683:3;;324:6416;;:::i;:::-;;683:3;324:6416;;;683:3;1077:1:8;11360:3;324:6416:66;;11346:12:8;;;;;11391:4;;1109:10;11391:4;;;:::i;:::-;324:6416:66;;11456:84:8;683:3:66;11456:84:8;;;;;683:3:66;11331:13:8;;11346:12;-1:-1:-1;11346:12:8;-1:-1:-1;1094:26:8:o;324:6416:66:-;;;1590:14:0;;1109:10:8;324:6416:66;;;;;;-1:-1:-1;324:6416:66;;;;;;;;1048:135:8;324:6416:66;;;;;;1052:14:8;324:6416:66;:::i;:::-;1151:21:8;:::o;953:236::-;1052:14;;;324:6416:66;;;;;:::i;:::-;1052:21:8;;1109:10;;;;324:6416:66;;;;;;;;;;;;;;;1077:1:8;324:6416:66;;1077:1:8;324:6416:66;;1077:1:8;324:6416:66;;;;;;;;;;;;;;:::i;:::-;;;683:3;;;;;;;324:6416;683:3;;;;;;;324:6416;;;:::i;:::-;;1590:14:0;324:6416:66;;1590:14:0;;;:::i;:::-;324:6416:66;;;;683:3;;324:6416;;:::i;:::-;;683:3;324:6416;;;683:3;1077:1:8;11360:3;324:6416:66;;11346:12:8;;;;;11391:4;;1109:10;11391:4;;;:::i;:::-;324:6416:66;;11456:84:8;683:3:66;11456:84:8;;;;;683:3:66;11331:13:8;;324:6416:66;;;1590:14:0;;1109:10:8;324:6416:66;;;;;;-1:-1:-1;324:6416:66;;;;;;;;1048:135:8;324:6416:66;;;;;;;;;;;:::i;1251:343:8:-;-1:-1:-1;324:6416:66;1364:48:8;1381:9;324:6416:66;1590:14:0;;1364:48:8;324:6416:66;1392:19:8;27635:8:3;1392:19:8;:::i;:::-;324:6416:66;;1364:48:8;;;;;;324:6416:66;;;;;;;;;;;;;;;;;;;;;;;;1364:48:8;;683:3:66;;1364:48:8;;;;;;:::i;:::-;1458:12;324:6416:66;1458:29:8;;;-1:-1:-1;;;;;324:6416:66;1458:29:8;;;;;:::i;:::-;1540:11;324:6416:66;;;;683:3;;;;;-1:-1:-1;;;;;683:3:66;;;;;-1:-1:-1;324:6416:66;;;1364:48:8;11010:13;;:29;1364:48;;;11010:29;1364:48;11010:29;;-1:-1:-1;11049:106:8;11069:7;;;;;;1563:24;;;;;1251:343;:::o;11078:3::-;11114:10;;;;;;;;:::i;:::-;324:6416:66;;;;;;;;;1364:48:8;324:6416:66;;1540:11:8;683:3:66;;;;;-1:-1:-1;;;;;;324:6416:66;683:3;;11142:1:8;683:3:66;;;;;;;;;324:6416;;11097:47:8;11078:3;683::66;11054:13:8;;;;;11010:29;;;;1251:343;;-1:-1:-1;1381:9:8;1364:48;1381:9;;;324:6416:66;1590:14:0;;1364:48:8;324:6416:66;1392:19:8;;;:::i;1364:48::-;324:6416:66;1458:12:8;;324:6416:66;1458:29:8;;;-1:-1:-1;;;;;324:6416:66;1458:29:8;;1540:11;1458:29;;:::i;:::-;1540:11;;324:6416:66;683:3;;;;;-1:-1:-1;;;;;683:3:66;;;;;-1:-1:-1;324:6416:66;;;1364:48:8;11010:13;;:29;1364:48;;;11010:29;1364:48;11010:29;;-1:-1:-1;11049:106:8;11069:7;;;;;;1563:24;;;;;1251:343;:::o;11078:3::-;11114:10;;;;;;;;:::i;:::-;324:6416:66;;;;;;;;;1364:48:8;324:6416:66;;1540:11:8;683:3:66;;;;;-1:-1:-1;;;;;;324:6416:66;683:3;;11142:1:8;683:3:66;;;;;;;;;324:6416;;11097:47:8;11078:3;683::66;11054:13:8;;;;;11010:29;;;;643:59;;;;;;;;;;;;;;;:::i;:::-;324:6416:66;1590:14:0;324:6416:66;;1590:14:0;;;:::i;:::-;643:59:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;192::1;;643::8;;;;;;;;;;4249:2493;4361:12;324:6416:66;4397:9:8;324:6416:66;4438:11:8;324:6416:66;-1:-1:-1;;;;;324:6416:66;;;;;;1590:14:0;;4481:19:8;27635:8:3;4481:19:8;:::i;:::-;4551:15;324:6416:66;;;27635:8:3;324:6416:66;;;;;;;;;;;;;;;;;;;;;;4583:37:8;;;;;;;;;;:::i;:::-;324:6416:66;4573:48:8;;324:6416:66;;;;;4438:11:8;324:6416:66;;;4551:77:8;324:6416:66;;4547:255:8;;-1:-1:-1;;;;;;;;;;;4811:11:8;;;;324:6416:66;;-1:-1:-1;;;4811:11:8;;324:6416:66;;4361:12:8;324:6416:66;;-1:-1:-1;;;;;;;;;;;4811:11:8;;;;;;;;4249:2493;4857:16;;27635:8:3;4857:16:8;:::i;:::-;324:6416:66;;;;1590:14:0;;;4911:25:8;;;4361:12;4911:25;;324:6416:66;4911:25:8;;;;;-1:-1:-1;;;;;;;;;;;4911:25:8;;;;;;;;;;;4249:2493;-1:-1:-1;324:6416:66;;4951:12:8;;4984:74;324:6416:66;;12810:59:8;;;4984:74;;324:6416:66;4361:12:8;4984:74;;643:59;324:6416:66;4911:25:8;643:59;;324:6416:66;643:59:8;324:6416:66;;;643:59:8;;;;;;4984:74;4947:1461;5094:13;5127:3;324:6416:66;;5109:16:8;;;;;5178:8;324:6416:66;5178:8:8;;5165:22;5178:8;;:::i;:::-;324:6416:66;;;-1:-1:-1;;;5165:22:8;;-1:-1:-1;;;;;324:6416:66;;4361:12:8;5165:22;;324:6416:66;;;;1590:14:0;;;;324:6416:66;;;;;;;;;;5165:22:8;;;-1:-1:-1;;;;;;;;;;;5165:22:8;;;;;;;;;;;5127:3;5209:18;;;5205:114;;5127:3;5369:8;;;;:::i;:::-;324:6416:66;4361:12:8;324:6416:66;;;-1:-1:-1;;;1978:27:8;;-1:-1:-1;;;;;324:6416:66;;;4361:12:8;1978:27;;324:6416:66;;;;;;1590:14:0;;;324:6416:66;;;;;;-1:-1:-1;;;;;;;;;;;1978:27:8;;;;;;;;;;;5127:3;2057:16;;27635:8:3;2057:16:8;:::i;:::-;2102:65;;;:29;;:65;:29;;;-1:-1:-1;;5495:17:66;2102:65:8;-1:-1:-1;;;;;;;;;;;2177:37:8;;;;324:6416:66;;-1:-1:-1;;;2177:37:8;;-1:-1:-1;;;;;324:6416:66;;;;4361:12:8;2177:37;;324:6416:66;12810:59:8;;;1590:14:0;;;12810:59:8;;;1590:14:0;;;;324:6416:66;;12810:59:8;324:6416:66;;-1:-1:-1;;;;;;;;;;;2177:37:8;;;;;;;;;;;2102:65;2254:16;;;27635:8:3;2254:16:8;:::i;:::-;4361:12;324:6416:66;;;;-1:-1:-1;;;;;;324:6416:66;-1:-1:-1;;;;;;;;;;;2281:43:8;;;;324:6416:66;;-1:-1:-1;;;2281:43:8;;-1:-1:-1;;;;;324:6416:66;;;;4361:12:8;2281:43;;324:6416:66;12810:59:8;;;1590:14:0;;;;12810:59:8;;;1590:14:0;;;;324:6416:66;;12810:59:8;324:6416:66;;-1:-1:-1;;;;;;;;;;;2281:43:8;;;;;;;;;;;2102:65;2343:46;;;;;2102:65;5341:37;;;5337:92;;5447:50;;;324:6416:66;;5520:25:8;324:6416:66;;5516:256:8;;2102:65;12275:113;;;;;;;-1:-1:-1;;12275:113:8;;;5902:57;324:6416:66;;5998:29:8;;5994:84;;324:6416:66;;6319:8:8;324:6416:66;6101:89:8;643:59;324:6416:66;;6132:37:8;;324:6416:66;;;6132:37:8;;;324:6416:66;6132:37:8;;;;;:::i;:::-;324:6416:66;6122:48:8;;6180:8;;;;:::i;:::-;324:6416:66;;;;;;;643:59:8;324:6416:66;643:59:8;;324:6416:66;;643:59:8;;1590:14:0;643:59:8;;;1590:14:0;6101:89:8;6319:8;:::i;:::-;324:6416:66;;;;1590:14:0;643:59:8;1590:14:0;;;;;;-1:-1:-1;;;;;1590:14:0;;;;;4438:11:8;1590:14:0;;;324:6416:66;;;6302:58:8;;324:6416:66;;;;6302:58:8;;324:6416:66;;;643:59:8;6302:58;;643:59;683:3:66;643:59:8;;324:6416:66;;;27635:8:3;324:6416:66;;;;;;;;;;;;;;;;6240:37:8;;;;;;;;;;:::i;:::-;324:6416:66;6230:48:8;;324:6416:66;;;;;;;;;643:59:8;;324:6416:66;683:3;643:59:8;;;324:6416:66;4397:9:8;643:59;;;;;;324:6416:66;;;;;643:59:8;;;;;;;;5089:1309;324:6416:66;;;27635:8:3;324:6416:66;;;;;;;;;;;;;;;;6471:37:8;;;;;;;;;;:::i;:::-;324:6416:66;6461:48:8;;324:6416:66;;;;;4438:11:8;324:6416:66;;;6439:77:8;324:6416:66;;643:59:8;;;324:6416:66;6664:15:8;324:6416:66;;27635:8:3;324:6416:66;;;;;;;;;;6696:37:8;;324:6416:66;;;;;;6696:37:8;;;324:6416:66;6696:37:8;;;;;:::i;:::-;324:6416:66;6686:48:8;;324:6416:66;;;;;4249:2493:8;:::o;643:59::-;324:6416:66;;-1:-1:-1;;;643:59:8;;324:6416:66;4361:12:8;643:59;;;;4911:25;643:59;;324:6416:66;643:59:8;324:6416:66;;;643:59:8;-1:-1:-1;;;643:59:8;;;;;;;5994:84;6051:8;;;;683:3:66;6051:8:8;5094:13;683:3:66;5094:13:8;;5516:256;5654:8;;3216:27;5654:8;;;;;;:::i;:::-;324:6416:66;4361:12:8;324:6416:66;;;-1:-1:-1;;;3216:27:8;;-1:-1:-1;;;;;324:6416:66;;;4361:12:8;3216:27;;324:6416:66;;;;1590:14:0;;;324:6416:66;;;;;;;;;;;;;;;3216:27:8;;;-1:-1:-1;;;;;;;;;;;3216:27:8;;;;;;;;;;;5516:256;3293:28;;;27635:8:3;3293:28:8;:::i;:::-;3372:29;;;;;27635:8:3;3372:29:8;:::i;:::-;4361:12;324:6416:66;;;;;;-1:-1:-1;;;;;324:6416:66;-1:-1:-1;;;;;;;;;;;3497:43:8;;;;324:6416:66;;-1:-1:-1;;;3497:43:8;;-1:-1:-1;;;;;324:6416:66;;;;4361:12:8;3497:43;;324:6416:66;12810:59:8;;;1590:14:0;;;;12810:59:8;;;1590:14:0;;;;324:6416:66;;12810:59:8;324:6416:66;;-1:-1:-1;;;;;;;;;;;3497:43:8;;;;;;;;;;;5516:256;3558:23;;;;;5516:256;5601:62;;5689:6;5516:256;5685:69;5723:8;;;;;683:3:66;5723:8:8;;;3558:23;;-1:-1:-1;3558:23:8;;;3497:43;;;;;:::i;:::-;324:6416:66;;3497:43:8;;;;324:6416:66;;;;3497:43:8;324:6416:66;;1590:14:0;324:6416:66;;1590:14:0;;;;3497:43:8;324:6416:66;;;3216:27:8;;;;324:6416:66;3216:27:8;;;;;;;;;1590:14:0;3216:27:8;;;:::i;:::-;;;1590:14:0;;;;;3216:27:8;;;;;;;-1:-1:-1;3216:27:8;;5337:92;5402:8;;683:3:66;5402:8:8;;;2343:46;2355:33;;;-1:-1:-1;2343:46:8;;;;2281:43;;;;;:::i;:::-;324:6416:66;;2281:43:8;;;;324:6416:66;;;;2281:43:8;324:6416:66;;1590:14:0;324:6416:66;;1590:14:0;;;;2281:43:8;324:6416:66;;;2177:37:8;;;;;:::i;:::-;324:6416:66;;2177:37:8;;;;2102:65;;;;;1978:27;;;324:6416:66;1978:27:8;;;;;;;;;1590:14:0;1978:27:8;;;:::i;:::-;;;1590:14:0;;;;;1978:27:8;;;;;;-1:-1:-1;1978:27:8;;;324:6416:66;;1590:14:0;324:6416:66;;1590:14:0;;;;5205:114:8;5256:44;;5290:8;;;;:::i;:::-;324:6416:66;;;;-1:-1:-1;;;;;324:6416:66;;;;;;;1590:14:0;;;;324:6416:66;;;;;;;;5256:44:8;;;;5205:114;;5165:22;;;;324:6416:66;5165:22:8;;;;;;;;;1590:14:0;5165:22:8;;;:::i;:::-;;;1590:14:0;;;;;5165:22:8;;;;;;;-1:-1:-1;5165:22:8;;;324:6416:66;;1590:14:0;324:6416:66;;1590:14:0;;;;5109:16:8;;;;;;4911:25;;;;;;;;;;;;:::i;:::-;;;324:6416:66;643:59:8;;;;;;;;-1:-1:-1;;;;;643:59:8;;;;;;;;;;:::i;:::-;;324:6416:66;643:59:8;;;;-1:-1:-1;;;;;643:59:8;;;;;;;;;:::i;:::-;;4911:25;;;643:59;324:6416:66;;;643:59:8;324:6416:66;;;4811:11:8;;;;;324:6416:66;4811:11:8;;:::i;:::-;324:6416:66;4811:11:8;;;;4547:255;4720:15;;;;;324:6416:66;;27635:8:3;324:6416:66;;;;;;;;;;4752:37:8;;324:6416:66;;;;;;4752:37:8;;;324:6416:66;4752:37:8;;;;;:::i;:::-;324:6416:66;4742:48:8;;324:6416:66;;;;;;;4713:78:8;:::o;11586:239::-;-1:-1:-1;;;;;586:55:66;;11652:12:8;324:6416:66;;11652:12:8;324:6416:66;;;11681:9:8;324:6416:66;;11681:9:8;324:6416:66;11707:10:8;324:6416:66;11645:19:8;11707:10;324:6416:66;;;;11586:239:8;324:6416:66;11645:19:8;11734:11;324:6416:66;586:55;324:6416;11762:25:8;324:6416:66;;11762:25:8;324:6416:66;;11804:14:8;324:6416:66;;:::i;:::-;;;;11586:239:8;:::o;324:6416:66:-;;;;;;;;;11645:19:8;11804:14;324:6416:66;11586:239:8:o;324:6416:66:-;11804:14:8;11645:19;324:6416:66;;;;;;;;;;;;;;;;11804:14:8;11645:19;324:6416:66;11645:19:8;324:6416:66;;;;11804:14:8;324:6416:66;;2270:110:1:o;324:6416:66:-;;;;;;;;;11707:10:8;11645:19;324:6416:66;;;;;;;;;;;;;;;;11645:19:8;324:6416:66;;11707:10:8;324:6416:66;;;2560:514:8;;;2695:1;2698:12;2707:3;2698:12;;;;3050:17;;;;2695:1;3050:17;2695:1;2560:514;:::o;2712:8::-;324:6416:66;2771:3:8;324:6416:66;2771:3:8;324:6416:66;;;;2824:12:8;;;324:6416:66;683:3;324:6416;;;;-1:-1:-1;;;;;324:6416:66;-1:-1:-1;;;;;;;;;;;2815:49:8;;;;324:6416:66;;-1:-1:-1;;;2815:49:8;;-1:-1:-1;;;;;324:6416:66;;;;2824:12:8;2815:49;;324:6416:66;12810:59:8;;;1590:14:0;;;12810:59:8;;;1590:14:0;;;;-1:-1:-1;324:6416:66;12810:59:8;324:6416:66;-1:-1:-1;;;;;;;;;;;;2815:49:8;;;;;;;;2712:8;2910:16;;;;:::i;:::-;2945:30;;;2712:8;2941:90;;;683:3:66;;2678:18:8;;2941:90;2995:21;;;683:3:66;2995:21:8;;:::o;2945:30::-;2957:17;;;;2945:30;;;2815:49;2695:1;2815:49;;;:::i;:::-;;;;2560:514;;;4551:10;2698:12;2707:3;2698:12;;;;3050:17;;;;4551:10;3050:17;4551:10;2560:514;:::o;2712:8::-;2824:12;;;324:6416:66;683:3;324:6416;;;-1:-1:-1;;;;;324:6416:66;-1:-1:-1;;;;;;;;;;;2815:49:8;;;;324:6416:66;;-1:-1:-1;;;2815:49:8;;-1:-1:-1;;;;;324:6416:66;;;;2824:12:8;2815:49;;324:6416:66;12810:59:8;;;1590:14:0;;;12810:59:8;;;1590:14:0;;;;-1:-1:-1;324:6416:66;12810:59:8;324:6416:66;-1:-1:-1;;;;;;;;;;;;2815:49:8;;;;;;;;2712:8;2910:16;;;;:::i;:::-;2945:30;;;2712:8;2941:90;;;683:3:66;;2678:18:8;;2945:30;2957:17;;;;2945:30;;;2815:49;4551:10;2815:49;;;:::i;:::-;;;","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testGetCapabilitiesAngle(bytes32,address,address)":"ccfab64a","testGetLimitsAngle()":"21079a92","testGetTokensAngle()":"a391347a","testSwapBuyIncreasingAngle()":"5ffccd93","testSwapFuzzAngleMint(uint256,bool)":"4f9eed55","testSwapFuzzAngleRedeem(uint256,bool)":"8bdd39a2","testSwapSellIncreasingAngle()":"33ed1a1c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"LimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"Unavailable\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"fsig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keysHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"SlotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"WARNING_UninitedSlot\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"pair\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"t0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"t1\",\"type\":\"address\"}],\"name\":\"testGetCapabilitiesAngle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetLimitsAngle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetTokensAngle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSwapBuyIncreasingAngle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isBuy\",\"type\":\"bool\"}],\"name\":\"testSwapFuzzAngleMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isBuy\",\"type\":\"bool\"}],\"name\":\"testSwapFuzzAngleRedeem\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSwapSellIncreasingAngle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"LimitExceeded(uint256)\":[{\"details\":\"The LimitExceeded error is thrown when a limit has been exceeded. E.g. the specified amount can't be traded safely.\"}],\"NotImplemented(string)\":[{\"details\":\"The NotImplemented error is thrown when a function is not implemented.\"}],\"Unavailable(string)\":[{\"details\":\"The Unavailable error is thrown when a pool or swap is not available for unexpected reason. E.g. it was paused due to a bug.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/AngleAdapter.t.sol\":\"AngleAdapterTest\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b\",\"dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54\",\"dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678\",\"dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdToml.sol\":{\"keccak256\":\"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d\",\"dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e\",\"dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a\",\"dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/angle/AngleAdapter.sol\":{\"keccak256\":\"0x51397895e82efaf858a0aa7fbc0629844ff4ac17c5f4f43d1c2ab13c1072b46c\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://05a3e26a8cb9d82385c6eea9dcd244a66c3f403a74536a0e687dcaf729d1b664\",\"dweb:/ipfs/QmWTnGs2huvac7YDFPMf95XZ4QnbGTKtnTHsBGJTDUcCD5\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/libraries/FractionMath.sol\":{\"keccak256\":\"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c\",\"dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr\"]},\"test/AngleAdapter.t.sol\":{\"keccak256\":\"0xe49a59a7a5837668f608f5152d90faa59b7ce67e3d9fa3cf76ca4a4589c22ddf\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://9fa20f8cf3ec692364c40bab8b3d84d1a3aa0d6e2e1aabdfb75936f0faaf9520\",\"dweb:/ipfs/QmXRbar9QFe64Pj7u7hQT5NxLfHc1r2SmtCqGCHpuSWoaq\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"type":"error","name":"LimitExceeded"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"NotImplemented"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"Unavailable"},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"bytes4","name":"fsig","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"keysHash","type":"bytes32","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"SlotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"WARNING_UninitedSlot","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[{"internalType":"bytes32","name":"pair","type":"bytes32"},{"internalType":"address","name":"t0","type":"address"},{"internalType":"address","name":"t1","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"testGetCapabilitiesAngle"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testGetLimitsAngle"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testGetTokensAngle"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testSwapBuyIncreasingAngle"},{"inputs":[{"internalType":"uint256","name":"specifiedAmount","type":"uint256"},{"internalType":"bool","name":"isBuy","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"testSwapFuzzAngleMint"},{"inputs":[{"internalType":"uint256","name":"specifiedAmount","type":"uint256"},{"internalType":"bool","name":"isBuy","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"testSwapFuzzAngleRedeem"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testSwapSellIncreasingAngle"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/AngleAdapter.t.sol":"AngleAdapterTest"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef","urls":["bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b","dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d","urls":["bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54","dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3","urls":["bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678","dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdToml.sol":{"keccak256":"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab","urls":["bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d","dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe","urls":["bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e","dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456","urls":["bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a","dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/angle/AngleAdapter.sol":{"keccak256":"0x51397895e82efaf858a0aa7fbc0629844ff4ac17c5f4f43d1c2ab13c1072b46c","urls":["bzz-raw://05a3e26a8cb9d82385c6eea9dcd244a66c3f403a74536a0e687dcaf729d1b664","dweb:/ipfs/QmWTnGs2huvac7YDFPMf95XZ4QnbGTKtnTHsBGJTDUcCD5"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/libraries/FractionMath.sol":{"keccak256":"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735","urls":["bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c","dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr"],"license":"AGPL-3.0-or-later"},"test/AngleAdapter.t.sol":{"keccak256":"0xe49a59a7a5837668f608f5152d90faa59b7ce67e3d9fa3cf76ca4a4589c22ddf","urls":["bzz-raw://9fa20f8cf3ec692364c40bab8b3d84d1a3aa0d6e2e1aabdfb75936f0faaf9520","dweb:/ipfs/QmXRbar9QFe64Pj7u7hQT5NxLfHc1r2SmtCqGCHpuSWoaq"],"license":"AGPL-3.0-or-later"}},"version":1},"id":66} \ No newline at end of file diff --git a/evm/out/BalancerCustomWrapHelpers.sol/BalancerCustomWrapHelpers.json b/evm/out/BalancerCustomWrapHelpers.sol/BalancerCustomWrapHelpers.json deleted file mode 100644 index 3a57958..0000000 --- a/evm/out/BalancerCustomWrapHelpers.sol/BalancerCustomWrapHelpers.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/balancer-v3/lib/BalancerCustomWrapHelpers.sol\":\"BalancerCustomWrapHelpers\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf\",\"dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/balancer-v3/lib/BalancerCustomWrapHelpers.sol\":{\"keccak256\":\"0x0f6b335d2add29c075bdf0b4d596dfdfc1d46fd69eafa009b0d9141256ff1a30\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://94a73f885d3a4cf266128dcaf9bd276d80e54ee4fb580741213c58165c844313\",\"dweb:/ipfs/QmX2tRhSy3rYdSzViMgM1X9ResBMALBA21jhN7gTE7g2P8\"]},\"src/balancer-v3/lib/BalancerERC20Helpers.sol\":{\"keccak256\":\"0x40f4571feb1755549e172a1157af748b724aeff1a62edf118a625afe9651bdbd\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d9a7bc8172d05945a6262455c12cb8296fbe906ae20018fe2e4646d1051a63ec\",\"dweb:/ipfs/QmTFG25A5NR49dGcRsUkxB4g9PiKcxapPVZGu6GLvMPgb8\"]},\"src/balancer-v3/lib/BalancerInterfaces.sol\":{\"keccak256\":\"0xff32e4111c1954881e6c503c53c3406ae5b225f54ce0edf633d357a77c5a56c8\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://06ef20a4676393fb14947b7abdc6d06c19ae2249cfb508044e95fbc957c0f701\",\"dweb:/ipfs/QmaCws32eR57w1BmEZDFaV3kbEbyzQta8MP8eSL2EZcvKZ\"]},\"src/balancer-v3/lib/BalancerStorage.sol\":{\"keccak256\":\"0x16d74f81b9a15386060130b04b8be2aec55fb4ec20233742db16d2d82d6d748b\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9455e4e3a1dd98165117502ce53e12ba5787b1d5646df9873b93b1cfe3e1136\",\"dweb:/ipfs/QmQ8VohFLoeGCVziyD3iYr1Gynf52gf9VgEoM97TnyRE48\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/libraries/CustomBytesAppend.sol\":{\"keccak256\":\"0x744de639d3f68d46b09e6f5f81ac003f92616f270007cc28778538894723276d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9278b5ff65908b5377e7b875151204ca6de587091c7bdd9f2f4f7d75b3d4d9e5\",\"dweb:/ipfs/QmPopj1aEWXtPg6CwKKAeEWBg1FBydPpQUM7VaFSvKvPU5\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/balancer-v3/lib/BalancerCustomWrapHelpers.sol":"BalancerCustomWrapHelpers"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol":{"keccak256":"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06","urls":["bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf","dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/balancer-v3/lib/BalancerCustomWrapHelpers.sol":{"keccak256":"0x0f6b335d2add29c075bdf0b4d596dfdfc1d46fd69eafa009b0d9141256ff1a30","urls":["bzz-raw://94a73f885d3a4cf266128dcaf9bd276d80e54ee4fb580741213c58165c844313","dweb:/ipfs/QmX2tRhSy3rYdSzViMgM1X9ResBMALBA21jhN7gTE7g2P8"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerERC20Helpers.sol":{"keccak256":"0x40f4571feb1755549e172a1157af748b724aeff1a62edf118a625afe9651bdbd","urls":["bzz-raw://d9a7bc8172d05945a6262455c12cb8296fbe906ae20018fe2e4646d1051a63ec","dweb:/ipfs/QmTFG25A5NR49dGcRsUkxB4g9PiKcxapPVZGu6GLvMPgb8"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerInterfaces.sol":{"keccak256":"0xff32e4111c1954881e6c503c53c3406ae5b225f54ce0edf633d357a77c5a56c8","urls":["bzz-raw://06ef20a4676393fb14947b7abdc6d06c19ae2249cfb508044e95fbc957c0f701","dweb:/ipfs/QmaCws32eR57w1BmEZDFaV3kbEbyzQta8MP8eSL2EZcvKZ"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerStorage.sol":{"keccak256":"0x16d74f81b9a15386060130b04b8be2aec55fb4ec20233742db16d2d82d6d748b","urls":["bzz-raw://e9455e4e3a1dd98165117502ce53e12ba5787b1d5646df9873b93b1cfe3e1136","dweb:/ipfs/QmQ8VohFLoeGCVziyD3iYr1Gynf52gf9VgEoM97TnyRE48"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/libraries/CustomBytesAppend.sol":{"keccak256":"0x744de639d3f68d46b09e6f5f81ac003f92616f270007cc28778538894723276d","urls":["bzz-raw://9278b5ff65908b5377e7b875151204ca6de587091c7bdd9f2f4f7d75b3d4d9e5","dweb:/ipfs/QmPopj1aEWXtPg6CwKKAeEWBg1FBydPpQUM7VaFSvKvPU5"],"license":"MIT"}},"version":1},"id":43} \ No newline at end of file diff --git a/evm/out/BalancerERC20Helpers.sol/BalancerERC20Helpers.json b/evm/out/BalancerERC20Helpers.sol/BalancerERC20Helpers.json deleted file mode 100644 index 9133a85..0000000 --- a/evm/out/BalancerERC20Helpers.sol/BalancerERC20Helpers.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/balancer-v3/lib/BalancerERC20Helpers.sol\":\"BalancerERC20Helpers\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf\",\"dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/balancer-v3/lib/BalancerERC20Helpers.sol\":{\"keccak256\":\"0x40f4571feb1755549e172a1157af748b724aeff1a62edf118a625afe9651bdbd\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d9a7bc8172d05945a6262455c12cb8296fbe906ae20018fe2e4646d1051a63ec\",\"dweb:/ipfs/QmTFG25A5NR49dGcRsUkxB4g9PiKcxapPVZGu6GLvMPgb8\"]},\"src/balancer-v3/lib/BalancerInterfaces.sol\":{\"keccak256\":\"0xff32e4111c1954881e6c503c53c3406ae5b225f54ce0edf633d357a77c5a56c8\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://06ef20a4676393fb14947b7abdc6d06c19ae2249cfb508044e95fbc957c0f701\",\"dweb:/ipfs/QmaCws32eR57w1BmEZDFaV3kbEbyzQta8MP8eSL2EZcvKZ\"]},\"src/balancer-v3/lib/BalancerStorage.sol\":{\"keccak256\":\"0x16d74f81b9a15386060130b04b8be2aec55fb4ec20233742db16d2d82d6d748b\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9455e4e3a1dd98165117502ce53e12ba5787b1d5646df9873b93b1cfe3e1136\",\"dweb:/ipfs/QmQ8VohFLoeGCVziyD3iYr1Gynf52gf9VgEoM97TnyRE48\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/libraries/CustomBytesAppend.sol\":{\"keccak256\":\"0x744de639d3f68d46b09e6f5f81ac003f92616f270007cc28778538894723276d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9278b5ff65908b5377e7b875151204ca6de587091c7bdd9f2f4f7d75b3d4d9e5\",\"dweb:/ipfs/QmPopj1aEWXtPg6CwKKAeEWBg1FBydPpQUM7VaFSvKvPU5\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/balancer-v3/lib/BalancerERC20Helpers.sol":"BalancerERC20Helpers"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol":{"keccak256":"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06","urls":["bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf","dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/balancer-v3/lib/BalancerERC20Helpers.sol":{"keccak256":"0x40f4571feb1755549e172a1157af748b724aeff1a62edf118a625afe9651bdbd","urls":["bzz-raw://d9a7bc8172d05945a6262455c12cb8296fbe906ae20018fe2e4646d1051a63ec","dweb:/ipfs/QmTFG25A5NR49dGcRsUkxB4g9PiKcxapPVZGu6GLvMPgb8"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerInterfaces.sol":{"keccak256":"0xff32e4111c1954881e6c503c53c3406ae5b225f54ce0edf633d357a77c5a56c8","urls":["bzz-raw://06ef20a4676393fb14947b7abdc6d06c19ae2249cfb508044e95fbc957c0f701","dweb:/ipfs/QmaCws32eR57w1BmEZDFaV3kbEbyzQta8MP8eSL2EZcvKZ"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerStorage.sol":{"keccak256":"0x16d74f81b9a15386060130b04b8be2aec55fb4ec20233742db16d2d82d6d748b","urls":["bzz-raw://e9455e4e3a1dd98165117502ce53e12ba5787b1d5646df9873b93b1cfe3e1136","dweb:/ipfs/QmQ8VohFLoeGCVziyD3iYr1Gynf52gf9VgEoM97TnyRE48"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/libraries/CustomBytesAppend.sol":{"keccak256":"0x744de639d3f68d46b09e6f5f81ac003f92616f270007cc28778538894723276d","urls":["bzz-raw://9278b5ff65908b5377e7b875151204ca6de587091c7bdd9f2f4f7d75b3d4d9e5","dweb:/ipfs/QmPopj1aEWXtPg6CwKKAeEWBg1FBydPpQUM7VaFSvKvPU5"],"license":"MIT"}},"version":1},"id":44} \ No newline at end of file diff --git a/evm/out/BalancerERC4626Helpers.sol/BalancerERC4626Helpers.json b/evm/out/BalancerERC4626Helpers.sol/BalancerERC4626Helpers.json deleted file mode 100644 index 64dc51c..0000000 --- a/evm/out/BalancerERC4626Helpers.sol/BalancerERC4626Helpers.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/balancer-v3/lib/BalancerERC4626Helpers.sol\":\"BalancerERC4626Helpers\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf\",\"dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/balancer-v3/lib/BalancerCustomWrapHelpers.sol\":{\"keccak256\":\"0x0f6b335d2add29c075bdf0b4d596dfdfc1d46fd69eafa009b0d9141256ff1a30\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://94a73f885d3a4cf266128dcaf9bd276d80e54ee4fb580741213c58165c844313\",\"dweb:/ipfs/QmX2tRhSy3rYdSzViMgM1X9ResBMALBA21jhN7gTE7g2P8\"]},\"src/balancer-v3/lib/BalancerERC20Helpers.sol\":{\"keccak256\":\"0x40f4571feb1755549e172a1157af748b724aeff1a62edf118a625afe9651bdbd\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d9a7bc8172d05945a6262455c12cb8296fbe906ae20018fe2e4646d1051a63ec\",\"dweb:/ipfs/QmTFG25A5NR49dGcRsUkxB4g9PiKcxapPVZGu6GLvMPgb8\"]},\"src/balancer-v3/lib/BalancerERC4626Helpers.sol\":{\"keccak256\":\"0xf19e1a229b1cb569617e28ba1bc8d1b2cfb403d3164018610040ab439e65c211\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://2493d7748eedfc1ad1bed4bd6b16ede7f5e1b69f1ecf4176851a857f39b018ea\",\"dweb:/ipfs/QmeogRJKPvPGBTdJvciejWGMWy1tik8e817uPcp5Dp2Wn7\"]},\"src/balancer-v3/lib/BalancerInterfaces.sol\":{\"keccak256\":\"0xff32e4111c1954881e6c503c53c3406ae5b225f54ce0edf633d357a77c5a56c8\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://06ef20a4676393fb14947b7abdc6d06c19ae2249cfb508044e95fbc957c0f701\",\"dweb:/ipfs/QmaCws32eR57w1BmEZDFaV3kbEbyzQta8MP8eSL2EZcvKZ\"]},\"src/balancer-v3/lib/BalancerStorage.sol\":{\"keccak256\":\"0x16d74f81b9a15386060130b04b8be2aec55fb4ec20233742db16d2d82d6d748b\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9455e4e3a1dd98165117502ce53e12ba5787b1d5646df9873b93b1cfe3e1136\",\"dweb:/ipfs/QmQ8VohFLoeGCVziyD3iYr1Gynf52gf9VgEoM97TnyRE48\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/libraries/CustomBytesAppend.sol\":{\"keccak256\":\"0x744de639d3f68d46b09e6f5f81ac003f92616f270007cc28778538894723276d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9278b5ff65908b5377e7b875151204ca6de587091c7bdd9f2f4f7d75b3d4d9e5\",\"dweb:/ipfs/QmPopj1aEWXtPg6CwKKAeEWBg1FBydPpQUM7VaFSvKvPU5\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/balancer-v3/lib/BalancerERC4626Helpers.sol":"BalancerERC4626Helpers"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol":{"keccak256":"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06","urls":["bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf","dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/balancer-v3/lib/BalancerCustomWrapHelpers.sol":{"keccak256":"0x0f6b335d2add29c075bdf0b4d596dfdfc1d46fd69eafa009b0d9141256ff1a30","urls":["bzz-raw://94a73f885d3a4cf266128dcaf9bd276d80e54ee4fb580741213c58165c844313","dweb:/ipfs/QmX2tRhSy3rYdSzViMgM1X9ResBMALBA21jhN7gTE7g2P8"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerERC20Helpers.sol":{"keccak256":"0x40f4571feb1755549e172a1157af748b724aeff1a62edf118a625afe9651bdbd","urls":["bzz-raw://d9a7bc8172d05945a6262455c12cb8296fbe906ae20018fe2e4646d1051a63ec","dweb:/ipfs/QmTFG25A5NR49dGcRsUkxB4g9PiKcxapPVZGu6GLvMPgb8"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerERC4626Helpers.sol":{"keccak256":"0xf19e1a229b1cb569617e28ba1bc8d1b2cfb403d3164018610040ab439e65c211","urls":["bzz-raw://2493d7748eedfc1ad1bed4bd6b16ede7f5e1b69f1ecf4176851a857f39b018ea","dweb:/ipfs/QmeogRJKPvPGBTdJvciejWGMWy1tik8e817uPcp5Dp2Wn7"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerInterfaces.sol":{"keccak256":"0xff32e4111c1954881e6c503c53c3406ae5b225f54ce0edf633d357a77c5a56c8","urls":["bzz-raw://06ef20a4676393fb14947b7abdc6d06c19ae2249cfb508044e95fbc957c0f701","dweb:/ipfs/QmaCws32eR57w1BmEZDFaV3kbEbyzQta8MP8eSL2EZcvKZ"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerStorage.sol":{"keccak256":"0x16d74f81b9a15386060130b04b8be2aec55fb4ec20233742db16d2d82d6d748b","urls":["bzz-raw://e9455e4e3a1dd98165117502ce53e12ba5787b1d5646df9873b93b1cfe3e1136","dweb:/ipfs/QmQ8VohFLoeGCVziyD3iYr1Gynf52gf9VgEoM97TnyRE48"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/libraries/CustomBytesAppend.sol":{"keccak256":"0x744de639d3f68d46b09e6f5f81ac003f92616f270007cc28778538894723276d","urls":["bzz-raw://9278b5ff65908b5377e7b875151204ca6de587091c7bdd9f2f4f7d75b3d4d9e5","dweb:/ipfs/QmPopj1aEWXtPg6CwKKAeEWBg1FBydPpQUM7VaFSvKvPU5"],"license":"MIT"}},"version":1},"id":45} \ No newline at end of file diff --git a/evm/out/BalancerInterfaces.sol/IBatchRouter.json b/evm/out/BalancerInterfaces.sol/IBatchRouter.json deleted file mode 100644 index 0290de3..0000000 --- a/evm/out/BalancerInterfaces.sol/IBatchRouter.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"querySwapExactIn","inputs":[{"name":"paths","type":"tuple[]","internalType":"struct IBatchRouter.SwapPathExactAmountIn[]","components":[{"name":"tokenIn","type":"address","internalType":"contract IERC20"},{"name":"steps","type":"tuple[]","internalType":"struct IBatchRouter.SwapPathStep[]","components":[{"name":"pool","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"contract IERC20"},{"name":"isBuffer","type":"bool","internalType":"bool"}]},{"name":"exactAmountIn","type":"uint256","internalType":"uint256"},{"name":"minAmountOut","type":"uint256","internalType":"uint256"}]},{"name":"sender","type":"address","internalType":"address"},{"name":"userData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"pathAmountsOut","type":"uint256[]","internalType":"uint256[]"},{"name":"tokensOut","type":"address[]","internalType":"address[]"},{"name":"amountsOut","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"querySwapExactOut","inputs":[{"name":"paths","type":"tuple[]","internalType":"struct IBatchRouter.SwapPathExactAmountOut[]","components":[{"name":"tokenIn","type":"address","internalType":"contract IERC20"},{"name":"steps","type":"tuple[]","internalType":"struct IBatchRouter.SwapPathStep[]","components":[{"name":"pool","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"contract IERC20"},{"name":"isBuffer","type":"bool","internalType":"bool"}]},{"name":"maxAmountIn","type":"uint256","internalType":"uint256"},{"name":"exactAmountOut","type":"uint256","internalType":"uint256"}]},{"name":"sender","type":"address","internalType":"address"},{"name":"userData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"pathAmountsIn","type":"uint256[]","internalType":"uint256[]"},{"name":"tokensIn","type":"address[]","internalType":"address[]"},{"name":"amountsIn","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapExactIn","inputs":[{"name":"paths","type":"tuple[]","internalType":"struct IBatchRouter.SwapPathExactAmountIn[]","components":[{"name":"tokenIn","type":"address","internalType":"contract IERC20"},{"name":"steps","type":"tuple[]","internalType":"struct IBatchRouter.SwapPathStep[]","components":[{"name":"pool","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"contract IERC20"},{"name":"isBuffer","type":"bool","internalType":"bool"}]},{"name":"exactAmountIn","type":"uint256","internalType":"uint256"},{"name":"minAmountOut","type":"uint256","internalType":"uint256"}]},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"wethIsEth","type":"bool","internalType":"bool"},{"name":"userData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"pathAmountsOut","type":"uint256[]","internalType":"uint256[]"},{"name":"tokensOut","type":"address[]","internalType":"address[]"},{"name":"amountsOut","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"payable"},{"type":"function","name":"swapExactOut","inputs":[{"name":"paths","type":"tuple[]","internalType":"struct IBatchRouter.SwapPathExactAmountOut[]","components":[{"name":"tokenIn","type":"address","internalType":"contract IERC20"},{"name":"steps","type":"tuple[]","internalType":"struct IBatchRouter.SwapPathStep[]","components":[{"name":"pool","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"contract IERC20"},{"name":"isBuffer","type":"bool","internalType":"bool"}]},{"name":"maxAmountIn","type":"uint256","internalType":"uint256"},{"name":"exactAmountOut","type":"uint256","internalType":"uint256"}]},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"wethIsEth","type":"bool","internalType":"bool"},{"name":"userData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"pathAmountsIn","type":"uint256[]","internalType":"uint256[]"},{"name":"tokensIn","type":"address[]","internalType":"address[]"},{"name":"amountsIn","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"payable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"querySwapExactIn((address,(address,address,bool)[],uint256,uint256)[],address,bytes)":"e3b5dff4","querySwapExactOut((address,(address,address,bool)[],uint256,uint256)[],address,bytes)":"2950286e","swapExactIn((address,(address,address,bool)[],uint256,uint256)[],uint256,bool,bytes)":"286f580d","swapExactOut((address,(address,address,bool)[],uint256,uint256)[],uint256,bool,bytes)":"8eb1b65e"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isBuffer\",\"type\":\"bool\"}],\"internalType\":\"struct IBatchRouter.SwapPathStep[]\",\"name\":\"steps\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"internalType\":\"struct IBatchRouter.SwapPathExactAmountIn[]\",\"name\":\"paths\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"querySwapExactIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pathAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"tokensOut\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isBuffer\",\"type\":\"bool\"}],\"internalType\":\"struct IBatchRouter.SwapPathStep[]\",\"name\":\"steps\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountOut\",\"type\":\"uint256\"}],\"internalType\":\"struct IBatchRouter.SwapPathExactAmountOut[]\",\"name\":\"paths\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"querySwapExactOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pathAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"tokensIn\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isBuffer\",\"type\":\"bool\"}],\"internalType\":\"struct IBatchRouter.SwapPathStep[]\",\"name\":\"steps\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"internalType\":\"struct IBatchRouter.SwapPathExactAmountIn[]\",\"name\":\"paths\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"swapExactIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pathAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"tokensOut\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isBuffer\",\"type\":\"bool\"}],\"internalType\":\"struct IBatchRouter.SwapPathStep[]\",\"name\":\"steps\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountOut\",\"type\":\"uint256\"}],\"internalType\":\"struct IBatchRouter.SwapPathExactAmountOut[]\",\"name\":\"paths\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"swapExactOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pathAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"tokensIn\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/balancer-v3/lib/BalancerInterfaces.sol\":\"IBatchRouter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf\",\"dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/balancer-v3/lib/BalancerInterfaces.sol\":{\"keccak256\":\"0xff32e4111c1954881e6c503c53c3406ae5b225f54ce0edf633d357a77c5a56c8\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://06ef20a4676393fb14947b7abdc6d06c19ae2249cfb508044e95fbc957c0f701\",\"dweb:/ipfs/QmaCws32eR57w1BmEZDFaV3kbEbyzQta8MP8eSL2EZcvKZ\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/libraries/CustomBytesAppend.sol\":{\"keccak256\":\"0x744de639d3f68d46b09e6f5f81ac003f92616f270007cc28778538894723276d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9278b5ff65908b5377e7b875151204ca6de587091c7bdd9f2f4f7d75b3d4d9e5\",\"dweb:/ipfs/QmPopj1aEWXtPg6CwKKAeEWBg1FBydPpQUM7VaFSvKvPU5\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"struct IBatchRouter.SwapPathExactAmountIn[]","name":"paths","type":"tuple[]","components":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"struct IBatchRouter.SwapPathStep[]","name":"steps","type":"tuple[]","components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"bool","name":"isBuffer","type":"bool"}]},{"internalType":"uint256","name":"exactAmountIn","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}]},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"querySwapExactIn","outputs":[{"internalType":"uint256[]","name":"pathAmountsOut","type":"uint256[]"},{"internalType":"address[]","name":"tokensOut","type":"address[]"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}]},{"inputs":[{"internalType":"struct IBatchRouter.SwapPathExactAmountOut[]","name":"paths","type":"tuple[]","components":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"struct IBatchRouter.SwapPathStep[]","name":"steps","type":"tuple[]","components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"bool","name":"isBuffer","type":"bool"}]},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"uint256","name":"exactAmountOut","type":"uint256"}]},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"querySwapExactOut","outputs":[{"internalType":"uint256[]","name":"pathAmountsIn","type":"uint256[]"},{"internalType":"address[]","name":"tokensIn","type":"address[]"},{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}]},{"inputs":[{"internalType":"struct IBatchRouter.SwapPathExactAmountIn[]","name":"paths","type":"tuple[]","components":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"struct IBatchRouter.SwapPathStep[]","name":"steps","type":"tuple[]","components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"bool","name":"isBuffer","type":"bool"}]},{"internalType":"uint256","name":"exactAmountIn","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}]},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"swapExactIn","outputs":[{"internalType":"uint256[]","name":"pathAmountsOut","type":"uint256[]"},{"internalType":"address[]","name":"tokensOut","type":"address[]"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}]},{"inputs":[{"internalType":"struct IBatchRouter.SwapPathExactAmountOut[]","name":"paths","type":"tuple[]","components":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"struct IBatchRouter.SwapPathStep[]","name":"steps","type":"tuple[]","components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"bool","name":"isBuffer","type":"bool"}]},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"uint256","name":"exactAmountOut","type":"uint256"}]},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"swapExactOut","outputs":[{"internalType":"uint256[]","name":"pathAmountsIn","type":"uint256[]"},{"internalType":"address[]","name":"tokensIn","type":"address[]"},{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/balancer-v3/lib/BalancerInterfaces.sol":"IBatchRouter"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol":{"keccak256":"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06","urls":["bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf","dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/balancer-v3/lib/BalancerInterfaces.sol":{"keccak256":"0xff32e4111c1954881e6c503c53c3406ae5b225f54ce0edf633d357a77c5a56c8","urls":["bzz-raw://06ef20a4676393fb14947b7abdc6d06c19ae2249cfb508044e95fbc957c0f701","dweb:/ipfs/QmaCws32eR57w1BmEZDFaV3kbEbyzQta8MP8eSL2EZcvKZ"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/libraries/CustomBytesAppend.sol":{"keccak256":"0x744de639d3f68d46b09e6f5f81ac003f92616f270007cc28778538894723276d","urls":["bzz-raw://9278b5ff65908b5377e7b875151204ca6de587091c7bdd9f2f4f7d75b3d4d9e5","dweb:/ipfs/QmPopj1aEWXtPg6CwKKAeEWBg1FBydPpQUM7VaFSvKvPU5"],"license":"MIT"}},"version":1},"id":46} \ No newline at end of file diff --git a/evm/out/BalancerInterfaces.sol/IPermit2.json b/evm/out/BalancerInterfaces.sol/IPermit2.json deleted file mode 100644 index 7e7e5ce..0000000 --- a/evm/out/BalancerInterfaces.sol/IPermit2.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"approve","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint160","internalType":"uint160"},{"name":"expiration","type":"uint48","internalType":"uint48"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,address,uint160,uint48)":"87517c45"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/balancer-v3/lib/BalancerInterfaces.sol\":\"IPermit2\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf\",\"dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/balancer-v3/lib/BalancerInterfaces.sol\":{\"keccak256\":\"0xff32e4111c1954881e6c503c53c3406ae5b225f54ce0edf633d357a77c5a56c8\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://06ef20a4676393fb14947b7abdc6d06c19ae2249cfb508044e95fbc957c0f701\",\"dweb:/ipfs/QmaCws32eR57w1BmEZDFaV3kbEbyzQta8MP8eSL2EZcvKZ\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/libraries/CustomBytesAppend.sol\":{\"keccak256\":\"0x744de639d3f68d46b09e6f5f81ac003f92616f270007cc28778538894723276d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9278b5ff65908b5377e7b875151204ca6de587091c7bdd9f2f4f7d75b3d4d9e5\",\"dweb:/ipfs/QmPopj1aEWXtPg6CwKKAeEWBg1FBydPpQUM7VaFSvKvPU5\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"}],"stateMutability":"nonpayable","type":"function","name":"approve"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/balancer-v3/lib/BalancerInterfaces.sol":"IPermit2"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol":{"keccak256":"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06","urls":["bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf","dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/balancer-v3/lib/BalancerInterfaces.sol":{"keccak256":"0xff32e4111c1954881e6c503c53c3406ae5b225f54ce0edf633d357a77c5a56c8","urls":["bzz-raw://06ef20a4676393fb14947b7abdc6d06c19ae2249cfb508044e95fbc957c0f701","dweb:/ipfs/QmaCws32eR57w1BmEZDFaV3kbEbyzQta8MP8eSL2EZcvKZ"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/libraries/CustomBytesAppend.sol":{"keccak256":"0x744de639d3f68d46b09e6f5f81ac003f92616f270007cc28778538894723276d","urls":["bzz-raw://9278b5ff65908b5377e7b875151204ca6de587091c7bdd9f2f4f7d75b3d4d9e5","dweb:/ipfs/QmPopj1aEWXtPg6CwKKAeEWBg1FBydPpQUM7VaFSvKvPU5"],"license":"MIT"}},"version":1},"id":46} \ No newline at end of file diff --git a/evm/out/BalancerInterfaces.sol/IRateProvider.json b/evm/out/BalancerInterfaces.sol/IRateProvider.json deleted file mode 100644 index 32db275..0000000 --- a/evm/out/BalancerInterfaces.sol/IRateProvider.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"getRate","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"getRate()":"679aefce"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getRate()\":{\"details\":\"Returns an 18 decimal fixed point number that is the exchange rate of the token to some other underlying token. The meaning of this rate depends on the context.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/balancer-v3/lib/BalancerInterfaces.sol\":\"IRateProvider\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf\",\"dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/balancer-v3/lib/BalancerInterfaces.sol\":{\"keccak256\":\"0xff32e4111c1954881e6c503c53c3406ae5b225f54ce0edf633d357a77c5a56c8\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://06ef20a4676393fb14947b7abdc6d06c19ae2249cfb508044e95fbc957c0f701\",\"dweb:/ipfs/QmaCws32eR57w1BmEZDFaV3kbEbyzQta8MP8eSL2EZcvKZ\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/libraries/CustomBytesAppend.sol\":{\"keccak256\":\"0x744de639d3f68d46b09e6f5f81ac003f92616f270007cc28778538894723276d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9278b5ff65908b5377e7b875151204ca6de587091c7bdd9f2f4f7d75b3d4d9e5\",\"dweb:/ipfs/QmPopj1aEWXtPg6CwKKAeEWBg1FBydPpQUM7VaFSvKvPU5\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"getRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"getRate()":{"details":"Returns an 18 decimal fixed point number that is the exchange rate of the token to some other underlying token. The meaning of this rate depends on the context."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/balancer-v3/lib/BalancerInterfaces.sol":"IRateProvider"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol":{"keccak256":"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06","urls":["bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf","dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/balancer-v3/lib/BalancerInterfaces.sol":{"keccak256":"0xff32e4111c1954881e6c503c53c3406ae5b225f54ce0edf633d357a77c5a56c8","urls":["bzz-raw://06ef20a4676393fb14947b7abdc6d06c19ae2249cfb508044e95fbc957c0f701","dweb:/ipfs/QmaCws32eR57w1BmEZDFaV3kbEbyzQta8MP8eSL2EZcvKZ"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/libraries/CustomBytesAppend.sol":{"keccak256":"0x744de639d3f68d46b09e6f5f81ac003f92616f270007cc28778538894723276d","urls":["bzz-raw://9278b5ff65908b5377e7b875151204ca6de587091c7bdd9f2f4f7d75b3d4d9e5","dweb:/ipfs/QmPopj1aEWXtPg6CwKKAeEWBg1FBydPpQUM7VaFSvKvPU5"],"license":"MIT"}},"version":1},"id":46} \ No newline at end of file diff --git a/evm/out/BalancerInterfaces.sol/IVault.json b/evm/out/BalancerInterfaces.sol/IVault.json deleted file mode 100644 index 8d6b68b..0000000 --- a/evm/out/BalancerInterfaces.sol/IVault.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"erc4626BufferWrapOrUnwrap","inputs":[{"name":"params","type":"tuple","internalType":"struct IVault.BufferWrapOrUnwrapParams","components":[{"name":"kind","type":"uint8","internalType":"enum IVault.SwapKind"},{"name":"direction","type":"uint8","internalType":"enum IVault.WrappingDirection"},{"name":"wrappedToken","type":"address","internalType":"contract IERC4626"},{"name":"amountGivenRaw","type":"uint256","internalType":"uint256"},{"name":"limitRaw","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"amountCalculatedRaw","type":"uint256","internalType":"uint256"},{"name":"amountInRaw","type":"uint256","internalType":"uint256"},{"name":"amountOutRaw","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"getPoolData","inputs":[{"name":"pool","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IVault.PoolData","components":[{"name":"poolConfigBits","type":"bytes32","internalType":"IVault.PoolConfigBits"},{"name":"tokens","type":"address[]","internalType":"contract IERC20[]"},{"name":"tokenInfo","type":"tuple[]","internalType":"struct IVault.TokenInfo[]","components":[{"name":"tokenType","type":"uint8","internalType":"enum IVault.TokenType"},{"name":"rateProvider","type":"address","internalType":"contract IRateProvider"},{"name":"paysYieldFees","type":"bool","internalType":"bool"}]},{"name":"balancesRaw","type":"uint256[]","internalType":"uint256[]"},{"name":"balancesLiveScaled18","type":"uint256[]","internalType":"uint256[]"},{"name":"tokenRates","type":"uint256[]","internalType":"uint256[]"},{"name":"decimalScalingFactors","type":"uint256[]","internalType":"uint256[]"}]}],"stateMutability":"view"},{"type":"function","name":"getPoolTokenCountAndIndexOfToken","inputs":[{"name":"pool","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"contract IERC20"}],"outputs":[{"name":"tokenCount","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPoolTokenInfo","inputs":[{"name":"pool","type":"address","internalType":"address"}],"outputs":[{"name":"tokens","type":"address[]","internalType":"contract IERC20[]"},{"name":"tokenInfo","type":"tuple[]","internalType":"struct IVault.TokenInfo[]","components":[{"name":"tokenType","type":"uint8","internalType":"enum IVault.TokenType"},{"name":"rateProvider","type":"address","internalType":"contract IRateProvider"},{"name":"paysYieldFees","type":"bool","internalType":"bool"}]},{"name":"balancesRaw","type":"uint256[]","internalType":"uint256[]"},{"name":"lastBalancesLiveScaled18","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getPoolTokens","inputs":[{"name":"pool","type":"address","internalType":"address"}],"outputs":[{"name":"tokens","type":"address[]","internalType":"contract IERC20[]"}],"stateMutability":"view"},{"type":"function","name":"swap","inputs":[{"name":"vaultSwapParams","type":"tuple","internalType":"struct IVault.VaultSwapParams","components":[{"name":"kind","type":"uint8","internalType":"enum IVault.SwapKind"},{"name":"pool","type":"address","internalType":"address"},{"name":"tokenIn","type":"address","internalType":"contract IERC20"},{"name":"tokenOut","type":"address","internalType":"contract IERC20"},{"name":"amountGivenRaw","type":"uint256","internalType":"uint256"},{"name":"limitRaw","type":"uint256","internalType":"uint256"},{"name":"userData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"amountCalculatedRaw","type":"uint256","internalType":"uint256"},{"name":"amountInRaw","type":"uint256","internalType":"uint256"},{"name":"amountOutRaw","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"erc4626BufferWrapOrUnwrap((uint8,uint8,address,uint256,uint256))":"43583be5","getPoolData(address)":"13d21cdf","getPoolTokenCountAndIndexOfToken(address,address)":"c9c1661b","getPoolTokenInfo(address)":"67e0e076","getPoolTokens(address)":"ca4f2803","swap((uint8,address,address,address,uint256,uint256,bytes))":"2bfb780c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"enum IVault.WrappingDirection\",\"name\":\"direction\",\"type\":\"uint8\"},{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitRaw\",\"type\":\"uint256\"}],\"internalType\":\"struct IVault.BufferWrapOrUnwrapParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"erc4626BufferWrapOrUnwrap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCalculatedRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutRaw\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolData\",\"outputs\":[{\"components\":[{\"internalType\":\"IVault.PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum IVault.TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.TokenInfo[]\",\"name\":\"tokenInfo\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[]\",\"name\":\"balancesRaw\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct IVault.PoolData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getPoolTokenCountAndIndexOfToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolTokenInfo\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum IVault.TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.TokenInfo[]\",\"name\":\"tokenInfo\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[]\",\"name\":\"balancesRaw\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"lastBalancesLiveScaled18\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolTokens\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitRaw\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.VaultSwapParams\",\"name\":\"vaultSwapParams\",\"type\":\"tuple\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCalculatedRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutRaw\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/balancer-v3/lib/BalancerInterfaces.sol\":\"IVault\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf\",\"dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/balancer-v3/lib/BalancerInterfaces.sol\":{\"keccak256\":\"0xff32e4111c1954881e6c503c53c3406ae5b225f54ce0edf633d357a77c5a56c8\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://06ef20a4676393fb14947b7abdc6d06c19ae2249cfb508044e95fbc957c0f701\",\"dweb:/ipfs/QmaCws32eR57w1BmEZDFaV3kbEbyzQta8MP8eSL2EZcvKZ\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/libraries/CustomBytesAppend.sol\":{\"keccak256\":\"0x744de639d3f68d46b09e6f5f81ac003f92616f270007cc28778538894723276d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9278b5ff65908b5377e7b875151204ca6de587091c7bdd9f2f4f7d75b3d4d9e5\",\"dweb:/ipfs/QmPopj1aEWXtPg6CwKKAeEWBg1FBydPpQUM7VaFSvKvPU5\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"struct IVault.BufferWrapOrUnwrapParams","name":"params","type":"tuple","components":[{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"internalType":"enum IVault.WrappingDirection","name":"direction","type":"uint8"},{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"amountGivenRaw","type":"uint256"},{"internalType":"uint256","name":"limitRaw","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"erc4626BufferWrapOrUnwrap","outputs":[{"internalType":"uint256","name":"amountCalculatedRaw","type":"uint256"},{"internalType":"uint256","name":"amountInRaw","type":"uint256"},{"internalType":"uint256","name":"amountOutRaw","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"stateMutability":"view","type":"function","name":"getPoolData","outputs":[{"internalType":"struct IVault.PoolData","name":"","type":"tuple","components":[{"internalType":"IVault.PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"struct IVault.TokenInfo[]","name":"tokenInfo","type":"tuple[]","components":[{"internalType":"enum IVault.TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}]},{"internalType":"uint256[]","name":"balancesRaw","type":"uint256[]"},{"internalType":"uint256[]","name":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}]}]},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"getPoolTokenCountAndIndexOfToken","outputs":[{"internalType":"uint256","name":"tokenCount","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"stateMutability":"view","type":"function","name":"getPoolTokenInfo","outputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"struct IVault.TokenInfo[]","name":"tokenInfo","type":"tuple[]","components":[{"internalType":"enum IVault.TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}]},{"internalType":"uint256[]","name":"balancesRaw","type":"uint256[]"},{"internalType":"uint256[]","name":"lastBalancesLiveScaled18","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"stateMutability":"view","type":"function","name":"getPoolTokens","outputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}]},{"inputs":[{"internalType":"struct IVault.VaultSwapParams","name":"vaultSwapParams","type":"tuple","components":[{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountGivenRaw","type":"uint256"},{"internalType":"uint256","name":"limitRaw","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"swap","outputs":[{"internalType":"uint256","name":"amountCalculatedRaw","type":"uint256"},{"internalType":"uint256","name":"amountInRaw","type":"uint256"},{"internalType":"uint256","name":"amountOutRaw","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/balancer-v3/lib/BalancerInterfaces.sol":"IVault"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol":{"keccak256":"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06","urls":["bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf","dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/balancer-v3/lib/BalancerInterfaces.sol":{"keccak256":"0xff32e4111c1954881e6c503c53c3406ae5b225f54ce0edf633d357a77c5a56c8","urls":["bzz-raw://06ef20a4676393fb14947b7abdc6d06c19ae2249cfb508044e95fbc957c0f701","dweb:/ipfs/QmaCws32eR57w1BmEZDFaV3kbEbyzQta8MP8eSL2EZcvKZ"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/libraries/CustomBytesAppend.sol":{"keccak256":"0x744de639d3f68d46b09e6f5f81ac003f92616f270007cc28778538894723276d","urls":["bzz-raw://9278b5ff65908b5377e7b875151204ca6de587091c7bdd9f2f4f7d75b3d4d9e5","dweb:/ipfs/QmPopj1aEWXtPg6CwKKAeEWBg1FBydPpQUM7VaFSvKvPU5"],"license":"MIT"}},"version":1},"id":46} \ No newline at end of file diff --git a/evm/out/BalancerStorage.sol/BalancerStorage.json b/evm/out/BalancerStorage.sol/BalancerStorage.json deleted file mode 100644 index 47a2096..0000000 --- a/evm/out/BalancerStorage.sol/BalancerStorage.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Balancer V3 Storage\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/balancer-v3/lib/BalancerStorage.sol\":\"BalancerStorage\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf\",\"dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/balancer-v3/lib/BalancerInterfaces.sol\":{\"keccak256\":\"0xff32e4111c1954881e6c503c53c3406ae5b225f54ce0edf633d357a77c5a56c8\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://06ef20a4676393fb14947b7abdc6d06c19ae2249cfb508044e95fbc957c0f701\",\"dweb:/ipfs/QmaCws32eR57w1BmEZDFaV3kbEbyzQta8MP8eSL2EZcvKZ\"]},\"src/balancer-v3/lib/BalancerStorage.sol\":{\"keccak256\":\"0x16d74f81b9a15386060130b04b8be2aec55fb4ec20233742db16d2d82d6d748b\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9455e4e3a1dd98165117502ce53e12ba5787b1d5646df9873b93b1cfe3e1136\",\"dweb:/ipfs/QmQ8VohFLoeGCVziyD3iYr1Gynf52gf9VgEoM97TnyRE48\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/libraries/CustomBytesAppend.sol\":{\"keccak256\":\"0x744de639d3f68d46b09e6f5f81ac003f92616f270007cc28778538894723276d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9278b5ff65908b5377e7b875151204ca6de587091c7bdd9f2f4f7d75b3d4d9e5\",\"dweb:/ipfs/QmPopj1aEWXtPg6CwKKAeEWBg1FBydPpQUM7VaFSvKvPU5\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/balancer-v3/lib/BalancerStorage.sol":"BalancerStorage"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol":{"keccak256":"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06","urls":["bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf","dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/balancer-v3/lib/BalancerInterfaces.sol":{"keccak256":"0xff32e4111c1954881e6c503c53c3406ae5b225f54ce0edf633d357a77c5a56c8","urls":["bzz-raw://06ef20a4676393fb14947b7abdc6d06c19ae2249cfb508044e95fbc957c0f701","dweb:/ipfs/QmaCws32eR57w1BmEZDFaV3kbEbyzQta8MP8eSL2EZcvKZ"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerStorage.sol":{"keccak256":"0x16d74f81b9a15386060130b04b8be2aec55fb4ec20233742db16d2d82d6d748b","urls":["bzz-raw://e9455e4e3a1dd98165117502ce53e12ba5787b1d5646df9873b93b1cfe3e1136","dweb:/ipfs/QmQ8VohFLoeGCVziyD3iYr1Gynf52gf9VgEoM97TnyRE48"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/libraries/CustomBytesAppend.sol":{"keccak256":"0x744de639d3f68d46b09e6f5f81ac003f92616f270007cc28778538894723276d","urls":["bzz-raw://9278b5ff65908b5377e7b875151204ca6de587091c7bdd9f2f4f7d75b3d4d9e5","dweb:/ipfs/QmPopj1aEWXtPg6CwKKAeEWBg1FBydPpQUM7VaFSvKvPU5"],"license":"MIT"}},"version":1},"id":47} \ No newline at end of file diff --git a/evm/out/BalancerSwapHelpers.sol/BalancerSwapHelpers.json b/evm/out/BalancerSwapHelpers.sol/BalancerSwapHelpers.json deleted file mode 100644 index 053c582..0000000 --- a/evm/out/BalancerSwapHelpers.sol/BalancerSwapHelpers.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"getCapabilities","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"}],"outputs":[{"name":"capabilities","type":"uint8[]","internalType":"enum ISwapAdapterTypes.Capability[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"getLimits","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"}],"outputs":[{"name":"limits","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"getPoolIds","inputs":[{"name":"offset","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"ids","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"getTokens","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"price","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"},{"name":"specifiedAmounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"prices","type":"tuple[]","internalType":"struct ISwapAdapterTypes.Fraction[]","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"swap","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"},{"name":"side","type":"uint8","internalType":"enum ISwapAdapterTypes.OrderSide"},{"name":"specifiedAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"trade","type":"tuple","internalType":"struct ISwapAdapterTypes.Trade","components":[{"name":"calculatedAmount","type":"uint256","internalType":"uint256"},{"name":"gasUsed","type":"uint256","internalType":"uint256"},{"name":"price","type":"tuple","internalType":"struct ISwapAdapterTypes.Fraction","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"nonpayable"},{"type":"error","name":"LimitExceeded","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotImplemented","inputs":[{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"Unavailable","inputs":[{"name":"reason","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"getCapabilities(bytes32,address,address)":"48bd7dfd","getLimits(bytes32,address,address)":"a9270fbe","getPoolIds(uint256,uint256)":"23eeca01","getTokens(bytes32)":"ecbbc033","price(bytes32,address,address,uint256[])":"aad6e488","swap(bytes32,address,address,uint8,uint256)":"8307c655"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"LimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"Unavailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"}],\"name\":\"getCapabilities\",\"outputs\":[{\"internalType\":\"enum ISwapAdapterTypes.Capability[]\",\"name\":\"capabilities\",\"type\":\"uint8[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"}],\"name\":\"getLimits\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"limits\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"getPoolIds\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"ids\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"getTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"specifiedAmounts\",\"type\":\"uint256[]\"}],\"name\":\"price\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction[]\",\"name\":\"prices\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"enum ISwapAdapterTypes.OrderSide\",\"name\":\"side\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"calculatedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction\",\"name\":\"price\",\"type\":\"tuple\"}],\"internalType\":\"struct ISwapAdapterTypes.Trade\",\"name\":\"trade\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"A wrapped library containing swap functions, helpers and storage for the Balancer V3 Swap Adapter contract\",\"errors\":{\"LimitExceeded(uint256)\":[{\"details\":\"The LimitExceeded error is thrown when a limit has been exceeded. E.g. the specified amount can't be traded safely.\"}],\"NotImplemented(string)\":[{\"details\":\"The NotImplemented error is thrown when a function is not implemented.\"}],\"Unavailable(string)\":[{\"details\":\"The Unavailable error is thrown when a pool or swap is not available for unexpected reason. E.g. it was paused due to a bug.\"}]},\"kind\":\"dev\",\"methods\":{\"getCapabilities(bytes32,address,address)\":{\"params\":{\"poolId\":\"The ID of the trading pool.\"},\"returns\":{\"capabilities\":\"An array of Capability.\"}},\"getLimits(bytes32,address,address)\":{\"details\":\"Retrieve the maximum limits of a token that can be traded. The limit is reached when the change in the received amounts is zero or close to zero or when the swap fails because of the pools restrictions. Overestimate if in doubt rather than underestimate. The swap function should not error with `LimitExceeded` if called with amounts below the limit.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\"},\"returns\":{\"limits\":\"An array of size two indicating the limit amount for the sell token (maximum the pool is willing to buy in sell token) as well as the limit amount of the buy token (maximum the pool is willing to sell in buy token).\"}},\"getPoolIds(uint256,uint256)\":{\"details\":\"Mainly used for testing. It is alright to not return all available pools here. Nevertheless, this is useful to test against the substreams implementation. If implemented, it saves time writing custom tests.\",\"params\":{\"limit\":\"The maximum number of pool IDs to retrieve.\",\"offset\":\"The starting index from which to retrieve pool IDs.\"},\"returns\":{\"ids\":\"An array of pool IDs.\"}},\"getTokens(bytes32)\":{\"details\":\"Mainly used for testing as this is redundant with the required substreams implementation.\",\"params\":{\"poolId\":\"The ID of the trading pool.\"},\"returns\":{\"tokens\":\"An array of address contracts.\"}},\"price(bytes32,address,address,uint256[])\":{\"details\":\"The returned prices should include all dex fees. In case the fee is dynamic on the amount traded, the returned price is expected to include the minimum fee. Note that the returned price should be the marginal price which is distinct from the executed price `swap(amount_in) / amount_in`! The marginal price is defined as the price to trade an arbitrarily small (almost zero) amount after the trade of (amount). E.g. the marginal price of a uniswap v2 pool at amount=0 is `reserve0/reserve1`. Ideally this method should be implemented, although it is optional as the price function can be numerically derived from the swap function. In case it is not available, it should be flagged via capabilities and calling it should revert using the `NotImplemented` error. The method needs to be implemented as view as this is usually more efficient and can be run in parallel.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\",\"specifiedAmounts\":\"Amounts to calculate marginal prices at.\"},\"returns\":{\"prices\":\"array of prices as fractions corresponding to the provided amounts.\"}},\"swap(bytes32,address,address,uint8,uint256)\":{\"details\":\"This function should be state modifying, meaning it should actually execute the swap and change the state of the EVM accordingly. Please include a gas usage estimate for each amount. This can be achieved e.g. by using the `gasleft()` function. The return type `Trade` has an attribute called price which should contain the value of `price(specifiedAmount)`. As this is optional, defined via `Capability.PriceFunction`, it is valid to return a Fraction(0, 0) value for this price. In that case the price will be estimated numerically.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\",\"side\":\"The side of the trade (Sell or Buy).\",\"specifiedAmount\":\"The amount to be traded.\"},\"returns\":{\"trade\":\"Trade struct representing the executed trade.\"}}},\"title\":\"Balancer V3 Swap Helpers\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCapabilities(bytes32,address,address)\":{\"notice\":\"Retrieves the capabilities of the selected pool.\"},\"getLimits(bytes32,address,address)\":{\"notice\":\"Retrieves the limits for each token.\"},\"getPoolIds(uint256,uint256)\":{\"notice\":\"Retrieves a range of pool IDs.\"},\"getTokens(bytes32)\":{\"notice\":\"Retrieves the tokens in the selected pool.\"},\"price(bytes32,address,address,uint256[])\":{\"notice\":\"Calculates marginal prices for specified amounts (optional).\"},\"swap(bytes32,address,address,uint8,uint256)\":{\"notice\":\"Simulates swapping tokens on a given pool.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/balancer-v3/lib/BalancerSwapHelpers.sol\":\"BalancerSwapHelpers\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf\",\"dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/balancer-v3/lib/BalancerCustomWrapHelpers.sol\":{\"keccak256\":\"0x0f6b335d2add29c075bdf0b4d596dfdfc1d46fd69eafa009b0d9141256ff1a30\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://94a73f885d3a4cf266128dcaf9bd276d80e54ee4fb580741213c58165c844313\",\"dweb:/ipfs/QmX2tRhSy3rYdSzViMgM1X9ResBMALBA21jhN7gTE7g2P8\"]},\"src/balancer-v3/lib/BalancerERC20Helpers.sol\":{\"keccak256\":\"0x40f4571feb1755549e172a1157af748b724aeff1a62edf118a625afe9651bdbd\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d9a7bc8172d05945a6262455c12cb8296fbe906ae20018fe2e4646d1051a63ec\",\"dweb:/ipfs/QmTFG25A5NR49dGcRsUkxB4g9PiKcxapPVZGu6GLvMPgb8\"]},\"src/balancer-v3/lib/BalancerERC4626Helpers.sol\":{\"keccak256\":\"0xf19e1a229b1cb569617e28ba1bc8d1b2cfb403d3164018610040ab439e65c211\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://2493d7748eedfc1ad1bed4bd6b16ede7f5e1b69f1ecf4176851a857f39b018ea\",\"dweb:/ipfs/QmeogRJKPvPGBTdJvciejWGMWy1tik8e817uPcp5Dp2Wn7\"]},\"src/balancer-v3/lib/BalancerInterfaces.sol\":{\"keccak256\":\"0xff32e4111c1954881e6c503c53c3406ae5b225f54ce0edf633d357a77c5a56c8\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://06ef20a4676393fb14947b7abdc6d06c19ae2249cfb508044e95fbc957c0f701\",\"dweb:/ipfs/QmaCws32eR57w1BmEZDFaV3kbEbyzQta8MP8eSL2EZcvKZ\"]},\"src/balancer-v3/lib/BalancerStorage.sol\":{\"keccak256\":\"0x16d74f81b9a15386060130b04b8be2aec55fb4ec20233742db16d2d82d6d748b\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9455e4e3a1dd98165117502ce53e12ba5787b1d5646df9873b93b1cfe3e1136\",\"dweb:/ipfs/QmQ8VohFLoeGCVziyD3iYr1Gynf52gf9VgEoM97TnyRE48\"]},\"src/balancer-v3/lib/BalancerSwapHelpers.sol\":{\"keccak256\":\"0x48d7f787de65a4671de1a49208130919b3fc7b17786c6eddf1897af122572f88\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://17ff1db9264aebdae9f74bb587a40870ace02d4d90bb083e128af48af8500b76\",\"dweb:/ipfs/QmPa9t3PmbRYZVzYoHyRVVjBZD9gs55pUNfF9hhuni5AQP\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/libraries/CustomBytesAppend.sol\":{\"keccak256\":\"0x744de639d3f68d46b09e6f5f81ac003f92616f270007cc28778538894723276d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9278b5ff65908b5377e7b875151204ca6de587091c7bdd9f2f4f7d75b3d4d9e5\",\"dweb:/ipfs/QmPopj1aEWXtPg6CwKKAeEWBg1FBydPpQUM7VaFSvKvPU5\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"type":"error","name":"LimitExceeded"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"NotImplemented"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"Unavailable"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"getCapabilities","outputs":[{"internalType":"enum ISwapAdapterTypes.Capability[]","name":"capabilities","type":"uint8[]"}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"getLimits","outputs":[{"internalType":"uint256[]","name":"limits","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"getPoolIds","outputs":[{"internalType":"bytes32[]","name":"ids","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"getTokens","outputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"},{"internalType":"uint256[]","name":"specifiedAmounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"price","outputs":[{"internalType":"struct ISwapAdapterTypes.Fraction[]","name":"prices","type":"tuple[]","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"},{"internalType":"enum ISwapAdapterTypes.OrderSide","name":"side","type":"uint8"},{"internalType":"uint256","name":"specifiedAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swap","outputs":[{"internalType":"struct ISwapAdapterTypes.Trade","name":"trade","type":"tuple","components":[{"internalType":"uint256","name":"calculatedAmount","type":"uint256"},{"internalType":"uint256","name":"gasUsed","type":"uint256"},{"internalType":"struct ISwapAdapterTypes.Fraction","name":"price","type":"tuple","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]}]}],"devdoc":{"kind":"dev","methods":{"getCapabilities(bytes32,address,address)":{"params":{"poolId":"The ID of the trading pool."},"returns":{"capabilities":"An array of Capability."}},"getLimits(bytes32,address,address)":{"details":"Retrieve the maximum limits of a token that can be traded. The limit is reached when the change in the received amounts is zero or close to zero or when the swap fails because of the pools restrictions. Overestimate if in doubt rather than underestimate. The swap function should not error with `LimitExceeded` if called with amounts below the limit.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold."},"returns":{"limits":"An array of size two indicating the limit amount for the sell token (maximum the pool is willing to buy in sell token) as well as the limit amount of the buy token (maximum the pool is willing to sell in buy token)."}},"getPoolIds(uint256,uint256)":{"details":"Mainly used for testing. It is alright to not return all available pools here. Nevertheless, this is useful to test against the substreams implementation. If implemented, it saves time writing custom tests.","params":{"limit":"The maximum number of pool IDs to retrieve.","offset":"The starting index from which to retrieve pool IDs."},"returns":{"ids":"An array of pool IDs."}},"getTokens(bytes32)":{"details":"Mainly used for testing as this is redundant with the required substreams implementation.","params":{"poolId":"The ID of the trading pool."},"returns":{"tokens":"An array of address contracts."}},"price(bytes32,address,address,uint256[])":{"details":"The returned prices should include all dex fees. In case the fee is dynamic on the amount traded, the returned price is expected to include the minimum fee. Note that the returned price should be the marginal price which is distinct from the executed price `swap(amount_in) / amount_in`! The marginal price is defined as the price to trade an arbitrarily small (almost zero) amount after the trade of (amount). E.g. the marginal price of a uniswap v2 pool at amount=0 is `reserve0/reserve1`. Ideally this method should be implemented, although it is optional as the price function can be numerically derived from the swap function. In case it is not available, it should be flagged via capabilities and calling it should revert using the `NotImplemented` error. The method needs to be implemented as view as this is usually more efficient and can be run in parallel.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold.","specifiedAmounts":"Amounts to calculate marginal prices at."},"returns":{"prices":"array of prices as fractions corresponding to the provided amounts."}},"swap(bytes32,address,address,uint8,uint256)":{"details":"This function should be state modifying, meaning it should actually execute the swap and change the state of the EVM accordingly. Please include a gas usage estimate for each amount. This can be achieved e.g. by using the `gasleft()` function. The return type `Trade` has an attribute called price which should contain the value of `price(specifiedAmount)`. As this is optional, defined via `Capability.PriceFunction`, it is valid to return a Fraction(0, 0) value for this price. In that case the price will be estimated numerically.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold.","side":"The side of the trade (Sell or Buy).","specifiedAmount":"The amount to be traded."},"returns":{"trade":"Trade struct representing the executed trade."}}},"version":1},"userdoc":{"kind":"user","methods":{"getCapabilities(bytes32,address,address)":{"notice":"Retrieves the capabilities of the selected pool."},"getLimits(bytes32,address,address)":{"notice":"Retrieves the limits for each token."},"getPoolIds(uint256,uint256)":{"notice":"Retrieves a range of pool IDs."},"getTokens(bytes32)":{"notice":"Retrieves the tokens in the selected pool."},"price(bytes32,address,address,uint256[])":{"notice":"Calculates marginal prices for specified amounts (optional)."},"swap(bytes32,address,address,uint8,uint256)":{"notice":"Simulates swapping tokens on a given pool."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/balancer-v3/lib/BalancerSwapHelpers.sol":"BalancerSwapHelpers"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol":{"keccak256":"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06","urls":["bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf","dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/balancer-v3/lib/BalancerCustomWrapHelpers.sol":{"keccak256":"0x0f6b335d2add29c075bdf0b4d596dfdfc1d46fd69eafa009b0d9141256ff1a30","urls":["bzz-raw://94a73f885d3a4cf266128dcaf9bd276d80e54ee4fb580741213c58165c844313","dweb:/ipfs/QmX2tRhSy3rYdSzViMgM1X9ResBMALBA21jhN7gTE7g2P8"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerERC20Helpers.sol":{"keccak256":"0x40f4571feb1755549e172a1157af748b724aeff1a62edf118a625afe9651bdbd","urls":["bzz-raw://d9a7bc8172d05945a6262455c12cb8296fbe906ae20018fe2e4646d1051a63ec","dweb:/ipfs/QmTFG25A5NR49dGcRsUkxB4g9PiKcxapPVZGu6GLvMPgb8"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerERC4626Helpers.sol":{"keccak256":"0xf19e1a229b1cb569617e28ba1bc8d1b2cfb403d3164018610040ab439e65c211","urls":["bzz-raw://2493d7748eedfc1ad1bed4bd6b16ede7f5e1b69f1ecf4176851a857f39b018ea","dweb:/ipfs/QmeogRJKPvPGBTdJvciejWGMWy1tik8e817uPcp5Dp2Wn7"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerInterfaces.sol":{"keccak256":"0xff32e4111c1954881e6c503c53c3406ae5b225f54ce0edf633d357a77c5a56c8","urls":["bzz-raw://06ef20a4676393fb14947b7abdc6d06c19ae2249cfb508044e95fbc957c0f701","dweb:/ipfs/QmaCws32eR57w1BmEZDFaV3kbEbyzQta8MP8eSL2EZcvKZ"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerStorage.sol":{"keccak256":"0x16d74f81b9a15386060130b04b8be2aec55fb4ec20233742db16d2d82d6d748b","urls":["bzz-raw://e9455e4e3a1dd98165117502ce53e12ba5787b1d5646df9873b93b1cfe3e1136","dweb:/ipfs/QmQ8VohFLoeGCVziyD3iYr1Gynf52gf9VgEoM97TnyRE48"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerSwapHelpers.sol":{"keccak256":"0x48d7f787de65a4671de1a49208130919b3fc7b17786c6eddf1897af122572f88","urls":["bzz-raw://17ff1db9264aebdae9f74bb587a40870ace02d4d90bb083e128af48af8500b76","dweb:/ipfs/QmPa9t3PmbRYZVzYoHyRVVjBZD9gs55pUNfF9hhuni5AQP"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/libraries/CustomBytesAppend.sol":{"keccak256":"0x744de639d3f68d46b09e6f5f81ac003f92616f270007cc28778538894723276d","urls":["bzz-raw://9278b5ff65908b5377e7b875151204ca6de587091c7bdd9f2f4f7d75b3d4d9e5","dweb:/ipfs/QmPopj1aEWXtPg6CwKKAeEWBg1FBydPpQUM7VaFSvKvPU5"],"license":"MIT"}},"version":1},"id":48} \ No newline at end of file diff --git a/evm/out/BalancerV2SwapAdapter.sol/BalancerV2SwapAdapter.json b/evm/out/BalancerV2SwapAdapter.sol/BalancerV2SwapAdapter.json deleted file mode 100644 index 4bd48d1..0000000 --- a/evm/out/BalancerV2SwapAdapter.sol/BalancerV2SwapAdapter.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"vault_","type":"address","internalType":"address payable"}],"stateMutability":"nonpayable"},{"type":"function","name":"getCapabilities","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"capabilities","type":"uint8[]","internalType":"enum ISwapAdapterTypes.Capability[]"}],"stateMutability":"pure"},{"type":"function","name":"getLimits","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"}],"outputs":[{"name":"limits","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getPoolIds","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"pure"},{"type":"function","name":"getSellAmount","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"},{"name":"buyAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"sellAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"getTokens","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"price","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"},{"name":"specifiedAmounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"calculatedPrices","type":"tuple[]","internalType":"struct ISwapAdapterTypes.Fraction[]","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"priceSingle","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"},{"name":"sellAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"calculatedPrice","type":"tuple","internalType":"struct ISwapAdapterTypes.Fraction","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"swap","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"},{"name":"side","type":"uint8","internalType":"enum ISwapAdapterTypes.OrderSide"},{"name":"specifiedAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"trade","type":"tuple","internalType":"struct ISwapAdapterTypes.Trade","components":[{"name":"calculatedAmount","type":"uint256","internalType":"uint256"},{"name":"gasUsed","type":"uint256","internalType":"uint256"},{"name":"price","type":"tuple","internalType":"struct ISwapAdapterTypes.Fraction","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"nonpayable"},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LimitExceeded","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotImplemented","inputs":[{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"Unavailable","inputs":[{"name":"reason","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x60a03461009c57601f6116ad38819003918201601f19168301916001600160401b038311848410176100a05780849260209460405283398101031261009c57516001600160a01b0381169081900361009c576080526040516115f890816100b5823960805181818160a10152818161033d01528181610634015281816106a101528181610852015281816109280152818161108e01526112b10152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c90816323eeca0114610ae55750806348bd7dfd14610a0e5780638307c6551461054f578063a9270fbe146102fb578063aad6e4881461017a578063ba9285fe14610156578063e357d6f9146101285763ecbbc03314610074575f80fd5b3461012457602036600319011261012457604051631f29a8cd60e31b815260048035908201525f816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa8015610119576100f1915f916100f5575b50604051918291602083526020830190610c6b565b0390f35b61011191503d805f833e6101098183610bf3565b810190610d32565b50505f6100dc565b6040513d5f823e3d90fd5b5f80fd5b3461012457604061014461013b36610c2d565b9291909161115c565b60208251918051835201516020820152f35b3461012457602061017261016936610c2d565b92919091610f07565b604051908152f35b3461012457608036600319011261012457600435610196610b39565b9061019f610b4f565b906064359167ffffffffffffffff83116101245736602384011215610124578260040135926101cd84610c15565b936101db6040519586610bf3565b8085526024602086019160051b8301019136831161012457602401905b8282106102eb5750505082519361020e85610c15565b9461021c6040519687610bf3565b80865261022b601f1991610c15565b015f5b8181106102c85750505f5b8451811015610277578061025b61025260019388610cc4565b5185858861115c565b6102658289610cc4565b526102708188610cc4565b5001610239565b856040518091602082016020835281518091526020604084019201905f5b8181106102a3575050500390f35b8251805185526020908101518186015286955060409094019390920191600101610295565b6020906040516102d781610bbb565b5f81525f8382015282828a0101520161022e565b81358152602091820191016101f8565b346101245761030936610b65565b60405192610318606085610bf3565b60028452602084019060403683376040805163f6c0092760e01b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316929181602481865afa908115610119575f91610507575b505f61039061038a836113a1565b9261140e565b92602460405180968193631f29a8cd60e31b835260048301525afa948515610119575f935f966104e4575b5093956001600160a01b0394851694165f5b84518110156104a057816001600160a01b036103e98388610cc4565b51161461045e575b856001600160a01b036104048388610cc4565b511614610414575b6001016103cd565b61041e8188610cc4565b519060038202918083046003149015171561044a57600a600192046104428b610cb4565b52905061040c565b634e487b7160e01b5f52601160045260245ffd5b808303610475578361046f8a610ca7565b526103f1565b61047f8188610cc4565b5160038102908082046003149015171561044a57600a900461046f8a610ca7565b8789604051918291602083019060208452518091526040830191905f5b8181106104cb575050500390f35b82518452859450602093840193909201916001016104bd565b9095506104fc9193503d805f833e6101098183610bf3565b5092909294886103bb565b90506040813d604011610547575b8161052260409383610bf3565b8101031261012457602061053582610d1e565b91015160ff811603610124578761037c565b3d9150610515565b346101245760a03660031901126101245760043561056b610b39565b90610574610b4f565b60643591600283101561012457604051926060840184811067ffffffffffffffff821117610902576040525f84525f60208501526040516105b481610bbb565b5f81525f602082015260408501526105cb81610cf0565b6109f4575f90608435925f935b6040516323b872dd60e01b6020820152336024820152306044820152606480820183905281526001600160a01b038816919061061f90610619608482610bf3565b836114ba565b604051636eb1769f60e11b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316602482015290602082604481865afa918215610119575f926109c0575b50810180911161044a575f8060405192602084019063095ea7b360e01b825260018060a01b037f00000000000000000000000000000000000000000000000000000000000000001660248601526044850152604484526106da606485610bf3565b83519082865af16106e9611525565b81610991575b5080610987575b15610916575b505a936040519160c0830183811067ffffffffffffffff82111761090257604052848352602083019161072e81610cf0565b82526040830190815260018060a01b03841660608401526080830191608435835260209760405161075f8a82610bf3565b5f815260a086019081526040519161077683610b9f565b3083525f8b8401523360408401525f60608401526103e842019182421161044a5761080b610843918d986040519a8b998a996352bbbe2960e01b8b5260e060048c0152825160e48c0152516107ca81610cf0565b6101048b0152516001600160a01b039081166101248b01526060919091015116610144890152516101648801525160c06101848801526101a4870190610cfa565b84516001600160a01b039081166024880152602086015115156044880152604086015116606487015260609094015115156084860152565b60a484015260c483015203815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1908115610119575f916108d5575b5085525a830392831161044a576080956108ac9360208701526084359261115c565b604083015260408051928051845260208101518385015201518051604084015201516060820152f35b90508481813d83116108fb575b6108ec8183610bf3565b8101031261012457518761088a565b503d6108e2565b634e487b7160e01b5f52604160045260245ffd5b60405163095ea7b360e01b60208201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660248201525f6044808301919091528152610981919061097b90610975606482610bf3565b846114ba565b826114ba565b876106fc565b50813b15156106f6565b80518015925082156109a6575b5050896106ef565b6109b992506020809183010191016114a2565b898061099e565b9091506020813d6020116109ec575b816109dc60209383610bf3565b8101031261012457519089610679565b3d91506109cf565b600190610a05608435848784610f07565b5f1993906105d8565b3461012457610a1c36610b65565b505050604051610a2d60a082610bf3565b600481526020810160803682376001610a4583610ca7565b526002610a5183610cb4565b52815160021015610ad15760036060830152815160031015610ad15760086080830152604051906020820192602083525180935260408201905f935b808510610a9a5783830384f35b9091825190600a821015610abd5760208160019382935201930194019390610a8d565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b3461012457604036600319011261012457631d04569d60e21b815260206004820181905260248201527f42616c616e636572563253776170416461707465722e676574506f6f6c4964736044820152606490fd5b602435906001600160a01b038216820361012457565b604435906001600160a01b038216820361012457565b606090600319011261012457600435906024356001600160a01b038116810361012457906044356001600160a01b03811681036101245790565b6080810190811067ffffffffffffffff82111761090257604052565b6040810190811067ffffffffffffffff82111761090257604052565b60a0810190811067ffffffffffffffff82111761090257604052565b90601f8019910116810190811067ffffffffffffffff82111761090257604052565b67ffffffffffffffff81116109025760051b60200190565b608090600319011261012457600435906024356001600160a01b038116810361012457906044356001600160a01b0381168103610124579060643590565b90602080835192838152019201905f5b818110610c885750505090565b82516001600160a01b0316845260209384019390920191600101610c7b565b805115610ad15760200190565b805160011015610ad15760400190565b8051821015610ad15760209160051b010190565b60405190610ce582610bbb565b5f6020838281520152565b60021115610abd57565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b51906001600160a01b038216820361012457565b909160608284031261012457815167ffffffffffffffff811161012457820183601f8201121561012457805190610d6882610c15565b91610d766040519384610bf3565b80835260208084019160051b8301019186831161012457602001905b828210610e165750505092602083015167ffffffffffffffff81116101245783019080601f83011215610124578151610dca81610c15565b92610dd86040519485610bf3565b81845260208085019260051b82010192831161012457602001905b828210610e065750505060409092015190565b8151815260209182019101610df3565b60208091610e2384610d1e565b815201910190610d92565b60408051909190610e3f8382610bf3565b6001815291601f1901825f5b828110610e5757505050565b602090604051610e6681610bd7565b5f81525f838201525f60408201525f60608201526060608082015282828501015201610e4b565b6020818303126101245780519067ffffffffffffffff821161012457019080601f83011215610124578151610ec181610c15565b92610ecf6040519485610bf3565b81845260208085019260051b82010192831161012457602001905b828210610ef75750505090565b8151815260209182019101610eea565b929091610f12610e2e565b9160405194610f2086610bd7565b85525f6020860152600160408601526060850152602093604051610f448682610bf3565b5f81526080820152610f5583610ca7565b52610f5f82610ca7565b50606060405191610f708284610bf3565b60028352601f19820194853688860137610f8984610ca7565b6001600160a01b039091169052610f9f83610cb4565b6001600160a01b03909116905260405193610fb985610b9f565b3385525f868601523360408601525f82860152604051610fd98382610bf3565b600281528636910137604051637c26833760e11b81529460e48601919091869493926001600487015260e0602487015284518092526101048601928161010060048560051b8a0101019601935f915b8483106110f5575050505050509261108961105184935f96600319868303016044870152610c6b565b82516001600160a01b03908116606486015260208401511515608486015260408401511660a4850152606090920151151560c4840152565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af18015610119576110cf915f916110d3575b50610ca7565b5190565b6110ef91503d805f833e6110e78183610bf3565b810190610e8d565b5f6110c9565b9193959692806111476001939582989b60ff19906003199083030101875260a060808d518051845285810151868501526040810151604085015288810151898501520151918160808201520190610cfa565b99019301930190928997969593949294611028565b9192611166610cd8565b5061116f610e2e565b906040519361117d85610bd7565b84525f60208501526001604085015260608401526020926040516111a18582610bf3565b5f815260808201526111b282610ca7565b526111bc81610ca7565b506040516060946111cd8683610bf3565b60028252601f198601938436878501376111e683610ca7565b6001600160a01b0390911690526111fc82610cb4565b6001600160a01b0390911690526040519261121684610b9f565b3384525f858501523360408501525f868501526040516112368782610bf3565b600281528536910137604051637c26833760e11b81529460e4860190869392915f600486015260e0602486015283518091526101048501918761010060048460051b890101019501925f915b8984841061133e57505050505050926112ac61105184935f96600319868303016044870152610c6b565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1918215610119575f92611322575b506112f382610cb4565b5191600160ff1b831461044a5761130990610ca7565b51906040519261131884610bbb565b5f03835282015290565b6113379192503d805f833e6110e78183610bf3565b905f6112e9565b61138e600193959798829395979a60ff19906003199083030101875260a060808c518051845285810151868501526040810151604085015288810151898501520151918160808201520190610cfa565b9801930193019092899695949293611282565b6040516341343d2b60e11b815290602090829060049082906001600160a01b03165afa5f91816113da575b506113d757505f1990565b90565b9091506020813d602011611406575b816113f660209383610bf3565b810103126101245751905f6113cc565b3d91506113e9565b60405163876f303b60e01b81526001600160a01b039190911690602081600481855afa5f918161146e575b5061146957506020600491604051928380926337a0b34d60e21b82525afa5f91816113da57506113d757505f1990565b905090565b9091506020813d60201161149a575b8161148a60209383610bf3565b810103126101245751905f611439565b3d915061147d565b90816020910312610124575180151581036101245790565b5f806114e29260018060a01b03169360208151910182865af16114db611525565b9083611564565b805190811515918261150a575b50506114f85750565b635274afe760e01b5f5260045260245ffd5b61151d92506020809183010191016114a2565b155f806114ef565b3d1561155f573d9067ffffffffffffffff82116109025760405191611554601f8201601f191660200184610bf3565b82523d5f602084013e565b606090565b90611588575080511561157957805190602001fd5b63d6bda27560e01b5f5260045ffd5b815115806115b9575b611599575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561159156fea2646970667358221220e3f14a8e559a59d2985f6223d165fe9c31be449a354e673b7d50555a0236e43d64736f6c634300081b0033","sourceMap":"452:8186:41:-:0;;;;;;;;;;;;;-1:-1:-1;;452:8186:41;;;;-1:-1:-1;;;;;452:8186:41;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;452:8186:41;;;;;;;;613:22;;452:8186;;;;;;;;613:22;452:8186;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;452:8186:41;;;;;;-1:-1:-1;452:8186:41;;;;;-1:-1:-1;452:8186:41","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f3560e01c90816323eeca0114610ae55750806348bd7dfd14610a0e5780638307c6551461054f578063a9270fbe146102fb578063aad6e4881461017a578063ba9285fe14610156578063e357d6f9146101285763ecbbc03314610074575f80fd5b3461012457602036600319011261012457604051631f29a8cd60e31b815260048035908201525f816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa8015610119576100f1915f916100f5575b50604051918291602083526020830190610c6b565b0390f35b61011191503d805f833e6101098183610bf3565b810190610d32565b50505f6100dc565b6040513d5f823e3d90fd5b5f80fd5b3461012457604061014461013b36610c2d565b9291909161115c565b60208251918051835201516020820152f35b3461012457602061017261016936610c2d565b92919091610f07565b604051908152f35b3461012457608036600319011261012457600435610196610b39565b9061019f610b4f565b906064359167ffffffffffffffff83116101245736602384011215610124578260040135926101cd84610c15565b936101db6040519586610bf3565b8085526024602086019160051b8301019136831161012457602401905b8282106102eb5750505082519361020e85610c15565b9461021c6040519687610bf3565b80865261022b601f1991610c15565b015f5b8181106102c85750505f5b8451811015610277578061025b61025260019388610cc4565b5185858861115c565b6102658289610cc4565b526102708188610cc4565b5001610239565b856040518091602082016020835281518091526020604084019201905f5b8181106102a3575050500390f35b8251805185526020908101518186015286955060409094019390920191600101610295565b6020906040516102d781610bbb565b5f81525f8382015282828a0101520161022e565b81358152602091820191016101f8565b346101245761030936610b65565b60405192610318606085610bf3565b60028452602084019060403683376040805163f6c0092760e01b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316929181602481865afa908115610119575f91610507575b505f61039061038a836113a1565b9261140e565b92602460405180968193631f29a8cd60e31b835260048301525afa948515610119575f935f966104e4575b5093956001600160a01b0394851694165f5b84518110156104a057816001600160a01b036103e98388610cc4565b51161461045e575b856001600160a01b036104048388610cc4565b511614610414575b6001016103cd565b61041e8188610cc4565b519060038202918083046003149015171561044a57600a600192046104428b610cb4565b52905061040c565b634e487b7160e01b5f52601160045260245ffd5b808303610475578361046f8a610ca7565b526103f1565b61047f8188610cc4565b5160038102908082046003149015171561044a57600a900461046f8a610ca7565b8789604051918291602083019060208452518091526040830191905f5b8181106104cb575050500390f35b82518452859450602093840193909201916001016104bd565b9095506104fc9193503d805f833e6101098183610bf3565b5092909294886103bb565b90506040813d604011610547575b8161052260409383610bf3565b8101031261012457602061053582610d1e565b91015160ff811603610124578761037c565b3d9150610515565b346101245760a03660031901126101245760043561056b610b39565b90610574610b4f565b60643591600283101561012457604051926060840184811067ffffffffffffffff821117610902576040525f84525f60208501526040516105b481610bbb565b5f81525f602082015260408501526105cb81610cf0565b6109f4575f90608435925f935b6040516323b872dd60e01b6020820152336024820152306044820152606480820183905281526001600160a01b038816919061061f90610619608482610bf3565b836114ba565b604051636eb1769f60e11b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316602482015290602082604481865afa918215610119575f926109c0575b50810180911161044a575f8060405192602084019063095ea7b360e01b825260018060a01b037f00000000000000000000000000000000000000000000000000000000000000001660248601526044850152604484526106da606485610bf3565b83519082865af16106e9611525565b81610991575b5080610987575b15610916575b505a936040519160c0830183811067ffffffffffffffff82111761090257604052848352602083019161072e81610cf0565b82526040830190815260018060a01b03841660608401526080830191608435835260209760405161075f8a82610bf3565b5f815260a086019081526040519161077683610b9f565b3083525f8b8401523360408401525f60608401526103e842019182421161044a5761080b610843918d986040519a8b998a996352bbbe2960e01b8b5260e060048c0152825160e48c0152516107ca81610cf0565b6101048b0152516001600160a01b039081166101248b01526060919091015116610144890152516101648801525160c06101848801526101a4870190610cfa565b84516001600160a01b039081166024880152602086015115156044880152604086015116606487015260609094015115156084860152565b60a484015260c483015203815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1908115610119575f916108d5575b5085525a830392831161044a576080956108ac9360208701526084359261115c565b604083015260408051928051845260208101518385015201518051604084015201516060820152f35b90508481813d83116108fb575b6108ec8183610bf3565b8101031261012457518761088a565b503d6108e2565b634e487b7160e01b5f52604160045260245ffd5b60405163095ea7b360e01b60208201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660248201525f6044808301919091528152610981919061097b90610975606482610bf3565b846114ba565b826114ba565b876106fc565b50813b15156106f6565b80518015925082156109a6575b5050896106ef565b6109b992506020809183010191016114a2565b898061099e565b9091506020813d6020116109ec575b816109dc60209383610bf3565b8101031261012457519089610679565b3d91506109cf565b600190610a05608435848784610f07565b5f1993906105d8565b3461012457610a1c36610b65565b505050604051610a2d60a082610bf3565b600481526020810160803682376001610a4583610ca7565b526002610a5183610cb4565b52815160021015610ad15760036060830152815160031015610ad15760086080830152604051906020820192602083525180935260408201905f935b808510610a9a5783830384f35b9091825190600a821015610abd5760208160019382935201930194019390610a8d565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b3461012457604036600319011261012457631d04569d60e21b815260206004820181905260248201527f42616c616e636572563253776170416461707465722e676574506f6f6c4964736044820152606490fd5b602435906001600160a01b038216820361012457565b604435906001600160a01b038216820361012457565b606090600319011261012457600435906024356001600160a01b038116810361012457906044356001600160a01b03811681036101245790565b6080810190811067ffffffffffffffff82111761090257604052565b6040810190811067ffffffffffffffff82111761090257604052565b60a0810190811067ffffffffffffffff82111761090257604052565b90601f8019910116810190811067ffffffffffffffff82111761090257604052565b67ffffffffffffffff81116109025760051b60200190565b608090600319011261012457600435906024356001600160a01b038116810361012457906044356001600160a01b0381168103610124579060643590565b90602080835192838152019201905f5b818110610c885750505090565b82516001600160a01b0316845260209384019390920191600101610c7b565b805115610ad15760200190565b805160011015610ad15760400190565b8051821015610ad15760209160051b010190565b60405190610ce582610bbb565b5f6020838281520152565b60021115610abd57565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b51906001600160a01b038216820361012457565b909160608284031261012457815167ffffffffffffffff811161012457820183601f8201121561012457805190610d6882610c15565b91610d766040519384610bf3565b80835260208084019160051b8301019186831161012457602001905b828210610e165750505092602083015167ffffffffffffffff81116101245783019080601f83011215610124578151610dca81610c15565b92610dd86040519485610bf3565b81845260208085019260051b82010192831161012457602001905b828210610e065750505060409092015190565b8151815260209182019101610df3565b60208091610e2384610d1e565b815201910190610d92565b60408051909190610e3f8382610bf3565b6001815291601f1901825f5b828110610e5757505050565b602090604051610e6681610bd7565b5f81525f838201525f60408201525f60608201526060608082015282828501015201610e4b565b6020818303126101245780519067ffffffffffffffff821161012457019080601f83011215610124578151610ec181610c15565b92610ecf6040519485610bf3565b81845260208085019260051b82010192831161012457602001905b828210610ef75750505090565b8151815260209182019101610eea565b929091610f12610e2e565b9160405194610f2086610bd7565b85525f6020860152600160408601526060850152602093604051610f448682610bf3565b5f81526080820152610f5583610ca7565b52610f5f82610ca7565b50606060405191610f708284610bf3565b60028352601f19820194853688860137610f8984610ca7565b6001600160a01b039091169052610f9f83610cb4565b6001600160a01b03909116905260405193610fb985610b9f565b3385525f868601523360408601525f82860152604051610fd98382610bf3565b600281528636910137604051637c26833760e11b81529460e48601919091869493926001600487015260e0602487015284518092526101048601928161010060048560051b8a0101019601935f915b8483106110f5575050505050509261108961105184935f96600319868303016044870152610c6b565b82516001600160a01b03908116606486015260208401511515608486015260408401511660a4850152606090920151151560c4840152565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af18015610119576110cf915f916110d3575b50610ca7565b5190565b6110ef91503d805f833e6110e78183610bf3565b810190610e8d565b5f6110c9565b9193959692806111476001939582989b60ff19906003199083030101875260a060808d518051845285810151868501526040810151604085015288810151898501520151918160808201520190610cfa565b99019301930190928997969593949294611028565b9192611166610cd8565b5061116f610e2e565b906040519361117d85610bd7565b84525f60208501526001604085015260608401526020926040516111a18582610bf3565b5f815260808201526111b282610ca7565b526111bc81610ca7565b506040516060946111cd8683610bf3565b60028252601f198601938436878501376111e683610ca7565b6001600160a01b0390911690526111fc82610cb4565b6001600160a01b0390911690526040519261121684610b9f565b3384525f858501523360408501525f868501526040516112368782610bf3565b600281528536910137604051637c26833760e11b81529460e4860190869392915f600486015260e0602486015283518091526101048501918761010060048460051b890101019501925f915b8984841061133e57505050505050926112ac61105184935f96600319868303016044870152610c6b565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1918215610119575f92611322575b506112f382610cb4565b5191600160ff1b831461044a5761130990610ca7565b51906040519261131884610bbb565b5f03835282015290565b6113379192503d805f833e6110e78183610bf3565b905f6112e9565b61138e600193959798829395979a60ff19906003199083030101875260a060808c518051845285810151868501526040810151604085015288810151898501520151918160808201520190610cfa565b9801930193019092899695949293611282565b6040516341343d2b60e11b815290602090829060049082906001600160a01b03165afa5f91816113da575b506113d757505f1990565b90565b9091506020813d602011611406575b816113f660209383610bf3565b810103126101245751905f6113cc565b3d91506113e9565b60405163876f303b60e01b81526001600160a01b039190911690602081600481855afa5f918161146e575b5061146957506020600491604051928380926337a0b34d60e21b82525afa5f91816113da57506113d757505f1990565b905090565b9091506020813d60201161149a575b8161148a60209383610bf3565b810103126101245751905f611439565b3d915061147d565b90816020910312610124575180151581036101245790565b5f806114e29260018060a01b03169360208151910182865af16114db611525565b9083611564565b805190811515918261150a575b50506114f85750565b635274afe760e01b5f5260045260245ffd5b61151d92506020809183010191016114a2565b155f806114ef565b3d1561155f573d9067ffffffffffffffff82116109025760405191611554601f8201601f191660200184610bf3565b82523d5f602084013e565b606090565b90611588575080511561157957805190602001fd5b63d6bda27560e01b5f5260045ffd5b815115806115b9575b611599575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561159156fea2646970667358221220e3f14a8e559a59d2985f6223d165fe9c31be449a354e673b7d50555a0236e43d64736f6c634300081b0033","sourceMap":"452:8186:41:-:0;;;;;;;;;;;;;;;;;;;;;;;;8579:50;;452:8186;8579:50;;;452:8186;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;452:8186:41;;;;;;-1:-1:-1;;;8294:27:41;;452:8186;;;8294:27;;;452:8186;-1:-1:-1;452:8186:41;8294:27;452:8186;8294:5;-1:-1:-1;;;;;452:8186:41;8294:27;;;;;;452:8186;8294:27;452:8186;8294:27;;;452:8186;;;;;;;;;;;;;;;:::i;:::-;;;;8294:27;;;;;;452:8186;8294:27;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;452:8186;;445:4;452:8186;445:4;;;;;452:8186;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;452:8186:41;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;3955:13;;452:8186;3999:3;452:8186;;3970:27;;;;;4097:19;4056:61;4097:19;452:8186;4097:19;;;:::i;:::-;452:8186;4056:61;;;;:::i;:::-;4018:99;;;;:::i;:::-;;;;;;:::i;:::-;;452:8186;3955:13;;3970:27;;452:8186;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;452:8186:41;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;452:8186:41;;-1:-1:-1;452:8186:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;5975:1;452:8186;;;;;;;;;;;;;-1:-1:-1;;;6019:21:41;;452:8186;6019:21;;452:8186;;;6019:5;-1:-1:-1;;;;;452:8186:41;;;;6019:21;452:8186;;6019:21;;;;;;;452:8186;6019:21;;;452:8186;6069:27;452:8186;6134:29;6069:27;;;:::i;:::-;6134:29;;:::i;:::-;452:8186;6019:21;452:8186;;445:4;;;;;;;6242:27;;452:8186;6242:27;;452:8186;6242:27;;;;;;;452:8186;;;6242:27;;;452:8186;-1:-1:-1;6285:13:41;;-1:-1:-1;;;;;452:8186:41;;;;;;6319:3;452:8186;;6300:17;;;;;452:8186;-1:-1:-1;;;;;6342:9:41;;;;:::i;:::-;452:8186;;6342:22;6338:517;;6319:3;452:8186;-1:-1:-1;;;;;6872:9:41;;;;:::i;:::-;452:8186;;6872:21;6868:111;;6319:3;452:8186;;6285:13;;6868:111;6925:11;;;;:::i;:::-;452:8186;405:1;;;;;;;;;;;;;;;;6962:2;452:8186;405:1;;6913:51;;;:::i;:::-;452:8186;6868:111;;;;405:1;452:8186;;;;445:4;;452:8186;445:4;6019:21;452:8186;445:4;6338:517;6388:13;;;;;6695:29;;;;:::i;:::-;452:8186;6338:517;;6384:457;6783:11;;;;:::i;:::-;452:8186;405:1;;;;;;;;;;;;;;;6820:2;405:1;;6771:51;;;:::i;6300:17::-;;;452:8186;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;452:8186:41;;;;;;;;;;;;;6242:27;;;;;;;;;;452:8186;6242:27;;;;;;:::i;:::-;;;;;;;;;6019:21;;;452:8186;6019:21;;452:8186;6019:21;;;;;;452:8186;6019:21;;;:::i;:::-;;;452:8186;;;;;;;;:::i;:::-;;;;;;;;;;6019:21;;;;;;-1:-1:-1;6019:21:41;;452:8186;;;;;;-1:-1:-1;;452:8186:41;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;452:8186:41;;-1:-1:-1;452:8186:41;;;;;;;;;;;:::i;:::-;4477:22;;452:8186;;;;4602:9;452:8186;4473:353;;452:8186;;-1:-1:-1;;;452:8186:41;1829:53:32;;;4884:10:41;452:8186;1829:53:32;;452:8186:41;4904:4;452:8186;;;;;;;;;;;1829:53:32;;-1:-1:-1;;;;;452:8186:41;;;;1829:53:32;;;452:8186:41;;1829:53:32;:::i;:::-;;;:::i;:::-;452:8186:41;;-1:-1:-1;;;2200:39:32;;4904:4:41;452:8186;2200:39:32;;452:8186:41;4989:5;-1:-1:-1;;;;;452:8186:41;;;;;;;;;;2200:39:32;;;;;;;;452:8186:41;2200:39:32;;;4473:353:41;2278:20:32;445:4:41;;;;;;;452:8186;;;;3411:47:32;452:8186:41;3411:47:32;;445:4:41;;;;3411:47:32;;452:8186:41;;;;;4989:5;452:8186;;3411:47:32;;452:8186:41;;;;;;3411:47:32;;;452:8186:41;3411:47:32;;:::i;:::-;8024:25;;;;;;;;;:::i;:::-;8066:69;;;4473:353:41;8066:103:32;;;;4473:353:41;3473:45:32;3469:201;;4473:353:41;5039:9;;452:8186;;;;;;;;;;;;;;;;;;;;;;5107:236;;452:8186;;;;:::i;:::-;;;;5107:236;;452:8186;;;;;;;;;;;5107:236;;452:8186;;5107:236;;452:8186;;;;;;;;;;;;;:::i;:::-;;;;;5107:236;;452:8186;;;;;;;;;:::i;:::-;4904:4;452:8186;;;5357:201;;;452:8186;4884:10;452:8186;5357:201;;452:8186;;;5357:201;;452:8186;445:4;5591:15;445:4;5591:15;;;445:4;;;;;452:8186;;;;;445:4;;;;;;;;5083:553;;452:8186;;5083:553;;445:4;;;;;;452:8186;445:4;452:8186;;;:::i;:::-;445:4;;;;;-1:-1:-1;;;;;452:8186:41;;;445:4;;;452:8186;;5107:236;;;;445:4;452:8186;445:4;;;452:8186;445:4;;;;452:8186;445:4;452:8186;445:4;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;452:8186:41;;;;445:4;;452:8186;445:4;;;;452:8186;;445:4;;;;;;;;452:8186;445:4;;;452:8186;445:4;;;;;452:8186;;445:4;;;;;;;;;452:8186;445:4;;;452:8186;5083:553;452:8186;-1:-1:-1;4989:5:41;-1:-1:-1;;;;;452:8186:41;5083:553;;;;;;;452:8186;5083:553;;;4473:353;452:8186;;;5674:9;445:4;;;;;;;452:8186;;5707:57;452:8186;;;;;;;5707:57;;:::i;:::-;452:8186;;;5693:71;452:8186;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5083:553;;;;;;;;;;;;;;;;:::i;:::-;;;445:4;;;;;5083:553;;;;;;;;452:8186;;;;;;;;;;;;3469:201:32;452:8186:41;;-1:-1:-1;;;452:8186:41;3561:43:32;;;4989:5:41;-1:-1:-1;;;;;452:8186:41;;3561:43:32;;452:8186:41;-1:-1:-1;452:8186:41;;;;;;;;3561:43:32;;3646:12;;452:8186:41;3561:43:32;;;452:8186:41;;3561:43:32;:::i;:::-;;;:::i;:::-;3646:12;;:::i;:::-;3469:201;;;8066:103;8139:26;;;:30;;8066:103;;:69;452:8186:41;;8078:22:32;;;-1:-1:-1;8078:56:32;;;;8066:69;;;;;;8078:56;8104:30;;;452:8186:41;8104:30:32;;;;;;;;:::i;:::-;8078:56;;;;2200:39;;;;452:8186:41;2200:39:32;;452:8186:41;2200:39:32;;;;;;445:4:41;2200:39:32;;;:::i;:::-;;;445:4:41;;;;;2200:39:32;;;;;;;-1:-1:-1;2200:39:32;;4473:353:41;452:8186;;4717:59;452:8186;;4717:59;;;;:::i;:::-;-1:-1:-1;;4798:17:41;;4473:353;;452:8186;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;7962:20;7944:38;;;:::i;:::-;452:8186;8010:19;7992:37;;;:::i;:::-;452:8186;;;8010:19;452:8186;;;;8057:24;452:8186;;;;;;8057:24;452:8186;;;;8109:21;452:8186;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7962:20;452:8186;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;452:8186:41;;;;-1:-1:-1;;;8579:50:41;;452:8186;;8579:50;;452:8186;;;;;;;;;;;;8579:50;;;452:8186;;;;-1:-1:-1;;;;;452:8186:41;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;452:8186:41;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;452:8186:41;;;;;;;;;-1:-1:-1;;;;;452:8186:41;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;452:8186:41;;;;;;;;;-1:-1:-1;;;;;452:8186:41;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;452:8186:41;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;452:8186:41;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;7962:20;452:8186;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;452:8186:41;;;;;;;:::o;:::-;;-1:-1:-1;452:8186:41;;;:::o;445:4::-;452:8186;;;;;;;445:4;452:8186;;445:4;;452:8186;;;445:4;-1:-1:-1;445:4:41;;;;;;452:8186;;-1:-1:-1;;452:8186:41;445:4;;;:::o;452:8186::-;;;-1:-1:-1;;;;;452:8186:41;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;445:4;452:8186;:::o;:::-;445:4;;452:8186;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;2838:1;452:8186;;;-1:-1:-1;;452:8186:41;;-1:-1:-1;452:8186:41;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;-1:-1:-1;452:8186:41;;-1:-1:-1;452:8186:41;;;;-1:-1:-1;452:8186:41;;;;-1:-1:-1;452:8186:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;2590:1081;;;;2811:29;;:::i;:::-;452:8186;;;;;;;:::i;:::-;;;-1:-1:-1;2865:176:41;;;452:8186;2838:1;452:8186;2865:176;;452:8186;2865:176;;;452:8186;;;;;;;;;:::i;:::-;-1:-1:-1;452:8186:41;;2865:176;;;452:8186;2850:191;;;:::i;:::-;;;;;:::i;:::-;;452:8186;;;;;;;;:::i;:::-;3091:1;452:8186;;-1:-1:-1;;452:8186:41;;;;;;;;;3103:21;;;:::i;:::-;-1:-1:-1;;;;;452:8186:41;;;;;3134:20;;;:::i;:::-;-1:-1:-1;;;;;452:8186:41;;;;;;;;;;;:::i;:::-;3245:10;452:8186;;-1:-1:-1;3201:187:41;;;452:8186;3245:10;452:8186;3201:187;;452:8186;-1:-1:-1;3201:187:41;;;452:8186;;;;;;;:::i;:::-;3091:1;452:8186;;;;;;;;;-1:-1:-1;;;3522:95:41;;452:8186;;;;;3522:95;;;;;;2838:1;3522:95;;;445:4;452:8186;;;;;;;;;;;;;;;;3522:95;452:8186;;;;;;;;;;-1:-1:-1;452:8186:41;;;;;;;;;;;;;;;;;;-1:-1:-1;452:8186:41;;;;;;;;;;;;:::i;:::-;445:4;;-1:-1:-1;;;;;452:8186:41;;;;;;;445:4;;;;452:8186;;445:4;;;;;;;;452:8186;445:4;;;452:8186;445:4;;;;;452:8186;;445:4;;;;;452:8186;3522:95;452:8186;;3522:5;-1:-1:-1;;;;;452:8186:41;3522:95;;;;;;3649:14;3522:95;-1:-1:-1;3522:95:41;;;452:8186;3649:14;;:::i;:::-;452:8186;2590:1081;:::o;3522:95::-;;;;;;-1:-1:-1;3522:95:41;;;;;;:::i;:::-;;;;;:::i;:::-;;;;452:8186;;;;;;;;2838:1;452:8186;;;;;;;;;;;;;;;;;;2865:176;452:8186;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2865:176;452:8186;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1250:1334;;;452:8186;;:::i;:::-;;1483:29;;:::i;:::-;452:8186;;;;;;;:::i;:::-;;;-1:-1:-1;1537:177:41;;;452:8186;1510:1;452:8186;1537:177;;452:8186;1537:177;;;452:8186;;;;;;;;;:::i;:::-;-1:-1:-1;452:8186:41;;1537:177;;;452:8186;1522:192;;;:::i;:::-;;;;;:::i;:::-;-1:-1:-1;452:8186:41;;;;;;;;:::i;:::-;1764:1;452:8186;;-1:-1:-1;;452:8186:41;;;;;;;;;1776:21;;;:::i;:::-;-1:-1:-1;;;;;452:8186:41;;;;;1807:20;;;:::i;:::-;-1:-1:-1;;;;;452:8186:41;;;;;;;;;;;:::i;:::-;1918:10;452:8186;;-1:-1:-1;1874:187:41;;;452:8186;1918:10;452:8186;1874:187;;452:8186;-1:-1:-1;1874:187:41;;;452:8186;;;;;;;:::i;:::-;1764:1;452:8186;;;;;;;;;-1:-1:-1;;;2195:94:41;;452:8186;;;;;2195:94;;;;-1:-1:-1;2195:94:41;;;445:4;452:8186;;;;;;;;;;;;;;;;2195:94;452:8186;;;;;;;;;;-1:-1:-1;452:8186:41;;;;;;;;;;;;;;;;;;;-1:-1:-1;452:8186:41;;;;;;;;;;;;:::i;:::-;2195:94;452:8186;;2195:5;-1:-1:-1;;;;;452:8186:41;2195:94;;;;;;;-1:-1:-1;2195:94:41;;;452:8186;2536:14;;;;:::i;:::-;452:8186;;-1:-1:-1;;;452:8186:41;;;;2561:14;;;:::i;:::-;452:8186;;;;;;;;:::i;:::-;-1:-1:-1;452:8186:41;;;2518:59;;452:8186;1250:1334;:::o;2195:94::-;;;;;;;-1:-1:-1;2195:94:41;;;;;;:::i;:::-;;;;;452:8186;;1510:1;452:8186;;;;;;;;;;;;;;;;;;;;;;1537:177;452:8186;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1537:177;452:8186;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;7001:310;452:8186;;-1:-1:-1;;;7169:18:41;;452:8186;7169:18;;452:8186;;7169:18;;452:8186;;-1:-1:-1;;;;;452:8186:41;7169:18;;452:8186;;7169:18;;;7001:310;-1:-1:-1;7165:140:41;;-1:-1:-1;;;4798:17:41;7270:24::o;7165:140::-;7226:12;:::o;7169:18::-;;;;;;;;;;;;;;445:4;7169:18;;;:::i;:::-;;;445:4;;;;;7169:18;;;;;;;-1:-1:-1;7169:18:41;;7317:413;452:8186;;-1:-1:-1;;;7486:22:41;;-1:-1:-1;;;;;452:8186:41;;;;;7486:22;452:8186;7486:22;452:8186;;7486:22;;452:8186;;7486:22;;;7317:413;7482:99;;;452:8186;7486:22;;452:8186;;;445:4;;;;;;;7594:23;;;;452:8186;;7594:23;;;7590:100;;;-1:-1:-1;;;4798:17:41;7317:413::o;7482:99::-;7548:13;;;:::o;7486:22::-;;;;;;;;;;;;;;445:4;7486:22;;;:::i;:::-;;;445:4;;;;;7486:22;;;;;;;-1:-1:-1;7486:22:41;;452:8186;;;;;;;;;;;;;;;;;;:::o;6468:629:32:-;2626:1:33;6468:629:32;3304:55:33;6468:629:32;452:8186:41;;;;;;3256:31:33;;;;;;;;;;;;:::i;:::-;3304:55;;;:::i;:::-;452:8186:41;;6960:22:32;;;;:57;;;;6468:629;6956:135;;;;6468:629;:::o;6956:135::-;7040:40;;;2626:1:33;7040:40:32;;452:8186:41;;2626:1:33;7040:40:32;6960:57;6987:30;;;3256:31:33;6987:30:32;;;;;;;;:::i;:::-;6986:31;6960:57;;;;452:8186:41;;;;;;;;;;;;;;;;;;;-1:-1:-1;;452:8186:41;;;;;:::i;:::-;;;;-1:-1:-1;452:8186:41;;;;:::o;:::-;;;:::o;4421:582:33:-;;4593:8;;-1:-1:-1;452:8186:41;;5674:21:33;:17;;5846:142;;;;;;5670:385;6025:19;;;5694:1;6025:19;;5694:1;6025:19;4589:408;452:8186:41;;4841:22:33;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:33;4917:24;;;-1:-1:-1;;;;;452:8186:41;;;;4917:24:33;452:8186:41;;;4917:24:33;4841:49;4867:18;;;:23;4841:49;","linkReferences":{},"immutableReferences":{"53937":[{"start":161,"length":32},{"start":829,"length":32},{"start":1588,"length":32},{"start":1697,"length":32},{"start":2130,"length":32},{"start":2344,"length":32},{"start":4238,"length":32},{"start":4785,"length":32}]}},"methodIdentifiers":{"getCapabilities(bytes32,address,address)":"48bd7dfd","getLimits(bytes32,address,address)":"a9270fbe","getPoolIds(uint256,uint256)":"23eeca01","getSellAmount(bytes32,address,address,uint256)":"ba9285fe","getTokens(bytes32)":"ecbbc033","price(bytes32,address,address,uint256[])":"aad6e488","priceSingle(bytes32,address,address,uint256)":"e357d6f9","swap(bytes32,address,address,uint8,uint256)":"8307c655"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"vault_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"LimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"Unavailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getCapabilities\",\"outputs\":[{\"internalType\":\"enum ISwapAdapterTypes.Capability[]\",\"name\":\"capabilities\",\"type\":\"uint8[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"}],\"name\":\"getLimits\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"limits\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getPoolIds\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"buyAmount\",\"type\":\"uint256\"}],\"name\":\"getSellAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"sellAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"getTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"specifiedAmounts\",\"type\":\"uint256[]\"}],\"name\":\"price\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction[]\",\"name\":\"calculatedPrices\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sellAmount\",\"type\":\"uint256\"}],\"name\":\"priceSingle\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction\",\"name\":\"calculatedPrice\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"enum ISwapAdapterTypes.OrderSide\",\"name\":\"side\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"calculatedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction\",\"name\":\"price\",\"type\":\"tuple\"}],\"internalType\":\"struct ISwapAdapterTypes.Trade\",\"name\":\"trade\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"LimitExceeded(uint256)\":[{\"details\":\"The LimitExceeded error is thrown when a limit has been exceeded. E.g. the specified amount can't be traded safely.\"}],\"NotImplemented(string)\":[{\"details\":\"The NotImplemented error is thrown when a function is not implemented.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}],\"Unavailable(string)\":[{\"details\":\"The Unavailable error is thrown when a pool or swap is not available for unexpected reason. E.g. it was paused due to a bug.\"}]},\"kind\":\"dev\",\"methods\":{\"getLimits(bytes32,address,address)\":{\"details\":\"Retrieve the maximum limits of a token that can be traded. The limit is reached when the change in the received amounts is zero or close to zero or when the swap fails because of the pools restrictions. Overestimate if in doubt rather than underestimate. The swap function should not error with `LimitExceeded` if called with amounts below the limit.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\"},\"returns\":{\"limits\":\"An array of size two indicating the limit amount for the sell token (maximum the pool is willing to buy in sell token) as well as the limit amount of the buy token (maximum the pool is willing to sell in buy token).\"}},\"getPoolIds(uint256,uint256)\":{\"details\":\"Balancer V2 does not support enumerating pools, they have to be indexed off-chain.\"},\"getTokens(bytes32)\":{\"details\":\"Mainly used for testing as this is redundant with the required substreams implementation.\",\"params\":{\"poolId\":\"The ID of the trading pool.\"},\"returns\":{\"tokens\":\"An array of address contracts.\"}},\"price(bytes32,address,address,uint256[])\":{\"details\":\"The returned prices should include all dex fees. In case the fee is dynamic on the amount traded, the returned price is expected to include the minimum fee. Note that the returned price should be the marginal price which is distinct from the executed price `swap(amount_in) / amount_in`! The marginal price is defined as the price to trade an arbitrarily small (almost zero) amount after the trade of (amount). E.g. the marginal price of a uniswap v2 pool at amount=0 is `reserve0/reserve1`. Ideally this method should be implemented, although it is optional as the price function can be numerically derived from the swap function. In case it is not available, it should be flagged via capabilities and calling it should revert using the `NotImplemented` error. The method needs to be implemented as view as this is usually more efficient and can be run in parallel.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\",\"specifiedAmounts\":\"Amounts to calculate marginal prices at.\"},\"returns\":{\"calculatedPrices\":\"array of prices as fractions corresponding to the provided amounts.\"}},\"priceSingle(bytes32,address,address,uint256)\":{\"details\":\"The resulting price is not scaled by the token decimals. Also this function is not 'view' because Balancer V2 simulates the swap and then returns the amount diff in revert data.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellAmount\":\"The amount of tokens being sold.\",\"sellToken\":\"The token being sold.\"},\"returns\":{\"calculatedPrice\":\"The price of the buy token in terms of the sell as a Fraction struct.\"}},\"swap(bytes32,address,address,uint8,uint256)\":{\"details\":\"This function should be state modifying, meaning it should actually execute the swap and change the state of the EVM accordingly. Please include a gas usage estimate for each amount. This can be achieved e.g. by using the `gasleft()` function. The return type `Trade` has an attribute called price which should contain the value of `price(specifiedAmount)`. As this is optional, defined via `Capability.PriceFunction`, it is valid to return a Fraction(0, 0) value for this price. In that case the price will be estimated numerically.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\",\"side\":\"The side of the trade (Sell or Buy).\",\"specifiedAmount\":\"The amount to be traded.\"},\"returns\":{\"trade\":\"Trade struct representing the executed trade.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getLimits(bytes32,address,address)\":{\"notice\":\"Retrieves the limits for each token.\"},\"getTokens(bytes32)\":{\"notice\":\"Retrieves the tokens in the selected pool.\"},\"price(bytes32,address,address,uint256[])\":{\"notice\":\"Calculates marginal prices for specified amounts (optional).\"},\"priceSingle(bytes32,address,address,uint256)\":{\"notice\":\"Calculate the price of the buy token in terms of the sell token.\"},\"swap(bytes32,address,address,uint8,uint256)\":{\"notice\":\"Simulates swapping tokens on a given pool.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/balancer-v2/BalancerV2SwapAdapter.sol\":\"BalancerV2SwapAdapter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/balancer-v2/BalancerV2SwapAdapter.sol\":{\"keccak256\":\"0xc8b253abb798769107197c28c7d17b500387dc57f97fd7d24636ee6b0e15fad7\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://442c535784b211fd8da880a1eb75f5597c618b78e391dc1acfd3358d0fa687eb\",\"dweb:/ipfs/QmeC2r9fvL8FPnoHYss8f16PMaEK44C5UGu8PEvUb1HKAe\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address payable","name":"vault_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"type":"error","name":"LimitExceeded"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"NotImplemented"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"Unavailable"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function","name":"getCapabilities","outputs":[{"internalType":"enum ISwapAdapterTypes.Capability[]","name":"capabilities","type":"uint8[]"}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"}],"stateMutability":"view","type":"function","name":"getLimits","outputs":[{"internalType":"uint256[]","name":"limits","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function","name":"getPoolIds","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"},{"internalType":"uint256","name":"buyAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"getSellAmount","outputs":[{"internalType":"uint256","name":"sellAmount","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getTokens","outputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"},{"internalType":"uint256[]","name":"specifiedAmounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"price","outputs":[{"internalType":"struct ISwapAdapterTypes.Fraction[]","name":"calculatedPrices","type":"tuple[]","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"},{"internalType":"uint256","name":"sellAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"priceSingle","outputs":[{"internalType":"struct ISwapAdapterTypes.Fraction","name":"calculatedPrice","type":"tuple","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"},{"internalType":"enum ISwapAdapterTypes.OrderSide","name":"side","type":"uint8"},{"internalType":"uint256","name":"specifiedAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swap","outputs":[{"internalType":"struct ISwapAdapterTypes.Trade","name":"trade","type":"tuple","components":[{"internalType":"uint256","name":"calculatedAmount","type":"uint256"},{"internalType":"uint256","name":"gasUsed","type":"uint256"},{"internalType":"struct ISwapAdapterTypes.Fraction","name":"price","type":"tuple","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]}]}],"devdoc":{"kind":"dev","methods":{"getLimits(bytes32,address,address)":{"details":"Retrieve the maximum limits of a token that can be traded. The limit is reached when the change in the received amounts is zero or close to zero or when the swap fails because of the pools restrictions. Overestimate if in doubt rather than underestimate. The swap function should not error with `LimitExceeded` if called with amounts below the limit.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold."},"returns":{"limits":"An array of size two indicating the limit amount for the sell token (maximum the pool is willing to buy in sell token) as well as the limit amount of the buy token (maximum the pool is willing to sell in buy token)."}},"getPoolIds(uint256,uint256)":{"details":"Balancer V2 does not support enumerating pools, they have to be indexed off-chain."},"getTokens(bytes32)":{"details":"Mainly used for testing as this is redundant with the required substreams implementation.","params":{"poolId":"The ID of the trading pool."},"returns":{"tokens":"An array of address contracts."}},"price(bytes32,address,address,uint256[])":{"details":"The returned prices should include all dex fees. In case the fee is dynamic on the amount traded, the returned price is expected to include the minimum fee. Note that the returned price should be the marginal price which is distinct from the executed price `swap(amount_in) / amount_in`! The marginal price is defined as the price to trade an arbitrarily small (almost zero) amount after the trade of (amount). E.g. the marginal price of a uniswap v2 pool at amount=0 is `reserve0/reserve1`. Ideally this method should be implemented, although it is optional as the price function can be numerically derived from the swap function. In case it is not available, it should be flagged via capabilities and calling it should revert using the `NotImplemented` error. The method needs to be implemented as view as this is usually more efficient and can be run in parallel.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold.","specifiedAmounts":"Amounts to calculate marginal prices at."},"returns":{"calculatedPrices":"array of prices as fractions corresponding to the provided amounts."}},"priceSingle(bytes32,address,address,uint256)":{"details":"The resulting price is not scaled by the token decimals. Also this function is not 'view' because Balancer V2 simulates the swap and then returns the amount diff in revert data.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellAmount":"The amount of tokens being sold.","sellToken":"The token being sold."},"returns":{"calculatedPrice":"The price of the buy token in terms of the sell as a Fraction struct."}},"swap(bytes32,address,address,uint8,uint256)":{"details":"This function should be state modifying, meaning it should actually execute the swap and change the state of the EVM accordingly. Please include a gas usage estimate for each amount. This can be achieved e.g. by using the `gasleft()` function. The return type `Trade` has an attribute called price which should contain the value of `price(specifiedAmount)`. As this is optional, defined via `Capability.PriceFunction`, it is valid to return a Fraction(0, 0) value for this price. In that case the price will be estimated numerically.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold.","side":"The side of the trade (Sell or Buy).","specifiedAmount":"The amount to be traded."},"returns":{"trade":"Trade struct representing the executed trade."}}},"version":1},"userdoc":{"kind":"user","methods":{"getLimits(bytes32,address,address)":{"notice":"Retrieves the limits for each token."},"getTokens(bytes32)":{"notice":"Retrieves the tokens in the selected pool."},"price(bytes32,address,address,uint256[])":{"notice":"Calculates marginal prices for specified amounts (optional)."},"priceSingle(bytes32,address,address,uint256)":{"notice":"Calculate the price of the buy token in terms of the sell token."},"swap(bytes32,address,address,uint8,uint256)":{"notice":"Simulates swapping tokens on a given pool."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/balancer-v2/BalancerV2SwapAdapter.sol":"BalancerV2SwapAdapter"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/balancer-v2/BalancerV2SwapAdapter.sol":{"keccak256":"0xc8b253abb798769107197c28c7d17b500387dc57f97fd7d24636ee6b0e15fad7","urls":["bzz-raw://442c535784b211fd8da880a1eb75f5597c618b78e391dc1acfd3358d0fa687eb","dweb:/ipfs/QmeC2r9fvL8FPnoHYss8f16PMaEK44C5UGu8PEvUb1HKAe"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"}},"version":1},"id":41} \ No newline at end of file diff --git a/evm/out/BalancerV2SwapAdapter.sol/IPool.json b/evm/out/BalancerV2SwapAdapter.sol/IPool.json deleted file mode 100644 index 260b5e0..0000000 --- a/evm/out/BalancerV2SwapAdapter.sol/IPool.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"getActualSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBptIndex","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getVirtualSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"getActualSupply()":"876f303b","getBptIndex()":"82687a56","getVirtualSupply()":"de82cd34"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getActualSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBptIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVirtualSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/balancer-v2/BalancerV2SwapAdapter.sol\":\"IPool\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/balancer-v2/BalancerV2SwapAdapter.sol\":{\"keccak256\":\"0xc8b253abb798769107197c28c7d17b500387dc57f97fd7d24636ee6b0e15fad7\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://442c535784b211fd8da880a1eb75f5597c618b78e391dc1acfd3358d0fa687eb\",\"dweb:/ipfs/QmeC2r9fvL8FPnoHYss8f16PMaEK44C5UGu8PEvUb1HKAe\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"getActualSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBptIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getVirtualSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/balancer-v2/BalancerV2SwapAdapter.sol":"IPool"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/balancer-v2/BalancerV2SwapAdapter.sol":{"keccak256":"0xc8b253abb798769107197c28c7d17b500387dc57f97fd7d24636ee6b0e15fad7","urls":["bzz-raw://442c535784b211fd8da880a1eb75f5597c618b78e391dc1acfd3358d0fa687eb","dweb:/ipfs/QmeC2r9fvL8FPnoHYss8f16PMaEK44C5UGu8PEvUb1HKAe"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"}},"version":1},"id":41} \ No newline at end of file diff --git a/evm/out/BalancerV2SwapAdapter.sol/IVault.json b/evm/out/BalancerV2SwapAdapter.sol/IVault.json deleted file mode 100644 index 4f0f60f..0000000 --- a/evm/out/BalancerV2SwapAdapter.sol/IVault.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"receive","stateMutability":"payable"},{"type":"function","name":"WETH","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"batchSwap","inputs":[{"name":"kind","type":"uint8","internalType":"enum IVault.SwapKind"},{"name":"swaps","type":"tuple[]","internalType":"struct IVault.BatchSwapStep[]","components":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"assetInIndex","type":"uint256","internalType":"uint256"},{"name":"assetOutIndex","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"userData","type":"bytes","internalType":"bytes"}]},{"name":"assets","type":"address[]","internalType":"address[]"},{"name":"funds","type":"tuple","internalType":"struct IVault.FundManagement","components":[{"name":"sender","type":"address","internalType":"address"},{"name":"fromInternalBalance","type":"bool","internalType":"bool"},{"name":"recipient","type":"address","internalType":"address"},{"name":"toInternalBalance","type":"bool","internalType":"bool"}]},{"name":"limits","type":"int256[]","internalType":"int256[]"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"assetDeltas","type":"int256[]","internalType":"int256[]"}],"stateMutability":"payable"},{"type":"function","name":"deregisterTokens","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"tokens","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"exitPool","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"sender","type":"address","internalType":"address"},{"name":"recipient","type":"address","internalType":"address"},{"name":"request","type":"tuple","internalType":"struct IVault.ExitPoolRequest","components":[{"name":"assets","type":"address[]","internalType":"address[]"},{"name":"minAmountsOut","type":"uint256[]","internalType":"uint256[]"},{"name":"userData","type":"bytes","internalType":"bytes"},{"name":"toInternalBalance","type":"bool","internalType":"bool"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"flashLoan","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"tokens","type":"address[]","internalType":"address[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"userData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getActionId","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getAuthorizer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getDomainSeparator","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getInternalBalance","inputs":[{"name":"user","type":"address","internalType":"address"},{"name":"tokens","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"balances","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getNextNonce","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPausedState","inputs":[],"outputs":[{"name":"paused","type":"bool","internalType":"bool"},{"name":"pauseWindowEndTime","type":"uint256","internalType":"uint256"},{"name":"bufferPeriodEndTime","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPool","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"getPoolTokenInfo","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"cash","type":"uint256","internalType":"uint256"},{"name":"managed","type":"uint256","internalType":"uint256"},{"name":"lastChangeBlock","type":"uint256","internalType":"uint256"},{"name":"assetManager","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getPoolTokens","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"tokens","type":"address[]","internalType":"address[]"},{"name":"balances","type":"uint256[]","internalType":"uint256[]"},{"name":"lastChangeBlock","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getProtocolFeesCollector","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"hasApprovedRelayer","inputs":[{"name":"user","type":"address","internalType":"address"},{"name":"relayer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"joinPool","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"sender","type":"address","internalType":"address"},{"name":"recipient","type":"address","internalType":"address"},{"name":"request","type":"tuple","internalType":"struct IVault.JoinPoolRequest","components":[{"name":"assets","type":"address[]","internalType":"address[]"},{"name":"maxAmountsIn","type":"uint256[]","internalType":"uint256[]"},{"name":"userData","type":"bytes","internalType":"bytes"},{"name":"fromInternalBalance","type":"bool","internalType":"bool"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"managePoolBalance","inputs":[{"name":"ops","type":"tuple[]","internalType":"struct IVault.PoolBalanceOp[]","components":[{"name":"kind","type":"uint8","internalType":"enum IVault.SwapKind"},{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"manageUserBalance","inputs":[{"name":"ops","type":"tuple[]","internalType":"struct IVault.UserBalanceOp[]","components":[{"name":"kind","type":"uint8","internalType":"enum IVault.SwapKind"},{"name":"asset","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"sender","type":"address","internalType":"address"},{"name":"recipient","type":"address","internalType":"address"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"queryBatchSwap","inputs":[{"name":"kind","type":"uint8","internalType":"enum IVault.SwapKind"},{"name":"swaps","type":"tuple[]","internalType":"struct IVault.BatchSwapStep[]","components":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"assetInIndex","type":"uint256","internalType":"uint256"},{"name":"assetOutIndex","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"userData","type":"bytes","internalType":"bytes"}]},{"name":"assets","type":"address[]","internalType":"address[]"},{"name":"funds","type":"tuple","internalType":"struct IVault.FundManagement","components":[{"name":"sender","type":"address","internalType":"address"},{"name":"fromInternalBalance","type":"bool","internalType":"bool"},{"name":"recipient","type":"address","internalType":"address"},{"name":"toInternalBalance","type":"bool","internalType":"bool"}]}],"outputs":[{"name":"","type":"int256[]","internalType":"int256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"registerPool","inputs":[{"name":"specialization","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"registerTokens","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"tokens","type":"address[]","internalType":"address[]"},{"name":"assetManagers","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setAuthorizer","inputs":[{"name":"newAuthorizer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPaused","inputs":[{"name":"paused","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRelayerApproval","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"relayer","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swap","inputs":[{"name":"singleSwap","type":"tuple","internalType":"struct IVault.SingleSwap","components":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"kind","type":"uint8","internalType":"enum IVault.SwapKind"},{"name":"assetIn","type":"address","internalType":"address"},{"name":"assetOut","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"userData","type":"bytes","internalType":"bytes"}]},{"name":"funds","type":"tuple","internalType":"struct IVault.FundManagement","components":[{"name":"sender","type":"address","internalType":"address"},{"name":"fromInternalBalance","type":"bool","internalType":"bool"},{"name":"recipient","type":"address","internalType":"address"},{"name":"toInternalBalance","type":"bool","internalType":"bool"}]},{"name":"limit","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"event","name":"AuthorizerChanged","inputs":[{"name":"newAuthorizer","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ExternalBalanceTransfer","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"FlashLoan","inputs":[{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"feeAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"InternalBalanceChanged","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"delta","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"PausedStateChanged","inputs":[{"name":"paused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"PoolBalanceChanged","inputs":[{"name":"poolId","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"liquidityProvider","type":"address","indexed":true,"internalType":"address"},{"name":"tokens","type":"address[]","indexed":false,"internalType":"address[]"},{"name":"deltas","type":"int256[]","indexed":false,"internalType":"int256[]"},{"name":"protocolFeeAmounts","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"PoolBalanceManaged","inputs":[{"name":"poolId","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"assetManager","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"cashDelta","type":"int256","indexed":false,"internalType":"int256"},{"name":"managedDelta","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"PoolRegistered","inputs":[{"name":"poolId","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"poolAddress","type":"address","indexed":true,"internalType":"address"},{"name":"specialization","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"RelayerApprovalChanged","inputs":[{"name":"relayer","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Swap","inputs":[{"name":"poolId","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"tokenIn","type":"address","indexed":true,"internalType":"address"},{"name":"tokenOut","type":"address","indexed":true,"internalType":"address"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOut","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokensDeregistered","inputs":[{"name":"poolId","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"tokens","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"TokensRegistered","inputs":[{"name":"poolId","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"tokens","type":"address[]","indexed":false,"internalType":"address[]"},{"name":"assetManagers","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"WETH()":"ad5c4648","batchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool),int256[],uint256)":"945bcec9","deregisterTokens(bytes32,address[])":"7d3aeb96","exitPool(bytes32,address,address,(address[],uint256[],bytes,bool))":"8bdb3913","flashLoan(address,address[],uint256[],bytes)":"5c38449e","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getDomainSeparator()":"ed24911d","getInternalBalance(address,address[])":"0f5a6efa","getNextNonce(address)":"90193b7c","getPausedState()":"1c0de051","getPool(bytes32)":"f6c00927","getPoolTokenInfo(bytes32,address)":"b05f8e48","getPoolTokens(bytes32)":"f94d4668","getProtocolFeesCollector()":"d2946c2b","hasApprovedRelayer(address,address)":"fec90d72","joinPool(bytes32,address,address,(address[],uint256[],bytes,bool))":"b95cac28","managePoolBalance((uint8,bytes32,address,uint256)[])":"e6c46092","manageUserBalance((uint8,address,uint256,address,address)[])":"0e8e3e84","queryBatchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool))":"f84d066e","registerPool(uint8)":"09b2760f","registerTokens(bytes32,address[],address[])":"66a9c7d2","setAuthorizer(address)":"058a628f","setPaused(bool)":"16c38b3c","setRelayerApproval(address,address,bool)":"fa6e671d","swap((bytes32,uint8,address,address,uint256,bytes),(address,bool,address,bool),uint256,uint256)":"52bbbe29"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAuthorizer\",\"type\":\"address\"}],\"name\":\"AuthorizerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ExternalBalanceTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"}],\"name\":\"FlashLoan\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"delta\",\"type\":\"int256\"}],\"name\":\"InternalBalanceChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"PausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"deltas\",\"type\":\"int256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"protocolFeeAmounts\",\"type\":\"uint256[]\"}],\"name\":\"PoolBalanceChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assetManager\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"cashDelta\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"managedDelta\",\"type\":\"int256\"}],\"name\":\"PoolBalanceManaged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"poolAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"specialization\",\"type\":\"uint8\"}],\"name\":\"PoolRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"RelayerApprovalChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"TokensDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"assetManagers\",\"type\":\"address[]\"}],\"name\":\"TokensRegistered\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"assetInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"assetOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.BatchSwapStep[]\",\"name\":\"swaps\",\"type\":\"tuple[]\"},{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"int256[]\",\"name\":\"limits\",\"type\":\"int256[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"batchSwap\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"assetDeltas\",\"type\":\"int256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"deregisterTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.ExitPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"exitPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"flashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"getInternalBalance\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPausedState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bufferPeriodEndTime\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"getPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getPoolTokenInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"cash\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"managed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastChangeBlock\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"assetManager\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"getPoolTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"lastChangeBlock\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProtocolFeesCollector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"}],\"name\":\"hasApprovedRelayer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.JoinPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"joinPool\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IVault.PoolBalanceOp[]\",\"name\":\"ops\",\"type\":\"tuple[]\"}],\"name\":\"managePoolBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct IVault.UserBalanceOp[]\",\"name\":\"ops\",\"type\":\"tuple[]\"}],\"name\":\"manageUserBalance\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"assetInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"assetOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.BatchSwapStep[]\",\"name\":\"swaps\",\"type\":\"tuple[]\"},{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"}],\"name\":\"queryBatchSwap\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"\",\"type\":\"int256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"specialization\",\"type\":\"uint8\"}],\"name\":\"registerPool\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"assetManagers\",\"type\":\"address[]\"}],\"name\":\"registerTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAuthorizer\",\"type\":\"address\"}],\"name\":\"setAuthorizer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"setPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setRelayerApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"assetIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"assetOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.SingleSwap\",\"name\":\"singleSwap\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"queryBatchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool))\":{\"details\":\"Simulates a call to `batchSwap`, returning an array of Vault asset deltas. Calls to `swap` cannot be simulated directly, but an equivalent `batchSwap` call can and will yield the exact same result. Each element in the array corresponds to the asset at the same index, and indicates the number of tokens (or ETH) the Vault would take from the sender (if positive) or send to the recipient (if negative). The arguments it receives are the same that an equivalent `batchSwap` call would receive. Unlike `batchSwap`, this function performs no checks on the sender or recipient field in the `funds` struct. This makes it suitable to be called by off-chain applications via eth_call without needing to hold tokens, approve them for the Vault, or even know a user's address. Note that this function is not 'view' (due to implementation details): the client code must explicitly execute eth_call instead of eth_sendTransaction.\"},\"swap((bytes32,uint8,address,address,uint256,bytes),(address,bool,address,bool),uint256,uint256)\":{\"details\":\"Performs a swap with a single Pool. If the swap is 'given in' (the number of tokens to send to the Pool is known), it returns the amount of tokens taken from the Pool, which must be greater than or equal to `limit`. If the swap is 'given out' (the number of tokens to take from the Pool is known), it returns the amount of tokens sent to the Pool, which must be less than or equal to `limit`. Internal Balance usage and the recipient are determined by the `funds` struct. Emits a `Swap` event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/balancer-v2/BalancerV2SwapAdapter.sol\":\"IVault\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/balancer-v2/BalancerV2SwapAdapter.sol\":{\"keccak256\":\"0xc8b253abb798769107197c28c7d17b500387dc57f97fd7d24636ee6b0e15fad7\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://442c535784b211fd8da880a1eb75f5597c618b78e391dc1acfd3358d0fa687eb\",\"dweb:/ipfs/QmeC2r9fvL8FPnoHYss8f16PMaEK44C5UGu8PEvUb1HKAe\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"newAuthorizer","type":"address","indexed":true}],"type":"event","name":"AuthorizerChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"ExternalBalanceTransfer","anonymous":false},{"inputs":[{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"feeAmount","type":"uint256","indexed":false}],"type":"event","name":"FlashLoan","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"int256","name":"delta","type":"int256","indexed":false}],"type":"event","name":"InternalBalanceChanged","anonymous":false},{"inputs":[{"internalType":"bool","name":"paused","type":"bool","indexed":false}],"type":"event","name":"PausedStateChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32","indexed":true},{"internalType":"address","name":"liquidityProvider","type":"address","indexed":true},{"internalType":"address[]","name":"tokens","type":"address[]","indexed":false},{"internalType":"int256[]","name":"deltas","type":"int256[]","indexed":false},{"internalType":"uint256[]","name":"protocolFeeAmounts","type":"uint256[]","indexed":false}],"type":"event","name":"PoolBalanceChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32","indexed":true},{"internalType":"address","name":"assetManager","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"int256","name":"cashDelta","type":"int256","indexed":false},{"internalType":"int256","name":"managedDelta","type":"int256","indexed":false}],"type":"event","name":"PoolBalanceManaged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32","indexed":true},{"internalType":"address","name":"poolAddress","type":"address","indexed":true},{"internalType":"uint8","name":"specialization","type":"uint8","indexed":false}],"type":"event","name":"PoolRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"relayer","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"RelayerApprovalChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32","indexed":true},{"internalType":"address","name":"tokenIn","type":"address","indexed":true},{"internalType":"address","name":"tokenOut","type":"address","indexed":true},{"internalType":"uint256","name":"amountIn","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountOut","type":"uint256","indexed":false}],"type":"event","name":"Swap","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32","indexed":true},{"internalType":"address[]","name":"tokens","type":"address[]","indexed":false}],"type":"event","name":"TokensDeregistered","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32","indexed":true},{"internalType":"address[]","name":"tokens","type":"address[]","indexed":false},{"internalType":"address[]","name":"assetManagers","type":"address[]","indexed":false}],"type":"event","name":"TokensRegistered","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"internalType":"struct IVault.BatchSwapStep[]","name":"swaps","type":"tuple[]","components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"assetInIndex","type":"uint256"},{"internalType":"uint256","name":"assetOutIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}]},{"internalType":"address[]","name":"assets","type":"address[]"},{"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple","components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}]},{"internalType":"int256[]","name":"limits","type":"int256[]"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"batchSwap","outputs":[{"internalType":"int256[]","name":"assetDeltas","type":"int256[]"}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address[]","name":"tokens","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"deregisterTokens"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"struct IVault.ExitPoolRequest","name":"request","type":"tuple","components":[{"internalType":"address[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}]}],"stateMutability":"nonpayable","type":"function","name":"exitPool"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"flashLoan"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"stateMutability":"view","type":"function","name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getAuthorizer","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address[]","name":"tokens","type":"address[]"}],"stateMutability":"view","type":"function","name":"getInternalBalance","outputs":[{"internalType":"uint256[]","name":"balances","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"view","type":"function","name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPausedState","outputs":[{"internalType":"bool","name":"paused","type":"bool"},{"internalType":"uint256","name":"pauseWindowEndTime","type":"uint256"},{"internalType":"uint256","name":"bufferPeriodEndTime","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getPool","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"getPoolTokenInfo","outputs":[{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"managed","type":"uint256"},{"internalType":"uint256","name":"lastChangeBlock","type":"uint256"},{"internalType":"address","name":"assetManager","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getPoolTokens","outputs":[{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"balances","type":"uint256[]"},{"internalType":"uint256","name":"lastChangeBlock","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getProtocolFeesCollector","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"relayer","type":"address"}],"stateMutability":"view","type":"function","name":"hasApprovedRelayer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"struct IVault.JoinPoolRequest","name":"request","type":"tuple","components":[{"internalType":"address[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"}]}],"stateMutability":"payable","type":"function","name":"joinPool"},{"inputs":[{"internalType":"struct IVault.PoolBalanceOp[]","name":"ops","type":"tuple[]","components":[{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"managePoolBalance"},{"inputs":[{"internalType":"struct IVault.UserBalanceOp[]","name":"ops","type":"tuple[]","components":[{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"}]}],"stateMutability":"payable","type":"function","name":"manageUserBalance"},{"inputs":[{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"internalType":"struct IVault.BatchSwapStep[]","name":"swaps","type":"tuple[]","components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"assetInIndex","type":"uint256"},{"internalType":"uint256","name":"assetOutIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}]},{"internalType":"address[]","name":"assets","type":"address[]"},{"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple","components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}]}],"stateMutability":"nonpayable","type":"function","name":"queryBatchSwap","outputs":[{"internalType":"int256[]","name":"","type":"int256[]"}]},{"inputs":[{"internalType":"uint8","name":"specialization","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"registerPool","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"address[]","name":"assetManagers","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"registerTokens"},{"inputs":[{"internalType":"address","name":"newAuthorizer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setAuthorizer"},{"inputs":[{"internalType":"bool","name":"paused","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setPaused"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"relayer","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setRelayerApproval"},{"inputs":[{"internalType":"struct IVault.SingleSwap","name":"singleSwap","type":"tuple","components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"internalType":"address","name":"assetIn","type":"address"},{"internalType":"address","name":"assetOut","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}]},{"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple","components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}]},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"swap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"queryBatchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool))":{"details":"Simulates a call to `batchSwap`, returning an array of Vault asset deltas. Calls to `swap` cannot be simulated directly, but an equivalent `batchSwap` call can and will yield the exact same result. Each element in the array corresponds to the asset at the same index, and indicates the number of tokens (or ETH) the Vault would take from the sender (if positive) or send to the recipient (if negative). The arguments it receives are the same that an equivalent `batchSwap` call would receive. Unlike `batchSwap`, this function performs no checks on the sender or recipient field in the `funds` struct. This makes it suitable to be called by off-chain applications via eth_call without needing to hold tokens, approve them for the Vault, or even know a user's address. Note that this function is not 'view' (due to implementation details): the client code must explicitly execute eth_call instead of eth_sendTransaction."},"swap((bytes32,uint8,address,address,uint256,bytes),(address,bool,address,bool),uint256,uint256)":{"details":"Performs a swap with a single Pool. If the swap is 'given in' (the number of tokens to send to the Pool is known), it returns the amount of tokens taken from the Pool, which must be greater than or equal to `limit`. If the swap is 'given out' (the number of tokens to take from the Pool is known), it returns the amount of tokens sent to the Pool, which must be less than or equal to `limit`. Internal Balance usage and the recipient are determined by the `funds` struct. Emits a `Swap` event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/balancer-v2/BalancerV2SwapAdapter.sol":"IVault"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/balancer-v2/BalancerV2SwapAdapter.sol":{"keccak256":"0xc8b253abb798769107197c28c7d17b500387dc57f97fd7d24636ee6b0e15fad7","urls":["bzz-raw://442c535784b211fd8da880a1eb75f5597c618b78e391dc1acfd3358d0fa687eb","dweb:/ipfs/QmeC2r9fvL8FPnoHYss8f16PMaEK44C5UGu8PEvUb1HKAe"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"}},"version":1},"id":41} \ No newline at end of file diff --git a/evm/out/BalancerV2SwapAdapter.t.sol/BalancerV2SwapAdapterTest.json b/evm/out/BalancerV2SwapAdapter.t.sol/BalancerV2SwapAdapterTest.json deleted file mode 100644 index 0087cec..0000000 --- a/evm/out/BalancerV2SwapAdapter.t.sol/BalancerV2SwapAdapterTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"fractionToInt","inputs":[{"name":"price","type":"tuple","internalType":"struct ISwapAdapterTypes.Fraction","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"runPoolBehaviourTest","inputs":[{"name":"adapter","type":"address","internalType":"contract ISwapAdapter"},{"name":"poolIds","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stringPctgs","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testBalancerV2PoolBehaviour","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testGetCapabilitiesFuzz","inputs":[{"name":"pool","type":"bytes32","internalType":"bytes32"},{"name":"t0","type":"address","internalType":"address"},{"name":"t1","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testGetLimits","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"testGetPoolIds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testGetTokens","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPrice","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPriceDecreasing","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPriceSingleFuzz","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapBuyIncreasing","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapFuzz","inputs":[{"name":"specifiedAmount","type":"uint256","internalType":"uint256"},{"name":"isBuy","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapSellIncreasing","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LimitExceeded","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotImplemented","inputs":[{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"Unavailable","inputs":[{"name":"reason","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x6080604052346102be57600160ff19600c541617600c55600160ff19601e541617601e556040516080810181811060018060401b0382111761020c5760405261004860406102c2565b6002815261302560f01b6020820152815261006360406102c2565b6004815263302e312560e01b6020820152602082015261008360406102c2565b600381526235302560e81b602082015260408201526100a260406102c2565b60048152633130302560e01b60208201526060820152601f546004601f5580600410610220575b50601f5f9081525f516020618dec5f395f51905f52915b600482106100f757604051618ab690816103368239f35b80518051906001600160401b03821161020c5761011485546102e7565b601f81116101d1575b50602090601f83116001146101685792826001949360209386955f9261015d575b50505f19600383901b1c191690841b1786555b019301910190916100e0565b015190505f8061013e565b90601f19831691865f52815f20925f5b8181106101b957509360209360019693879693838895106101a1575b505050811b018655610151565b01515f1960f88460031b161c191690555f8080610194565b82840151855560019094019360209384019301610178565b6101fc90865f5260205f20601f850160051c81019160208610610202575b601f0160051c019061031f565b5f61011d565b90915081906101ef565b634e487b7160e01b5f52604160045260245ffd5b601f5f525f516020618dec5f395f51905f52017fa03837a25210ee280c2113ff4b77ca23440b19d4866cca721c801278fd08d80b5b81811061026257506100c9565b8061026f600192546102e7565b8061027c575b5001610255565b601f8111831461029157505f81555b5f610275565b6102ad90825f5283601f60205f20920160051c8201910161031f565b805f525f602081208183555561028b565b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761020c57604052565b90600182811c92168015610315575b602083101461030157565b634e487b7160e01b5f52602260045260245ffd5b91607f16916102f6565b81811061032a575050565b5f815560010161031f56fe610200806040526004361015610013575f80fd5b5f905f3560e01c90816308c4174514613a3b575080630a9254e414613600578063111f339214612f7f5780631ed7831c14612f015780632ade388014612d425780633e5e3c2314612cc45780633f7286f414612c465780634a36e37214612a7157806353e5d760146127d757806366d9a9a0146126295780637f55213e146118125780638335a17f146116a957806385226c81146116175780638f1ed4c614611490578063916a17c61461120457806399cef81b146110b0578063a00872f114611044578063a2121ee514610fee578063b5508aa914610f55578063ba414fa614610f30578063d170c3cc14610e8e578063d3479a0114610dc8578063e20c9f7114610d3a578063e865164514610aea578063fa7626d414610ac75763fe3ee58b1461013d575f80fd5b3461085b578060031936011261085b57604051610ca061015d8183613aaa565b60648252601f1901366020830137610173613eb1565b90825b60648110610231575050815b6063811061018e578280f35b6101988183613f2c565b5151600182019081831161021d57610210826101c6610217936101be6001979689613f2c565b515190614523565b6101ed60206101d58689613f2c565b51015160206101e4848a613f2c565b51015190614523565b6040610207816101fd878a613f2c565b5101519288613f2c565b5101519061457e565b850b6145bc565b01610182565b634e487b7160e01b85526011600452602485fd5b6001810180821161021d5780600a0290600a82048103610a4157678ac7230489e800000290808204670de0b6b3a7640000149015171561021d576102758284613f2c565b52604051634b88b8ad60e11b815290602082600481885f516020618a015f395f51905f525af191821561071e578592610a94575b5060205485906040906102e5906001600160a01b03166102c98588613f2c565b51835194858094819363e357d6f960e01b835260048301613fc6565b03925af18015610757578690610a55575b61031c91506103146103088487613f2c565b51602083015190613d53565b905190613d7a565b8060011b9080820460021490151715610a4157858060405160208101906370a0823160e01b825230602482015260248152610358604482613aaa565b51905f516020618a415f395f51905f525afa5061038561037661608c565b60208082518301019101613e4f565b5061038e613e5e565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015610a2d576103c38160016103dc9301600e55613c3f565b919091309083549060031b91821b915f19901b19161790565b905560018060a01b0360115416600f5460e01b601054906103fb6163be565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818b5260205260408a20604051602081019061044d8161043f8888866163a7565b03601f198101835282613aaa565b5190208b5260205260ff600360408c2001541615610a1f575b6001600160a01b0384165f908152600d60205260409020908a5260205261043f61049f60408b20936040519283916020830195866163a7565b519020885260205286604081209160018301549260028101546104c28186613ef2565b6108d8575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f516020618a015f395f51905f525afa96871561075757869761089c575b506001908201610100031b5f1901811b198616915f516020618a015f395f51905f523b15610898576040516370ca10bb60e01b81526001600160a01b038616600482015260248101919091529087901b9190911760448201528381606481835f516020618a015f395f51905f525af190811561088d578491610878575b50508461059c616577565b91901591821561086d575b505061077e575050505060206105f2916105bf61705e565b815460405163095ea7b360e01b81526001600160a01b039091166004820152602481019190915291829081906044820190565b0381895f516020618a415f395f51905f525af1801561075757610762575b506020546001600160a01b031660806106298386613f2c565b51604051638307c65560e01b81525f5160206189e15f395f51905f5260048201525f516020618a415f395f51905f5260248201525f516020618a215f395f51905f52604482015260016064820152608481019190915291829060a49082908a905af1908115610757578691610729575b506106a48286613f2c565b526106af8185613f2c565b5060405191631135fc2960e21b83526004830152602082602481885f516020618a015f395f51905f525af191821561071e576001926106f0575b5001610176565b6107109060203d8111610717575b6107088183613aaa565b810190613f40565b505f6106e9565b503d6106fe565b6040513d87823e3d90fd5b61074a915060803d8111610750575b6107428183613aaa565b810190613f80565b5f610699565b503d610738565b6040513d88823e3d90fd5b6107799060203d8111610717576107088183613aaa565b610610565b82945054905f516020618a015f395f51905f523b15610869576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810191909152604481019290925281606481835f516020618a015f395f51905f525af1801561085e57610846575b60405162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b610851828092613aaa565b61085b57806107e5565b80fd5b6040513d84823e3d90fd5b8280fd5b14159050855f6105a7565b8161088291613aaa565b61086957825f610591565b6040513d86823e3d90fd5b8580fd5b955095506020853d82116108d0575b816108b860209383613aaa565b810103126108cc579351948b949081610514565b5f80fd5b3d91506108ab565b909192506108e68185613ef2565b610100036101008111610a0b5760ff8111610a0b5760405163348051d760e11b8152600190911b600482018190528b80836024815f516020618a015f395f51905f525afa9283156109fe5760209382606a926109a194926109da575b506040519586925f516020618a615f395f51905f52828501525f5160206189c15f395f51905f52604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f198101845283613aaa565b8610156109b25750908992916104c7565b60405162461bcd60e51b8152602060048201529081906109d6906024830190613b0d565b0390fd5b6109f79192503d8084833e6109ef8183613aaa565b810190613ded565b905f610942565b50604051903d90823e3d90fd5b634e487b7160e01b8b52601160045260248bfd5b610a27616794565b50610466565b634e487b7160e01b87526041600452602487fd5b634e487b7160e01b86526011600452602486fd5b5060403d8111610a8d575b610a6a8183613aaa565b810190604081830312610a895761031c91610a8491613f58565b6102f6565b8680fd5b503d610a60565b9091506020813d8211610abf575b81610aaf60209383613aaa565b810103126108cc5751905f6102a9565b3d9150610aa2565b503461085b578060031936011261085b57602060ff601e54166040519015158152f35b503461085b578060031936011261085b5760205460405163549387df60e11b81525f5160206189e15f395f51905f5260048201525f516020618a415f395f51905f5260248201525f516020618a215f395f51905f5260448201526001600160a01b039091169082908181606481865afa90811561085e578291610d18575b505f516020618a015f395f51905f523b15610cf457604051632631f2b160e11b81526001600482015282816024815f516020618a015f395f51905f525afa908115610d0d578391610cf8575b5050610bbf90613eff565b5168056bc75e2d63100000105f516020618a015f395f51905f523b15610cf45760405190632631f2b160e11b8252600482015281816024815f516020618a015f395f51905f525afa801561085e57610cdf575b50506040805163e357d6f960e01b81525f5160206189e15f395f51905f5260048201525f516020618a415f395f51905f5260248201525f516020618a215f395f51905f52604482015268056bc75e2d631000006064820152918290608490829086905af190811561085e578291610c9f575b50602081610c95610c9c935161460c565b015161460c565b80f35b905060403d604011610cd8575b610cb68183613aaa565b810160408282031261086957610cd1602091610c9c93613f58565b9150610c84565b503d610cac565b81610ce991613aaa565b610cf457815f610c12565b5080fd5b81610d0291613aaa565b610cf457815f610bb4565b6040513d85823e3d90fd5b610d3491503d8084833e610d2c8183613aaa565b8101906140ad565b5f610b68565b503461085b578060031936011261085b5760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b818110610da957610da585610d9981870382613aaa565b60405191829182613acb565b0390f35b82546001600160a01b0316845260209093019260019283019201610d82565b503461085b578060031936011261085b5760205460405163549387df60e11b81525f5160206189e15f395f51905f5260048201525f516020618a415f395f51905f5260248201525f516020618a215f395f51905f526044820152908290829060649082906001600160a01b03165afa90811561085e57610c9c91610e67918491610e74575b50610e5b6002825114614508565b610e6f610e6782613eff565b511515614508565b613f0c565b610e8891503d8086833e610d2c8183613aaa565b5f610e4d565b503461085b57604036600319011261085b57600435906001600160a01b038216820361085b576024356001600160401b038111610cf45736602382011215610cf457806004013592610edf84613d3c565b91610eed6040519384613aaa565b8483526024602084019560051b82010190368211610f2c57602401945b818610610f1c5784610c9c8585614386565b8535815260209586019501610f0a565b8480fd5b503461085b578060031936011261085b576020610f4b6142eb565b6040519015158152f35b503461085b578060031936011261085b57601954610f7281613d3c565b91610f806040519384613aaa565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b838310610fc25760405180610da58782613be0565b600160208192604051610fe081610fd98189613cbb565b0382613aaa565b815201920192019190610fad565b503461085b578060031936011261085b57610c9c604051611010604082613aaa565b60018152602036818301375f5160206189e15f395f51905f5261103282613eff565b526020546001600160a01b0316614386565b503461085b57602036600319011261085b57600435601f54811015610cf45761106c90613c6b565b91909161109c57604051610da59061108881610fd98187613cbb565b604051918291602083526020830190613b0d565b634e487b7160e01b81526004819052602490fd5b503461085b578060031936011261085b5780604051631d04569d60e21b602082015260206024820152602060448201527f42616c616e636572563253776170416461707465722e676574506f6f6c496473606482015260648152611115608482613aaa565b5f516020618a015f395f51905f523b156112015781611150916040518093819263f28dceb360e01b8352602060048401526024830190613b0d565b0381835f516020618a015f395f51905f525af1801561085e576111ec575b506020546040516323eeca0160e01b81526064600482015260c860248201529190829060449082906001600160a01b03165afa801561085e576111af575080f35b3d8083833e6111be8183613aaa565b81016020828203126108695781516001600160401b0381116111e8576111e4920161428e565b5080f35b8380fd5b816111f691613aaa565b61085b57805f61116e565b50fd5b503461085b578060031936011261085b57601c5461122181613d3c565b9061122f6040519283613aaa565b808252601c8352827f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b8383106112725760405180610da58782613b31565b60405161127e81613a74565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b8160078401106113f157846001979460029794602097946113099454918181106113d5575b8181106113b9575b81811061139d575b818110611381575b818110611365575b818110611349575b81811061132f575b1061131b575b500382613aaa565b8382015281520192019201919061125d565b6001600160e01b031916815286015f611301565b828a1b6001600160e01b0319168452928901928b016112fb565b604083901b6001600160e01b0319168452928901928b016112f3565b606083901b6001600160e01b0319168452928901928b016112eb565b608083901b6001600160e01b0319168452928901928b016112e3565b60a083901b6001600160e01b0319168452928901928b016112db565b60c083901b6001600160e01b0319168452928901928b016112d3565b60e083901b6001600160e01b0319168452928901928b016112cb565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e08201520194019201916112a6565b503461085b578060031936011261085b5760205460405163ecbbc03360e01b81525f5160206189e15f395f51905f52600482015282918290829060249082906001600160a01b03165afa90811561085e5782916115f5575b506001600160a01b036114fa82613eff565b51165f516020618a015f395f51905f523b156115f157604051906328a9b0fb60e11b825260048201525f516020618a415f395f51905f52602482015282816044815f516020618a015f395f51905f525afa908115610d0d5783916115dc575b506001600160a01b039161156d9150613f0c565b51165f516020618a015f395f51905f523b1561120157604051906328a9b0fb60e11b825260048201525f516020618a215f395f51905f52602482015281816044815f516020618a015f395f51905f525afa801561085e576115cb5750f35b816115d591613aaa565b61085b5780f35b816115e691613aaa565b61120157815f611559565b5050fd5b61161191503d8084833e6116098183613aaa565b810190614204565b5f6114e8565b503461085b578060031936011261085b57601a5461163481613d3c565b916116426040519384613aaa565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b8383106116845760405180610da58782613be0565b60016020819260405161169b81610fd98189613cbb565b81520192019201919061166f565b503461085b578060031936011261085b57604051906116c9606083613aaa565b60028252602082019181906040368537670de0b6b3a76400006116eb82613eff565b52671bc16d674ec800006116fe82613f0c565b5260205460405163155adc9160e31b81525f5160206189e15f395f51905f5260048201525f516020618a415f395f51905f5260248201525f516020618a215f395f51905f52604482015260806064820152915160848301819052919485926001600160a01b039092169160a484019190855b8181106117f65750505083838281935003925af19182156109fe5781926117d2575b50805b82518110156111e457806117b56117ae60019386613f2c565b515161460c565b6117cc60206117c48387613f2c565b51015161460c565b01611795565b6117ef9192503d8084833e6117e78183613aaa565b810190614126565b905f611792565b8251845287965088955060209384019390920191600101611770565b503461085b57604036600319011261085b57600435602435801515810361086957156126235760015b5f516020618a015f395f51905f523b1561086957604051632631f2b160e11b81528215156004820152839081816024815f516020618a015f395f51905f525afa801561085e5761260e575b5060205460405163549387df60e11b81525f5160206189e15f395f51905f5260048201525f516020618a415f395f51905f5260248201525f516020618a215f395f51905f5260448201529190829060649082906001600160a01b03165afa90811561088d5784916125f4575b5060028210156125e057836001831491825f1461213f5761191290613f0c565b5184105f516020618a015f395f51905f523b15610cf45760405190632631f2b160e11b8252600482015281816024815f516020618a015f395f51905f525afa801561085e5761212a575b508060405160208101906370a0823160e01b825230602482015260248152611985604482613aaa565b51905f516020618a415f395f51905f525afa506119a361037661608c565b506119ac613e5e565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015612116576103c38160016119e19301600e55613c3f565b905560018060a01b0360115416600f5460e01b60105490611a006163be565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818952602052604088206040516020810190611a448161043f8888866163a7565b519020895260205260ff600360408a2001541615612108575b6001600160a01b0384165f908152600d6020526040902090885260205261043f611a9660408920936040519283916020830195866163a7565b51902086526020528460408120916001830154926002810154611ab98186613ef2565b611ff2578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f516020618a015f395f51905f525afa968715610757578697611fb9575b506001908201610100031b5f1901811b1986165f516020618a015f395f51905f523b15610898576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528381606481835f516020618a015f395f51905f525af190811561088d578491611fa4575b5050611b8e616577565b9015908115611f98575b5061077e5750505050611ba961705e565b6020805460405163095ea7b360e01b81526001600160a01b0390911660048201525f1960248201529081604481885f516020618a415f395f51905f525af1801561071e57611f79575b505b6040516370a0823160e01b8152306004820152926020846024815f516020618a415f395f51905f525afa93841561071e578594611f45575b506040516370a0823160e01b8152306004820152916020836024815f516020618a215f395f51905f525afa928315610757578693611f11575b50602054604051638307c65560e01b81525f5160206189e15f395f51905f5260048201525f516020618a415f395f51905f5260248201525f516020618a215f395f51905f526044820152606481019590955260848501839052608090859060a49082908a906001600160a01b03165af1938415610757578694611ef0575b508351611cee578580f35b15611df5576040516370a0823160e01b81523060048201526020816024815f516020618a215f395f51905f525afa908115610757578691611dc1575b50611d3e92611d3891613fb9565b9061465b565b516040516370a0823160e01b81523060048201526020816024815f516020618a415f395f51905f525afa90811561088d578491611d8d575b50611d3890611d8493613fb9565b5f808080808580f35b90506020813d602011611db9575b81611da860209383613aaa565b810103126108cc5751611d84611d76565b3d9150611d9b565b90506020813d602011611ded575b81611ddc60209383613aaa565b810103126108cc5751611d3e611d2a565b3d9150611dcf565b6040516370a0823160e01b81523060048201529193916020816024815f516020618a415f395f51905f525afa908115610757578691611ebc575b50611d3890611e3d93613fb9565b516040516370a0823160e01b81523060048201526020816024815f516020618a215f395f51905f525afa90811561088d578491611e88575b50611e8392611d3891613fb9565b611d84565b90506020813d602011611eb4575b81611ea360209383613aaa565b810103126108cc5751611e83611e75565b3d9150611e96565b90506020813d602011611ee8575b81611ed760209383613aaa565b810103126108cc5751611e3d611e2f565b3d9150611eca565b611f0a91945060803d608011610750576107428183613aaa565b925f611ce3565b9092506020813d602011611f3d575b81611f2d60209383613aaa565b810103126108cc5751915f611c65565b3d9150611f20565b9093506020813d602011611f71575b81611f6160209383613aaa565b810103126108cc5751925f611c2c565b3d9150611f54565b611f919060203d602011610717576107088183613aaa565b505f611bf2565b5f19141590505f611b98565b81611fae91613aaa565b61086957825f611b84565b955095506020853d602011611fea575b81611fd660209383613aaa565b810103126108cc5793519489949081611b0a565b3d9150611fc9565b611ffd849186613ef2565b6101000361010081116120f45760ff81116120f45760405163348051d760e11b8152600190911b600482015281816024815f516020618a015f395f51905f525afa90811561085e57606a602092846120b8936109d696926120d8575b506040519485925f516020618a615f395f51905f52828501525f5160206189c15f395f51905f52604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f198101835282613aaa565b60405162461bcd60e51b8152602060048201529182916024830190613b0d565b6120ed9192503d8084833e6109ef8183613aaa565b9086612059565b634e487b7160e01b82526011600452602482fd5b612110616794565b50611a5d565b634e487b7160e01b85526041600452602485fd5b8161213491613aaa565b6111e857835f61195c565b61214890613eff565b5184105f516020618a015f395f51905f523b15610cf45760405190632631f2b160e11b8252600482015281816024815f516020618a015f395f51905f525afa801561085e576125cb575b508060405160208101906370a0823160e01b8252306024820152602481526121bb604482613aaa565b51905f516020618a415f395f51905f525afa506121d961037661608c565b506121e2613e5e565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015612116576103c38160016122179301600e55613c3f565b905560018060a01b0360115416600f5460e01b601054906122366163be565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b169081895260205260408820604051602081019061227a8161043f8888866163a7565b519020895260205260ff600360408a20015416156125bd575b6001600160a01b0384165f908152600d6020526040902090885260205261043f6122cc60408920936040519283916020830195866163a7565b519020865260205284604081209160018301549260028101546122ef8186613ef2565b6124ad575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f516020618a015f395f51905f525afa968715610757578697612474575b506001908201610100031b5f1901811b198616915f516020618a015f395f51905f523b15610898576040516370ca10bb60e01b81526001600160a01b038616600482015260248101919091529089901b9190911760448201528381606481835f516020618a015f395f51905f525af190811561088d57849161245f575b5050866123c9616577565b919015918215612454575b505061077e57505050506123e661705e565b6020805460405163095ea7b360e01b81526001600160a01b039091166004820152602481018590529081604481885f516020618a415f395f51905f525af1801561071e57612435575b50611bf4565b61244d9060203d602011610717576107088183613aaa565b505f61242f565b14159050875f6123d4565b8161246991613aaa565b61086957825f6123be565b955095506020853d6020116124a5575b8161249160209383613aaa565b810103126108cc5793519489949081612341565b3d9150612484565b909192506124bb8185613ef2565b6101000361010081116125a95760ff81116125a95760405163348051d760e11b8152600190911b6004820181905289826024815f516020618a015f395f51905f525afa801561259e57606a612573916020948d91612584575b506040519485915f516020618a615f395f51905f52828401525f5160206189c15f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018d838201520301601f198101845283613aaa565b8810156109b25750908792916122f4565b61259891503d808f833e6109ef8183613aaa565b5f612514565b6040513d8c823e3d90fd5b634e487b7160e01b89526011600452602489fd5b6125c5616794565b50612293565b816125d591613aaa565b6111e857835f612192565b634e487b7160e01b84526021600452602484fd5b61260891503d8086833e610d2c8183613aaa565b5f6118f2565b8161261891613aaa565b61086957825f611886565b8161183b565b503461085b578060031936011261085b57601b5461264681613d3c565b906126546040519283613aaa565b808252601b8352827f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1602084015b8383106126975760405180610da58782613b31565b6040516126a381613a74565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b81600784011061273857846001979460029794602097946127269454918181106113d5578181106113b95781811061139d5781811061138157818110611365578181106113495781811061132f571061131b57500382613aaa565b83820152815201920192019190612682565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e08201520194019201916126cb565b503461085b57606036600319011261085b576024356001600160a01b0381168103610cf457816044356001600160a01b0381168103610cf4576020546040516348bd7dfd60e01b815260048035908201526001600160a01b0394851660248201529184166044830152909283916064918391165afa90811561085e578291612a4f575b508181515f516020618a015f395f51905f523b15610cf4576040519063260a5b1560e21b825260048201526004602482015281816044815f516020618a015f395f51905f525afa801561085e57612a3a575b50506128bf6128ba82613eff565b61408c565b600a811015612a115782905f516020618a015f395f51905f523b15610cf4576040519063260a5b1560e21b825260048201526001602482015281816044815f516020618a015f395f51905f525afa801561085e57612a25575b50506129266128ba82613f0c565b600a811015612a115782905f516020618a015f395f51905f523b15610cf4576040519063260a5b1560e21b825260048201526002602482015281816044815f516020618a015f395f51905f525afa801561085e576129fc575b50506128ba61298d91613f1c565b600a8110156129e85781905f516020618a015f395f51905f523b15611201576040519063260a5b1560e21b825260048201526003602482015281816044815f516020618a015f395f51905f525afa801561085e576115cb5750f35b634e487b7160e01b82526021600452602482fd5b81612a0691613aaa565b610cf457815f61297f565b634e487b7160e01b83526021600452602483fd5b81612a2f91613aaa565b610cf457815f612918565b81612a4491613aaa565b610cf457815f6128ac565b612a6b91503d8084833e612a638183613aaa565b810190614009565b5f61285a565b503461085b578060031936011261085b57610ca0604051612a928282613aaa565b60648152601f19820180366020840137612aaf6040519384613aaa565b60648352835b818110612c23575050825b60648110612b34575050815b60638110612ad8578280f35b612ae28183613f2c565b51600182019081831161021d5760206117c483612b1a612b13612b2e95612b0c600199988b613f2c565b519061457e565b890b6145bc565b612b28836117c4878a613f2c565b86613f2c565b01612acc565b6001810180821161021d57806103e802906103e882048103610a4157683635c9adc5dea000000290808204670de0b6b3a7640000149015171561021d57908491612b7e8285613f2c565b52602054604090612bb8906001600160a01b0316612b9c8487613f2c565b51835195868094819363e357d6f960e01b835260048301613fc6565b03925af1801561071e578590612be9575b60019250612bd78286613f2c565b52612be28185613f2c565b5001612ac0565b5060403d8111612c1c575b612bfe8184613aaa565b82019160408184031261089857600192612c1791613f58565b612bc9565b503d612bf4565b602090604051612c3281613a74565b5f81525f8382015282828701015201612ab5565b503461085b578060031936011261085b5760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b818110612ca557610da585610d9981870382613aaa565b82546001600160a01b0316845260209093019260019283019201612c8e565b503461085b578060031936011261085b5760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b818110612d2357610da585610d9981870382613aaa565b82546001600160a01b0316845260209093019260019283019201612d0c565b503461085b578060031936011261085b57601d54612d5f81613d3c565b612d6c6040519182613aaa565b818152601d83526020810191837f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f845b838310612e705786858760405192839260208401906020855251809152604084019160408260051b8601019392815b838310612dd85786860387f35b919395509193603f198782030183528551906020604082019260018060a01b0381511683520151916040602083015282518091526060820190602060608260051b850101940192855b828110612e4557505050505060208060019297019301930190928695949293612dcb565b9091929394602080612e63600193605f198782030189528951613b0d565b9701950193929101612e21565b604051612e7c81613a74565b82546001600160a01b03168152600183018054612e9881613d3c565b91612ea66040519384613aaa565b8183528a526020808b20908b9084015b838210612edc575050505060019282602092836002950152815201920192019190612d9c565b600160208192604051612ef381610fd9818a613cbb565b815201930191019091612eb6565b503461085b578060031936011261085b5760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b818110612f6057610da585610d9981870382613aaa565b82546001600160a01b0316845260209093019260019283019201612f49565b503461085b578060031936011261085b57604051610ca0612fa08183613aaa565b60648252601f1901366020830137612fb6613eb1565b90825b60648110613007575050815b60638110612fd1578280f35b612fdb8183613f2c565b5151600182019081831161021d57610210826101c6613001936101be6001979689613f2c565b01612fc5565b6001810180821161021d57806103e802906103e882048103610a4157683635c9adc5dea000000290808204670de0b6b3a7640000149015171561021d5761304e8284613f2c565b52604051634b88b8ad60e11b815290602082600481885f516020618a015f395f51905f525af191821561071e5785926135cd575b5061308d8184613f2c565b51858060405160208101906370a0823160e01b8252306024820152602481526130b7604482613aaa565b51905f516020618a415f395f51905f525afa506130d561037661608c565b506130de613e5e565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015610a2d576103c38160016131139301600e55613c3f565b9055601154600f5460105488926001600160a01b03169160e01b6131356163be565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908186526020526040852060405160208101906131798161043f8888866163a7565b519020865260205260ff600360408720015416156135bf575b6001600160a01b0384165f908152600d6020526040902090855260205261043f6131cb60408620936040519283916020830195866163a7565b51902083526020526040822060018101549360028201546131ec8187613ef2565b6134e4575b8254604051630667f9d760e41b81526001600160a01b038616600482015260248101829052969091906020886044815f516020618a015f395f51905f525afa9788156134d95787986134a1575b506001908201610100031b5f1901811b198716915f516020618a015f395f51905f523b15610a89576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528481606481835f516020618a015f395f51905f525af190811561071e57859161348c575b50506132c5616577565b919015918215613481575b505061077e57505050506132e261705e565b6020805461332d91906001600160a01b03166132fe8487613f2c565b5160405163095ea7b360e01b81526001600160a01b039092166004830152602482015291829081906044820190565b0381895f516020618a415f395f51905f525af1801561075757613465575b506020546001600160a01b031660806133648386613f2c565b51604051928391638307c65560e01b83525f5160206189e15f395f51905f5260048401525f516020618a415f395f51905f5260248401525f516020618a215f395f51905f5260448401528960648401526084830152818960a482800301925af1908115610757578691613447575b506133dd8286613f2c565b526133e88185613f2c565b5060405191631135fc2960e21b83526004830152602082602481885f516020618a015f395f51905f525af191821561071e57600192613429575b5001612fb9565b6134409060203d8111610717576107088183613aaa565b505f613422565b61345f915060803d8111610750576107428183613aaa565b5f6133d2565b61347c9060203d8111610717576107088183613aaa565b61334b565b141590505f806132d0565b8161349691613aaa565b6111e857835f6132bb565b965096506020863d82116134d1575b816134bd60209383613aaa565b810103126108cc579451958b95908161323e565b3d91506134b0565b6040513d89823e3d90fd5b90919293506134f38186613ef2565b610100036101008111610a0b5760ff8111610a0b5760405163348051d760e11b8152600190911b600482018190528b80836024815f516020618a015f395f51905f525afa9283156109fe5760209382606a926135ad94926109da57506040519586925f516020618a615f395f51905f52828501525f5160206189c15f395f51905f52604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f198101845283613aaa565b8310156109b2575090899392916131f1565b6135c7616794565b50613192565b9091506020813d82116135f8575b816135e860209383613aaa565b810103126108cc5751905f613082565b3d91506135db565b50346108cc575f3660031901126108cc5760405163975a6ce960e01b81526020600482015260076024820152661b585a5b9b995d60ca1b60448201525f816064815f516020618a015f395f51905f525afa9081156139d357613689916020915f91613a21575b50604051809381926371ee464d60e01b8352604060048401526044830190613b0d565b63011d7df0602483015203815f5f516020618a015f395f51905f525af180156139d3576139f2575b506040516116ad808201908282106001600160401b038311176139de576020918391617314833973ba12222222228d8ba445958a75a0704d566bf2c881520301905ff080156139d35760018060a01b03166bffffffffffffffffffffffff60a01b60205416176020555f516020618a015f395f51905f523b156108cc576040516318caf8e360e31b815273ba12222222228d8ba445958a75a0704d566bf2c860048201526040602482015260066044820152651255985d5b1d60d21b60648201525f81608481835f516020618a015f395f51905f525af180156139d3576139c0575b5060205481906001600160a01b03165f516020618a015f395f51905f523b1561120157604051906318caf8e360e31b825260048201526040602482015260156044820152742130b630b731b2b92b1929bbb0b820b230b83a32b960591b60648201528181608481835f516020618a015f395f51905f525af1801561085e576139ab575b50505f516020618a015f395f51905f523b1561085b57806040516318caf8e360e31b81525f516020618a215f395f51905f5260048201526040602482015260046044820152630ae8aa8960e31b60648201528181608481835f516020618a015f395f51905f525af1801561085e57613996575b50505f516020618a015f395f51905f523b1561085b57806040516318caf8e360e31b81525f516020618a415f395f51905f52600482015260406024820152600360448201526210905360ea1b60648201528181608481835f516020618a015f395f51905f525af1801561085e57613981575b50505f516020618a015f395f51905f523b1561085b57806040516318caf8e360e31b8152735c6ee304399dbdb9c8ef030ab642b10820db8f56600482015260406024820152600e60448201526d084be7060848298be6460ae8aa8960931b60648201528181608481835f516020618a015f395f51905f525af1801561085e576115cb5750f35b8161398b91613aaa565b61085b57805f6138fb565b816139a091613aaa565b61085b57805f613889565b816139b591613aaa565b61085b57805f613816565b6139cc91505f90613aaa565b5f5f613793565b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b6020813d602011613a19575b81613a0b60209383613aaa565b810103126108cc57516136b1565b3d91506139fe565b613a3591503d805f833e6109ef8183613aaa565b5f613666565b346108cc5760403660031901126108cc57613a6c602091613a5b81613a74565b600435815260243583820152613d98565b604051908152f35b604081019081106001600160401b038211176139de57604052565b606081019081106001600160401b038211176139de57604052565b90601f801991011681019081106001600160401b038211176139de57604052565b60206040818301928281528451809452019201905f5b818110613aee5750505090565b82516001600160a01b0316845260209384019390920191600101613ae1565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310613b6357505050505090565b9091929394603f1982820301835285516020606081604085019360018060a01b0381511686520151936040838201528451809452019201905f905b808210613bbd5750505060208060019297019301930191939290613b54565b82516001600160e01b031916845260209384019390920191600190910190613b9e565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310613c1257505050505090565b9091929394602080613c30600193603f198682030187528951613b0d565b97019301930191939290613c03565b600e54811015613c5757600e5f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b601f54811015613c5757601f5f5260205f2001905f90565b90600182811c92168015613cb1575b6020831014613c9d57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691613c92565b5f9291815491613cca83613c83565b8083529260018116908115613d1f5750600114613ce657505050565b5f9081526020812093945091925b838310613d05575060209250010190565b600181602092949394548385870101520191019190613cf4565b915050602093945060ff929192191683830152151560051b010190565b6001600160401b0381116139de5760051b60200190565b81810292918115918404141715613d6657565b634e487b7160e01b5f52601160045260245ffd5b8115613d84570490565b634e487b7160e01b5f52601260045260245ffd5b80516a084595161401484a0000008102908082046a084595161401484a0000001490151715613d66576020613dcf92015190613d7a565b90565b6001600160401b0381116139de57601f01601f191660200190565b6020818303126108cc578051906001600160401b0382116108cc570181601f820112156108cc57805190613e2082613dd2565b92613e2e6040519485613aaa565b828452602083830101116108cc57815f9260208093018386015e8301015290565b908160209103126108cc575190565b601180546001600160a01b0319165f516020618a415f395f51905f52179055565b60405190613e8c82613a8f565b815f81525f60208201526040805191613ea483613a74565b5f83525f60208401520152565b604051610ca09190613ec38382613aaa565b6064815291601f1901825f5b828110613edb57505050565b602090613ee6613e7f565b82828501015201613ecf565b91908201809211613d6657565b805115613c575760200190565b805160011015613c575760400190565b805160021015613c575760600190565b8051821015613c575760209160051b010190565b908160209103126108cc575180151581036108cc5790565b91908260409103126108cc57604051613f7081613a74565b6020808294805184520151910152565b906080828203126108cc57613fb1906040805193613f9d85613a8f565b805185526020810151602086015201613f58565b604082015290565b91908203918211613d6657565b9190606060808401935f5160206189e15f395f51905f5281525f516020618a415f395f51905f5260208201525f516020618a215f395f51905f5260408201520152565b6020818303126108cc578051906001600160401b0382116108cc57019080601f830112156108cc5781519061403d82613d3c565b9261404b6040519485613aaa565b82845260208085019360051b8201019182116108cc57602001915b8183106140735750505090565b8251600a8110156108cc57815260209283019201614066565b51600a8110156140995790565b634e487b7160e01b5f52602160045260245ffd5b6020818303126108cc578051906001600160401b0382116108cc57019080601f830112156108cc5781516140e081613d3c565b926140ee6040519485613aaa565b81845260208085019260051b8201019283116108cc57602001905b8282106141165750505090565b8151815260209182019101614109565b6020818303126108cc578051906001600160401b0382116108cc570181601f820112156108cc57805161415881613d3c565b926141666040519485613aaa565b81845260208085019260061b840101928184116108cc57602001915b838310614190575050505090565b602060409161419f8486613f58565b815201920191614182565b60a0919360209360808301958352600180851b031684830152600180841b03166040820152608060608201528451809452019201905f5b8181106141ee5750505090565b82518452602093840193909201916001016141e1565b6020818303126108cc578051906001600160401b0382116108cc57019080601f830112156108cc5781519061423882613d3c565b926142466040519485613aaa565b82845260208085019360051b8201019182116108cc57602001915b81831061426e5750505090565b82516001600160a01b03811681036108cc57815260209283019201614261565b9080601f830112156108cc5781516142a581613d3c565b926142b36040519485613aaa565b81845260208085019260051b8201019283116108cc57602001905b8282106142db5750505090565b81518152602091820191016142ce565b60085460ff1680156142fa5790565b50604051630667f9d760e41b81525f516020618a015f395f51905f5260048201526519985a5b195960d21b60248201526020816044815f516020618a015f395f51905f525afa9081156139d3575f91614354575b50151590565b90506020813d60201161437e575b8161436f60209383613aaa565b810103126108cc57515f61434e565b3d9150614362565b6001600160a01b03811692919061439c82613eff565b516040516348bd7dfd60e01b815260048101919091525f60248201819052604482018190528160648183895af180156139d3576143e0915f916144ee575b506146aa565b15905f5b83518110156144e6576143f78185613f2c565b51906040519163ecbbc03360e01b835260048301525f82602481838b5af180156139d357846144c6916001945f916144cc575b506144458a868060a01b0361443e84613eff565b5116614747565b6144588a868060a01b0361443e84613f0c565b61449082614466868b613f2c565b51878060a01b0361447685613eff565b5116888060a01b0361448786613f0c565b5116918a614891565b61449a8489613f2c565b5190858060a01b036144ab82613f0c565b5116906144bd878060a01b0391613eff565b51169187614891565b016143e4565b6144e091503d805f833e6116098183613aaa565b5f61442a565b505050509050565b61450291503d805f833e612a638183613aaa565b5f6143da565b1561450f57565b634e487b7160e01b5f52600160045260245ffd5b905f516020618a015f395f51905f523b156108cc5760405191638466f41560e01b8352600483015260248201525f816044815f516020618a015f395f51905f525afa80156139d3576145725750565b5f61457c91613aaa565b565b61459e90602061459382518286015190613d53565b935191015190613d53565b908082036145ac5750505f90565b11156145b757600190565b5f1990565b5f516020618a015f395f51905f523b156108cc576040519063fe74f05b60e01b82526004820152600160248201525f816044815f516020618a015f395f51905f525afa80156139d3576145725750565b5f516020618a015f395f51905f523b156108cc5760405190636d83fe6960e11b825260048201525f60248201525f816044815f516020618a015f395f51905f525afa80156139d3576145725750565b905f516020618a015f395f51905f523b156108cc576040519163260a5b1560e21b8352600483015260248201525f816044815f516020618a015f395f51905f525afa80156139d3576145725750565b5f5b81518110156146e1576146c26128ba8284613f2c565b600a811015614099576005146146da576001016146ac565b5050600190565b50505f90565b5f5b81518110156146e1576146ff6128ba8284613f2c565b600a811015614099576009146146da576001016146e9565b5f5b81518110156146e15761472f6128ba8284613f2c565b600a811015614099576008146146da57600101614719565b60405163095ea7b360e01b602082019081526001600160a01b03909316602482018190525f19604480840191909152825292909190614787606484613aaa565b82516001600160a01b038316915f91829182855af1906147a561608c565b82614805575b50816147fa575b50156147bd57505050565b6147f561457c936040519063095ea7b360e01b602083015260248201525f6044820152604481526147ef606482613aaa565b826160bb565b6160bb565b90503b15155f6147b2565b8051919250811591821561481d575b5050905f6147ab565b6148309250602080918301019101613f40565b5f80614814565b60405190614846606083613aaa565b603682527536103a3790383934b1b29030b33a32b91039bbb0b81760511b6040837f45786563757465642070726963652073686f756c64206265206f72206571756160208201520152565b6101809182526101c09490945260405163549387df60e11b8152905160048201526001600160a01b038083166024830152831660448201529192915f8180606481016101608490520381836001600160a01b0388165af180156139d3576148ff915f91616072575b50613eff565b516101405260606101a081905260405161495c9161491d9082613aaa565b602381527f53656c6c206c696d69742073686f756c6420626520677265617465722074686160208201526206e20360ec1b60408201526101405161617e565b6101a051505f806149e6614a146040516149796101a05182613aaa565b603681527f544553543a2054657374696e672070726963657320666f722070616972202573602082015275080b4f88095ccb8814d95b1b081b1a5b5a5d0e88095960521b6040820152604051928391638ef3f39960e01b60208401526080602484015260a4830190613b0d565b6001600160a01b0387811660448401528916606483015261014051608483015203601f198101835282613aaa565b6020815191016a636f6e736f6c652e6c6f675afa506040516348bd7dfd60e01b81526101805160048201526001600160a01b038083166024830152841660448201525f8180606481010381836001600160a01b0388165af180156139d357614a83915f91616058575b506146e7565b9160405192614a9360a085613aaa565b6004845260803660208601371561604b575f5b614aaf84613eff565b526103e86101405104614ac184613f0c565b526101405160011c614ad284613f1c565b52825160031015613c57576080830161014051905260405163155adc9160e31b81525f8180614b0a87898861018051600486016141aa565b0381836001600160a01b0387165af19081156139d3575f91616031575b50614b3a614b3482613eff565b51613d98565b81515f19810191908211613d6657614b58614b34614bb39385613f2c565b6101a0516040519290614b6b9084613aaa565b603083527f5072696365206174206c696d69742073686f756c6420626520736d616c6c657260208401526f0207468616e20707269636520617420360841b60408401526161e5565b614bbf614b3482613eff565b81515f198101908111613d6657614c5c614c755f93614be2614b34869588613f2c565b6101a051604051929190614bf69084613aaa565b602d83527f544553543a20507269636520617420303a2025642c207072696365206174207360208401526c195b1b081b1a5b5a5d0e880959609a1b604084015260405194859363ca47c4eb60e01b60208601526101a05160248601526084850190613b0d565b916044840152606483015203601f198101835282613aaa565b6020815191016a636f6e736f6c652e6c6f675afa506101a051604051614cdc91614c9f9082613aaa565b602581527f544553543a2054657374696e67206265686176696f7220666f72207072696365602082015264020617420360dc1b604082015261621a565b614d2f614ce882613eff565b515160406101e081905280519190614d009083613aaa565b601882527f4e6f6d696e61746f722073686f756c646e277420626520300000000000000000602083015261617e565b614d816020614d3d83613eff565b5101516101e05180519190614d529083613aaa565b601a82527f44656e6f6d696e61746f722073686f756c646e27742062652030000000000000602083015261617e565b614d8d614b3482613eff565b610120526101e0518051614dd091614da59082613aaa565b6014815273151154d50e88141c9a58d948185d080c0e88095960621b6020820152610120519061625e565b614dd8613e7f565b5083515f198101908111613d6657614df09085613f2c565b516005818102048103613d66575f806101e0515160208101906370a0823160e01b825230602482015260248152614e28604482613aaa565b5190875afa50614e3961037661608c565b50601180546001600160a01b0319166001600160a01b038616179055600f805463ffffffff19166370a08231179055600e54600160401b8110156139de576103c3816001614e8a9301600e55613c3f565b905560018060a01b0360115416600f5460e01b60105490614ea96163be565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690815f526020526101e0515f206101e051516020810190614ef18161043f8888866163a7565b5190205f5260205260ff60036101e0515f2001541615616023575b6001600160a01b0384165f908152600d60205260409020905f5260205261043f614f496101e0515f20936101e051519283916020830195866163a7565b5190205f526020526101e0515f206001810154926002820154614f6c8186613ef2565b615f08575b82546101e05151630667f9d760e41b81526001600160a01b038616600482015260248101829052959091906020876044815f516020618a015f395f51905f525afa968715615ec7575f97615ed4575b506001908201610100031b5f1901811b1986165f516020618a015f395f51905f523b156108cc576101e051516370ca10bb60e01b81526001600160a01b038716600482015260248101939093526005840290911b1760448201525f81606481835f516020618a015f395f51905f525af18015615ec757615eb2575b50600f5460e01b602061508d6024615053600d616498565b6101e051519384918183019663ffffffff60e01b1687528051918291018484015e810161016051838201520301601f198101835282613aaa565b60115461016051915191928392916001600160a01b03165afa60c0526150b161608c565b6010546001600160fb1b03811681036156f2576101605160a08190528251610100919091526020811115615ea957506020610100525b6101605160e0525b6101005160e05110615e3757505060c05115908115615e27575b50615d355750505061511961705e565b6101e05151634b88b8ad60e11b8152602081600481610160515f516020618a015f395f51905f525af1801561565a5761016051608052615d02575b5060015b845181101561572a575f8061521561523b61517285613c6b565b5061517d868b613f2c565b51615227610fd96151ed6101e051519461519a6101a05187613aaa565b603086527f544553543a2054657374696e67206265686176696f7220666f7220707269636560208701526f1030ba1012b99037b3103634b6b4ba1760811b6101e0518701526101e0515192838092613cbb565b6101e05151635821efa160e01b60208201526101a05160248201529586946084860190613b0d565b84810360231901604486015290613b0d565b90606483015203601f198101835282613aaa565b6020815191016a636f6e736f6c652e6c6f675afa5061525d614b348284613f2c565b5f806152d56152fa61526f868b613f2c565b516101e05151906152836101e05183613aaa565b601782527f544553543a205377617070696e67202564206f6620257300000000000000000060208301526101e0515193849263038fd88960e31b60208501526101a05160248501526084840190613b0d565b60448301919091526001600160a01b038b16606483015203601f198101835282613aaa565b6020815191016a636f6e736f6c652e6c6f675afa50615368608061531e8489613f2c565b516101e05151638307c65560e01b81526101805160048201526001600160a01b03808a1660248301528b1660448201525f60648201526084810191909152918290819060a4820190565b03816101605160018060a01b038a165af190811561565a57610160519161570c575b508051806a084595161401484a0000008102046a084595161401484a00000014811517156156f2576153d76153e3916a084595161401484a0000006153cf878c613f2c565b519102613d7a565b916101e0510151613d98565b91615429826101e051516153fa6101e05182613aaa565b601d81527f544553543a20202d2045786563757465642070726963653a2020202564000000602082015261625e565b61546e816101e0515161543f6101e05182613aaa565b601d81527f544553543a20202d20507269636520617420616d6f756e743a20202564000000602082015261625e565b6154b3836101e051516154846101e05182613aaa565b601d81527f544553543a20202d20507269636520616674657220737761703a202564000000602082015261625e565b6101c0511561566a576101a0516101e051516155f4946155939390926155269291906154df9083613aaa565b602c82527f50726963652073686f756c642062652067726561746564207468616e2065786560208301526b31baba32b210383934b1b29760a11b6101e051830152856162a1565b6101a0516101e05151919061553b9083613aaa565b603782527f45786563757465642070726963652073686f756c64206265206772656174657260208301527f207468616e20707269636520616674657220737761702e0000000000000000006101e051830152836161e5565b6101a0516101e0515191906155a89083613aaa565b602e82527f50726963652073686f756c642062652067726561746564207468616e2070726960208301526d31b29030b33a32b91039bbb0b81760911b6101e051830152610120516161e5565b6101e0515190631135fc2960e21b82526080516004830152602082602481610160515f516020618a015f395f51905f525af191821561565a5760019261563c575b5001615158565b6156539060203d8111610717576107088183613aaa565b505f615635565b6101e051513d61016051823e3d90fd5b61568f906156876156ed9461567d614837565b90610120516162a1565b61567d614837565b6101e05151906156a26101a05183613aaa565b602d82527f50726963652073686f756c64206265206f7220657175616c20746f207072696360208301526c329030b33a32b91039bbb0b81760991b6101e051830152610120516162a1565b6155f4565b634e487b7160e01b61016051526011600452602461016051fd5b615724915060803d8111610750576107428183613aaa565b5f61538a565b5050915060696101405102610140518104606914610140511517156156f2576101e051516348bd7dfd60e01b815261016080516101805160048401526001600160a01b0385811660248501528781166044850152915160649485900496949192849291839187165af1801561565a576157ad916101605191615ce5575b50614717565b15615b9c57615818836101e051516157c86101a05182613aaa565b603681527f544553543a2054657374696e6720726576657274206265686176696f722061626020820152751bdd99481d1a19481cd95b1b081b1a5b5a5d0e88095960521b6101e05182015261625e565b6101e0518051939061582a9085613aaa565b600184526101e051601f190136602086013761584584613eff565b526101e0515163155adc9160e31b815261016051818061586e87898861018051600486016141aa565b03816101605160018060a01b0387165af19081615b81575b50615b145760016158956162d6565b6308c379a014615a83575b61565a57615900936158b3608094613eff565b516101e05151638307c65560e01b81526101805160048201526001600160a01b0394851660248201529390911660448401525f6064840152608483015290928391908290819060a4820190565b61016051919003926001600160a01b03165af19081615a66575b50615a035760016159296162d6565b6308c379a01461597d575b61565a575b61457c6101e0515161594e6101e05182613aaa565b601781527f544553543a20416c6c207465737473207061737365642e000000000000000000602082015261621a565b6159856162f1565b80615991575b50615934565b610160516101a0516101e051519193506159fd9291906159b19082613aaa565b603281527f544553543a204578706563746564206572726f72207768656e207377617070696020820152716e672061626f7665206c696d69743a20257360701b6101e051820152616363565b5f61598b565b6101e0515162461bcd60e51b815260206004820152603360248201527f506f6f6c2073686f756c646e27742062652061626c6520746f20737761702061604482015272189bdd99481d1a19481cd95b1b081b1a5b5a5d606a1b6064820152608490fd5b615a7e9060803d608011610750576107428183613aaa565b61591a565b615a8b6162f1565b80615a97575b506158a0565b610160516101a0516101e05151919350615b0e929190615ab79082613aaa565b603881527f544553543a204578706563746564206572726f72207768656e2066657463686960208201527f6e672070726963652061626f7665206c696d69743a20257300000000000000006101e051820152616363565b5f615a91565b6101e0515162461bcd60e51b815260206004820152603b60248201527f506f6f6c2073686f756c646e27742062652061626c6520746f2066657463682060448201527f7072696365732061626f7665207468652073656c6c206c696d697400000000006064820152608490fd5b615b97903d8061016051833e6117e78183613aaa565b615886565b6101a0516101e05151939493615c0491869190615bb99082613aaa565b603181527f544553543a2054657374696e67206f7065726174696f6e732061626f766520746020820152701a19481cd95b1b081b1a5b5a5d0e880959607a1b6101e05182015261625e565b6101e05180519490615c169086613aaa565b600185526101e051601f1901366020870137615c3185613eff565b526101e051519263155adc9160e31b8452610160518480615c5b88858861018051600486016141aa565b03816101605160018060a01b0387165af1801561565a57615c87956080956158b392615cca5750613eff565b61016051919003926001600160a01b03165af1801561565a57615cab575b50615939565b615cc39060803d608011610750576107428183613aaa565b505f615ca5565b615ce0903d8061016051833e6117e78183613aaa565b6148f9565b615cfc91503d8061016051833e612a638183613aaa565b5f6157a7565b6020813d602011615d2d575b81615d1b60209383613aaa565b810103126108cc57516080525f615154565b3d9150615d0e565b54915f516020618a015f395f51905f523b15615e20576101e051516370ca10bb60e01b8152610160516001600160a01b039093166004820152602481019390935260448301528180606481010381610160515f516020618a015f395f51905f525af1801561565a57615e05575b6101e0515162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b61016051615e1291613aaa565b61016051615e205780615da2565b6101605180fd5b905060050260a05114155f615109565b615e4660e0518260051b613ef2565b8251811015615e8f57602060ff60f81b91840101511660e05160e05160031b0460081460e0511517156156f25760e05160031b1c60a0511760a052600160e0510160e0526150ef565b634e487b7160e01b61016051526032600452602461016051fd5b610100526150e7565b5f615ebc91613aaa565b5f610160525f61503b565b6101e051513d5f823e3d90fd5b9096506020813d602011615f00575b81615ef060209383613aaa565b810103126108cc57519581614fc0565b3d9150615ee3565b615f128186613ef2565b610100036101008111613d665760ff8111613d66576101e0515163348051d760e11b81526001821b60048201525f816024815f516020618a015f395f51905f525afa918215615ec757615fd2606a6020946001945f91616009575b506101e051519586915f516020618a615f395f51905f52828401525f5160206189c15f395f51905f526101e05184015269030ba32b9103a3430b7160b51b6101a0518401528051918291018484015e81015f838201520301601f198101855284613aaa565b1b836005021015615fe35750614f71565b6101e0515162461bcd60e51b8152602060048201529081906109d6906024830190613b0d565b61601d91503d805f833e6109ef8183613aaa565b5f615f6d565b61602b616794565b50614f0c565b61604591503d805f833e6117e78183613aaa565b5f614b27565b6127106101405104614aa6565b61606c91503d805f833e612a638183613aaa565b5f614a7d565b61608691503d805f833e610d2c8183613aaa565b5f6148f9565b3d156160b6573d9061609d82613dd2565b916160ab6040519384613aaa565b82523d5f602084013e565b606090565b81516160e6926001600160a01b03909216915f91829160200182855af16160e061608c565b91616736565b805190816160f2575050565b602080616103938301019101613f40565b1561610a57565b60405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b613dcf9392606092825260208201528160408201520190613b0d565b5f516020618a015f395f51905f523b156108cc576161c6915f916040519384928392636cd1e26960e11b84526004840152846024840152606060448401526064830190613b0d565b03815f516020618a015f395f51905f525afa80156139d3576145725750565b905f516020618a015f395f51905f523b156108cc575f916161c66040519485938493636cd1e26960e11b855260048501616162565b5f61043f616247829360405192839163104c13eb60e21b6020840152602060248401526044830190613b0d565b6020815191016a636f6e736f6c652e6c6f675afa50565b61628d6162475f93928493604051938492632d839cb360e21b6020850152604060248501526064840190613b0d565b90604483015203601f198101835282613aaa565b905f516020618a015f395f51905f523b156108cc575f916161c66040519485938493630389490b60e61b855260048501616162565b5f9060033d116162e257565b905060045f803e5f5160e01c90565b5f60443d10613dcf576040513d600319016004823e8051913d60248401116001600160401b0384111761635d57828201928351916001600160401b038311616355573d840160031901858401602001116163555750613dcf92910160200190613aaa565b949350505050565b92915050565b6163956162475f939261043f8594604051948593634b5c427760e01b6020860152604060248601526064850190613b0d565b83810360231901604485015290613b0d565b60209291908391805192839101825e019081520190565b6163c9601454613c83565b616486576040519081826020600e549283815201600e5f5260205f20925f5b81811061646d5750506163fd92500383613aaa565b81518060051b9080820460201490151715613d665761641b81613dd2565b906164296040519283613aaa565b808252616438601f1991613dd2565b013660208301375f5b8351811015616468578061645760019286613f2c565b5160208260051b8501015201616441565b509150565b84548352600194850194879450602090930192016163e8565b604051613dcf81610fd9816014613cbb565b60078101906164a78254613c83565b61656357600191500190604051808360208295549384815201905f5260205f20925f5b81811061654a5750506164df92500383613aaa565b81518060051b9080820460201490151715613d66576164fd81613dd2565b9061650b6040519283613aaa565b80825261651a601f1991613dd2565b013660208301375f5b8351811015616468578061653960019286613f2c565b5160208260051b8501015201616523565b84548352600194850194879450602090930192016164ca565b50613dcf610fd99160405192838092613cbb565b5f806020600f5460e01b6165c56024616590600d616498565b6040519485918183019563ffffffff60e01b1686528051918291018484015e810186838201520301601f198101845283613aaa565b6011549151916001600160a01b03165afa906165df61608c565b601054909290600581901b906001600160fb1b03811603613d66575f938051602081115f1461666a57506020905b5f925b82841061661f57505050509190565b9091929561662d8783613ef2565b8351811015613c5757830160200151600388901b91906001600160f81b031916881560088a8504141715613d66576001921c179601929190616610565b9061660d565b905f806020600285015460e01b61668b602461659088616498565b60048601549151916001600160a01b03165afa60036166a861608c565b930154600581901b906001600160fb1b03811603613d66575f938051602081115f1461673057506020905b5f925b8284106166e557505050509190565b909192956166f38783613ef2565b8351811015613c5757830160200151600388901b91906001600160f81b031916881560088a8504141715613d66576001921c1796019291906166d6565b906166d3565b9061675a575080511561674b57805190602001fd5b63d6bda27560e01b5f5260045ffd5b8151158061678b575b61676b575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15616763565b601154600f546010546001600160a01b03909216915f9160e01b6167b8600d616498565b90845f52600d60205260405f209063ffffffff60e01b1690815f5260205260405f2060405160208101906167f18161043f8888866163a7565b5190205f5260205260ff600360405f2001541661701d575f516020618a015f395f51905f523b156108cc5760405163266cf10960e01b81525f81600481835f516020618a015f395f51905f525af180156139d357617008575b50616855600d616670565b90506040516365bc948160e01b81528660048201528581602481835f516020618a015f395f51905f525af1908115610757578691616fa0575b5080516168ff57608460405162461bcd60e51b815260206004820152604060248201527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152fd5b855b8151811015616f985781602061691a8361694b95613f2c565b51604051630667f9d760e41b81526001600160a01b038c166004820152602481019190915293849081906044820190565b03815f516020618a015f395f51905f525afa928315616f8d578893616f5a575b508215616f02575b61697d8282613f2c565b51601154604051630667f9d760e41b81526001600160a01b03909116600482018190526024820183905291906020816044815f516020618a015f395f51905f525afa908115616ef7578b91616ec6575b506169d8600d616670565b91909382155f14616ebf575f19905b5f516020618a015f395f51905f523b15616ea6576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810185905260448101919091528c81606481835f516020618a015f395f51905f525af18015616e2b57908d91616eaa575b5050616a58600d616670565b601154909491506001600160a01b03165f516020618a015f395f51905f523b15616ea6576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528b81606481835f516020618a015f395f51905f525af18015616e9b57908c91616e82575b505082616e77575b505015616e6d578793889360ff60135416616cf2575b6001868601610100031b5f1901851b16841c8103616ce4575090616b72917f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed60808b8961043f616b478d6040519283916020830195866163a7565b519020616b548686613f2c565b51906040519283528a602084015260408301526060820152a1613f2c565b51906040519060808201928284106001600160401b038511176139de5760039360405282526020820193845260408201908152606082019360018552898952600d60205260408920868a52602052604089206040516020810190616bdb8161043f8d8d866163a7565b5190208a526020526040892092518355516001830155516002820155019051151560ff801983541691161790555b848452600d60205260408420818552602052604084206040516020810190616c368161043f8888866163a7565b519020855260205260ff60036040862001541615616c87576040948452600d60205284842090845260205261043f616c7b8585209386519283916020830195866163a7565b51902082526020522090565b60405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201526e3a143994903737ba103337bab7321760891b6064820152608490fd5b935091506001905b01616901565b9450616d3d9350616d038383613f2c565b51601154604051630667f9d760e41b81526001600160a01b0390911660048201526024810182905290959094602090869081906044820190565b03815f516020618a015f395f51905f525afa94851561259e578a95616e3a575b50616d6986600d617177565b959096616d7781600d617250565b60115490939192906001600160a01b03165f516020618a015f395f51905f523b15616e36576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528c81606481835f516020618a015f395f51905f525af18015616e2b57908d91616e12575b505087616e0a575b509495616aec575093509150600190616cec565b96505f616df6565b81616e1c91613aaa565b616e27578b5f616dee565b8b80fd5b6040513d8f823e3d90fd5b8e80fd5b9094506020813d8211616e65575b81616e5560209383613aaa565b810103126108cc5751935f616d5d565b3d9150616e48565b9150600190616cec565b141590505f80616ad6565b81616e8c91613aaa565b616e97578a5f616ace565b8a80fd5b6040513d8e823e3d90fd5b8d80fd5b81616eb491613aaa565b616e27578b5f616a4c565b8c906169e7565b90506020813d8211616eef575b81616ee060209383613aaa565b810103126108cc57515f6169cd565b3d9150616ed3565b6040513d8d823e3d90fd5b7f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5616f52616f308484613f2c565b51604080516001600160a01b038e168152602081019290925290918291820190565b0390a1616973565b9092506020813d8211616f85575b81616f7560209383613aaa565b810103126108cc5751915f61696b565b3d9150616f68565b6040513d8a823e3d90fd5b505050616c09565b90503d8087833e616fb18183613aaa565b8101604082820312610a895781516001600160401b0381116170045781616fd991840161428e565b916020810151906001600160401b03821161700057616ff992910161428e565b505f61688e565b8880fd5b8780fd5b6170159194505f90613aaa565b5f925f61684a565b91939092505f52600d60205260405f20905f5260205261043f61704f60405f20936040519283916020830195866163a7565b5190205f5260205260405f2090565b6bffffffffffffffffffffffff60a01b6011541660115563ffffffff19600f5416600f55600e545f600e5580617135575b505f60105560ff19601354166013556170a9601454613c83565b806170b15750565b601f81116001146170c357505f601455565b60145f52601f0160051c7fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec017fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ed5b81811061712a57505060145f525f602081208160145555565b5f8155600101617111565b600e5f527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd908101905b81811061716c575061708f565b5f815560010161715f565b91905f5b610100811061718e57505090505f905f90565b8060ff0360ff8111613d66576004850154600190911b906001600160a01b03165f516020618a015f395f51905f523b156108cc576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f516020618a015f395f51905f525af180156139d357617240575b5061721a84616670565b81617236575b5061722d5760010161717b565b92505060019190565b905015155f617220565b5f61724a91613aaa565b5f617210565b91905f5b610100811061726757505090505f905f90565b60048401546001821b906001600160a01b03165f516020618a015f395f51905f523b156108cc576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f516020618a015f395f51905f525af180156139d357617303575b506172e684616670565b816172f9575b5061722d57600101617254565b905015155f6172ec565b5f61730d91613aaa565b5f6172dc56fe60a03461009c57601f6116ad38819003918201601f19168301916001600160401b038311848410176100a05780849260209460405283398101031261009c57516001600160a01b0381169081900361009c576080526040516115f890816100b5823960805181818160a10152818161033d01528181610634015281816106a101528181610852015281816109280152818161108e01526112b10152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c90816323eeca0114610ae55750806348bd7dfd14610a0e5780638307c6551461054f578063a9270fbe146102fb578063aad6e4881461017a578063ba9285fe14610156578063e357d6f9146101285763ecbbc03314610074575f80fd5b3461012457602036600319011261012457604051631f29a8cd60e31b815260048035908201525f816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa8015610119576100f1915f916100f5575b50604051918291602083526020830190610c6b565b0390f35b61011191503d805f833e6101098183610bf3565b810190610d32565b50505f6100dc565b6040513d5f823e3d90fd5b5f80fd5b3461012457604061014461013b36610c2d565b9291909161115c565b60208251918051835201516020820152f35b3461012457602061017261016936610c2d565b92919091610f07565b604051908152f35b3461012457608036600319011261012457600435610196610b39565b9061019f610b4f565b906064359167ffffffffffffffff83116101245736602384011215610124578260040135926101cd84610c15565b936101db6040519586610bf3565b8085526024602086019160051b8301019136831161012457602401905b8282106102eb5750505082519361020e85610c15565b9461021c6040519687610bf3565b80865261022b601f1991610c15565b015f5b8181106102c85750505f5b8451811015610277578061025b61025260019388610cc4565b5185858861115c565b6102658289610cc4565b526102708188610cc4565b5001610239565b856040518091602082016020835281518091526020604084019201905f5b8181106102a3575050500390f35b8251805185526020908101518186015286955060409094019390920191600101610295565b6020906040516102d781610bbb565b5f81525f8382015282828a0101520161022e565b81358152602091820191016101f8565b346101245761030936610b65565b60405192610318606085610bf3565b60028452602084019060403683376040805163f6c0092760e01b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316929181602481865afa908115610119575f91610507575b505f61039061038a836113a1565b9261140e565b92602460405180968193631f29a8cd60e31b835260048301525afa948515610119575f935f966104e4575b5093956001600160a01b0394851694165f5b84518110156104a057816001600160a01b036103e98388610cc4565b51161461045e575b856001600160a01b036104048388610cc4565b511614610414575b6001016103cd565b61041e8188610cc4565b519060038202918083046003149015171561044a57600a600192046104428b610cb4565b52905061040c565b634e487b7160e01b5f52601160045260245ffd5b808303610475578361046f8a610ca7565b526103f1565b61047f8188610cc4565b5160038102908082046003149015171561044a57600a900461046f8a610ca7565b8789604051918291602083019060208452518091526040830191905f5b8181106104cb575050500390f35b82518452859450602093840193909201916001016104bd565b9095506104fc9193503d805f833e6101098183610bf3565b5092909294886103bb565b90506040813d604011610547575b8161052260409383610bf3565b8101031261012457602061053582610d1e565b91015160ff811603610124578761037c565b3d9150610515565b346101245760a03660031901126101245760043561056b610b39565b90610574610b4f565b60643591600283101561012457604051926060840184811067ffffffffffffffff821117610902576040525f84525f60208501526040516105b481610bbb565b5f81525f602082015260408501526105cb81610cf0565b6109f4575f90608435925f935b6040516323b872dd60e01b6020820152336024820152306044820152606480820183905281526001600160a01b038816919061061f90610619608482610bf3565b836114ba565b604051636eb1769f60e11b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316602482015290602082604481865afa918215610119575f926109c0575b50810180911161044a575f8060405192602084019063095ea7b360e01b825260018060a01b037f00000000000000000000000000000000000000000000000000000000000000001660248601526044850152604484526106da606485610bf3565b83519082865af16106e9611525565b81610991575b5080610987575b15610916575b505a936040519160c0830183811067ffffffffffffffff82111761090257604052848352602083019161072e81610cf0565b82526040830190815260018060a01b03841660608401526080830191608435835260209760405161075f8a82610bf3565b5f815260a086019081526040519161077683610b9f565b3083525f8b8401523360408401525f60608401526103e842019182421161044a5761080b610843918d986040519a8b998a996352bbbe2960e01b8b5260e060048c0152825160e48c0152516107ca81610cf0565b6101048b0152516001600160a01b039081166101248b01526060919091015116610144890152516101648801525160c06101848801526101a4870190610cfa565b84516001600160a01b039081166024880152602086015115156044880152604086015116606487015260609094015115156084860152565b60a484015260c483015203815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1908115610119575f916108d5575b5085525a830392831161044a576080956108ac9360208701526084359261115c565b604083015260408051928051845260208101518385015201518051604084015201516060820152f35b90508481813d83116108fb575b6108ec8183610bf3565b8101031261012457518761088a565b503d6108e2565b634e487b7160e01b5f52604160045260245ffd5b60405163095ea7b360e01b60208201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660248201525f6044808301919091528152610981919061097b90610975606482610bf3565b846114ba565b826114ba565b876106fc565b50813b15156106f6565b80518015925082156109a6575b5050896106ef565b6109b992506020809183010191016114a2565b898061099e565b9091506020813d6020116109ec575b816109dc60209383610bf3565b8101031261012457519089610679565b3d91506109cf565b600190610a05608435848784610f07565b5f1993906105d8565b3461012457610a1c36610b65565b505050604051610a2d60a082610bf3565b600481526020810160803682376001610a4583610ca7565b526002610a5183610cb4565b52815160021015610ad15760036060830152815160031015610ad15760086080830152604051906020820192602083525180935260408201905f935b808510610a9a5783830384f35b9091825190600a821015610abd5760208160019382935201930194019390610a8d565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b3461012457604036600319011261012457631d04569d60e21b815260206004820181905260248201527f42616c616e636572563253776170416461707465722e676574506f6f6c4964736044820152606490fd5b602435906001600160a01b038216820361012457565b604435906001600160a01b038216820361012457565b606090600319011261012457600435906024356001600160a01b038116810361012457906044356001600160a01b03811681036101245790565b6080810190811067ffffffffffffffff82111761090257604052565b6040810190811067ffffffffffffffff82111761090257604052565b60a0810190811067ffffffffffffffff82111761090257604052565b90601f8019910116810190811067ffffffffffffffff82111761090257604052565b67ffffffffffffffff81116109025760051b60200190565b608090600319011261012457600435906024356001600160a01b038116810361012457906044356001600160a01b0381168103610124579060643590565b90602080835192838152019201905f5b818110610c885750505090565b82516001600160a01b0316845260209384019390920191600101610c7b565b805115610ad15760200190565b805160011015610ad15760400190565b8051821015610ad15760209160051b010190565b60405190610ce582610bbb565b5f6020838281520152565b60021115610abd57565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b51906001600160a01b038216820361012457565b909160608284031261012457815167ffffffffffffffff811161012457820183601f8201121561012457805190610d6882610c15565b91610d766040519384610bf3565b80835260208084019160051b8301019186831161012457602001905b828210610e165750505092602083015167ffffffffffffffff81116101245783019080601f83011215610124578151610dca81610c15565b92610dd86040519485610bf3565b81845260208085019260051b82010192831161012457602001905b828210610e065750505060409092015190565b8151815260209182019101610df3565b60208091610e2384610d1e565b815201910190610d92565b60408051909190610e3f8382610bf3565b6001815291601f1901825f5b828110610e5757505050565b602090604051610e6681610bd7565b5f81525f838201525f60408201525f60608201526060608082015282828501015201610e4b565b6020818303126101245780519067ffffffffffffffff821161012457019080601f83011215610124578151610ec181610c15565b92610ecf6040519485610bf3565b81845260208085019260051b82010192831161012457602001905b828210610ef75750505090565b8151815260209182019101610eea565b929091610f12610e2e565b9160405194610f2086610bd7565b85525f6020860152600160408601526060850152602093604051610f448682610bf3565b5f81526080820152610f5583610ca7565b52610f5f82610ca7565b50606060405191610f708284610bf3565b60028352601f19820194853688860137610f8984610ca7565b6001600160a01b039091169052610f9f83610cb4565b6001600160a01b03909116905260405193610fb985610b9f565b3385525f868601523360408601525f82860152604051610fd98382610bf3565b600281528636910137604051637c26833760e11b81529460e48601919091869493926001600487015260e0602487015284518092526101048601928161010060048560051b8a0101019601935f915b8483106110f5575050505050509261108961105184935f96600319868303016044870152610c6b565b82516001600160a01b03908116606486015260208401511515608486015260408401511660a4850152606090920151151560c4840152565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af18015610119576110cf915f916110d3575b50610ca7565b5190565b6110ef91503d805f833e6110e78183610bf3565b810190610e8d565b5f6110c9565b9193959692806111476001939582989b60ff19906003199083030101875260a060808d518051845285810151868501526040810151604085015288810151898501520151918160808201520190610cfa565b99019301930190928997969593949294611028565b9192611166610cd8565b5061116f610e2e565b906040519361117d85610bd7565b84525f60208501526001604085015260608401526020926040516111a18582610bf3565b5f815260808201526111b282610ca7565b526111bc81610ca7565b506040516060946111cd8683610bf3565b60028252601f198601938436878501376111e683610ca7565b6001600160a01b0390911690526111fc82610cb4565b6001600160a01b0390911690526040519261121684610b9f565b3384525f858501523360408501525f868501526040516112368782610bf3565b600281528536910137604051637c26833760e11b81529460e4860190869392915f600486015260e0602486015283518091526101048501918761010060048460051b890101019501925f915b8984841061133e57505050505050926112ac61105184935f96600319868303016044870152610c6b565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1918215610119575f92611322575b506112f382610cb4565b5191600160ff1b831461044a5761130990610ca7565b51906040519261131884610bbb565b5f03835282015290565b6113379192503d805f833e6110e78183610bf3565b905f6112e9565b61138e600193959798829395979a60ff19906003199083030101875260a060808c518051845285810151868501526040810151604085015288810151898501520151918160808201520190610cfa565b9801930193019092899695949293611282565b6040516341343d2b60e11b815290602090829060049082906001600160a01b03165afa5f91816113da575b506113d757505f1990565b90565b9091506020813d602011611406575b816113f660209383610bf3565b810103126101245751905f6113cc565b3d91506113e9565b60405163876f303b60e01b81526001600160a01b039190911690602081600481855afa5f918161146e575b5061146957506020600491604051928380926337a0b34d60e21b82525afa5f91816113da57506113d757505f1990565b905090565b9091506020813d60201161149a575b8161148a60209383610bf3565b810103126101245751905f611439565b3d915061147d565b90816020910312610124575180151581036101245790565b5f806114e29260018060a01b03169360208151910182865af16114db611525565b9083611564565b805190811515918261150a575b50506114f85750565b635274afe760e01b5f5260045260245ffd5b61151d92506020809183010191016114a2565b155f806114ef565b3d1561155f573d9067ffffffffffffffff82116109025760405191611554601f8201601f191660200184610bf3565b82523d5f602084013e565b606090565b90611588575080511561157957805190602001fd5b63d6bda27560e01b5f5260045ffd5b815115806115b9575b611599575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561159156fea2646970667358221220e3f14a8e559a59d2985f6223d165fe9c31be449a354e673b7d50555a0236e43d64736f6c634300081b00336b656420736c6f742e2057652063616e2774206669742076616c7565206772655c6ee304399dbdb9c8ef030ab642b10820db8f560002000000000000000000140000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000ba100000625a3754423978a60c9317c58a424e3d73746453746f726167652066696e642853746453746f72616765293a20506163a26469706673582212209eca23e322fd34a834ef83680e1ad8a26f403dcb304877d2c940ba77774c579264736f6c634300081b0033a03837a25210ee280c2113ff4b77ca23440b19d4866cca721c801278fd08d807","sourceMap":"273:7942:67:-:0;;;;;;3166:4:2;273:7942:67;;3166:4:2;273:7942:67;;;3166:4:2;273:7942:67;3166:4:2;273:7942:67;;1038:4:12;273:7942:67;;;1038:4:12;273:7942:67;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;273:7942:67;;;;;;;;;:::i;:::-;564:29:65;273:7942:67;;-1:-1:-1;;;273:7942:67;;;;;564:29:65;;273:7942:67;;;;:::i;:::-;;;;-1:-1:-1;;;273:7942:67;;;;;564:29:65;;273:7942:67;;;;:::i;:::-;564:29:65;273:7942:67;;-1:-1:-1;;;273:7942:67;;;;564:29:65;;;273:7942:67;;;564:29:65;273:7942:67;;;564:29:65;273:7942:67;;;-1:-1:-1;;273:7942:67;;;;;-1:-1:-1;;;;;;;;;;;273:7942:67;;564:29:65;273:7942:67;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;273:7942:67;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3166:4:2;273:7942:67;;;;;;;;;;;-1:-1:-1;;;;273:7942:67;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;273:7942:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3166:4:2;273:7942:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3166:4:2;273:7942:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;273:7942:67;;;;;;;;;;;564:29:65;273:7942:67;;;;;;;;-1:-1:-1;;;;;;;;;;;273:7942:67;;;;;;;;;;;;;;3166:4:2;273:7942:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;273:7942:67;;;-1:-1:-1;;;;;273:7942:67;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x610200806040526004361015610013575f80fd5b5f905f3560e01c90816308c4174514613a3b575080630a9254e414613600578063111f339214612f7f5780631ed7831c14612f015780632ade388014612d425780633e5e3c2314612cc45780633f7286f414612c465780634a36e37214612a7157806353e5d760146127d757806366d9a9a0146126295780637f55213e146118125780638335a17f146116a957806385226c81146116175780638f1ed4c614611490578063916a17c61461120457806399cef81b146110b0578063a00872f114611044578063a2121ee514610fee578063b5508aa914610f55578063ba414fa614610f30578063d170c3cc14610e8e578063d3479a0114610dc8578063e20c9f7114610d3a578063e865164514610aea578063fa7626d414610ac75763fe3ee58b1461013d575f80fd5b3461085b578060031936011261085b57604051610ca061015d8183613aaa565b60648252601f1901366020830137610173613eb1565b90825b60648110610231575050815b6063811061018e578280f35b6101988183613f2c565b5151600182019081831161021d57610210826101c6610217936101be6001979689613f2c565b515190614523565b6101ed60206101d58689613f2c565b51015160206101e4848a613f2c565b51015190614523565b6040610207816101fd878a613f2c565b5101519288613f2c565b5101519061457e565b850b6145bc565b01610182565b634e487b7160e01b85526011600452602485fd5b6001810180821161021d5780600a0290600a82048103610a4157678ac7230489e800000290808204670de0b6b3a7640000149015171561021d576102758284613f2c565b52604051634b88b8ad60e11b815290602082600481885f516020618a015f395f51905f525af191821561071e578592610a94575b5060205485906040906102e5906001600160a01b03166102c98588613f2c565b51835194858094819363e357d6f960e01b835260048301613fc6565b03925af18015610757578690610a55575b61031c91506103146103088487613f2c565b51602083015190613d53565b905190613d7a565b8060011b9080820460021490151715610a4157858060405160208101906370a0823160e01b825230602482015260248152610358604482613aaa565b51905f516020618a415f395f51905f525afa5061038561037661608c565b60208082518301019101613e4f565b5061038e613e5e565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015610a2d576103c38160016103dc9301600e55613c3f565b919091309083549060031b91821b915f19901b19161790565b905560018060a01b0360115416600f5460e01b601054906103fb6163be565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818b5260205260408a20604051602081019061044d8161043f8888866163a7565b03601f198101835282613aaa565b5190208b5260205260ff600360408c2001541615610a1f575b6001600160a01b0384165f908152600d60205260409020908a5260205261043f61049f60408b20936040519283916020830195866163a7565b519020885260205286604081209160018301549260028101546104c28186613ef2565b6108d8575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f516020618a015f395f51905f525afa96871561075757869761089c575b506001908201610100031b5f1901811b198616915f516020618a015f395f51905f523b15610898576040516370ca10bb60e01b81526001600160a01b038616600482015260248101919091529087901b9190911760448201528381606481835f516020618a015f395f51905f525af190811561088d578491610878575b50508461059c616577565b91901591821561086d575b505061077e575050505060206105f2916105bf61705e565b815460405163095ea7b360e01b81526001600160a01b039091166004820152602481019190915291829081906044820190565b0381895f516020618a415f395f51905f525af1801561075757610762575b506020546001600160a01b031660806106298386613f2c565b51604051638307c65560e01b81525f5160206189e15f395f51905f5260048201525f516020618a415f395f51905f5260248201525f516020618a215f395f51905f52604482015260016064820152608481019190915291829060a49082908a905af1908115610757578691610729575b506106a48286613f2c565b526106af8185613f2c565b5060405191631135fc2960e21b83526004830152602082602481885f516020618a015f395f51905f525af191821561071e576001926106f0575b5001610176565b6107109060203d8111610717575b6107088183613aaa565b810190613f40565b505f6106e9565b503d6106fe565b6040513d87823e3d90fd5b61074a915060803d8111610750575b6107428183613aaa565b810190613f80565b5f610699565b503d610738565b6040513d88823e3d90fd5b6107799060203d8111610717576107088183613aaa565b610610565b82945054905f516020618a015f395f51905f523b15610869576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810191909152604481019290925281606481835f516020618a015f395f51905f525af1801561085e57610846575b60405162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b610851828092613aaa565b61085b57806107e5565b80fd5b6040513d84823e3d90fd5b8280fd5b14159050855f6105a7565b8161088291613aaa565b61086957825f610591565b6040513d86823e3d90fd5b8580fd5b955095506020853d82116108d0575b816108b860209383613aaa565b810103126108cc579351948b949081610514565b5f80fd5b3d91506108ab565b909192506108e68185613ef2565b610100036101008111610a0b5760ff8111610a0b5760405163348051d760e11b8152600190911b600482018190528b80836024815f516020618a015f395f51905f525afa9283156109fe5760209382606a926109a194926109da575b506040519586925f516020618a615f395f51905f52828501525f5160206189c15f395f51905f52604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f198101845283613aaa565b8610156109b25750908992916104c7565b60405162461bcd60e51b8152602060048201529081906109d6906024830190613b0d565b0390fd5b6109f79192503d8084833e6109ef8183613aaa565b810190613ded565b905f610942565b50604051903d90823e3d90fd5b634e487b7160e01b8b52601160045260248bfd5b610a27616794565b50610466565b634e487b7160e01b87526041600452602487fd5b634e487b7160e01b86526011600452602486fd5b5060403d8111610a8d575b610a6a8183613aaa565b810190604081830312610a895761031c91610a8491613f58565b6102f6565b8680fd5b503d610a60565b9091506020813d8211610abf575b81610aaf60209383613aaa565b810103126108cc5751905f6102a9565b3d9150610aa2565b503461085b578060031936011261085b57602060ff601e54166040519015158152f35b503461085b578060031936011261085b5760205460405163549387df60e11b81525f5160206189e15f395f51905f5260048201525f516020618a415f395f51905f5260248201525f516020618a215f395f51905f5260448201526001600160a01b039091169082908181606481865afa90811561085e578291610d18575b505f516020618a015f395f51905f523b15610cf457604051632631f2b160e11b81526001600482015282816024815f516020618a015f395f51905f525afa908115610d0d578391610cf8575b5050610bbf90613eff565b5168056bc75e2d63100000105f516020618a015f395f51905f523b15610cf45760405190632631f2b160e11b8252600482015281816024815f516020618a015f395f51905f525afa801561085e57610cdf575b50506040805163e357d6f960e01b81525f5160206189e15f395f51905f5260048201525f516020618a415f395f51905f5260248201525f516020618a215f395f51905f52604482015268056bc75e2d631000006064820152918290608490829086905af190811561085e578291610c9f575b50602081610c95610c9c935161460c565b015161460c565b80f35b905060403d604011610cd8575b610cb68183613aaa565b810160408282031261086957610cd1602091610c9c93613f58565b9150610c84565b503d610cac565b81610ce991613aaa565b610cf457815f610c12565b5080fd5b81610d0291613aaa565b610cf457815f610bb4565b6040513d85823e3d90fd5b610d3491503d8084833e610d2c8183613aaa565b8101906140ad565b5f610b68565b503461085b578060031936011261085b5760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b818110610da957610da585610d9981870382613aaa565b60405191829182613acb565b0390f35b82546001600160a01b0316845260209093019260019283019201610d82565b503461085b578060031936011261085b5760205460405163549387df60e11b81525f5160206189e15f395f51905f5260048201525f516020618a415f395f51905f5260248201525f516020618a215f395f51905f526044820152908290829060649082906001600160a01b03165afa90811561085e57610c9c91610e67918491610e74575b50610e5b6002825114614508565b610e6f610e6782613eff565b511515614508565b613f0c565b610e8891503d8086833e610d2c8183613aaa565b5f610e4d565b503461085b57604036600319011261085b57600435906001600160a01b038216820361085b576024356001600160401b038111610cf45736602382011215610cf457806004013592610edf84613d3c565b91610eed6040519384613aaa565b8483526024602084019560051b82010190368211610f2c57602401945b818610610f1c5784610c9c8585614386565b8535815260209586019501610f0a565b8480fd5b503461085b578060031936011261085b576020610f4b6142eb565b6040519015158152f35b503461085b578060031936011261085b57601954610f7281613d3c565b91610f806040519384613aaa565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b838310610fc25760405180610da58782613be0565b600160208192604051610fe081610fd98189613cbb565b0382613aaa565b815201920192019190610fad565b503461085b578060031936011261085b57610c9c604051611010604082613aaa565b60018152602036818301375f5160206189e15f395f51905f5261103282613eff565b526020546001600160a01b0316614386565b503461085b57602036600319011261085b57600435601f54811015610cf45761106c90613c6b565b91909161109c57604051610da59061108881610fd98187613cbb565b604051918291602083526020830190613b0d565b634e487b7160e01b81526004819052602490fd5b503461085b578060031936011261085b5780604051631d04569d60e21b602082015260206024820152602060448201527f42616c616e636572563253776170416461707465722e676574506f6f6c496473606482015260648152611115608482613aaa565b5f516020618a015f395f51905f523b156112015781611150916040518093819263f28dceb360e01b8352602060048401526024830190613b0d565b0381835f516020618a015f395f51905f525af1801561085e576111ec575b506020546040516323eeca0160e01b81526064600482015260c860248201529190829060449082906001600160a01b03165afa801561085e576111af575080f35b3d8083833e6111be8183613aaa565b81016020828203126108695781516001600160401b0381116111e8576111e4920161428e565b5080f35b8380fd5b816111f691613aaa565b61085b57805f61116e565b50fd5b503461085b578060031936011261085b57601c5461122181613d3c565b9061122f6040519283613aaa565b808252601c8352827f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b8383106112725760405180610da58782613b31565b60405161127e81613a74565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b8160078401106113f157846001979460029794602097946113099454918181106113d5575b8181106113b9575b81811061139d575b818110611381575b818110611365575b818110611349575b81811061132f575b1061131b575b500382613aaa565b8382015281520192019201919061125d565b6001600160e01b031916815286015f611301565b828a1b6001600160e01b0319168452928901928b016112fb565b604083901b6001600160e01b0319168452928901928b016112f3565b606083901b6001600160e01b0319168452928901928b016112eb565b608083901b6001600160e01b0319168452928901928b016112e3565b60a083901b6001600160e01b0319168452928901928b016112db565b60c083901b6001600160e01b0319168452928901928b016112d3565b60e083901b6001600160e01b0319168452928901928b016112cb565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e08201520194019201916112a6565b503461085b578060031936011261085b5760205460405163ecbbc03360e01b81525f5160206189e15f395f51905f52600482015282918290829060249082906001600160a01b03165afa90811561085e5782916115f5575b506001600160a01b036114fa82613eff565b51165f516020618a015f395f51905f523b156115f157604051906328a9b0fb60e11b825260048201525f516020618a415f395f51905f52602482015282816044815f516020618a015f395f51905f525afa908115610d0d5783916115dc575b506001600160a01b039161156d9150613f0c565b51165f516020618a015f395f51905f523b1561120157604051906328a9b0fb60e11b825260048201525f516020618a215f395f51905f52602482015281816044815f516020618a015f395f51905f525afa801561085e576115cb5750f35b816115d591613aaa565b61085b5780f35b816115e691613aaa565b61120157815f611559565b5050fd5b61161191503d8084833e6116098183613aaa565b810190614204565b5f6114e8565b503461085b578060031936011261085b57601a5461163481613d3c565b916116426040519384613aaa565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b8383106116845760405180610da58782613be0565b60016020819260405161169b81610fd98189613cbb565b81520192019201919061166f565b503461085b578060031936011261085b57604051906116c9606083613aaa565b60028252602082019181906040368537670de0b6b3a76400006116eb82613eff565b52671bc16d674ec800006116fe82613f0c565b5260205460405163155adc9160e31b81525f5160206189e15f395f51905f5260048201525f516020618a415f395f51905f5260248201525f516020618a215f395f51905f52604482015260806064820152915160848301819052919485926001600160a01b039092169160a484019190855b8181106117f65750505083838281935003925af19182156109fe5781926117d2575b50805b82518110156111e457806117b56117ae60019386613f2c565b515161460c565b6117cc60206117c48387613f2c565b51015161460c565b01611795565b6117ef9192503d8084833e6117e78183613aaa565b810190614126565b905f611792565b8251845287965088955060209384019390920191600101611770565b503461085b57604036600319011261085b57600435602435801515810361086957156126235760015b5f516020618a015f395f51905f523b1561086957604051632631f2b160e11b81528215156004820152839081816024815f516020618a015f395f51905f525afa801561085e5761260e575b5060205460405163549387df60e11b81525f5160206189e15f395f51905f5260048201525f516020618a415f395f51905f5260248201525f516020618a215f395f51905f5260448201529190829060649082906001600160a01b03165afa90811561088d5784916125f4575b5060028210156125e057836001831491825f1461213f5761191290613f0c565b5184105f516020618a015f395f51905f523b15610cf45760405190632631f2b160e11b8252600482015281816024815f516020618a015f395f51905f525afa801561085e5761212a575b508060405160208101906370a0823160e01b825230602482015260248152611985604482613aaa565b51905f516020618a415f395f51905f525afa506119a361037661608c565b506119ac613e5e565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015612116576103c38160016119e19301600e55613c3f565b905560018060a01b0360115416600f5460e01b60105490611a006163be565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818952602052604088206040516020810190611a448161043f8888866163a7565b519020895260205260ff600360408a2001541615612108575b6001600160a01b0384165f908152600d6020526040902090885260205261043f611a9660408920936040519283916020830195866163a7565b51902086526020528460408120916001830154926002810154611ab98186613ef2565b611ff2578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f516020618a015f395f51905f525afa968715610757578697611fb9575b506001908201610100031b5f1901811b1986165f516020618a015f395f51905f523b15610898576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528381606481835f516020618a015f395f51905f525af190811561088d578491611fa4575b5050611b8e616577565b9015908115611f98575b5061077e5750505050611ba961705e565b6020805460405163095ea7b360e01b81526001600160a01b0390911660048201525f1960248201529081604481885f516020618a415f395f51905f525af1801561071e57611f79575b505b6040516370a0823160e01b8152306004820152926020846024815f516020618a415f395f51905f525afa93841561071e578594611f45575b506040516370a0823160e01b8152306004820152916020836024815f516020618a215f395f51905f525afa928315610757578693611f11575b50602054604051638307c65560e01b81525f5160206189e15f395f51905f5260048201525f516020618a415f395f51905f5260248201525f516020618a215f395f51905f526044820152606481019590955260848501839052608090859060a49082908a906001600160a01b03165af1938415610757578694611ef0575b508351611cee578580f35b15611df5576040516370a0823160e01b81523060048201526020816024815f516020618a215f395f51905f525afa908115610757578691611dc1575b50611d3e92611d3891613fb9565b9061465b565b516040516370a0823160e01b81523060048201526020816024815f516020618a415f395f51905f525afa90811561088d578491611d8d575b50611d3890611d8493613fb9565b5f808080808580f35b90506020813d602011611db9575b81611da860209383613aaa565b810103126108cc5751611d84611d76565b3d9150611d9b565b90506020813d602011611ded575b81611ddc60209383613aaa565b810103126108cc5751611d3e611d2a565b3d9150611dcf565b6040516370a0823160e01b81523060048201529193916020816024815f516020618a415f395f51905f525afa908115610757578691611ebc575b50611d3890611e3d93613fb9565b516040516370a0823160e01b81523060048201526020816024815f516020618a215f395f51905f525afa90811561088d578491611e88575b50611e8392611d3891613fb9565b611d84565b90506020813d602011611eb4575b81611ea360209383613aaa565b810103126108cc5751611e83611e75565b3d9150611e96565b90506020813d602011611ee8575b81611ed760209383613aaa565b810103126108cc5751611e3d611e2f565b3d9150611eca565b611f0a91945060803d608011610750576107428183613aaa565b925f611ce3565b9092506020813d602011611f3d575b81611f2d60209383613aaa565b810103126108cc5751915f611c65565b3d9150611f20565b9093506020813d602011611f71575b81611f6160209383613aaa565b810103126108cc5751925f611c2c565b3d9150611f54565b611f919060203d602011610717576107088183613aaa565b505f611bf2565b5f19141590505f611b98565b81611fae91613aaa565b61086957825f611b84565b955095506020853d602011611fea575b81611fd660209383613aaa565b810103126108cc5793519489949081611b0a565b3d9150611fc9565b611ffd849186613ef2565b6101000361010081116120f45760ff81116120f45760405163348051d760e11b8152600190911b600482015281816024815f516020618a015f395f51905f525afa90811561085e57606a602092846120b8936109d696926120d8575b506040519485925f516020618a615f395f51905f52828501525f5160206189c15f395f51905f52604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f198101835282613aaa565b60405162461bcd60e51b8152602060048201529182916024830190613b0d565b6120ed9192503d8084833e6109ef8183613aaa565b9086612059565b634e487b7160e01b82526011600452602482fd5b612110616794565b50611a5d565b634e487b7160e01b85526041600452602485fd5b8161213491613aaa565b6111e857835f61195c565b61214890613eff565b5184105f516020618a015f395f51905f523b15610cf45760405190632631f2b160e11b8252600482015281816024815f516020618a015f395f51905f525afa801561085e576125cb575b508060405160208101906370a0823160e01b8252306024820152602481526121bb604482613aaa565b51905f516020618a415f395f51905f525afa506121d961037661608c565b506121e2613e5e565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015612116576103c38160016122179301600e55613c3f565b905560018060a01b0360115416600f5460e01b601054906122366163be565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b169081895260205260408820604051602081019061227a8161043f8888866163a7565b519020895260205260ff600360408a20015416156125bd575b6001600160a01b0384165f908152600d6020526040902090885260205261043f6122cc60408920936040519283916020830195866163a7565b519020865260205284604081209160018301549260028101546122ef8186613ef2565b6124ad575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f516020618a015f395f51905f525afa968715610757578697612474575b506001908201610100031b5f1901811b198616915f516020618a015f395f51905f523b15610898576040516370ca10bb60e01b81526001600160a01b038616600482015260248101919091529089901b9190911760448201528381606481835f516020618a015f395f51905f525af190811561088d57849161245f575b5050866123c9616577565b919015918215612454575b505061077e57505050506123e661705e565b6020805460405163095ea7b360e01b81526001600160a01b039091166004820152602481018590529081604481885f516020618a415f395f51905f525af1801561071e57612435575b50611bf4565b61244d9060203d602011610717576107088183613aaa565b505f61242f565b14159050875f6123d4565b8161246991613aaa565b61086957825f6123be565b955095506020853d6020116124a5575b8161249160209383613aaa565b810103126108cc5793519489949081612341565b3d9150612484565b909192506124bb8185613ef2565b6101000361010081116125a95760ff81116125a95760405163348051d760e11b8152600190911b6004820181905289826024815f516020618a015f395f51905f525afa801561259e57606a612573916020948d91612584575b506040519485915f516020618a615f395f51905f52828401525f5160206189c15f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018d838201520301601f198101845283613aaa565b8810156109b25750908792916122f4565b61259891503d808f833e6109ef8183613aaa565b5f612514565b6040513d8c823e3d90fd5b634e487b7160e01b89526011600452602489fd5b6125c5616794565b50612293565b816125d591613aaa565b6111e857835f612192565b634e487b7160e01b84526021600452602484fd5b61260891503d8086833e610d2c8183613aaa565b5f6118f2565b8161261891613aaa565b61086957825f611886565b8161183b565b503461085b578060031936011261085b57601b5461264681613d3c565b906126546040519283613aaa565b808252601b8352827f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1602084015b8383106126975760405180610da58782613b31565b6040516126a381613a74565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b81600784011061273857846001979460029794602097946127269454918181106113d5578181106113b95781811061139d5781811061138157818110611365578181106113495781811061132f571061131b57500382613aaa565b83820152815201920192019190612682565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e08201520194019201916126cb565b503461085b57606036600319011261085b576024356001600160a01b0381168103610cf457816044356001600160a01b0381168103610cf4576020546040516348bd7dfd60e01b815260048035908201526001600160a01b0394851660248201529184166044830152909283916064918391165afa90811561085e578291612a4f575b508181515f516020618a015f395f51905f523b15610cf4576040519063260a5b1560e21b825260048201526004602482015281816044815f516020618a015f395f51905f525afa801561085e57612a3a575b50506128bf6128ba82613eff565b61408c565b600a811015612a115782905f516020618a015f395f51905f523b15610cf4576040519063260a5b1560e21b825260048201526001602482015281816044815f516020618a015f395f51905f525afa801561085e57612a25575b50506129266128ba82613f0c565b600a811015612a115782905f516020618a015f395f51905f523b15610cf4576040519063260a5b1560e21b825260048201526002602482015281816044815f516020618a015f395f51905f525afa801561085e576129fc575b50506128ba61298d91613f1c565b600a8110156129e85781905f516020618a015f395f51905f523b15611201576040519063260a5b1560e21b825260048201526003602482015281816044815f516020618a015f395f51905f525afa801561085e576115cb5750f35b634e487b7160e01b82526021600452602482fd5b81612a0691613aaa565b610cf457815f61297f565b634e487b7160e01b83526021600452602483fd5b81612a2f91613aaa565b610cf457815f612918565b81612a4491613aaa565b610cf457815f6128ac565b612a6b91503d8084833e612a638183613aaa565b810190614009565b5f61285a565b503461085b578060031936011261085b57610ca0604051612a928282613aaa565b60648152601f19820180366020840137612aaf6040519384613aaa565b60648352835b818110612c23575050825b60648110612b34575050815b60638110612ad8578280f35b612ae28183613f2c565b51600182019081831161021d5760206117c483612b1a612b13612b2e95612b0c600199988b613f2c565b519061457e565b890b6145bc565b612b28836117c4878a613f2c565b86613f2c565b01612acc565b6001810180821161021d57806103e802906103e882048103610a4157683635c9adc5dea000000290808204670de0b6b3a7640000149015171561021d57908491612b7e8285613f2c565b52602054604090612bb8906001600160a01b0316612b9c8487613f2c565b51835195868094819363e357d6f960e01b835260048301613fc6565b03925af1801561071e578590612be9575b60019250612bd78286613f2c565b52612be28185613f2c565b5001612ac0565b5060403d8111612c1c575b612bfe8184613aaa565b82019160408184031261089857600192612c1791613f58565b612bc9565b503d612bf4565b602090604051612c3281613a74565b5f81525f8382015282828701015201612ab5565b503461085b578060031936011261085b5760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b818110612ca557610da585610d9981870382613aaa565b82546001600160a01b0316845260209093019260019283019201612c8e565b503461085b578060031936011261085b5760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b818110612d2357610da585610d9981870382613aaa565b82546001600160a01b0316845260209093019260019283019201612d0c565b503461085b578060031936011261085b57601d54612d5f81613d3c565b612d6c6040519182613aaa565b818152601d83526020810191837f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f845b838310612e705786858760405192839260208401906020855251809152604084019160408260051b8601019392815b838310612dd85786860387f35b919395509193603f198782030183528551906020604082019260018060a01b0381511683520151916040602083015282518091526060820190602060608260051b850101940192855b828110612e4557505050505060208060019297019301930190928695949293612dcb565b9091929394602080612e63600193605f198782030189528951613b0d565b9701950193929101612e21565b604051612e7c81613a74565b82546001600160a01b03168152600183018054612e9881613d3c565b91612ea66040519384613aaa565b8183528a526020808b20908b9084015b838210612edc575050505060019282602092836002950152815201920192019190612d9c565b600160208192604051612ef381610fd9818a613cbb565b815201930191019091612eb6565b503461085b578060031936011261085b5760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b818110612f6057610da585610d9981870382613aaa565b82546001600160a01b0316845260209093019260019283019201612f49565b503461085b578060031936011261085b57604051610ca0612fa08183613aaa565b60648252601f1901366020830137612fb6613eb1565b90825b60648110613007575050815b60638110612fd1578280f35b612fdb8183613f2c565b5151600182019081831161021d57610210826101c6613001936101be6001979689613f2c565b01612fc5565b6001810180821161021d57806103e802906103e882048103610a4157683635c9adc5dea000000290808204670de0b6b3a7640000149015171561021d5761304e8284613f2c565b52604051634b88b8ad60e11b815290602082600481885f516020618a015f395f51905f525af191821561071e5785926135cd575b5061308d8184613f2c565b51858060405160208101906370a0823160e01b8252306024820152602481526130b7604482613aaa565b51905f516020618a415f395f51905f525afa506130d561037661608c565b506130de613e5e565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015610a2d576103c38160016131139301600e55613c3f565b9055601154600f5460105488926001600160a01b03169160e01b6131356163be565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908186526020526040852060405160208101906131798161043f8888866163a7565b519020865260205260ff600360408720015416156135bf575b6001600160a01b0384165f908152600d6020526040902090855260205261043f6131cb60408620936040519283916020830195866163a7565b51902083526020526040822060018101549360028201546131ec8187613ef2565b6134e4575b8254604051630667f9d760e41b81526001600160a01b038616600482015260248101829052969091906020886044815f516020618a015f395f51905f525afa9788156134d95787986134a1575b506001908201610100031b5f1901811b198716915f516020618a015f395f51905f523b15610a89576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528481606481835f516020618a015f395f51905f525af190811561071e57859161348c575b50506132c5616577565b919015918215613481575b505061077e57505050506132e261705e565b6020805461332d91906001600160a01b03166132fe8487613f2c565b5160405163095ea7b360e01b81526001600160a01b039092166004830152602482015291829081906044820190565b0381895f516020618a415f395f51905f525af1801561075757613465575b506020546001600160a01b031660806133648386613f2c565b51604051928391638307c65560e01b83525f5160206189e15f395f51905f5260048401525f516020618a415f395f51905f5260248401525f516020618a215f395f51905f5260448401528960648401526084830152818960a482800301925af1908115610757578691613447575b506133dd8286613f2c565b526133e88185613f2c565b5060405191631135fc2960e21b83526004830152602082602481885f516020618a015f395f51905f525af191821561071e57600192613429575b5001612fb9565b6134409060203d8111610717576107088183613aaa565b505f613422565b61345f915060803d8111610750576107428183613aaa565b5f6133d2565b61347c9060203d8111610717576107088183613aaa565b61334b565b141590505f806132d0565b8161349691613aaa565b6111e857835f6132bb565b965096506020863d82116134d1575b816134bd60209383613aaa565b810103126108cc579451958b95908161323e565b3d91506134b0565b6040513d89823e3d90fd5b90919293506134f38186613ef2565b610100036101008111610a0b5760ff8111610a0b5760405163348051d760e11b8152600190911b600482018190528b80836024815f516020618a015f395f51905f525afa9283156109fe5760209382606a926135ad94926109da57506040519586925f516020618a615f395f51905f52828501525f5160206189c15f395f51905f52604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f198101845283613aaa565b8310156109b2575090899392916131f1565b6135c7616794565b50613192565b9091506020813d82116135f8575b816135e860209383613aaa565b810103126108cc5751905f613082565b3d91506135db565b50346108cc575f3660031901126108cc5760405163975a6ce960e01b81526020600482015260076024820152661b585a5b9b995d60ca1b60448201525f816064815f516020618a015f395f51905f525afa9081156139d357613689916020915f91613a21575b50604051809381926371ee464d60e01b8352604060048401526044830190613b0d565b63011d7df0602483015203815f5f516020618a015f395f51905f525af180156139d3576139f2575b506040516116ad808201908282106001600160401b038311176139de576020918391617314833973ba12222222228d8ba445958a75a0704d566bf2c881520301905ff080156139d35760018060a01b03166bffffffffffffffffffffffff60a01b60205416176020555f516020618a015f395f51905f523b156108cc576040516318caf8e360e31b815273ba12222222228d8ba445958a75a0704d566bf2c860048201526040602482015260066044820152651255985d5b1d60d21b60648201525f81608481835f516020618a015f395f51905f525af180156139d3576139c0575b5060205481906001600160a01b03165f516020618a015f395f51905f523b1561120157604051906318caf8e360e31b825260048201526040602482015260156044820152742130b630b731b2b92b1929bbb0b820b230b83a32b960591b60648201528181608481835f516020618a015f395f51905f525af1801561085e576139ab575b50505f516020618a015f395f51905f523b1561085b57806040516318caf8e360e31b81525f516020618a215f395f51905f5260048201526040602482015260046044820152630ae8aa8960e31b60648201528181608481835f516020618a015f395f51905f525af1801561085e57613996575b50505f516020618a015f395f51905f523b1561085b57806040516318caf8e360e31b81525f516020618a415f395f51905f52600482015260406024820152600360448201526210905360ea1b60648201528181608481835f516020618a015f395f51905f525af1801561085e57613981575b50505f516020618a015f395f51905f523b1561085b57806040516318caf8e360e31b8152735c6ee304399dbdb9c8ef030ab642b10820db8f56600482015260406024820152600e60448201526d084be7060848298be6460ae8aa8960931b60648201528181608481835f516020618a015f395f51905f525af1801561085e576115cb5750f35b8161398b91613aaa565b61085b57805f6138fb565b816139a091613aaa565b61085b57805f613889565b816139b591613aaa565b61085b57805f613816565b6139cc91505f90613aaa565b5f5f613793565b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b6020813d602011613a19575b81613a0b60209383613aaa565b810103126108cc57516136b1565b3d91506139fe565b613a3591503d805f833e6109ef8183613aaa565b5f613666565b346108cc5760403660031901126108cc57613a6c602091613a5b81613a74565b600435815260243583820152613d98565b604051908152f35b604081019081106001600160401b038211176139de57604052565b606081019081106001600160401b038211176139de57604052565b90601f801991011681019081106001600160401b038211176139de57604052565b60206040818301928281528451809452019201905f5b818110613aee5750505090565b82516001600160a01b0316845260209384019390920191600101613ae1565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310613b6357505050505090565b9091929394603f1982820301835285516020606081604085019360018060a01b0381511686520151936040838201528451809452019201905f905b808210613bbd5750505060208060019297019301930191939290613b54565b82516001600160e01b031916845260209384019390920191600190910190613b9e565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310613c1257505050505090565b9091929394602080613c30600193603f198682030187528951613b0d565b97019301930191939290613c03565b600e54811015613c5757600e5f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b601f54811015613c5757601f5f5260205f2001905f90565b90600182811c92168015613cb1575b6020831014613c9d57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691613c92565b5f9291815491613cca83613c83565b8083529260018116908115613d1f5750600114613ce657505050565b5f9081526020812093945091925b838310613d05575060209250010190565b600181602092949394548385870101520191019190613cf4565b915050602093945060ff929192191683830152151560051b010190565b6001600160401b0381116139de5760051b60200190565b81810292918115918404141715613d6657565b634e487b7160e01b5f52601160045260245ffd5b8115613d84570490565b634e487b7160e01b5f52601260045260245ffd5b80516a084595161401484a0000008102908082046a084595161401484a0000001490151715613d66576020613dcf92015190613d7a565b90565b6001600160401b0381116139de57601f01601f191660200190565b6020818303126108cc578051906001600160401b0382116108cc570181601f820112156108cc57805190613e2082613dd2565b92613e2e6040519485613aaa565b828452602083830101116108cc57815f9260208093018386015e8301015290565b908160209103126108cc575190565b601180546001600160a01b0319165f516020618a415f395f51905f52179055565b60405190613e8c82613a8f565b815f81525f60208201526040805191613ea483613a74565b5f83525f60208401520152565b604051610ca09190613ec38382613aaa565b6064815291601f1901825f5b828110613edb57505050565b602090613ee6613e7f565b82828501015201613ecf565b91908201809211613d6657565b805115613c575760200190565b805160011015613c575760400190565b805160021015613c575760600190565b8051821015613c575760209160051b010190565b908160209103126108cc575180151581036108cc5790565b91908260409103126108cc57604051613f7081613a74565b6020808294805184520151910152565b906080828203126108cc57613fb1906040805193613f9d85613a8f565b805185526020810151602086015201613f58565b604082015290565b91908203918211613d6657565b9190606060808401935f5160206189e15f395f51905f5281525f516020618a415f395f51905f5260208201525f516020618a215f395f51905f5260408201520152565b6020818303126108cc578051906001600160401b0382116108cc57019080601f830112156108cc5781519061403d82613d3c565b9261404b6040519485613aaa565b82845260208085019360051b8201019182116108cc57602001915b8183106140735750505090565b8251600a8110156108cc57815260209283019201614066565b51600a8110156140995790565b634e487b7160e01b5f52602160045260245ffd5b6020818303126108cc578051906001600160401b0382116108cc57019080601f830112156108cc5781516140e081613d3c565b926140ee6040519485613aaa565b81845260208085019260051b8201019283116108cc57602001905b8282106141165750505090565b8151815260209182019101614109565b6020818303126108cc578051906001600160401b0382116108cc570181601f820112156108cc57805161415881613d3c565b926141666040519485613aaa565b81845260208085019260061b840101928184116108cc57602001915b838310614190575050505090565b602060409161419f8486613f58565b815201920191614182565b60a0919360209360808301958352600180851b031684830152600180841b03166040820152608060608201528451809452019201905f5b8181106141ee5750505090565b82518452602093840193909201916001016141e1565b6020818303126108cc578051906001600160401b0382116108cc57019080601f830112156108cc5781519061423882613d3c565b926142466040519485613aaa565b82845260208085019360051b8201019182116108cc57602001915b81831061426e5750505090565b82516001600160a01b03811681036108cc57815260209283019201614261565b9080601f830112156108cc5781516142a581613d3c565b926142b36040519485613aaa565b81845260208085019260051b8201019283116108cc57602001905b8282106142db5750505090565b81518152602091820191016142ce565b60085460ff1680156142fa5790565b50604051630667f9d760e41b81525f516020618a015f395f51905f5260048201526519985a5b195960d21b60248201526020816044815f516020618a015f395f51905f525afa9081156139d3575f91614354575b50151590565b90506020813d60201161437e575b8161436f60209383613aaa565b810103126108cc57515f61434e565b3d9150614362565b6001600160a01b03811692919061439c82613eff565b516040516348bd7dfd60e01b815260048101919091525f60248201819052604482018190528160648183895af180156139d3576143e0915f916144ee575b506146aa565b15905f5b83518110156144e6576143f78185613f2c565b51906040519163ecbbc03360e01b835260048301525f82602481838b5af180156139d357846144c6916001945f916144cc575b506144458a868060a01b0361443e84613eff565b5116614747565b6144588a868060a01b0361443e84613f0c565b61449082614466868b613f2c565b51878060a01b0361447685613eff565b5116888060a01b0361448786613f0c565b5116918a614891565b61449a8489613f2c565b5190858060a01b036144ab82613f0c565b5116906144bd878060a01b0391613eff565b51169187614891565b016143e4565b6144e091503d805f833e6116098183613aaa565b5f61442a565b505050509050565b61450291503d805f833e612a638183613aaa565b5f6143da565b1561450f57565b634e487b7160e01b5f52600160045260245ffd5b905f516020618a015f395f51905f523b156108cc5760405191638466f41560e01b8352600483015260248201525f816044815f516020618a015f395f51905f525afa80156139d3576145725750565b5f61457c91613aaa565b565b61459e90602061459382518286015190613d53565b935191015190613d53565b908082036145ac5750505f90565b11156145b757600190565b5f1990565b5f516020618a015f395f51905f523b156108cc576040519063fe74f05b60e01b82526004820152600160248201525f816044815f516020618a015f395f51905f525afa80156139d3576145725750565b5f516020618a015f395f51905f523b156108cc5760405190636d83fe6960e11b825260048201525f60248201525f816044815f516020618a015f395f51905f525afa80156139d3576145725750565b905f516020618a015f395f51905f523b156108cc576040519163260a5b1560e21b8352600483015260248201525f816044815f516020618a015f395f51905f525afa80156139d3576145725750565b5f5b81518110156146e1576146c26128ba8284613f2c565b600a811015614099576005146146da576001016146ac565b5050600190565b50505f90565b5f5b81518110156146e1576146ff6128ba8284613f2c565b600a811015614099576009146146da576001016146e9565b5f5b81518110156146e15761472f6128ba8284613f2c565b600a811015614099576008146146da57600101614719565b60405163095ea7b360e01b602082019081526001600160a01b03909316602482018190525f19604480840191909152825292909190614787606484613aaa565b82516001600160a01b038316915f91829182855af1906147a561608c565b82614805575b50816147fa575b50156147bd57505050565b6147f561457c936040519063095ea7b360e01b602083015260248201525f6044820152604481526147ef606482613aaa565b826160bb565b6160bb565b90503b15155f6147b2565b8051919250811591821561481d575b5050905f6147ab565b6148309250602080918301019101613f40565b5f80614814565b60405190614846606083613aaa565b603682527536103a3790383934b1b29030b33a32b91039bbb0b81760511b6040837f45786563757465642070726963652073686f756c64206265206f72206571756160208201520152565b6101809182526101c09490945260405163549387df60e11b8152905160048201526001600160a01b038083166024830152831660448201529192915f8180606481016101608490520381836001600160a01b0388165af180156139d3576148ff915f91616072575b50613eff565b516101405260606101a081905260405161495c9161491d9082613aaa565b602381527f53656c6c206c696d69742073686f756c6420626520677265617465722074686160208201526206e20360ec1b60408201526101405161617e565b6101a051505f806149e6614a146040516149796101a05182613aaa565b603681527f544553543a2054657374696e672070726963657320666f722070616972202573602082015275080b4f88095ccb8814d95b1b081b1a5b5a5d0e88095960521b6040820152604051928391638ef3f39960e01b60208401526080602484015260a4830190613b0d565b6001600160a01b0387811660448401528916606483015261014051608483015203601f198101835282613aaa565b6020815191016a636f6e736f6c652e6c6f675afa506040516348bd7dfd60e01b81526101805160048201526001600160a01b038083166024830152841660448201525f8180606481010381836001600160a01b0388165af180156139d357614a83915f91616058575b506146e7565b9160405192614a9360a085613aaa565b6004845260803660208601371561604b575f5b614aaf84613eff565b526103e86101405104614ac184613f0c565b526101405160011c614ad284613f1c565b52825160031015613c57576080830161014051905260405163155adc9160e31b81525f8180614b0a87898861018051600486016141aa565b0381836001600160a01b0387165af19081156139d3575f91616031575b50614b3a614b3482613eff565b51613d98565b81515f19810191908211613d6657614b58614b34614bb39385613f2c565b6101a0516040519290614b6b9084613aaa565b603083527f5072696365206174206c696d69742073686f756c6420626520736d616c6c657260208401526f0207468616e20707269636520617420360841b60408401526161e5565b614bbf614b3482613eff565b81515f198101908111613d6657614c5c614c755f93614be2614b34869588613f2c565b6101a051604051929190614bf69084613aaa565b602d83527f544553543a20507269636520617420303a2025642c207072696365206174207360208401526c195b1b081b1a5b5a5d0e880959609a1b604084015260405194859363ca47c4eb60e01b60208601526101a05160248601526084850190613b0d565b916044840152606483015203601f198101835282613aaa565b6020815191016a636f6e736f6c652e6c6f675afa506101a051604051614cdc91614c9f9082613aaa565b602581527f544553543a2054657374696e67206265686176696f7220666f72207072696365602082015264020617420360dc1b604082015261621a565b614d2f614ce882613eff565b515160406101e081905280519190614d009083613aaa565b601882527f4e6f6d696e61746f722073686f756c646e277420626520300000000000000000602083015261617e565b614d816020614d3d83613eff565b5101516101e05180519190614d529083613aaa565b601a82527f44656e6f6d696e61746f722073686f756c646e27742062652030000000000000602083015261617e565b614d8d614b3482613eff565b610120526101e0518051614dd091614da59082613aaa565b6014815273151154d50e88141c9a58d948185d080c0e88095960621b6020820152610120519061625e565b614dd8613e7f565b5083515f198101908111613d6657614df09085613f2c565b516005818102048103613d66575f806101e0515160208101906370a0823160e01b825230602482015260248152614e28604482613aaa565b5190875afa50614e3961037661608c565b50601180546001600160a01b0319166001600160a01b038616179055600f805463ffffffff19166370a08231179055600e54600160401b8110156139de576103c3816001614e8a9301600e55613c3f565b905560018060a01b0360115416600f5460e01b60105490614ea96163be565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690815f526020526101e0515f206101e051516020810190614ef18161043f8888866163a7565b5190205f5260205260ff60036101e0515f2001541615616023575b6001600160a01b0384165f908152600d60205260409020905f5260205261043f614f496101e0515f20936101e051519283916020830195866163a7565b5190205f526020526101e0515f206001810154926002820154614f6c8186613ef2565b615f08575b82546101e05151630667f9d760e41b81526001600160a01b038616600482015260248101829052959091906020876044815f516020618a015f395f51905f525afa968715615ec7575f97615ed4575b506001908201610100031b5f1901811b1986165f516020618a015f395f51905f523b156108cc576101e051516370ca10bb60e01b81526001600160a01b038716600482015260248101939093526005840290911b1760448201525f81606481835f516020618a015f395f51905f525af18015615ec757615eb2575b50600f5460e01b602061508d6024615053600d616498565b6101e051519384918183019663ffffffff60e01b1687528051918291018484015e810161016051838201520301601f198101835282613aaa565b60115461016051915191928392916001600160a01b03165afa60c0526150b161608c565b6010546001600160fb1b03811681036156f2576101605160a08190528251610100919091526020811115615ea957506020610100525b6101605160e0525b6101005160e05110615e3757505060c05115908115615e27575b50615d355750505061511961705e565b6101e05151634b88b8ad60e11b8152602081600481610160515f516020618a015f395f51905f525af1801561565a5761016051608052615d02575b5060015b845181101561572a575f8061521561523b61517285613c6b565b5061517d868b613f2c565b51615227610fd96151ed6101e051519461519a6101a05187613aaa565b603086527f544553543a2054657374696e67206265686176696f7220666f7220707269636560208701526f1030ba1012b99037b3103634b6b4ba1760811b6101e0518701526101e0515192838092613cbb565b6101e05151635821efa160e01b60208201526101a05160248201529586946084860190613b0d565b84810360231901604486015290613b0d565b90606483015203601f198101835282613aaa565b6020815191016a636f6e736f6c652e6c6f675afa5061525d614b348284613f2c565b5f806152d56152fa61526f868b613f2c565b516101e05151906152836101e05183613aaa565b601782527f544553543a205377617070696e67202564206f6620257300000000000000000060208301526101e0515193849263038fd88960e31b60208501526101a05160248501526084840190613b0d565b60448301919091526001600160a01b038b16606483015203601f198101835282613aaa565b6020815191016a636f6e736f6c652e6c6f675afa50615368608061531e8489613f2c565b516101e05151638307c65560e01b81526101805160048201526001600160a01b03808a1660248301528b1660448201525f60648201526084810191909152918290819060a4820190565b03816101605160018060a01b038a165af190811561565a57610160519161570c575b508051806a084595161401484a0000008102046a084595161401484a00000014811517156156f2576153d76153e3916a084595161401484a0000006153cf878c613f2c565b519102613d7a565b916101e0510151613d98565b91615429826101e051516153fa6101e05182613aaa565b601d81527f544553543a20202d2045786563757465642070726963653a2020202564000000602082015261625e565b61546e816101e0515161543f6101e05182613aaa565b601d81527f544553543a20202d20507269636520617420616d6f756e743a20202564000000602082015261625e565b6154b3836101e051516154846101e05182613aaa565b601d81527f544553543a20202d20507269636520616674657220737761703a202564000000602082015261625e565b6101c0511561566a576101a0516101e051516155f4946155939390926155269291906154df9083613aaa565b602c82527f50726963652073686f756c642062652067726561746564207468616e2065786560208301526b31baba32b210383934b1b29760a11b6101e051830152856162a1565b6101a0516101e05151919061553b9083613aaa565b603782527f45786563757465642070726963652073686f756c64206265206772656174657260208301527f207468616e20707269636520616674657220737761702e0000000000000000006101e051830152836161e5565b6101a0516101e0515191906155a89083613aaa565b602e82527f50726963652073686f756c642062652067726561746564207468616e2070726960208301526d31b29030b33a32b91039bbb0b81760911b6101e051830152610120516161e5565b6101e0515190631135fc2960e21b82526080516004830152602082602481610160515f516020618a015f395f51905f525af191821561565a5760019261563c575b5001615158565b6156539060203d8111610717576107088183613aaa565b505f615635565b6101e051513d61016051823e3d90fd5b61568f906156876156ed9461567d614837565b90610120516162a1565b61567d614837565b6101e05151906156a26101a05183613aaa565b602d82527f50726963652073686f756c64206265206f7220657175616c20746f207072696360208301526c329030b33a32b91039bbb0b81760991b6101e051830152610120516162a1565b6155f4565b634e487b7160e01b61016051526011600452602461016051fd5b615724915060803d8111610750576107428183613aaa565b5f61538a565b5050915060696101405102610140518104606914610140511517156156f2576101e051516348bd7dfd60e01b815261016080516101805160048401526001600160a01b0385811660248501528781166044850152915160649485900496949192849291839187165af1801561565a576157ad916101605191615ce5575b50614717565b15615b9c57615818836101e051516157c86101a05182613aaa565b603681527f544553543a2054657374696e6720726576657274206265686176696f722061626020820152751bdd99481d1a19481cd95b1b081b1a5b5a5d0e88095960521b6101e05182015261625e565b6101e0518051939061582a9085613aaa565b600184526101e051601f190136602086013761584584613eff565b526101e0515163155adc9160e31b815261016051818061586e87898861018051600486016141aa565b03816101605160018060a01b0387165af19081615b81575b50615b145760016158956162d6565b6308c379a014615a83575b61565a57615900936158b3608094613eff565b516101e05151638307c65560e01b81526101805160048201526001600160a01b0394851660248201529390911660448401525f6064840152608483015290928391908290819060a4820190565b61016051919003926001600160a01b03165af19081615a66575b50615a035760016159296162d6565b6308c379a01461597d575b61565a575b61457c6101e0515161594e6101e05182613aaa565b601781527f544553543a20416c6c207465737473207061737365642e000000000000000000602082015261621a565b6159856162f1565b80615991575b50615934565b610160516101a0516101e051519193506159fd9291906159b19082613aaa565b603281527f544553543a204578706563746564206572726f72207768656e207377617070696020820152716e672061626f7665206c696d69743a20257360701b6101e051820152616363565b5f61598b565b6101e0515162461bcd60e51b815260206004820152603360248201527f506f6f6c2073686f756c646e27742062652061626c6520746f20737761702061604482015272189bdd99481d1a19481cd95b1b081b1a5b5a5d606a1b6064820152608490fd5b615a7e9060803d608011610750576107428183613aaa565b61591a565b615a8b6162f1565b80615a97575b506158a0565b610160516101a0516101e05151919350615b0e929190615ab79082613aaa565b603881527f544553543a204578706563746564206572726f72207768656e2066657463686960208201527f6e672070726963652061626f7665206c696d69743a20257300000000000000006101e051820152616363565b5f615a91565b6101e0515162461bcd60e51b815260206004820152603b60248201527f506f6f6c2073686f756c646e27742062652061626c6520746f2066657463682060448201527f7072696365732061626f7665207468652073656c6c206c696d697400000000006064820152608490fd5b615b97903d8061016051833e6117e78183613aaa565b615886565b6101a0516101e05151939493615c0491869190615bb99082613aaa565b603181527f544553543a2054657374696e67206f7065726174696f6e732061626f766520746020820152701a19481cd95b1b081b1a5b5a5d0e880959607a1b6101e05182015261625e565b6101e05180519490615c169086613aaa565b600185526101e051601f1901366020870137615c3185613eff565b526101e051519263155adc9160e31b8452610160518480615c5b88858861018051600486016141aa565b03816101605160018060a01b0387165af1801561565a57615c87956080956158b392615cca5750613eff565b61016051919003926001600160a01b03165af1801561565a57615cab575b50615939565b615cc39060803d608011610750576107428183613aaa565b505f615ca5565b615ce0903d8061016051833e6117e78183613aaa565b6148f9565b615cfc91503d8061016051833e612a638183613aaa565b5f6157a7565b6020813d602011615d2d575b81615d1b60209383613aaa565b810103126108cc57516080525f615154565b3d9150615d0e565b54915f516020618a015f395f51905f523b15615e20576101e051516370ca10bb60e01b8152610160516001600160a01b039093166004820152602481019390935260448301528180606481010381610160515f516020618a015f395f51905f525af1801561565a57615e05575b6101e0515162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b61016051615e1291613aaa565b61016051615e205780615da2565b6101605180fd5b905060050260a05114155f615109565b615e4660e0518260051b613ef2565b8251811015615e8f57602060ff60f81b91840101511660e05160e05160031b0460081460e0511517156156f25760e05160031b1c60a0511760a052600160e0510160e0526150ef565b634e487b7160e01b61016051526032600452602461016051fd5b610100526150e7565b5f615ebc91613aaa565b5f610160525f61503b565b6101e051513d5f823e3d90fd5b9096506020813d602011615f00575b81615ef060209383613aaa565b810103126108cc57519581614fc0565b3d9150615ee3565b615f128186613ef2565b610100036101008111613d665760ff8111613d66576101e0515163348051d760e11b81526001821b60048201525f816024815f516020618a015f395f51905f525afa918215615ec757615fd2606a6020946001945f91616009575b506101e051519586915f516020618a615f395f51905f52828401525f5160206189c15f395f51905f526101e05184015269030ba32b9103a3430b7160b51b6101a0518401528051918291018484015e81015f838201520301601f198101855284613aaa565b1b836005021015615fe35750614f71565b6101e0515162461bcd60e51b8152602060048201529081906109d6906024830190613b0d565b61601d91503d805f833e6109ef8183613aaa565b5f615f6d565b61602b616794565b50614f0c565b61604591503d805f833e6117e78183613aaa565b5f614b27565b6127106101405104614aa6565b61606c91503d805f833e612a638183613aaa565b5f614a7d565b61608691503d805f833e610d2c8183613aaa565b5f6148f9565b3d156160b6573d9061609d82613dd2565b916160ab6040519384613aaa565b82523d5f602084013e565b606090565b81516160e6926001600160a01b03909216915f91829160200182855af16160e061608c565b91616736565b805190816160f2575050565b602080616103938301019101613f40565b1561610a57565b60405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b613dcf9392606092825260208201528160408201520190613b0d565b5f516020618a015f395f51905f523b156108cc576161c6915f916040519384928392636cd1e26960e11b84526004840152846024840152606060448401526064830190613b0d565b03815f516020618a015f395f51905f525afa80156139d3576145725750565b905f516020618a015f395f51905f523b156108cc575f916161c66040519485938493636cd1e26960e11b855260048501616162565b5f61043f616247829360405192839163104c13eb60e21b6020840152602060248401526044830190613b0d565b6020815191016a636f6e736f6c652e6c6f675afa50565b61628d6162475f93928493604051938492632d839cb360e21b6020850152604060248501526064840190613b0d565b90604483015203601f198101835282613aaa565b905f516020618a015f395f51905f523b156108cc575f916161c66040519485938493630389490b60e61b855260048501616162565b5f9060033d116162e257565b905060045f803e5f5160e01c90565b5f60443d10613dcf576040513d600319016004823e8051913d60248401116001600160401b0384111761635d57828201928351916001600160401b038311616355573d840160031901858401602001116163555750613dcf92910160200190613aaa565b949350505050565b92915050565b6163956162475f939261043f8594604051948593634b5c427760e01b6020860152604060248601526064850190613b0d565b83810360231901604485015290613b0d565b60209291908391805192839101825e019081520190565b6163c9601454613c83565b616486576040519081826020600e549283815201600e5f5260205f20925f5b81811061646d5750506163fd92500383613aaa565b81518060051b9080820460201490151715613d665761641b81613dd2565b906164296040519283613aaa565b808252616438601f1991613dd2565b013660208301375f5b8351811015616468578061645760019286613f2c565b5160208260051b8501015201616441565b509150565b84548352600194850194879450602090930192016163e8565b604051613dcf81610fd9816014613cbb565b60078101906164a78254613c83565b61656357600191500190604051808360208295549384815201905f5260205f20925f5b81811061654a5750506164df92500383613aaa565b81518060051b9080820460201490151715613d66576164fd81613dd2565b9061650b6040519283613aaa565b80825261651a601f1991613dd2565b013660208301375f5b8351811015616468578061653960019286613f2c565b5160208260051b8501015201616523565b84548352600194850194879450602090930192016164ca565b50613dcf610fd99160405192838092613cbb565b5f806020600f5460e01b6165c56024616590600d616498565b6040519485918183019563ffffffff60e01b1686528051918291018484015e810186838201520301601f198101845283613aaa565b6011549151916001600160a01b03165afa906165df61608c565b601054909290600581901b906001600160fb1b03811603613d66575f938051602081115f1461666a57506020905b5f925b82841061661f57505050509190565b9091929561662d8783613ef2565b8351811015613c5757830160200151600388901b91906001600160f81b031916881560088a8504141715613d66576001921c179601929190616610565b9061660d565b905f806020600285015460e01b61668b602461659088616498565b60048601549151916001600160a01b03165afa60036166a861608c565b930154600581901b906001600160fb1b03811603613d66575f938051602081115f1461673057506020905b5f925b8284106166e557505050509190565b909192956166f38783613ef2565b8351811015613c5757830160200151600388901b91906001600160f81b031916881560088a8504141715613d66576001921c1796019291906166d6565b906166d3565b9061675a575080511561674b57805190602001fd5b63d6bda27560e01b5f5260045ffd5b8151158061678b575b61676b575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15616763565b601154600f546010546001600160a01b03909216915f9160e01b6167b8600d616498565b90845f52600d60205260405f209063ffffffff60e01b1690815f5260205260405f2060405160208101906167f18161043f8888866163a7565b5190205f5260205260ff600360405f2001541661701d575f516020618a015f395f51905f523b156108cc5760405163266cf10960e01b81525f81600481835f516020618a015f395f51905f525af180156139d357617008575b50616855600d616670565b90506040516365bc948160e01b81528660048201528581602481835f516020618a015f395f51905f525af1908115610757578691616fa0575b5080516168ff57608460405162461bcd60e51b815260206004820152604060248201527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152fd5b855b8151811015616f985781602061691a8361694b95613f2c565b51604051630667f9d760e41b81526001600160a01b038c166004820152602481019190915293849081906044820190565b03815f516020618a015f395f51905f525afa928315616f8d578893616f5a575b508215616f02575b61697d8282613f2c565b51601154604051630667f9d760e41b81526001600160a01b03909116600482018190526024820183905291906020816044815f516020618a015f395f51905f525afa908115616ef7578b91616ec6575b506169d8600d616670565b91909382155f14616ebf575f19905b5f516020618a015f395f51905f523b15616ea6576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810185905260448101919091528c81606481835f516020618a015f395f51905f525af18015616e2b57908d91616eaa575b5050616a58600d616670565b601154909491506001600160a01b03165f516020618a015f395f51905f523b15616ea6576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528b81606481835f516020618a015f395f51905f525af18015616e9b57908c91616e82575b505082616e77575b505015616e6d578793889360ff60135416616cf2575b6001868601610100031b5f1901851b16841c8103616ce4575090616b72917f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed60808b8961043f616b478d6040519283916020830195866163a7565b519020616b548686613f2c565b51906040519283528a602084015260408301526060820152a1613f2c565b51906040519060808201928284106001600160401b038511176139de5760039360405282526020820193845260408201908152606082019360018552898952600d60205260408920868a52602052604089206040516020810190616bdb8161043f8d8d866163a7565b5190208a526020526040892092518355516001830155516002820155019051151560ff801983541691161790555b848452600d60205260408420818552602052604084206040516020810190616c368161043f8888866163a7565b519020855260205260ff60036040862001541615616c87576040948452600d60205284842090845260205261043f616c7b8585209386519283916020830195866163a7565b51902082526020522090565b60405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201526e3a143994903737ba103337bab7321760891b6064820152608490fd5b935091506001905b01616901565b9450616d3d9350616d038383613f2c565b51601154604051630667f9d760e41b81526001600160a01b0390911660048201526024810182905290959094602090869081906044820190565b03815f516020618a015f395f51905f525afa94851561259e578a95616e3a575b50616d6986600d617177565b959096616d7781600d617250565b60115490939192906001600160a01b03165f516020618a015f395f51905f523b15616e36576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528c81606481835f516020618a015f395f51905f525af18015616e2b57908d91616e12575b505087616e0a575b509495616aec575093509150600190616cec565b96505f616df6565b81616e1c91613aaa565b616e27578b5f616dee565b8b80fd5b6040513d8f823e3d90fd5b8e80fd5b9094506020813d8211616e65575b81616e5560209383613aaa565b810103126108cc5751935f616d5d565b3d9150616e48565b9150600190616cec565b141590505f80616ad6565b81616e8c91613aaa565b616e97578a5f616ace565b8a80fd5b6040513d8e823e3d90fd5b8d80fd5b81616eb491613aaa565b616e27578b5f616a4c565b8c906169e7565b90506020813d8211616eef575b81616ee060209383613aaa565b810103126108cc57515f6169cd565b3d9150616ed3565b6040513d8d823e3d90fd5b7f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5616f52616f308484613f2c565b51604080516001600160a01b038e168152602081019290925290918291820190565b0390a1616973565b9092506020813d8211616f85575b81616f7560209383613aaa565b810103126108cc5751915f61696b565b3d9150616f68565b6040513d8a823e3d90fd5b505050616c09565b90503d8087833e616fb18183613aaa565b8101604082820312610a895781516001600160401b0381116170045781616fd991840161428e565b916020810151906001600160401b03821161700057616ff992910161428e565b505f61688e565b8880fd5b8780fd5b6170159194505f90613aaa565b5f925f61684a565b91939092505f52600d60205260405f20905f5260205261043f61704f60405f20936040519283916020830195866163a7565b5190205f5260205260405f2090565b6bffffffffffffffffffffffff60a01b6011541660115563ffffffff19600f5416600f55600e545f600e5580617135575b505f60105560ff19601354166013556170a9601454613c83565b806170b15750565b601f81116001146170c357505f601455565b60145f52601f0160051c7fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec017fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ed5b81811061712a57505060145f525f602081208160145555565b5f8155600101617111565b600e5f527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd908101905b81811061716c575061708f565b5f815560010161715f565b91905f5b610100811061718e57505090505f905f90565b8060ff0360ff8111613d66576004850154600190911b906001600160a01b03165f516020618a015f395f51905f523b156108cc576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f516020618a015f395f51905f525af180156139d357617240575b5061721a84616670565b81617236575b5061722d5760010161717b565b92505060019190565b905015155f617220565b5f61724a91613aaa565b5f617210565b91905f5b610100811061726757505090505f905f90565b60048401546001821b906001600160a01b03165f516020618a015f395f51905f523b156108cc576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f516020618a015f395f51905f525af180156139d357617303575b506172e684616670565b816172f9575b5061722d57600101617254565b905015155f6172ec565b5f61730d91613aaa565b5f6172dc56fe60a03461009c57601f6116ad38819003918201601f19168301916001600160401b038311848410176100a05780849260209460405283398101031261009c57516001600160a01b0381169081900361009c576080526040516115f890816100b5823960805181818160a10152818161033d01528181610634015281816106a101528181610852015281816109280152818161108e01526112b10152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c90816323eeca0114610ae55750806348bd7dfd14610a0e5780638307c6551461054f578063a9270fbe146102fb578063aad6e4881461017a578063ba9285fe14610156578063e357d6f9146101285763ecbbc03314610074575f80fd5b3461012457602036600319011261012457604051631f29a8cd60e31b815260048035908201525f816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa8015610119576100f1915f916100f5575b50604051918291602083526020830190610c6b565b0390f35b61011191503d805f833e6101098183610bf3565b810190610d32565b50505f6100dc565b6040513d5f823e3d90fd5b5f80fd5b3461012457604061014461013b36610c2d565b9291909161115c565b60208251918051835201516020820152f35b3461012457602061017261016936610c2d565b92919091610f07565b604051908152f35b3461012457608036600319011261012457600435610196610b39565b9061019f610b4f565b906064359167ffffffffffffffff83116101245736602384011215610124578260040135926101cd84610c15565b936101db6040519586610bf3565b8085526024602086019160051b8301019136831161012457602401905b8282106102eb5750505082519361020e85610c15565b9461021c6040519687610bf3565b80865261022b601f1991610c15565b015f5b8181106102c85750505f5b8451811015610277578061025b61025260019388610cc4565b5185858861115c565b6102658289610cc4565b526102708188610cc4565b5001610239565b856040518091602082016020835281518091526020604084019201905f5b8181106102a3575050500390f35b8251805185526020908101518186015286955060409094019390920191600101610295565b6020906040516102d781610bbb565b5f81525f8382015282828a0101520161022e565b81358152602091820191016101f8565b346101245761030936610b65565b60405192610318606085610bf3565b60028452602084019060403683376040805163f6c0092760e01b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316929181602481865afa908115610119575f91610507575b505f61039061038a836113a1565b9261140e565b92602460405180968193631f29a8cd60e31b835260048301525afa948515610119575f935f966104e4575b5093956001600160a01b0394851694165f5b84518110156104a057816001600160a01b036103e98388610cc4565b51161461045e575b856001600160a01b036104048388610cc4565b511614610414575b6001016103cd565b61041e8188610cc4565b519060038202918083046003149015171561044a57600a600192046104428b610cb4565b52905061040c565b634e487b7160e01b5f52601160045260245ffd5b808303610475578361046f8a610ca7565b526103f1565b61047f8188610cc4565b5160038102908082046003149015171561044a57600a900461046f8a610ca7565b8789604051918291602083019060208452518091526040830191905f5b8181106104cb575050500390f35b82518452859450602093840193909201916001016104bd565b9095506104fc9193503d805f833e6101098183610bf3565b5092909294886103bb565b90506040813d604011610547575b8161052260409383610bf3565b8101031261012457602061053582610d1e565b91015160ff811603610124578761037c565b3d9150610515565b346101245760a03660031901126101245760043561056b610b39565b90610574610b4f565b60643591600283101561012457604051926060840184811067ffffffffffffffff821117610902576040525f84525f60208501526040516105b481610bbb565b5f81525f602082015260408501526105cb81610cf0565b6109f4575f90608435925f935b6040516323b872dd60e01b6020820152336024820152306044820152606480820183905281526001600160a01b038816919061061f90610619608482610bf3565b836114ba565b604051636eb1769f60e11b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316602482015290602082604481865afa918215610119575f926109c0575b50810180911161044a575f8060405192602084019063095ea7b360e01b825260018060a01b037f00000000000000000000000000000000000000000000000000000000000000001660248601526044850152604484526106da606485610bf3565b83519082865af16106e9611525565b81610991575b5080610987575b15610916575b505a936040519160c0830183811067ffffffffffffffff82111761090257604052848352602083019161072e81610cf0565b82526040830190815260018060a01b03841660608401526080830191608435835260209760405161075f8a82610bf3565b5f815260a086019081526040519161077683610b9f565b3083525f8b8401523360408401525f60608401526103e842019182421161044a5761080b610843918d986040519a8b998a996352bbbe2960e01b8b5260e060048c0152825160e48c0152516107ca81610cf0565b6101048b0152516001600160a01b039081166101248b01526060919091015116610144890152516101648801525160c06101848801526101a4870190610cfa565b84516001600160a01b039081166024880152602086015115156044880152604086015116606487015260609094015115156084860152565b60a484015260c483015203815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1908115610119575f916108d5575b5085525a830392831161044a576080956108ac9360208701526084359261115c565b604083015260408051928051845260208101518385015201518051604084015201516060820152f35b90508481813d83116108fb575b6108ec8183610bf3565b8101031261012457518761088a565b503d6108e2565b634e487b7160e01b5f52604160045260245ffd5b60405163095ea7b360e01b60208201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660248201525f6044808301919091528152610981919061097b90610975606482610bf3565b846114ba565b826114ba565b876106fc565b50813b15156106f6565b80518015925082156109a6575b5050896106ef565b6109b992506020809183010191016114a2565b898061099e565b9091506020813d6020116109ec575b816109dc60209383610bf3565b8101031261012457519089610679565b3d91506109cf565b600190610a05608435848784610f07565b5f1993906105d8565b3461012457610a1c36610b65565b505050604051610a2d60a082610bf3565b600481526020810160803682376001610a4583610ca7565b526002610a5183610cb4565b52815160021015610ad15760036060830152815160031015610ad15760086080830152604051906020820192602083525180935260408201905f935b808510610a9a5783830384f35b9091825190600a821015610abd5760208160019382935201930194019390610a8d565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b3461012457604036600319011261012457631d04569d60e21b815260206004820181905260248201527f42616c616e636572563253776170416461707465722e676574506f6f6c4964736044820152606490fd5b602435906001600160a01b038216820361012457565b604435906001600160a01b038216820361012457565b606090600319011261012457600435906024356001600160a01b038116810361012457906044356001600160a01b03811681036101245790565b6080810190811067ffffffffffffffff82111761090257604052565b6040810190811067ffffffffffffffff82111761090257604052565b60a0810190811067ffffffffffffffff82111761090257604052565b90601f8019910116810190811067ffffffffffffffff82111761090257604052565b67ffffffffffffffff81116109025760051b60200190565b608090600319011261012457600435906024356001600160a01b038116810361012457906044356001600160a01b0381168103610124579060643590565b90602080835192838152019201905f5b818110610c885750505090565b82516001600160a01b0316845260209384019390920191600101610c7b565b805115610ad15760200190565b805160011015610ad15760400190565b8051821015610ad15760209160051b010190565b60405190610ce582610bbb565b5f6020838281520152565b60021115610abd57565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b51906001600160a01b038216820361012457565b909160608284031261012457815167ffffffffffffffff811161012457820183601f8201121561012457805190610d6882610c15565b91610d766040519384610bf3565b80835260208084019160051b8301019186831161012457602001905b828210610e165750505092602083015167ffffffffffffffff81116101245783019080601f83011215610124578151610dca81610c15565b92610dd86040519485610bf3565b81845260208085019260051b82010192831161012457602001905b828210610e065750505060409092015190565b8151815260209182019101610df3565b60208091610e2384610d1e565b815201910190610d92565b60408051909190610e3f8382610bf3565b6001815291601f1901825f5b828110610e5757505050565b602090604051610e6681610bd7565b5f81525f838201525f60408201525f60608201526060608082015282828501015201610e4b565b6020818303126101245780519067ffffffffffffffff821161012457019080601f83011215610124578151610ec181610c15565b92610ecf6040519485610bf3565b81845260208085019260051b82010192831161012457602001905b828210610ef75750505090565b8151815260209182019101610eea565b929091610f12610e2e565b9160405194610f2086610bd7565b85525f6020860152600160408601526060850152602093604051610f448682610bf3565b5f81526080820152610f5583610ca7565b52610f5f82610ca7565b50606060405191610f708284610bf3565b60028352601f19820194853688860137610f8984610ca7565b6001600160a01b039091169052610f9f83610cb4565b6001600160a01b03909116905260405193610fb985610b9f565b3385525f868601523360408601525f82860152604051610fd98382610bf3565b600281528636910137604051637c26833760e11b81529460e48601919091869493926001600487015260e0602487015284518092526101048601928161010060048560051b8a0101019601935f915b8483106110f5575050505050509261108961105184935f96600319868303016044870152610c6b565b82516001600160a01b03908116606486015260208401511515608486015260408401511660a4850152606090920151151560c4840152565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af18015610119576110cf915f916110d3575b50610ca7565b5190565b6110ef91503d805f833e6110e78183610bf3565b810190610e8d565b5f6110c9565b9193959692806111476001939582989b60ff19906003199083030101875260a060808d518051845285810151868501526040810151604085015288810151898501520151918160808201520190610cfa565b99019301930190928997969593949294611028565b9192611166610cd8565b5061116f610e2e565b906040519361117d85610bd7565b84525f60208501526001604085015260608401526020926040516111a18582610bf3565b5f815260808201526111b282610ca7565b526111bc81610ca7565b506040516060946111cd8683610bf3565b60028252601f198601938436878501376111e683610ca7565b6001600160a01b0390911690526111fc82610cb4565b6001600160a01b0390911690526040519261121684610b9f565b3384525f858501523360408501525f868501526040516112368782610bf3565b600281528536910137604051637c26833760e11b81529460e4860190869392915f600486015260e0602486015283518091526101048501918761010060048460051b890101019501925f915b8984841061133e57505050505050926112ac61105184935f96600319868303016044870152610c6b565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1918215610119575f92611322575b506112f382610cb4565b5191600160ff1b831461044a5761130990610ca7565b51906040519261131884610bbb565b5f03835282015290565b6113379192503d805f833e6110e78183610bf3565b905f6112e9565b61138e600193959798829395979a60ff19906003199083030101875260a060808c518051845285810151868501526040810151604085015288810151898501520151918160808201520190610cfa565b9801930193019092899695949293611282565b6040516341343d2b60e11b815290602090829060049082906001600160a01b03165afa5f91816113da575b506113d757505f1990565b90565b9091506020813d602011611406575b816113f660209383610bf3565b810103126101245751905f6113cc565b3d91506113e9565b60405163876f303b60e01b81526001600160a01b039190911690602081600481855afa5f918161146e575b5061146957506020600491604051928380926337a0b34d60e21b82525afa5f91816113da57506113d757505f1990565b905090565b9091506020813d60201161149a575b8161148a60209383610bf3565b810103126101245751905f611439565b3d915061147d565b90816020910312610124575180151581036101245790565b5f806114e29260018060a01b03169360208151910182865af16114db611525565b9083611564565b805190811515918261150a575b50506114f85750565b635274afe760e01b5f5260045260245ffd5b61151d92506020809183010191016114a2565b155f806114ef565b3d1561155f573d9067ffffffffffffffff82116109025760405191611554601f8201601f191660200184610bf3565b82523d5f602084013e565b606090565b90611588575080511561157957805190602001fd5b63d6bda27560e01b5f5260045ffd5b815115806115b9575b611599575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561159156fea2646970667358221220e3f14a8e559a59d2985f6223d165fe9c31be449a354e673b7d50555a0236e43d64736f6c634300081b00336b656420736c6f742e2057652063616e2774206669742076616c7565206772655c6ee304399dbdb9c8ef030ab642b10820db8f560002000000000000000000140000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000ba100000625a3754423978a60c9317c58a424e3d73746453746f726167652066696e642853746453746f72616765293a20506163a26469706673582212209eca23e322fd34a834ef83680e1ad8a26f403dcb304877d2c940ba77774c579264736f6c634300081b0033","sourceMap":"273:7942:67:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;893:3;;;-1:-1:-1;;893:3:67;273:7942;893:3;;;;5887:28;;:::i;:::-;5931:13;;5946:19;893:3;5946:19;;;;6613:13;;;6628:23;785:66;6628:23;;;;273:7942;;;6653:3;6681:9;;;;:::i;:::-;;273:7942;6009:1;893:3;;;;;;;;6827:53;6709:13;:30;6818:66;6709:13;;6009:1;6709:13;;;;:::i;:::-;;273:7942;6709:30;;:::i;:::-;6782:21;893:3;6763:9;;;;:::i;:::-;;:17;273:7942;893:3;6782:13;;;;:::i;:::-;;:21;273:7942;6782:21;;:::i;:::-;273:7942;6860:13;6827:9;;;;;:::i;:::-;;:15;;893:3;6860:13;;:::i;:::-;;:19;;6827:53;;:::i;:::-;785:66;;6818;:::i;:::-;893:3;6613:13;;893:3;-1:-1:-1;;;523:5:65;;6854:12:8;273:7942:67;523:5:65;27501:38:3;273:7942:67;523:5:65;5967:3:67;6009:1;893:3;;;;;;;523:5:65;5999:2:67;523:5:65;;5999:2:67;523:5:65;;;;;;;;;;;;6014:8:67;523:5:65;;;;;;;5986:36:67;;;;:::i;:::-;893:3;273:7942;;-1:-1:-1;;;6058:13:67;;273:7942;893:3;273:7942;;;6058:13;-1:-1:-1;;;;;;;;;;;6058:13:67;;;;;;;;;;;5967:3;-1:-1:-1;893:3:67;409:59;273:7942;;;;6110:96;;-1:-1:-1;;;;;273:7942:67;6182:10;;;;:::i;:::-;273:7942;;;1590:14:0;;;;;;;;;6110:96:67;;273:7942;6110:96;;;:::i;:::-;;;;;;;;;;;;;5967:3;6256:48;:10;;:30;:10;;;;:::i;:::-;273:7942;893:3;6269:17;;273:7942;6256:30;;:::i;:::-;273:7942;;6256:48;;:::i;:::-;523:5:65;6009:1:67;523:5:65;;;;;6308:1:67;523:5:65;;;;;;;273:7942:67;;;;893:3;27501:38:3;;1590:14:0;;;;27501:38:3;;6342:4:67;27501:38:3;;;273:7942:67;27501:38:3;;;;;;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;:::-;893:3:67;273:7942;;;27568:30:3;;;;;;:::i;:::-;;6854:22:8;;:::i;:::-;27524:10:3;273:7942:67;;7009:9:8;273:7942:67;;;7009:9:8;273:7942:67;7505:10:8;273:7942:67;-1:-1:-1;;;273:7942:67;;;;;;;6009:1;273:7942;;;7505:10:8;273:7942:67;;:::i;:::-;6342:4;;;;273:7942;;;;;;;;;3489:17;;;273:7942;;;;;;;;;;1048:60;273:7942;;;;6854:12:8;273:7942:67;;7009:9:8;273:7942:67;;1590:14:0;15610:11:8;273:7942:67;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;273:7942:67;;;;;;27635:8:3;273:7942:67;;;;;15703:15:8;;273:7942:67;;;;;;;;893:3;273:7942;;;;;;893:3;15735:37:8;;;;;;;;;;:::i;:::-;;893:3:67;;15735:37:8;;;;;;:::i;:::-;273:7942:67;15725:48:8;;273:7942:67;;893:3;273:7942;;15610:11:8;273:7942:67;;;15703:77:8;273:7942:67;;15702:78:8;15698:126;;5967:3:67;-1:-1:-1;;;;;273:7942:67;;;;;;27635:8:3;273:7942:67;;;;;;;;893:3;273:7942;15889:37:8;;273:7942:67;;;;;;15889:37:8;;;893:3:67;15889:37:8;;;;;:::i;:::-;273:7942:67;15879:48:8;;273:7942:67;;893:3;273:7942;;;;;15943:15:8;6009:1:67;15943:15:8;;273:7942:67;15961:16:8;6308:1:67;15961:16:8;;273:7942:67;15943:34:8;;;;:::i;:::-;15938:460;;5967:3:67;273:7942;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;273:7942:67;;;16424:32:8;;273:7942:67;893:3;;;273:7942;;;;;;;893:3;273:7942;893:3;273:7942;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;5967:3:67;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;273:7942:67;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;273:7942:67;;;16587:43:8;;273:7942:67;12810:59:8;;;273:7942:67;;;;;;;;12656:92:8;;;;12810:59;;;273:7942:67;;;12810:59:8;273:7942:67;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;5967:3:67;16678:31:8;;;;;:::i;:::-;16724:8;;;273:7942:67;;;16724:29:8;;5967:3:67;16720:176:8;;;;14785:4;;;;893:3:67;6372:47;14785:4:8;;;:::i;:::-;409:59:67;;273:7942;;-1:-1:-1;;;6372:47:67;;-1:-1:-1;;;;;273:7942:67;;;;6372:47;;273:7942;893:3;;;273:7942;;;;;;;;;893:3;;;;;6372:47;;;;-1:-1:-1;;;;;;;;;;;6372:47:67;;;;;;;;5967:3;-1:-1:-1;893:3:67;409:59;-1:-1:-1;;;;;273:7942:67;6445:104;6525:10;;;;:::i;:::-;273:7942;;;-1:-1:-1;;;6445:104:67;;-1:-1:-1;;;;;;;;;;;273:7942:67;6445:104;;273:7942;-1:-1:-1;;;;;;;;;;;27501:38:3;785:66:67;;273:7942;-1:-1:-1;;;;;;;;;;;27501:38:3;785:66:67;;273:7942;6009:1;893:3;785:66;;;;;;273:7942;;;;;;;785:66;;273:7942;;6445:104;;;;;;;;;;;;;5967:3;6433:116;;;;;:::i;:::-;;;;;;:::i;:::-;;273:7942;;1590:14:0;;;;6564:23:67;;273:7942;6564:23;;273:7942;893:3;6564:23;27501:38:3;6564:23:67;;-1:-1:-1;;;;;;;;;;;6564:23:67;;;;;;;6009:1;6564:23;;;5967:3;;893;5931:13;;6564:23;;;893:3;6564:23;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;273:7942;;1590:14:0;273:7942:67;;1590:14:0;;;;6445:104:67;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;273:7942;;1590:14:0;273:7942:67;;1590:14:0;;;;6372:47:67;;;893:3;6372:47;;;;;;;;;:::i;:::-;;;16720:176:8;273:7942:67;;;;16769:41:8;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;273:7942:67;;-1:-1:-1;;;16769:41:8;;-1:-1:-1;;;;;273:7942:67;;;;;16769:41:8;;273:7942:67;12810:59:8;;;273:7942:67;;;;12810:59:8;;;273:7942:67;;;;;12810:59:8;273:7942:67;16769:41:8;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;;;;;16720:176;273:7942:67;;-1:-1:-1;;;16824:61:8;;893:3:67;273:7942;16824:61:8;;12810:59;;27501:38:3;12810:59:8;;273:7942:67;12810:59:8;27501:38:3;273:7942:67;;12810:59:8;-1:-1:-1;;;893:3:67;12810:59:8;;;16824:61;;;16769:41;;;;;;:::i;:::-;273:7942:67;;16769:41:8;;;273:7942:67;;;16769:41:8;273:7942:67;;1590:14:0;273:7942:67;;1590:14:0;;;;16769:41:8;273:7942:67;;;16724:29:8;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;273:7942:67;;16587:43:8;;;;;273:7942:67;;1590:14:0;273:7942:67;;1590:14:0;;;;16587:43:8;273:7942:67;;;16424:32:8;;;;;893:3:67;16424:32:8;;;;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;1590:14:0;-1:-1:-1;273:7942:67;;16424:32:8;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;;;;:::i;:::-;16021:3;785:66:67;16021:3:8;785:66:67;;;;273:7942;;;;;;;-1:-1:-1;;;16314:19:8;;6009:1:67;273:7942;;;;16314:19:8;;273:7942:67;;;16314:19:8;;273:7942:67;27501:38:3;273:7942:67;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;893:3:67;16314:19:8;;12810:59;16314:19;16170:185;16314:19;;;;15938:460;273:7942:67;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;273:7942:67;12810:59:8;;;-1:-1:-1;;;785:66:67;12810:59:8;;;273:7942:67;;;;;;12810:59:8;;;273:7942:67;;;;;;;;16170:185:8;;893:3:67;;16170:185:8;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;;;;;12810:59;273:7942:67;;-1:-1:-1;;;12810:59:8;;893:3:67;273:7942;12810:59:8;;273:7942:67;;;;;;27501:38:3;273:7942:67;;;;:::i;:::-;12810:59:8;;;16314:19;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;273:7942:67;;;1590:14:0;;;;;;;;273:7942:67;-1:-1:-1;;;523:5:65;;6854:12:8;273:7942:67;523:5:65;27501:38:3;273:7942:67;523:5:65;15698:126:8;13208:33;;:::i;:::-;;15698:126;;273:7942:67;-1:-1:-1;;;273:7942:67;;;;;27501:38:3;273:7942:67;;523:5:65;-1:-1:-1;;;523:5:65;;6854:12:8;273:7942:67;523:5:65;27501:38:3;273:7942:67;523:5:65;6110:96:67;;273:7942;6110:96;;;;;;;;;;:::i;:::-;;;273:7942;;;;;;;;6256:48;273:7942;;;;:::i;:::-;6110:96;;273:7942;;;;6110:96;;;;;6058:13;;;;893:3;6058:13;;;;;;;;;1590:14:0;6058:13:67;;;:::i;:::-;;;1590:14:0;;;;;6058:13:67;;;;;;;-1:-1:-1;6058:13:67;;273:7942;;;;;;;;;;;;;;;1016:26:12;273:7942:67;;;;;;;;;;;;;;;;;;;;;;;1952:7;409:59;273:7942;;-1:-1:-1;;;1952:52:67;;-1:-1:-1;;;;;;;;;;;273:7942:67;1952:52;;273:7942;-1:-1:-1;;;;;;;;;;;273:7942:67;;;;-1:-1:-1;;;;;;;;;;;273:7942:67;;;;-1:-1:-1;;;;;273:7942:67;;;;;;;;1952:52;273:7942;;1952:52;;;;;;;;;;;273:7942;2015:30;-1:-1:-1;;;;;;;;;;;2015:30:67;;;;273:7942;;-1:-1:-1;;;2015:30:67;;2025:19;273:7942;2015:30;;273:7942;2015:30;273:7942;;;-1:-1:-1;;;;;;;;;;;2015:30:67;;;;;;;;;;;273:7942;2083:9;;;;;:::i;:::-;273:7942;1857:14;2065:27;-1:-1:-1;;;;;;;;;;;2055:38:67;;;;273:7942;;1590:14:0;;;;2055:38:67;;273:7942;2055:38;;273:7942;2055:38;;273:7942;2055:38;-1:-1:-1;;;;;;;;;;;2055:38:67;;;;;;;;273:7942;-1:-1:-1;;273:7942:67;;;-1:-1:-1;;;2128:93:67;;-1:-1:-1;;;;;;;;;;;273:7942:67;2128:93;;273:7942;-1:-1:-1;;;;;;;;;;;273:7942:67;;;;-1:-1:-1;;;;;;;;;;;273:7942:67;;;;1857:14;1952:52;273:7942;;;;;;;;;;2128:93;;;;;;;;;;;;;273:7942;;1952:7;273:7942;2232:28;2270:30;273:7942;;2232:28;:::i;:::-;2279:17;273:7942;2270:30;:::i;:::-;273:7942;;2128:93;;;273:7942;2128:93;273:7942;2128:93;;;;;;;;:::i;:::-;;;273:7942;;;;;;;;1952:7;273:7942;2270:30;273:7942;;:::i;:::-;2128:93;;;;;;;;;2055:38;;;;;:::i;:::-;273:7942;;2055:38;;;;273:7942;;;;2015:30;;;;;:::i;:::-;273:7942;;2015:30;;;;;273:7942;;1590:14:0;273:7942:67;;1590:14:0;;;;1952:52:67;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;273:7942;;;;;;;;;;;;;;;;;;2421:18:5;273:7942:67;;;;;;;2421:18:5;273:7942:67;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;273:7942:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6992:7;409:59;273:7942;;-1:-1:-1;;;6992:52:67;;-1:-1:-1;;;;;;;;;;;273:7942:67;6992:52;;273:7942;-1:-1:-1;;;;;;;;;;;273:7942:67;;;;-1:-1:-1;;;;;;;;;;;273:7942:67;;;;;;;;;6992:52;;273:7942;;-1:-1:-1;;;;;273:7942:67;6992:52;;;;;;;7122:21;6992:52;7129:9;6992:52;;;;;273:7942;;7055:26;7079:1;273:7942;;7062:18;7055:26;:::i;:::-;7091:21;7098:9;;;:::i;:::-;273:7942;7098:13;;7091:21;:::i;:::-;7129:9;:::i;6992:52::-;;;;;;;;;;;;;:::i;:::-;;;;273:7942;;;;;;;-1:-1:-1;;273:7942:67;;;;;;;-1:-1:-1;;;;;273:7942:67;;;;;;;;-1:-1:-1;;;;;273:7942:67;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;2273:18:5;273:7942:67;893:3;;;:::i;:::-;273:7942;;;;;;;:::i;:::-;893:3;;;2273:18:5;273:7942:67;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;8168:38;273:7942;;;;;;:::i;:::-;8111:1;893:3;;273:7942;;;;;893:3;-1:-1:-1;;;;;;;;;;;8123:35:67;;;:::i;:::-;893:3;273:7942;409:59;-1:-1:-1;;;;;273:7942:67;8168:38;:::i;273:7942::-;;;;;;;-1:-1:-1;;273:7942:67;;;;;;534:59:65;273:7942:67;534:59:65;;;;;;;;:::i;:::-;273:7942:67;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;273:7942:67;;;;;;;;;;;;;;;;;;;;;;;;;7880:23;;;7840:113;;;;;;;;273:7942;7840:113;273:7942;;;;;;;;;;7840:113;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;7811:152:67;;;;273:7942;;;;;1590:14:0;;;;;;;7811:152:67;;7840:113;273:7942;7811:152;;273:7942;7840:113;273:7942;;;;:::i;:::-;7811:152;;;-1:-1:-1;;;;;;;;;;;7811:152:67;;;;;;;;273:7942;-1:-1:-1;7840:113:67;409:59;273:7942;;-1:-1:-1;;;7973:28:67;;273:7942;;7973:28;;273:7942;7997:3;7840:113;273:7942;;;;;;;;;;;-1:-1:-1;;;;;273:7942:67;7973:28;;;;;;;;273:7942;;;7973:28;;;;;;;;;;:::i;:::-;;;7840:113;273:7942;;;;;;;;-1:-1:-1;;;;;273:7942:67;;;;;;;;:::i;:::-;;;;;;;;7811:152;;;;;:::i;:::-;273:7942;;7811:152;;;;;273:7942;;;;;;;;;;;;;;;3190:18:5;273:7942:67;893:3;;;:::i;:::-;273:7942;;;;;;;:::i;:::-;893:3;;;3190:18:5;273:7942:67;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;-1:-1:-1;;;;;273:7942:67;;;;;1048:60;273:7942;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;893:3;273:7942;;;;;;;;;;;;-1:-1:-1;;;;;;1590:14:0;273:7942:67;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;273:7942:67;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;273:7942:67;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;273:7942:67;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;273:7942:67;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;273:7942:67;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;273:7942:67;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;273:7942:67;;;;;;;;;;;;;;;;;;;;;;1590:14:0;273:7942:67;1590:14:0;273:7942:67;;;;;;1590:14:0;273:7942:67;1590:14:0;;273:7942:67;;;;;;;1590:14:0;273:7942:67;1590:14:0;;273:7942:67;;;;;;;1590:14:0;273:7942:67;1590:14:0;;273:7942:67;;;;;;;1590:14:0;273:7942:67;1590:14:0;;273:7942:67;;;;;;;1590:14:0;273:7942:67;1590:14:0;;273:7942:67;;;;;;;1590:14:0;273:7942:67;1590:14:0;;273:7942:67;;;;;;;1590:14:0;273:7942:67;;;;;;;;;;;;;;;;;;;;;;;;;7635:7;409:59;273:7942;;-1:-1:-1;;;7635:41:67;;-1:-1:-1;;;;;;;;;;;273:7942:67;7635:41;;273:7942;;;;;;;7635:41;;273:7942;;-1:-1:-1;;;;;273:7942:67;7635:41;;;;;;;;;;;273:7942;-1:-1:-1;;;;;;7696:9:67;;;:::i;:::-;273:7942;;-1:-1:-1;;;;;;;;;;;3533:24:1;;;;273:7942:67;;1590:14:0;;;;3533:24:1;;273:7942:67;3533:24:1;;273:7942:67;-1:-1:-1;;;;;;;;;;;7635:41:67;273:7942;;;3533:24:1;;;;-1:-1:-1;;;;;;;;;;;3533:24:1;;;;;;;;;;;273:7942:67;-1:-1:-1;;;;;;273:7942:67;7730:9;;-1:-1:-1;7730:9:67;:::i;:::-;273:7942;;-1:-1:-1;;;;;;;;;;;3533:24:1;;;;273:7942:67;;1590:14:0;;;;3533:24:1;;273:7942:67;3533:24:1;;273:7942:67;-1:-1:-1;;;;;;;;;;;7635:41:67;273:7942;;;3533:24:1;;;;-1:-1:-1;;;;;;;;;;;3533:24:1;;;;;;;;273:7942:67;;3533:24:1;;;;;:::i;:::-;273:7942:67;;3533:24:1;273:7942:67;3533:24:1;;;;;:::i;:::-;273:7942:67;;3533:24:1;;;;;273:7942:67;;;7635:41;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;273:7942;;;;;;;;;;;;;2707:18:5;273:7942:67;893:3;;;:::i;:::-;273:7942;;;;;;;:::i;:::-;893:3;;;2707:18:5;273:7942:67;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1448:1;893:3;;;;;;;;;273:7942;893:3;;1473:4;1460:17;;;:::i;:::-;893:3;1500:4;1487:17;;;:::i;:::-;893:3;;409:59;273:7942;;-1:-1:-1;;;1554:57:67;;-1:-1:-1;;;;;;;;;;;273:7942:67;1554:57;;273:7942;-1:-1:-1;;;;;;;;;;;273:7942:67;;;;-1:-1:-1;;;;;;;;;;;273:7942:67;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;273:7942:67;;;;;;;;;;;;;;;;;;;;;;;;1554:57;;;;;;;;;;;;;;273:7942;1627:13;;1661:3;273:7942;;1642:17;;;;;1689:9;1680:32;1689:9;1495:1;1689:9;;;:::i;:::-;;273:7942;1680:32;:::i;:::-;1726:34;893:3;1735:9;;;;:::i;:::-;;:21;273:7942;1726:34;:::i;:::-;893:3;1627:13;;1554:57;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;273:7942;;;;;;;-1:-1:-1;273:7942:67;;-1:-1:-1;893:3:67;273:7942;;;;;;;;1495:1;273:7942;;;;;;;;;;-1:-1:-1;;273:7942:67;;;;;;;;;;;;;;;3072:38;;;273:7942;3072:38;-1:-1:-1;;;;;;;;;;;3120:30:67;;;;273:7942;;-1:-1:-1;;;3120:30:67;;3130:19;;;273:7942;3120:30;;273:7942;;;;;;;-1:-1:-1;;;;;;;;;;;3120:30:67;;;;;;;;3072:38;-1:-1:-1;273:7942:67;409:59;273:7942;;-1:-1:-1;;;3199:52:67;;-1:-1:-1;;;;;;;;;;;273:7942:67;3199:52;;273:7942;-1:-1:-1;;;;;;;;;;;273:7942:67;;;;-1:-1:-1;;;;;;;;;;;273:7942:67;;;;;;;;3199:52;;273:7942;;-1:-1:-1;;;;;273:7942:67;3199:52;;;;;;;;;;;3072:38;785:66;;;;;;;3266:21;273:7942;3266:21;;3262:519;;;3266:21;;;3331:9;;;:::i;:::-;273:7942;3313:27;;-1:-1:-1;;;;;;;;;;;3303:38:67;;;;273:7942;;1590:14:0;;;;3303:38:67;;273:7942;3303:38;;273:7942;3303:38;;273:7942;3303:38;-1:-1:-1;;;;;;;;;;;3303:38:67;;;;;;;;3262:519;273:7942;;;;;27501:38:3;;1590:14:0;;;;27501:38:3;;3482:4:67;273:7942;27501:38:3;;273:7942:67;;27501:38:3;;;273:7942:67;27501:38:3;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;;6854:22:8;;:::i;:::-;27524:10:3;273:7942:67;;7009:9:8;273:7942:67;;;7009:9:8;273:7942:67;7505:10:8;273:7942:67;-1:-1:-1;;;273:7942:67;;;;;;;;;;;7505:10:8;273:7942:67;;:::i;:::-;;;1048:60;273:7942;;;;6854:12:8;273:7942:67;;7009:9:8;273:7942:67;;1590:14:0;15610:11:8;273:7942:67;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;273:7942:67;;;;;;27635:8:3;273:7942:67;;;;;15703:15:8;;273:7942:67;;;;;;;;;;;;;;;;15735:37:8;;;;;;;;;;:::i;:::-;273:7942:67;15725:48:8;;273:7942:67;;;;;15610:11:8;273:7942:67;;;15703:77:8;273:7942:67;;15702:78:8;15698:126;;3262:519:67;-1:-1:-1;;;;;273:7942:67;;;;;;27635:8:3;273:7942:67;;;;;;;;;;15889:37:8;;273:7942:67;;;;;;15889:37:8;;;273:7942:67;15889:37:8;;;;;:::i;:::-;273:7942:67;15879:48:8;;273:7942:67;;;;;;;;15943:15:8;273:7942:67;15943:15:8;;273:7942:67;15961:16:8;785:66:67;15961:16:8;;273:7942:67;15943:34:8;;;;:::i;:::-;15938:460;;273:7942:67;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;273:7942:67;;;16424:32:8;;273:7942:67;893:3;;;273:7942;;;;;;;;;893:3;273:7942;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;3262:519:67;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;273:7942:67;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;273:7942:67;;;16587:43:8;;273:7942:67;12810:59:8;;;273:7942:67;;;;-1:-1:-1;;273:7942:67;;;12656:92:8;12810:59;;;273:7942:67;;;12810:59:8;273:7942:67;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;3262:519:67;16678:31:8;;;;:::i;:::-;16724:8;;273:7942:67;;;16724:29:8;;3262:519:67;16720:176:8;;;14785:4;;;;;;:::i;:::-;273:7942:67;409:59;;273:7942;;-1:-1:-1;;;3521:56:67;;-1:-1:-1;;;;;273:7942:67;;;;3521:56;;273:7942;-1:-1:-1;;273:7942:67;893:3;;273:7942;;;;;3521:56;-1:-1:-1;;;;;;;;;;;3521:56:67;;;;;;;;3262:519;;;273:7942;;-1:-1:-1;;;3813:36:67;;3843:4;273:7942;3813:36;;273:7942;;;;;;-1:-1:-1;;;;;;;;;;;3813:36:67;;;;;;;;;;;3262:519;-1:-1:-1;273:7942:67;;-1:-1:-1;;;3882:37:67;;3843:4;273:7942;3882:37;;273:7942;;;;;;-1:-1:-1;;;;;;;;;;;3882:37:67;;;;;;;;;;;3262:519;-1:-1:-1;273:7942:67;409:59;273:7942;;-1:-1:-1;;;3951:92:67;;-1:-1:-1;;;;;;;;;;;273:7942:67;3951:92;;273:7942;-1:-1:-1;;;;;;;;;;;273:7942:67;785:66;;273:7942;-1:-1:-1;;;;;;;;;;;273:7942:67;785:66;;273:7942;3199:52;785:66;;;;;;;;;273:7942;;;785:66;;273:7942;;785:66;;273:7942;;3951:92;;-1:-1:-1;;;;;273:7942:67;3951:92;;;;;;;;;;;3262:519;273:7942;;;4054:749;;273:7942;;;4054:749;4104:21;;;273:7942;;-1:-1:-1;;;4212:37:67;;3843:4;273:7942;4212:37;;273:7942;;;;;-1:-1:-1;;;;;;;;;;;4212:37:67;;;;;;;;;;;4100:693;4212:52;;;;;;:::i;:::-;;;:::i;:::-;273:7942;;;-1:-1:-1;;;4388:36:67;;3843:4;273:7942;4388:36;;273:7942;;;;;-1:-1:-1;;;;;;;;;;;4388:36:67;;;;;;;;;;;4100:693;4374:50;;;;;;:::i;:::-;4054:749;;;;;273:7942;;;4388:36;;;273:7942;4388:36;;273:7942;4388:36;;;;;;1590:14:0;4388:36:67;;;:::i;:::-;;;1590:14:0;;;;;4374:50:67;4388:36;;;;;-1:-1:-1;4388:36:67;;4212:37;;;273:7942;4212:37;;273:7942;4212:37;;;;;;1590:14:0;4212:37:67;;;:::i;:::-;;;1590:14:0;;;;;4212:52:67;:37;;;;;-1:-1:-1;4212:37:67;;4100:693;273:7942;;-1:-1:-1;;;4562:36:67;;3843:4;273:7942;4562:36;;273:7942;;;;;;;;-1:-1:-1;;;;;;;;;;;4562:36:67;;;;;;;;;;;4100:693;4548:50;;;;;;:::i;:::-;273:7942;;;-1:-1:-1;;;4708:37:67;;3843:4;273:7942;4708:37;;273:7942;;;;;-1:-1:-1;;;;;;;;;;;4708:37:67;;;;;;;;;;;4100:693;4708:52;;;;;;:::i;:::-;4100:693;;4708:37;;;273:7942;4708:37;;273:7942;4708:37;;;;;;1590:14:0;4708:37:67;;;:::i;:::-;;;1590:14:0;;;;;4708:52:67;:37;;;;;-1:-1:-1;4708:37:67;;4562:36;;;273:7942;4562:36;;273:7942;4562:36;;;;;;1590:14:0;4562:36:67;;;:::i;:::-;;;1590:14:0;;;;;4548:50:67;4562:36;;;;;-1:-1:-1;4562:36:67;;3951:92;;;;;785:66;3951:92;785:66;3951:92;;;;;;;:::i;:::-;;;;;3882:37;;;;273:7942;3882:37;;273:7942;3882:37;;;;;;1590:14:0;3882:37:67;;;:::i;:::-;;;1590:14:0;;;;;3882:37:67;;;;;;;-1:-1:-1;3882:37:67;;3813:36;;;;273:7942;3813:36;;273:7942;3813:36;;;;;;1590:14:0;3813:36:67;;;:::i;:::-;;;1590:14:0;;;;;3813:36:67;;;;;;;-1:-1:-1;3813:36:67;;3521:56;;;273:7942;3521:56;273:7942;3521:56;;;;;;;:::i;:::-;;;;;16724:29:8;-1:-1:-1;;16736:17:8;;;-1:-1:-1;3489:17:67;16724:29:8;;16587:43;;;;;:::i;:::-;273:7942:67;;16587:43:8;;;;16424:32;;;;;273:7942:67;16424:32:8;;273:7942:67;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;:::i;:::-;16021:3;785:66:67;16021:3:8;785:66:67;;;;273:7942;;;;;;;-1:-1:-1;;;16314:19:8;;273:7942:67;;;;;16314:19:8;;273:7942:67;16314:19:8;273:7942:67;;;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;12810:59;273:7942:67;16314:19:8;;16170:185;16314:19;273:7942:67;16314:19:8;;;;15938:460;273:7942:67;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;273:7942:67;12810:59:8;;;-1:-1:-1;;;273:7942:67;12810:59:8;;;273:7942:67;;;;;;12810:59:8;;;273:7942:67;;;;;;;;16170:185:8;;893:3:67;;16170:185:8;;;;;;:::i;:::-;273:7942:67;;-1:-1:-1;;;12810:59:8;;273:7942:67;;12810:59:8;;273:7942:67;;;;;;;;;:::i;16314:19:8:-;;;;;;;;;;;;;;:::i;:::-;;;;;273:7942:67;-1:-1:-1;;;523:5:65;;6854:12:8;273:7942:67;523:5:65;273:7942:67;;523:5:65;15698:126:8;13208:33;;:::i;:::-;;15698:126;;273:7942:67;-1:-1:-1;;;273:7942:67;;;;;;;;3303:38;;;;;:::i;:::-;273:7942;;3303:38;;;;3262:519;3636:9;;;:::i;:::-;273:7942;3618:27;;-1:-1:-1;;;;;;;;;;;3608:38:67;;;;273:7942;;1590:14:0;;;;3608:38:67;;273:7942;3608:38;;273:7942;3608:38;;273:7942;3608:38;-1:-1:-1;;;;;;;;;;;3608:38:67;;;;;;;;3262:519;273:7942;;;;;27501:38:3;;1590:14:0;;;;27501:38:3;;3679:4:67;273:7942;27501:38:3;;273:7942:67;;27501:38:3;;;273:7942:67;27501:38:3;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;;6854:22:8;;:::i;:::-;27524:10:3;273:7942:67;;7009:9:8;273:7942:67;;;7009:9:8;273:7942:67;7505:10:8;273:7942:67;-1:-1:-1;;;273:7942:67;;;;;;;;;;;7505:10:8;273:7942:67;;:::i;:::-;;;1048:60;273:7942;;;;6854:12:8;273:7942:67;;7009:9:8;273:7942:67;;1590:14:0;15610:11:8;273:7942:67;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;273:7942:67;;;;;;27635:8:3;273:7942:67;;;;;15703:15:8;;273:7942:67;;;;;;;;;;;;;;;;15735:37:8;;;;;;;;;;:::i;:::-;273:7942:67;15725:48:8;;273:7942:67;;;;;15610:11:8;273:7942:67;;;15703:77:8;273:7942:67;;15702:78:8;15698:126;;3262:519:67;-1:-1:-1;;;;;273:7942:67;;;;;;27635:8:3;273:7942:67;;;;;;;;;;15889:37:8;;273:7942:67;;;;;;15889:37:8;;;273:7942:67;15889:37:8;;;;;:::i;:::-;273:7942:67;15879:48:8;;273:7942:67;;;;;;;;15943:15:8;273:7942:67;15943:15:8;;273:7942:67;15961:16:8;785:66:67;15961:16:8;;273:7942:67;15943:34:8;;;;:::i;:::-;15938:460;;3262:519:67;273:7942;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;273:7942:67;;;16424:32:8;;273:7942:67;893:3;;;273:7942;;;;;;;;;893:3;273:7942;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;3262:519:67;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;273:7942:67;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;273:7942:67;;;16587:43:8;;273:7942:67;12810:59:8;;;273:7942:67;;;;;;;;12656:92:8;;;;12810:59;;;273:7942:67;;;12810:59:8;273:7942:67;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;3262:519:67;16678:31:8;;;;;:::i;:::-;16724:8;;;273:7942:67;;;16724:29:8;;3262:519:67;16720:176:8;;;;14785:4;;;;;;:::i;:::-;273:7942:67;409:59;;273:7942;;-1:-1:-1;;;3716:54:67;;-1:-1:-1;;;;;273:7942:67;;;;3716:54;;273:7942;893:3;;;273:7942;;;;;893:3;273:7942;3716:54;-1:-1:-1;;;;;;;;;;;3716:54:67;;;;;;;;3262:519;;;;3716:54;;;273:7942;3716:54;273:7942;3716:54;;;;;;;:::i;:::-;;;;;16724:29:8;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;273:7942:67;;16587:43:8;;;;16424:32;;;;;273:7942:67;16424:32:8;;273:7942:67;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;;;;:::i;:::-;16021:3;785:66:67;16021:3:8;785:66:67;;;;273:7942;;;;;;;-1:-1:-1;;;16314:19:8;;273:7942:67;;;;;16314:19:8;;273:7942:67;;;16314:19:8;273:7942:67;;;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;12810:59;16170:185;16314:19;273:7942:67;16314:19:8;;;;;15938:460;273:7942:67;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;273:7942:67;12810:59:8;;;-1:-1:-1;;;273:7942:67;12810:59:8;;;273:7942:67;;;;;;12810:59:8;;;273:7942:67;;;;;;;;16170:185:8;;893:3:67;;16170:185:8;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;;;;;16314:19;;;-1:-1:-1;16314:19:8;;;;;;;;;:::i;:::-;;;;;273:7942:67;;1590:14:0;273:7942:67;;1590:14:0;;;;273:7942:67;-1:-1:-1;;;523:5:65;;6854:12:8;273:7942:67;523:5:65;273:7942:67;;523:5:65;15698:126:8;13208:33;;:::i;:::-;;15698:126;;3608:38:67;;;;;:::i;:::-;273:7942;;3608:38;;;;785:66;-1:-1:-1;;;785:66:67;;;273:7942;785:66;273:7942;;785:66;3199:52;;;;;;;;;;;;;:::i;:::-;;;;3120:30;;;;;:::i;:::-;273:7942;;3120:30;;;;3072:38;;;;273:7942;;;;;;;;;;;;;2883:26:5;273:7942:67;893:3;;;:::i;:::-;273:7942;;;;;;;:::i;:::-;893:3;;;2883:26:5;273:7942:67;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;-1:-1:-1;;;;;273:7942:67;;;;;1048:60;273:7942;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;893:3;273:7942;;;;;;;;;;;;;;;;;;;;;;1590:14:0;273:7942:67;1590:14:0;273:7942:67;;;;;;1590:14:0;273:7942:67;1590:14:0;;273:7942:67;;;;;;;1590:14:0;273:7942:67;1590:14:0;;273:7942:67;;;;;;;1590:14:0;273:7942:67;1590:14:0;;273:7942:67;;;;;;;1590:14:0;273:7942:67;1590:14:0;;273:7942:67;;;;;;;1590:14:0;273:7942:67;1590:14:0;;273:7942:67;;;;;;;1590:14:0;273:7942:67;1590:14:0;;273:7942:67;;;;;;;1590:14:0;273:7942:67;;;;;;;;;;;;;;;;;;;-1:-1:-1;;273:7942:67;;;;;;-1:-1:-1;;;;;273:7942:67;;;;;;;;;-1:-1:-1;;;;;273:7942:67;;;;;;;409:59;273:7942;;-1:-1:-1;;;7282:37:67;;273:7942;;;7282:37;;;273:7942;-1:-1:-1;;;;;273:7942:67;;;;;;;;;;;;;;;;;;;;;;;7282:37;;;;;;;;;;;273:7942;;;;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;273:7942:67;;1590:14:0;;;;2349:24:1;;273:7942:67;2349:24:1;;273:7942:67;;;;;;2349:24:1;;273:7942:67;2349:24:1;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;;;;;273:7942:67;7380:6;;;;;;:::i;:::-;;:::i;:::-;273:7942;;;;;;2349:24:1;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;273:7942:67;;1590:14:0;;;;2349:24:1;;273:7942:67;2349:24:1;;273:7942:67;7397:20;273:7942;;;;2349:24:1;;273:7942:67;2349:24:1;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;;;;;273:7942:67;7446:6;;;;;;:::i;:::-;273:7942;;;;;;2349:24:1;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;273:7942:67;;1590:14:0;;;;2349:24:1;;273:7942:67;2349:24:1;;273:7942:67;7463:19;273:7942;;;;2349:24:1;;273:7942:67;2349:24:1;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;;;;;273:7942:67;7511:6;;;;;;:::i;:::-;273:7942;;;;;;2349:24:1;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;273:7942:67;;1590:14:0;;;;2349:24:1;;273:7942:67;2349:24:1;;273:7942:67;7528:24;273:7942;;;;2349:24:1;;273:7942:67;2349:24:1;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;;;;;273:7942:67;;;-1:-1:-1;;;785:66:67;;;273:7942;785:66;273:7942;;785:66;2349:24:1;;;;;:::i;:::-;273:7942:67;;2349:24:1;;;;273:7942:67;-1:-1:-1;;;785:66:67;;;273:7942;785:66;273:7942;;785:66;2349:24:1;;;;;:::i;:::-;273:7942:67;;2349:24:1;;;;;;;;;:::i;:::-;273:7942:67;;2349:24:1;;;;7282:37:67;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;273:7942;;;;;;;;;;;;;;;;;;;;:::i;:::-;893:3;;;-1:-1:-1;;893:3:67;;;273:7942;893:3;;;;273:7942;;;;;;:::i;:::-;893:3;;;273:7942;;;;;;;2502:13;;;2517:19;893:3;2517:19;;;;2743:13;;;2758:23;785:66;2758:23;;;;273:7942;;;2783:3;2811:9;;;;:::i;:::-;;2582:1;893:3;;;;;;;;;2927:13;2838;2802:54;2811:41;2918:38;2838:13;;2582:1;2838:13;;;;:::i;:::-;;2811:41;;:::i;:::-;785:66;;2802:54;:::i;:::-;2870:34;2879:9;;;;;:::i;2870:34::-;2927:13;;:::i;2918:38::-;893:3;2743:13;;2538:3;2582:1;893:3;;;;;;;523:5:65;2570:4:67;523:5:65;;2570:4:67;523:5:65;;;;;;;;;;;;2587:8:67;523:5:65;;;;;;;2557:38:67;;;;;;;:::i;:::-;893:3;;409:59;273:7942;;2621:96;;-1:-1:-1;;;;;273:7942:67;2693:10;;;;:::i;:::-;273:7942;;;1590:14:0;;;;;;;;;2621:96:67;;273:7942;2621:96;;;:::i;:::-;;;;;;;;;;;;;2538:3;2582:1;2609:108;;;;;;:::i;:::-;;;;;;:::i;:::-;;893:3;2502:13;;2621:96;;273:7942;2621:96;;;;;;;;;;:::i;:::-;;;273:7942;;;;;;;;2582:1;273:7942;;;;:::i;:::-;2621:96;;;;;;;273:7942;893:3;;;273:7942;;;;:::i;:::-;-1:-1:-1;893:3:67;;-1:-1:-1;893:3:67;;;;273:7942;;;;;;;;;;;;;;;;;;;;;;;;;;;3038:18:5;273:7942:67;;;;;;;3038:18:5;273:7942:67;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;273:7942:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3331:16:5;273:7942:67;;;;;;;3331:16:5;273:7942:67;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;273:7942:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3485:19:5;273:7942:67;893:3;;;:::i;:::-;273:7942;;;;;;:::i;:::-;893:3;;;3485:19:5;273:7942:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1048:60;273:7942;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;273:7942:67;;;1048:60;273:7942;;;;893:3;273:7942;893:3;:::i;:::-;273:7942;;;;;;;:::i;:::-;893:3;;;273:7942;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;893:3;273:7942;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2563:16:5;273:7942:67;;;;;;;2563:16:5;273:7942:67;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;273:7942:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;893:3;;;-1:-1:-1;;893:3:67;273:7942;893:3;;;;4957:28;;:::i;:::-;5001:13;;5016:19;893:3;5016:19;;;;5452:13;;;5467:23;785:66;5467:23;;;;273:7942;;;5492:3;5520:9;;;;:::i;:::-;;273:7942;5081:1;893:3;;;;;;;;5666:53;5548:13;:30;5657:66;5548:13;;5081:1;5548:13;;;;:::i;5657:66::-;893:3;5452:13;;5037:3;5081:1;893:3;;;;;;;523:5:65;5069:4:67;523:5:65;;5069:4:67;523:5:65;;;;;;;;;;;;5086:8:67;523:5:65;;;;;;;5056:38:67;;;;:::i;:::-;893:3;273:7942;;-1:-1:-1;;;5130:13:67;;273:7942;893:3;273:7942;;;5130:13;-1:-1:-1;;;;;;;;;;;5130:13:67;;;;;;;;;;;5037:3;5183:10;;;;;:::i;:::-;273:7942;;;;;893:3;27501:38:3;;1590:14:0;;;;27501:38:3;;5176:4:67;27501:38:3;;;273:7942:67;27501:38:3;;;;;;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;;6854:22:8;;:::i;:::-;27524:10:3;273:7942:67;;7009:9:8;273:7942:67;;;7009:9:8;273:7942:67;7505:10:8;273:7942:67;-1:-1:-1;;;273:7942:67;;;;;;;5081:1;273:7942;;;7505:10:8;273:7942:67;;:::i;:::-;;;6854:12:8;273:7942:67;7009:9:8;273:7942:67;15610:11:8;273:7942:67;;;-1:-1:-1;;;;;273:7942:67;;;1590:14:0;15653:34:8;;:::i;:::-;-1:-1:-1;;;;;273:7942:67;;;;;;27635:8:3;273:7942:67;;;;;15703:15:8;;273:7942:67;;;;;;;;893:3;273:7942;;;;;;893:3;15735:37:8;;;;;;;;;;:::i;:::-;273:7942:67;15725:48:8;;273:7942:67;;893:3;273:7942;;15610:11:8;273:7942:67;;;15703:77:8;273:7942:67;;15702:78:8;15698:126;;5037:3:67;-1:-1:-1;;;;;273:7942:67;;;;;;27635:8:3;273:7942:67;;;;;;;;893:3;273:7942;15889:37:8;;273:7942:67;;;;;;15889:37:8;;;893:3:67;15889:37:8;;;;;:::i;:::-;273:7942:67;15879:48:8;;273:7942:67;;893:3;273:7942;;;;5081:1;15943:15:8;;273:7942:67;15961:16:8;7009:9;15961:16;;273:7942:67;15943:34:8;;;;:::i;:::-;15938:460;;5037:3:67;273:7942;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;273:7942:67;;;16424:32:8;;273:7942:67;893:3;;;273:7942;;;;;;;893:3;273:7942;893:3;273:7942;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;5037:3:67;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;273:7942:67;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;273:7942:67;;;16587:43:8;;273:7942:67;12810:59:8;;;273:7942:67;;;;;;;;12656:92:8;;;;12810:59;;;273:7942:67;;;12810:59:8;273:7942:67;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;5037:3:67;16678:31:8;;;;:::i;:::-;16724:8;;;273:7942:67;;;16724:29:8;;5037:3:67;16720:176:8;;;;14785:4;;;;;;:::i;:::-;893:3:67;409:59;;5208:49;;893:3;-1:-1:-1;;;;;273:7942:67;5246:10;;;;:::i;:::-;273:7942;;;-1:-1:-1;;;5208:49:67;;-1:-1:-1;;;;;273:7942:67;;;;5208:49;;273:7942;893:3;;;273:7942;;;;;;893:3;;;;;5208:49;;;;-1:-1:-1;;;;;;;;;;;5208:49:67;;;;;;;;5037:3;-1:-1:-1;893:3:67;409:59;-1:-1:-1;;;;;273:7942:67;5283:105;5364:10;;;;:::i;:::-;273:7942;;;1590:14:0;;;;;;5283:105:67;;-1:-1:-1;;;;;;;;;;;273:7942:67;5283:105;;273:7942;-1:-1:-1;;;;;;;;;;;27501:38:3;785:66:67;;273:7942;-1:-1:-1;;;;;;;;;;;27501:38:3;785:66:67;;273:7942;785:66;893:3;785:66;;;;;;273:7942;5283:105;;785:66;5283:105;;;;;;;;;;;;;;;;5037:3;5271:117;;;;;:::i;:::-;;;;;;:::i;:::-;;273:7942;;1590:14:0;;;;5403:23:67;;273:7942;5403:23;;273:7942;893:3;5403:23;27501:38:3;5403:23:67;;-1:-1:-1;;;;;;;;;;;5403:23:67;;;;;;;5081:1;5403:23;;;5037:3;;893;5001:13;;5403:23;;;893:3;5403:23;;;;;;;;;:::i;:::-;;;;;5283:105;;;;;;;;;;;;;;:::i;:::-;;;;5208:49;;;893:3;5208:49;;;;;;;;;:::i;:::-;;;16724:29:8;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;273:7942:67;;16587:43:8;;;;16424:32;;;;;893:3:67;16424:32:8;;;;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;;273:7942:67;;1590:14:0;273:7942:67;;1590:14:0;;;;15938:460:8;16028:34;;;;;;;;;:::i;:::-;16021:3;785:66:67;16021:3:8;785:66:67;;;;273:7942;;;;;;;-1:-1:-1;;;16314:19:8;;5081:1:67;273:7942;;;;16314:19:8;;273:7942:67;;;16314:19:8;;273:7942:67;27501:38:3;273:7942:67;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;893:3:67;16314:19:8;;12810:59;16314:19;16170:185;16314:19;;;;273:7942:67;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;273:7942:67;12810:59:8;;;-1:-1:-1;;;785:66:67;12810:59:8;;;273:7942:67;;;;;;12810:59:8;;;273:7942:67;;;;;;;;16170:185:8;;893:3:67;;16170:185:8;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;;;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;5130:13:67;;;;893:3;5130:13;;;;;;;;;1590:14:0;5130:13:67;;;:::i;:::-;;;1590:14:0;;;;;5130:13:67;;;;;;;-1:-1:-1;5130:13:67;;273:7942;;;;;;;-1:-1:-1;;273:7942:67;;;;;;-1:-1:-1;;;995:20:67;;1590:14:0;273:7942:67;995:20;;1590:14:0;;;;;273:7942:67;-1:-1:-1;;;273:7942:67;;;1590:14:0;-1:-1:-1;273:7942:67;995:20;273:7942;-1:-1:-1;;;;;;;;;;;995:20:67;;;;;;;1590:14:0;995:20:67;1590:14:0;995:20:67;273:7942;995:20;;;273:7942;;;;1590:14:0;;;;;;;975:52:67;;273:7942;;975:52;;1590:14:0;273:7942:67;1590:14:0;;;;:::i;:::-;957:8:67;1590:14:0;;;273:7942:67;975:52;;273:7942;-1:-1:-1;;;;;;;;;;;975:52:67;;;;;;;;273:7942;;;;1048:60;;;;;;;;-1:-1:-1;;;;;1048:60:67;;;;;1590:14:0;1048:60:67;;;;;;424:42;273:7942;;1048:60;;;273:7942;1048:60;;;;;;273:7942;;;;;409:59;;;1590:14:0;409:59:67;;;1590:14:0;409:59:67;-1:-1:-1;;;;;;;;;;;1119:44:67;;;;273:7942;;1590:14:0;;;1119:44:67;;424:42;273:7942;1119:44;;273:7942;;1590:14:0;409:59:67;;;;273:7942;409:59;;273:7942;-1:-1:-1;;;995:20:67;273:7942;;409:59;273:7942;1119:44;;;;-1:-1:-1;;;;;;;;;;;1119:44:67;;;;;;;;273:7942;-1:-1:-1;1590:14:0;409:59:67;273:7942;;-1:-1:-1;;;;;273:7942:67;-1:-1:-1;;;;;;;;;;;1173:51:67;;;;273:7942;;1590:14:0;;;;1173:51:67;;273:7942;1173:51;;273:7942;;1590:14:0;409:59:67;;;;273:7942;409:59;;273:7942;-1:-1:-1;;;995:20:67;273:7942;;409:59;1173:51;;1119:44;1173:51;;-1:-1:-1;;;;;;;;;;;1173:51:67;;;;;;;;273:7942;1234:31;;-1:-1:-1;;;;;;;;;;;1234:31:67;;;;273:7942;;;1590:14:0;;;1234:31:67;;-1:-1:-1;;;;;;;;;;;273:7942:67;1234:31;;273:7942;;1590:14:0;534:42:67;;;273:7942;;534:42;;273:7942;-1:-1:-1;;;995:20:67;273:7942;;534:42;1234:31;;1119:44;1234:31;;-1:-1:-1;;;;;;;;;;;1234:31:67;;;;;;;;273:7942;1275:20;;-1:-1:-1;;;;;;;;;;;1275:20:67;;;;273:7942;;;1590:14:0;;;1275:20:67;;-1:-1:-1;;;;;;;;;;;273:7942:67;1275:20;;273:7942;;1590:14:0;605:42:67;;;;273:7942;605:42;;273:7942;-1:-1:-1;;;995:20:67;273:7942;;605:42;1275:20;;1119:44;1275:20;;-1:-1:-1;;;;;;;;;;;1275:20:67;;;;;;;;273:7942;1305:51;;-1:-1:-1;;;;;;;;;;;1305:51:67;;;;273:7942;;;1590:14:0;;;1305:51:67;;687:42;273:7942;1305:51;;273:7942;;1590:14:0;687:42:67;;;;273:7942;687:42;;273:7942;-1:-1:-1;;;995:20:67;273:7942;;687:42;1305:51;;1119:44;1305:51;;-1:-1:-1;;;;;;;;;;;1305:51:67;;;;;;;;273:7942;;1275:20;;;;;:::i;:::-;273:7942;;1275:20;;;;1234:31;;;;;:::i;:::-;273:7942;;1234:31;;;;1173:51;;;;;:::i;:::-;273:7942;;1173:51;;;;1119:44;;;;273:7942;1119:44;;:::i;:::-;273:7942;1119:44;;;;273:7942;;1590:14:0;273:7942:67;1590:14:0;;;;;1048:60:67;273:7942;;;;;;;;1590:14:0;273:7942:67;;975:52;1590:14:0;975:52:67;;1590:14:0;975:52:67;;;;;;1590:14:0;975:52:67;;;:::i;:::-;;;1590:14:0;;;;;975:52:67;;;;;-1:-1:-1;975:52:67;;995:20;;;;;;273:7942;995:20;;;;;;:::i;:::-;;;;273:7942;;;;;;-1:-1:-1;;273:7942:67;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;273:7942:67;;;;;;;:::o;:::-;893:3;273:7942;;;;;-1:-1:-1;;;;;273:7942:67;;;;;;;:::o;:::-;;;893:3;;273:7942;;;;;;;;-1:-1:-1;;;;;273:7942:67;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;273:7942:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;273:7942:67;;;;;;;;-1:-1:-1;;273:7942:67;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;1048:60;273:7942;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;273:7942:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;7505:10:8;273:7942:67;;;;;;7505:10:8;-1:-1:-1;273:7942:67;;-1:-1:-1;273:7942:67;;;-1:-1:-1;273:7942:67;:::o;:::-;;;;;;;;;;;;;534:59:65;273:7942:67;;;;;;534:59:65;-1:-1:-1;273:7942:67;;-1:-1:-1;273:7942:67;;;-1:-1:-1;273:7942:67;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;273:7942:67;;;;;;;;-1:-1:-1;273:7942:67;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;273:7942:67;;;;;;;;;:::o;523:5:65:-;;;;;;;;;;;;;;;;:::o;:::-;273:7942:67;;;523:5:65;;;;;;;;;;;;;;;:::o;:::-;273:7942:67;;;523:5:65;;;;;;;;8534:180;273:7942:67;;523:5:65;;;;;;;;;;;;;;;8690:17;8655:52;8690:17;;273:7942:67;8655:52:65;;:::i;:::-;8534:180;:::o;1590:14:0:-;-1:-1:-1;;;;;1590:14:0;;;;273:7942:67;;-1:-1:-1;;273:7942:67;1590:14:0;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;1590:14:0;;;;;;;;;;;;;;;;;;;:::i;:::-;273:7942:67;;;;;;;:::i;:::-;1590:14:0;;;;;;;;;;;;-1:-1:-1;1590:14:0;;;;;;;;273:7942:67;;;;;1590:14:0;:::o;:::-;;;;;;;;;;;:::o;409:59:67:-;6854:12:8;409:59:67;;-1:-1:-1;;;;;;409:59:67;-1:-1:-1;;;;;;;;;;;409:59:67;;;:::o;893:3::-;273:7942;;;;;;:::i;:::-;893:3;-1:-1:-1;893:3:67;;-1:-1:-1;893:3:67;;;;273:7942;;;;;;;:::i;:::-;-1:-1:-1;893:3:67;;-1:-1:-1;893:3:67;;;;;;:::o;:::-;273:7942;;;;;;;;;:::i;:::-;893:3;;;;-1:-1:-1;;893:3:67;;-1:-1:-1;893:3:67;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;273:7942;;893:3;;;;;;:::o;:::-;273:7942;;7397:20;893:3;;;;;;;:::o;:::-;273:7942;;7463:19;893:3;;;;;;;:::o;:::-;273:7942;;893:3;;;;;;;;;;;;:::o;:::-;;;;;;;;;;273:7942;;;;;;;893:3;:::o;785:66::-;;;;;;;;;;;273:7942;;;;:::i;:::-;785:66;;;1590:14:0;;;785:66:67;;;1590:14:0;785:66:67;;;:::o;:::-;;;;;;;;;;;273:7942;;;;;;;:::i;:::-;1590:14:0;;785:66:67;;;;;1590:14:0;785:66:67;;;;;;:::i;:::-;273:7942;785:66;;;;:::o;:::-;;;;;;;;;;:::o;273:7942::-;;;;;;;;-1:-1:-1;;;;;;;;;;;273:7942:67;;-1:-1:-1;;;;;;;;;;;273:7942:67;;;;-1:-1:-1;;;;;;;;;;;273:7942:67;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;273:7942:67;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;785:66:67;;;;;-1:-1:-1;785:66:67;273:7942;;;;;;;;;;;-1:-1:-1;;;;;273:7942:67;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;1590:14:0;;273:7942:67;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;273:7942:67;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1048:60;273:7942;;;;;;;;;1048:60;273:7942;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;273:7942:67;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;273:7942:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;1243:204:1;1302:7;273:7942:67;;;;;;;1325:14:1;:::o;1298:143::-;273:7942:67;;;1590:14:0;;;1377:39:1;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;273:7942:67;192:59:1;;;;;;273:7942:67;192:59:1;1377:39;;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;;;;;273:7942:67;1377:39:1;;;1298:143;1377:53;;;1370:60;:::o;1377:39::-;;;192:59;1377:39;;192:59;1377:39;;;;;;1590:14:0;1377:39:1;;;:::i;:::-;;;1590:14:0;;;;;1377:39:1;;;;;;-1:-1:-1;1377:39:1;;935:818:65;-1:-1:-1;;;;;273:7942:67;;;935:818:65;;1126:10;935:818;1126:10;:::i;:::-;273:7942:67;;;-1:-1:-1;;;1102:59:65;;;;;273:7942:67;;;;-1:-1:-1;273:7942:67;;;;;;;;;;;;;;;-1:-1:-1;1102:59:65;;;;;;;1075:134;1102:59;1134:1;1102:59;;;935:818;1075:134;;:::i;:::-;1074:135;1224:13;1134:1;1259:3;273:7942:67;;1239:18:65;;;;;1322:10;;;;:::i;:::-;273:7942:67;;;;1590:14:0;;;;1304:29:65;;1102:59;1304:29;;273:7942:67;1134:1:65;1304:29;;;;;;;;;;;;1708:14;1304:29;1442:1;1304:29;1134:1;1304:29;;;1259:3;273:7942:67;1396:17:65;273:7942:67;;;;;;1354:9:65;;;:::i;:::-;273:7942:67;;1396:17:65;:::i;:::-;1477;273:7942:67;;;;;;1435:9:65;;;:::i;1477:17::-;1588:14;1554:10;;;;;:::i;:::-;273:7942:67;;;;;;1566:9:65;;;:::i;:::-;273:7942:67;;;;;;;1577:9:65;;;:::i;:::-;273:7942:67;;1588:14:65;;;:::i;:::-;1674:10;;;;:::i;:::-;273:7942:67;;;;;;;1686:9:65;;;:::i;:::-;273:7942:67;;;1697:9:65;273:7942:67;;;;;1697:9:65;;:::i;:::-;273:7942:67;;1708:14:65;;;:::i;:::-;893:3:67;1224:13:65;;1304:29;;;;;;1134:1;1304:29;;;;;;:::i;:::-;;;;1239:18;;;;;;;935:818::o;1102:59::-;;;;;;1134:1;1102:59;;;;;;:::i;:::-;;;;273:7942:67;;;;:::o;:::-;;;;;;;;;;;;14296:110:1;;-1:-1:-1;;;;;;;;;;;14375:24:1;;;;273:7942:67;;1590:14:0;;;;14375:24:1;;;;;273:7942:67;;;;;-1:-1:-1;14375:24:1;;;-1:-1:-1;;;;;;;;;;;14375:24:1;;;;;;;;14296:110;:::o;14375:24::-;-1:-1:-1;14375:24:1;;;:::i;:::-;14296:110::o;426:547:59:-;688:35;426:547;637:17;619:35;273:7942:67;;637:17:59;;;273:7942:67;619:35:59;;:::i;:::-;273:7942:67;;706:17:59;;273:7942:67;688:35:59;;:::i;:::-;769:30;;;;;;801:8;;273:7942:67;801:8:59;:::o;765:201::-;867:29;;;;905:1;898:8;:::o;863:103::-;-1:-1:-1;;3489:17:67;957:9:59:o;2866:108:1:-;-1:-1:-1;;;;;;;;;;;2943:24:1;;;;273:7942:67;;1590:14:0;;;;2943:24:1;;;;;273:7942:67;5081:1;273:7942;;;;-1:-1:-1;2943:24:1;;;-1:-1:-1;;;;;;;;;;;2943:24:1;;;;;;;;2866:108;:::o;13112:110::-;-1:-1:-1;;;;;;;;;;;13191:24:1;;;;273:7942:67;;1590:14:0;;;;13191:24:1;;;;;273:7942:67;;;;;;;13191:24:1;;;-1:-1:-1;;;;;;;;;;;13191:24:1;;;;;;;;13112:110;:::o;2270:::-;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;273:7942:67;;1590:14:0;;;;2349:24:1;;;;;273:7942:67;;;;;-1:-1:-1;2349:24:1;;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;;;;;2270:110;:::o;8720:323:65:-;273:7942:67;8906:3:65;273:7942:67;;8881:23:65;;;;;8929:15;;;;;:::i;:::-;273:7942:67;;;;;;1175:24:65;8929:29;8925:79;;893:3:67;;8866:13:65;;8925:79;8978:11;;893:3:67;8978:11:65;:::o;8881:23::-;;;273:7942:67;8720:323:65;:::o;:::-;273:7942:67;8906:3:65;273:7942:67;;8881:23:65;;;;;8929:15;;;;;:::i;:::-;273:7942:67;;;;;;2531:24:65;8929:29;8925:79;;893:3:67;;8866:13:65;;8720:323;273:7942:67;8906:3:65;273:7942:67;;8881:23:65;;;;;8929:15;;;;;:::i;:::-;273:7942:67;;;;;;6005:21:65;8929:29;8925:79;;893:3:67;;8866:13:65;;5926:434:58;273:7942:67;;-1:-1:-1;;;6065:47:58;;;;;;-1:-1:-1;;;;;273:7942:67;;;6065:47:58;;;273:7942:67;;;-1:-1:-1;;893:3:67;;;;273:7942;;;;6065:47:58;;273:7942:67;;;6065:47:58;;893:3:67;273:7942;6065:47:58;:::i;:::-;8511:25;;-1:-1:-1;;;;;273:7942:67;;;-1:-1:-1;;;;;273:7942:67;8511:25:58;;;;;:::i;:::-;8553:81;;;5926:434;8553:127;;;;5926:434;6127:45;;6123:231;;5926:434;;;:::o;6123:231::-;6232:43;6330:12;273:7942:67;;;1590:14:0;;;;6065:47:58;6232:43;;;6065:47;6232:43;;273:7942:67;-1:-1:-1;273:7942:67;;;;;6232:43:58;;;;;;:::i;:::-;;;:::i;:::-;6330:12;:::i;8553:127::-;8650:26;;;:30;;8553:127;;;:81;273:7942:67;;;;-1:-1:-1;8577:22:58;;;:56;;;;8553:81;;;;;;;8577:56;8603:30;;;6065:47;8603:30;;;;;;;;:::i;:::-;8577:56;;;;273:7942:67;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;273:7942:67;;;;;;;;;:::o;1911:4479:65:-;;;;;;;;;;273:7942:67;;-1:-1:-1;;;2117:44:65;;;;;;;273:7942:67;-1:-1:-1;;;;;273:7942:67;;;;;;;;;;;;;1911:4479:65;;;2117:44;273:7942:67;;;;;2117:44:65;;;;;273:7942:67;2117:44:65;-1:-1:-1;;;;;273:7942:67;;2117:44:65;;;;;;:47;:44;;;;;1911:4479;2117:47;;:::i;:::-;273:7942:67;;;1590:14:0;273:7942:67;1590:14:0;;;273:7942:67;;2174:61:65;;273:7942:67;;;;:::i;:::-;;;;;1590:14:0;273:7942:67;;;-1:-1:-1;;;273:7942:67;;;;2174:61:65;;;:::i;:::-;1590:14:0;;273:7942:67;2117:44:65;273:7942:67;;44640:78:15;273:7942:67;;;1590:14:0;;273:7942:67;;:::i;:::-;;;;;1590:14:0;273:7942:67;;;-1:-1:-1;;;273:7942:67;;;;;;44640:78:15;;;;;;1590:14:0;44640:78:15;;;273:7942:67;44640:78:15;;;273:7942:67;;;;;;:::i;:::-;-1:-1:-1;;;;;273:7942:67;;;;;;;;;;;;;;;;;;;44640:78:15;-1:-1:-1;;44640:78:15;;;;;;:::i;:::-;1222:159;273:7942:67;;1222:159:15;;591:42;1222:159;;-1:-1:-1;273:7942:67;;-1:-1:-1;;;2467:50:65;;;;2117:44;2467:50;;273:7942:67;-1:-1:-1;;;;;273:7942:67;;;;;;;;;;;;;2117:44:65;273:7942:67;;;;;2467:50:65;273:7942:67;;-1:-1:-1;;;;;273:7942:67;;2467:50:65;;;;;;2440:125;2467:50;2117:44;2467:50;;;1911:4479;2440:125;;:::i;:::-;893:3:67;273:7942;;;;;;;:::i;:::-;2117:44:65;893:3:67;;;;1590:14:0;893:3:67;;;8365:37:65;;;2117:44;8365:37;8352:50;;;:::i;:::-;893:3:67;8433:4:65;523:5;;;8412:25;;;:::i;:::-;893:3:67;523:5:65;;8420:1;523:5;8447:22;;;:::i;:::-;893:3:67;273:7942;;8487:1:65;893:3:67;;;;273:7942;893:3;;;;;;273:7942;;1590:14:0;;;2822:49:65;;2117:44;2822:49;;;;;;;;2117:44;2822:49;;;:::i;:::-;;273:7942:67;;-1:-1:-1;;;;;273:7942:67;;2822:49:65;;;;;;;2117:44;2822:49;;;8365:37;2917:9;2903:24;2917:9;;;:::i;:::-;;2903:24;:::i;:::-;273:7942:67;;-1:-1:-1;;785:66:67;;;3489:17;785:66;;;;2941:40:65;2955:25;2881:174;2955:25;;;:::i;2941:40::-;1590:14:0;;273:7942:67;;;1590:14:0;273:7942:67;;;;:::i;:::-;;;;;1590:14:0;273:7942:67;;;-1:-1:-1;;;273:7942:67;;;;2881:174:65;:::i;:::-;3152:24;3166:9;;;:::i;3152:24::-;273:7942:67;;-1:-1:-1;;785:66:67;;;;;;;273:7942;12247:66:15;2117:44:65;3204:25;3190:40;3204:25;;;;;:::i;3190:40::-;1590:14:0;;273:7942:67;;;;;;;;;:::i;:::-;;;;;1590:14:0;273:7942:67;;;-1:-1:-1;;;273:7942:67;;;;;;12247:66:15;;;;;;1590:14:0;12247:66:15;;;1590:14:0;;44640:78:15;12247:66;;273:7942:67;;;;;;:::i;:::-;;;;;;;;;;12247:66:15;893:3:67;;12247:66:15;;;;;;:::i;:::-;1222:159;273:7942:67;;1222:159:15;;591:42;1222:159;;-1:-1:-1;1590:14:0;;273:7942:67;;3251:53:65;;273:7942:67;;;;:::i;:::-;;;;;1590:14:0;273:7942:67;;;-1:-1:-1;;;273:7942:67;;;;3251:53:65;:::i;:::-;3314:60;3323:9;;;:::i;:::-;;273:7942:67;;;1590:14:0;;;273:7942:67;;;;;;;;:::i;:::-;;;;;1590:14:0;273:7942:67;;;3314:60:65;:::i;:::-;3384:64;1590:14:0;3393:9:65;;;:::i;:::-;;:21;273:7942:67;;;;;;;;;;;:::i;:::-;;;;;1590:14:0;273:7942:67;;;3384:64:65;:::i;:::-;3480:24;3494:9;;;:::i;3480:24::-;;;273:7942:67;;;;3514:49:65;;273:7942:67;;;;:::i;:::-;;;;-1:-1:-1;;;1590:14:0;273:7942:67;;;3514:49:65;;;;:::i;:::-;893:3:67;;:::i;:::-;-1:-1:-1;273:7942:67;;-1:-1:-1;;785:66:67;;;;;;;3635:27:65;;;;:::i;:::-;273:7942:67;893:3;523:5:65;;;;;;;;2117:44;273:7942:67;;;;1590:14:0;27501:38:3;;1590:14:0;;;;27501:38:3;;3624:4:65;44640:78:15;27501:38:3;;273:7942:67;44640:78:15;27501:38:3;;;273:7942:67;27501:38:3;;:::i;:::-;27484:56;;;;;;27568:30;27484:56;;:::i;27568:30::-;-1:-1:-1;6854:12:8;409:59:67;;-1:-1:-1;;;;;;409:59:67;-1:-1:-1;;;;;273:7942:67;;409:59;;;7009:9:8;273:7942:67;;-1:-1:-1;;273:7942:67;27524:10:3;273:7942:67;;;7505:10:8;273:7942:67;-1:-1:-1;;;273:7942:67;;;;;;;8420:1:65;273:7942:67;;;7505:10:8;273:7942:67;;:::i;:::-;;;1048:60;273:7942;;;;6854:12:8;273:7942:67;;7009:9:8;273:7942:67;1590:14:0;;15610:11:8;273:7942:67;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;273:7942:67;;;;;;27635:8:3;273:7942:67;;;;;15703:15:8;;273:7942:67;;;;;;2117:44:65;273:7942:67;1590:14:0;273:7942:67;;;2117:44:65;273:7942:67;;;;1590:14:0;15735:37:8;;;;;;;;;;:::i;:::-;273:7942:67;15725:48:8;;2117:44:65;273:7942:67;1590:14:0;273:7942:67;;8487:1:65;273:7942:67;;2117:44:65;273:7942:67;15703:77:8;273:7942:67;;15702:78:8;15698:126;;8365:37:65;-1:-1:-1;;;;;273:7942:67;;;;;;27635:8:3;273:7942:67;;;;;;2117:44:65;273:7942:67;1590:14:0;273:7942:67;15889:37:8;;273:7942:67;;2117:44:65;273:7942:67;;;;;15889:37:8;;;1590:14:0;15889:37:8;;;;;:::i;:::-;273:7942:67;15879:48:8;;2117:44:65;273:7942:67;1590:14:0;273:7942:67;;;2117:44:65;273:7942:67;8420:1:65;15943:15:8;;273:7942:67;15961:16:8;8468:1:65;15961:16:8;;273:7942:67;15943:34:8;;;;:::i;:::-;15938:460;;8365:37:65;273:7942:67;;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;273:7942:67;;2117:44:65;16424:32:8;;273:7942:67;893:3;;;273:7942;;;;;;;1590:14:0;273:7942:67;893:3;273:7942;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;2117:44:65;16424:32:8;;;8365:37:65;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;273:7942:67;;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;273:7942:67;;2117:44:65;16587:43:8;;273:7942:67;12810:59:8;;;273:7942:67;;;;893:3;523:5:65;;273:7942:67;;;12656:92:8;12810:59;;;273:7942:67;-1:-1:-1;273:7942:67;12810:59:8;273:7942:67;-1:-1:-1;;;;;;;;;;;;16587:43:8;;;;;;;;8365:37:65;-1:-1:-1;7009:9:8;273:7942:67;1590:14:0;;;1364:48:8;44640:78:15;1392:19:8;27635:8:3;1392:19:8;:::i;:::-;273:7942:67;;;1364:48:8;;;;;;273:7942:67;;;;;;;;;;;;;;;;;;;-1:-1:-1;;273:7942:67;;;;1364:48:8;;893:3:67;;1364:48:8;;;;;;:::i;:::-;6854:12;273:7942:67;-1:-1:-1;;1458:29:8;;-1:-1:-1;;;;1458:29:8;-1:-1:-1;;;;;273:7942:67;1458:29:8;;;;;;:::i;:::-;15610:11;273:7942:67;-1:-1:-1;;;;;523:5:65;;;;;;-1:-1:-1;;10974:11:8;;;;273:7942:67;;11010:29:8;;;;;1590:14:0;11010:13:8;;1590:14:0;;;11010:29:8;1590:14:0;11010:29:8;;;-1:-1:-1;;11054:13:8;;11069:7;;;;;;;;-1:-1:-1;;1563:24:8;;16724:8;;273:7942:67;;16724:29:8;;11049:106;16720:176;;;14785:4;;;;;:::i;:::-;273:7942:67;;;1590:14:0;;;3697:13:65;;1590:14:0;2117:44:65;;;;;-1:-1:-1;;;;;;;;;;;3697:13:65;;;;;;2117:44;;3697:13;;;;11049:106:8;-1:-1:-1;8420:1:65;3761:3;273:7942:67;;3741:18:65;;;;;1222:159:15;3878:14:65;273:7942:67;12952:65:15;3878:14:65;;;:::i;:::-;3910:10;;;;;:::i;:::-;273:7942:67;;;;;;;1590:14:0;273:7942:67;1590:14:0;;273:7942:67;;:::i;:::-;;;;;1590:14:0;273:7942:67;;;-1:-1:-1;;;273:7942:67;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1590:14:0;12952:65:15;;;1590:14:0;;44640:78:15;12952:65;;273:7942:67;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;273:7942:67;;;;;;;:::i;:::-;;;;;;12952:65:15;893:3:67;;12952:65:15;;;;;;:::i;:::-;1222:159;273:7942:67;;1222:159:15;;591:42;1222:159;;;3972:24:65;3986:9;;;;:::i;3972:24::-;1222:159:15;4051:10:65;273:7942:67;12771:66:15;4051:10:65;;;;:::i;:::-;273:7942:67;;;;;;;;;;:::i;:::-;;;;;1590:14:0;273:7942:67;;;;;;12771:66:15;;;;;;1590:14:0;12771:66:15;;;1590:14:0;;44640:78:15;12771:66;;273:7942:67;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;273:7942:67;;;;;;12771:66:15;-1:-1:-1;;12771:66:15;;;;;;:::i;:::-;1222:159;273:7942:67;;1222:159:15;;591:42;1222:159;;;4093:97:65;273:7942:67;4166:10:65;;;;:::i;:::-;273:7942:67;;;;-1:-1:-1;;;4093:97:65;;;;2117:44;4093:97;;273:7942:67;-1:-1:-1;;;;;273:7942:67;;;785:66;;;273:7942;;;785:66;;;273:7942;-1:-1:-1;785:66:67;;;;;;;273:7942;;;;;;;;;785:66;;;;;4093:97:65;;2117:44;;;1048:60:67;273:7942;;;;;;4093:97:65;;;;;;;2117:44;;4093:97;;;3761:3;273:7942:67;;;523:5:65;;;;;;;;;;;;;4244:52;4335:26;4286:10;523:5;4286:10;;;;:::i;:::-;273:7942:67;523:5:65;;4244:52;:::i;:::-;273:7942:67;;;4349:11:65;;4335:26;:::i;:::-;273:7942:67;4375:60:65;273:7942:67;;;;;;;;;:::i;:::-;;;;;1590:14:0;273:7942:67;;;4375:60:65;:::i;:::-;4449;273:7942:67;;;;;;;;;:::i;:::-;;;;;1590:14:0;273:7942:67;;;4449:60:65;:::i;:::-;4523:61;273:7942:67;;;;;;;;;:::i;:::-;;;;;1590:14:0;273:7942:67;;;4523:61:65;:::i;:::-;4599:1176;;;;;1590:14:0;;273:7942:67;;;5013:164:65;;4819:176;;-1:-1:-1;;4637:164:65;;273:7942:67;-1:-1:-1;273:7942:67;;;;:::i;:::-;;;;;1590:14:0;273:7942:67;;;-1:-1:-1;;;273:7942:67;;;;;4637:164:65;;:::i;:::-;1590:14:0;;273:7942:67;;;;1590:14:0;273:7942:67;;;;:::i;:::-;;;;;1590:14:0;273:7942:67;;;;;;;;;4819:176:65;;:::i;:::-;1590:14:0;;273:7942:67;;;;1590:14:0;273:7942:67;;;;:::i;:::-;;;;;1590:14:0;273:7942:67;;;-1:-1:-1;;;273:7942:67;;;;;5013:164:65;;;:::i;:::-;273:7942:67;;;1590:14:0;;;;5789:25:65;;273:7942:67;;2117:44:65;5789:25;;273:7942:67;1590:14:0;2117:44:65;44640:78:15;2117:44:65;;;-1:-1:-1;;;;;;;;;;;5789:25:65;;;;;;;8420:1;5789:25;;;4599:1176;3761:3;893::67;3726:13:65;;5789:25;;;1590:14:0;5789:25:65;;;;;;;;;:::i;:::-;;;;;;273:7942:67;;;1590:14:0;2117:44:65;;1590:14:0;;;;;4599:1176:65;5407:172;273:7942:67;5216:173:65;5597:163;273:7942:67;;;:::i;:::-;5216:173:65;;;;:::i;:::-;273:7942:67;;:::i;5407:172:65:-;273:7942:67;;;1590:14:0;273:7942:67;1590:14:0;;273:7942:67;;:::i;:::-;;;;;1590:14:0;273:7942:67;;;-1:-1:-1;;;273:7942:67;;;;;5597:163:65;;;:::i;:::-;4599:1176;;523:5;273:7942:67;;;2117:44:65;;523:5;6854:12:8;2117:44:65;523:5;44640:78:15;2117:44:65;;523:5;4093:97;;;;273:7942:67;4093:97:65;;;;;;;;;:::i;:::-;;;;3741:18;;;;;5873:3;523:5;;;;;;;5873:3;523:5;;;;;;;;273:7942:67;;;-1:-1:-1;;;5941:50:65;;2117:44;;;5941:50;;2117:44;5941:50;;273:7942:67;-1:-1:-1;;;;;273:7942:67;;;;;;;;;;;;;;2117:44:65;;273:7942:67;523:5:65;;;;;;2117:44;;273:7942:67;;;;;;;5941:50:65;;;;;;5914:122;2117:44;;;5941:50;;;3721:2104;5914:122;;:::i;:::-;;;;6590;273:7942:67;;;;;1590:14:0;;273:7942:67;;:::i;:::-;;;;;1590:14:0;273:7942:67;;;-1:-1:-1;;;273:7942:67;;;;;6590:122:65;:::i;:::-;273:7942:67;;;;;;;;;;:::i;:::-;8420:1:65;893:3:67;;273:7942;;-1:-1:-1;;893:3:67;;1590:14:0;893:3:67;;;6783:37:65;;;:::i;:::-;893:3:67;273:7942;;;1590:14:0;;;6835:57:65;;2117:44;;6835:57;;;;;;;;2117:44;6835:57;;;:::i;:::-;;2117:44;;;1048:60:67;273:7942;;;;;;6835:57:65;;2117:44;;6835:57;;6047:287;-1:-1:-1;6831:346:65;;8420:1;6831:346;;:::i;:::-;;;;;;;;7190:97;6831:346;7259:18;273:7942:67;6831:346:65;7259:18;:::i;:::-;273:7942:67;;;;-1:-1:-1;;;7190:97:65;;;;2117:44;7190:97;;273:7942:67;-1:-1:-1;;;;;273:7942:67;;;785:66;;;273:7942;;;;;785:66;;;273:7942;-1:-1:-1;785:66:67;;;;;;;273:7942;;;;;-1:-1:-1;273:7942:67;;;;785:66;;;;;7190:97:65;2117:44;;7190:97;;;;-1:-1:-1;;;;;273:7942:67;7190:97:65;;2117:44;;7190:97;;6831:346;-1:-1:-1;7186:342:65;;8420:1;7186:342;;:::i;:::-;;;;;;;;6047:287;6344:39;273:7942:67;;;;;;;;:::i;:::-;;;;;1590:14:0;273:7942:67;;;6344:39:65;:::i;7186:342::-;7375:153;;:::i;:::-;;;;7186:342;;;;7375:153;2117:44;;1590:14:0;;273:7942:67;;;2117:44:65;;-1:-1:-1;7418:99:65;;2117:44;273:7942:67;;;;;:::i;:::-;;;;;1590:14:0;273:7942:67;;;-1:-1:-1;;;273:7942:67;;;;;7418:99:65;:::i;:::-;7375:153;;;7186:342;273:7942:67;;;-1:-1:-1;;;7302:61:65;;1590:14:0;2117:44:65;7302:61;;273:7942:67;;44640:78:15;273:7942:67;;;;;;;;-1:-1:-1;;;273:7942:67;;;;;;7302:61:65;7190:97;;;273:7942:67;7190:97:65;273:7942:67;7190:97:65;;;;;;;:::i;:::-;;;6831:346;7018:159;;:::i;:::-;;;;6831:346;;;;7018:159;2117:44;;1590:14:0;;273:7942:67;;;2117:44:65;;-1:-1:-1;7061:105:65;;2117:44;273:7942:67;;;;;:::i;:::-;;;;;1590:14:0;273:7942:67;;;;;;;;;7061:105:65;:::i;:::-;7018:159;;;6831:346;273:7942:67;;;-1:-1:-1;;;6907:99:65;;1590:14:0;2117:44:65;6907:99;;273:7942:67;;44640:78:15;273:7942:67;;;;;;;;;;;;;;;6907:99:65;6835:57;;;;2117:44;;;6835:57;;;;;;:::i;:::-;;;6047:287;1590:14:0;;273:7942:67;;;-1:-1:-1;;;7738:117:65;;-1:-1:-1;;273:7942:67;;;;;:::i;:::-;;;;;1590:14:0;273:7942:67;;;-1:-1:-1;;;273:7942:67;;;;;7738:117:65;:::i;:::-;273:7942:67;;;;;;;;;;:::i;:::-;8420:1:65;893:3:67;;273:7942;;-1:-1:-1;;893:3:67;;1590:14:0;893:3:67;;;7926:37:65;;;:::i;:::-;893:3:67;273:7942;;;1590:14:0;;;;7974:57:65;;2117:44;;7974:57;;;;;;;;2117:44;7974:57;;;:::i;:::-;;2117:44;;;1048:60:67;273:7942;;;;;;7974:57:65;;;;;;8041:97;;273:7942:67;;8110:18:65;;7974:57;;8110:18;;:::i;8041:97::-;2117:44;;8041:97;;;;-1:-1:-1;;;;;273:7942:67;8041:97:65;;;;;;;;6047:287;;;;8041:97;;;273:7942:67;8041:97:65;273:7942:67;8041:97:65;;;;;;;:::i;:::-;;;;;7974:57;;;;2117:44;;;7974:57;;;;;;:::i;:::-;;;5941:50;;;;;2117:44;;;5941:50;;;;;;:::i;:::-;;;;3697:13;1590:14:0;3697:13:65;;1590:14:0;3697:13:65;;;;;;1590:14:0;3697:13:65;;;:::i;:::-;;;1590:14:0;;;;;3697:13:65;;;;;;;;-1:-1:-1;3697:13:65;;16720:176:8;273:7942:67;16769:41:8;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;273:7942:67;;;-1:-1:-1;;;16769:41:8;;2117:44:65;;-1:-1:-1;;;;;273:7942:67;;;2117:44:65;16769:41:8;;273:7942:67;12810:59:8;;;273:7942:67;;;;12810:59:8;;;273:7942:67;;;12810:59:8;;;16769:41;2117:44:65;;;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;;;;;16720:176;273:7942:67;;;-1:-1:-1;;;16824:61:8;;1590:14:0;2117:44:65;16824:61:8;;12810:59;273:7942:67;44640:78:15;12810:59:8;;273:7942:67;12810:59:8;273:7942:67;;;12810:59:8;-1:-1:-1;;;273:7942:67;12810:59:8;;;273:7942:67;;16824:61:8;16769:41;2117:44:65;;16769:41:8;;;:::i;:::-;273:7942:67;;;;16769:41:8;;;273:7942:67;2117:44:65;;;273:7942:67;16724:29:8;523:5:65;;893:3:67;523:5:65;16736:17:8;;;;16724:29;;;11078:3;11114:10;;;523:5:65;893:3:67;523:5:65;11114:10:8;:::i;:::-;273:7942:67;;;;;;;1590:14:0;273:7942:67;;;;;;;;;523:5:65;;;;8487:1;523:5;;11142:1:8;523:5:65;;;;;;;;;;8487:1;523:5;273:7942:67;11097:47:8;;;;;8420:1:65;11078:3:8;;893::67;11078::8;;11054:13;;273:7942:67;;;;-1:-1:-1;;273:7942:67;;2117:44:65;273:7942:67;44640:78:15;-1:-1:-1;;273:7942:67;11010:29:8;;;;;16587:43;2117:44:65;16587:43:8;;;:::i;:::-;2117:44:65;273:7942:67;;16587:43:8;;;;273:7942:67;;;1590:14:0;2117:44:65;1590:14:0;;;;;16424:32:8;;;;1590:14:0;16424:32:8;;1590:14:0;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;:::i;:::-;16021:3;785:66:67;16021:3:8;785:66:67;;;;273:7942;;;;;;;;-1:-1:-1;;;16314:19:8;;8420:1:65;273:7942:67;;2117:44:65;16314:19:8;;273:7942:67;-1:-1:-1;273:7942:67;44640:78:15;273:7942:67;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;16170:185;12810:59;1590:14:0;16314:19:8;8420:1:65;16314:19:8;2117:44:65;16314:19:8;;;15938:460;273:7942:67;;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;273:7942:67;;12810:59:8;;;-1:-1:-1;;;1590:14:0;;12810:59:8;;;273:7942:67;;;;;;12810:59:8;;;273:7942:67;;;2117:44:65;273:7942:67;;;;16170:185:8;;893:3:67;;16170:185:8;;;;;;:::i;:::-;273:7942:67;523:5:65;893:3:67;523:5:65;16103:21:8;12810:59;;;15938:460;;;12810:59;273:7942:67;;;-1:-1:-1;;;12810:59:8;;1590:14:0;2117:44:65;12810:59:8;;273:7942:67;;;;;;44640:78:15;273:7942:67;;;;:::i;16314:19:8:-;;;;;;2117:44:65;16314:19:8;;;;;;:::i;:::-;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;2822:49:65;;;;;;2117:44;2822:49;;;;;;:::i;:::-;;;;8365:37;8397:5;523;;;8365:37;;2467:50;;;;;;2117:44;2467:50;;;;;;:::i;:::-;;;;2117:44;;;;;;;;;;;;;:::i;:::-;;;;273:7942:67;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;273:7942:67;;;;:::o;:::-;;;:::o;6764:749:58:-;3256:31:33;;3304:55;;-1:-1:-1;;;;;273:7942:67;;;;2626:1:33;;;;3256:31;;2626:1;273:7942:67;3256:31:33;;;;:::i;:::-;3304:55;;:::i;:::-;273:7942:67;;7289:21:58;;7285:222;;6764:749;;:::o;7285:222::-;3256:31:33;7390:30:58;;;;;;;;;:::i;:::-;273:7942:67;;;6764:749:58:o;273:7942:67:-;;;-1:-1:-1;;;273:7942:67;;3256:31:33;273:7942:67;;;;;;;;;;;;;;-1:-1:-1;;;273:7942:67;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13228:134:1:-;-1:-1:-1;;;;;;;;;;;13326:29:1;;;;273:7942:67;;2117:44:65;273:7942:67;;;1590:14:0;;;;;;;;13326:29:1;;;;;273:7942:67;;;;;;;;;;;;;;;;:::i;:::-;13326:29:1;;-1:-1:-1;;;;;;;;;;;13326:29:1;;;;;;;;13228:134;:::o;:::-;;-1:-1:-1;;;;;;;;;;;13326:29:1;;;;;273:7942:67;13326:29:1;273:7942:67;;1590:14:0;;;;;;;;13326:29:1;;;;;;:::i;6598:121:15:-;1222:159;273:7942:67;6669:42:15;6598:121;;273:7942:67;;6669:42:15;;;;;;;;;;;;;;273:7942:67;;;;;;:::i;6669:42:15:-;1222:159;273:7942:67;;1222:159:15;;591:42;1222:159;;;6598:121::o;7546:145::-;1590:14:0;7629:54:15;1222:159;7546:145;;;;273:7942:67;;7629:54:15;;;;;;;;;;273:7942:67;7629:54:15;;;1590:14:0;;;;;;:::i;:::-;;;;;273:7942:67;7629:54:15;893:3:67;;7629:54:15;;;;;;:::i;15596:134:1:-;;-1:-1:-1;;;;;;;;;;;15694:29:1;;;;;273:7942:67;15694:29:1;273:7942:67;;1590:14:0;;;;;;;;15694:29:1;;;;;;:::i;273:7942:67:-;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;273:7942:67;;;;;;;;;;;;-1:-1:-1;;;;;273:7942:67;;;;;;;;;;;;-1:-1:-1;;;;;273:7942:67;;;;;;;-1:-1:-1;;273:7942:67;;;;;;;;;-1:-1:-1;273:7942:67;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;:::o;7846:150:15:-;273:7942:67;7935:53:15;1222:159;7846:150;;273:7942:67;7846:150:15;;273:7942:67;;7935:53:15;;;;;;;;;;273:7942:67;7935:53:15;;;273:7942:67;;;;;;:::i;:::-;;;;-1:-1:-1;;273:7942:67;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::o;953:236:8:-;273:7942:67;1052:14:8;273:7942:67;;:::i;:::-;1052:14:8;;273:7942:67;;;;;;1109:10:8;273:7942:67;;;;;;1109:10:8;1077:1;273:7942:67;;1077:1:8;273:7942:67;;1077:1:8;273:7942:67;;;;;;;;;;;;;;:::i;:::-;;;523:5:65;;;;;;;273:7942:67;523:5:65;;;;;;;273:7942:67;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;893:3;;273:7942;;:::i;:::-;;893:3;273:7942;;;893:3;1077:1:8;11360:3;273:7942:67;;11346:12:8;;;;;11391:4;;1109:10;11391:4;;;:::i;:::-;273:7942:67;;11456:84:8;523:5:65;11456:84:8;;;;;893:3:67;11331:13:8;;11346:12;-1:-1:-1;11346:12:8;-1:-1:-1;1094:26:8:o;273:7942:67:-;;;;;1109:10:8;273:7942:67;;;;;;-1:-1:-1;273:7942:67;;;;;;;;1048:135:8;273:7942:67;;;;;;1052:14:8;273:7942:67;:::i;953:236:8:-;1052:14;;;273:7942:67;;;;;:::i;:::-;1052:21:8;;1109:10;;;;273:7942:67;;;;;;;;;;;;;;;1077:1:8;273:7942:67;;1077:1:8;273:7942:67;;1077:1:8;273:7942:67;;;;;;;;;;;;;;:::i;:::-;;;523:5:65;;;;;;;273:7942:67;523:5:65;;;;;;;273:7942:67;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;893:3;;273:7942;;:::i;:::-;;893:3;273:7942;;;893:3;1077:1:8;11360:3;273:7942:67;;11346:12:8;;;;;11391:4;;1109:10;11391:4;;;:::i;:::-;273:7942:67;;11456:84:8;523:5:65;11456:84:8;;;;;893:3:67;11331:13:8;;273:7942:67;;;;;1109:10:8;273:7942:67;;;;;;-1:-1:-1;273:7942:67;;;;;;;;1048:135:8;273:7942:67;;;;;;;;;;;:::i;1251:343:8:-;-1:-1:-1;273:7942:67;1364:48:8;1381:9;273:7942:67;1590:14:0;;1364:48:8;273:7942:67;1392:19:8;27635:8:3;1392:19:8;:::i;:::-;273:7942:67;;1364:48:8;;;;;;273:7942:67;;;;;;;;;;;;;;;;;;;;;;;;1364:48:8;;893:3:67;;1364:48:8;;;;;;:::i;:::-;1458:12;273:7942:67;1458:29:8;;;-1:-1:-1;;;;;273:7942:67;1458:29:8;;;;;:::i;:::-;1540:11;273:7942:67;;;;523:5:65;;;;;-1:-1:-1;;;;;523:5:65;;;;;-1:-1:-1;273:7942:67;;;1364:48:8;11010:13;;:29;1364:48;;;11010:29;1364:48;11010:29;;-1:-1:-1;11049:106:8;11069:7;;;;;;1563:24;;;;;1251:343;:::o;11078:3::-;11114:10;;;;;;;;:::i;:::-;273:7942:67;;;;;;;;;1364:48:8;273:7942:67;;1540:11:8;523:5:65;;;;;-1:-1:-1;;;;;;273:7942:67;523:5:65;;11142:1:8;523:5:65;;;;;;;;893:3:67;273:7942;;11097:47:8;11078:3;893::67;11054:13:8;;;;;11010:29;;;;1251:343;;-1:-1:-1;1381:9:8;1364:48;1381:9;;;273:7942:67;1590:14:0;;1364:48:8;273:7942:67;1392:19:8;;;:::i;1364:48::-;273:7942:67;1458:12:8;;273:7942:67;1458:29:8;;;-1:-1:-1;;;;;273:7942:67;1458:29:8;;1540:11;1458:29;;:::i;:::-;1540:11;;273:7942:67;523:5:65;;;;;-1:-1:-1;;;;;523:5:65;;;;;-1:-1:-1;273:7942:67;;;1364:48:8;11010:13;;:29;1364:48;;;11010:29;1364:48;11010:29;;-1:-1:-1;11049:106:8;11069:7;;;;;;1563:24;;;;;1251:343;:::o;11078:3::-;11114:10;;;;;;;;:::i;:::-;273:7942:67;;;;;;;;;1364:48:8;273:7942:67;;1540:11:8;523:5:65;;;;;-1:-1:-1;;;;;;273:7942:67;523:5:65;;11142:1:8;523:5:65;;;;;;;;893:3:67;273:7942;;11097:47:8;11078:3;893::67;11054:13:8;;;;;11010:29;;;;4421:582:33;;4593:8;;-1:-1:-1;273:7942:67;;5674:21:33;:17;;5846:142;;;;;;5670:385;6025:19;;;5694:1;6025:19;;5694:1;6025:19;4589:408;273:7942:67;;4841:22:33;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:33;4917:24;;;-1:-1:-1;;;;;273:7942:67;;;;4917:24:33;273:7942:67;;;4917:24:33;4841:49;4867:18;;;:23;4841:49;;4249:2493:8;4361:12;273:7942:67;4397:9:8;273:7942:67;4438:11:8;273:7942:67;-1:-1:-1;;;;;273:7942:67;;;;;;1590:14:0;;4481:19:8;27635:8:3;4481:19:8;:::i;:::-;4551:15;273:7942:67;;;27635:8:3;273:7942:67;;;;;;;;;;;;;;;;;;;;;;4583:37:8;;;;;;;;;;:::i;:::-;273:7942:67;4573:48:8;;273:7942:67;;;;;4438:11:8;273:7942:67;;;4551:77:8;273:7942:67;;4547:255:8;;-1:-1:-1;;;;;;;;;;;4811:11:8;;;;273:7942:67;;-1:-1:-1;;;4811:11:8;;273:7942:67;;4361:12:8;273:7942:67;;-1:-1:-1;;;;;;;;;;;4811:11:8;;;;;;;;4249:2493;4857:16;;27635:8:3;4857:16:8;:::i;:::-;273:7942:67;;;;1590:14:0;;;4911:25:8;;;4361:12;4911:25;;273:7942:67;4911:25:8;;;;;-1:-1:-1;;;;;;;;;;;4911:25:8;;;;;;;;;;;4249:2493;-1:-1:-1;273:7942:67;;4951:12:8;;4984:74;273:7942:67;;12810:59:8;;;4984:74;;273:7942:67;4361:12:8;4984:74;;643:59;273:7942:67;4911:25:8;643:59;;273:7942:67;643:59:8;273:7942:67;;;643:59:8;;;;;;4984:74;4947:1461;5094:13;5127:3;273:7942:67;;5109:16:8;;;;;5178:8;273:7942:67;5178:8:8;;5165:22;5178:8;;:::i;:::-;273:7942:67;;;-1:-1:-1;;;5165:22:8;;-1:-1:-1;;;;;273:7942:67;;4361:12:8;5165:22;;273:7942:67;893:3;;;273:7942;;;;;;;;;893:3;;;;;5165:22:8;;;-1:-1:-1;;;;;;;;;;;5165:22:8;;;;;;;;;;;5127:3;5209:18;;;5205:114;;5127:3;5369:8;;;;:::i;:::-;273:7942:67;4361:12:8;273:7942:67;;;-1:-1:-1;;;1978:27:8;;-1:-1:-1;;;;;273:7942:67;;;4361:12:8;1978:27;;273:7942:67;;;893:3;;;273:7942;;;;;;;893:3;273:7942;-1:-1:-1;;;;;;;;;;;1978:27:8;;;;;;;;;;;5127:3;2057:16;;27635:8:3;2057:16:8;:::i;:::-;2102:65;;;:29;;:65;:29;;;-1:-1:-1;;3489:17:67;2102:65:8;-1:-1:-1;;;;;;;;;;;2177:37:8;;;;273:7942:67;;-1:-1:-1;;;2177:37:8;;-1:-1:-1;;;;;273:7942:67;;;;4361:12:8;2177:37;;273:7942:67;12810:59:8;;;273:7942:67;;;12810:59:8;;;273:7942:67;;;;;;12810:59:8;273:7942:67;;-1:-1:-1;;;;;;;;;;;2177:37:8;;;;;;;;;;;2102:65;2254:16;;;27635:8:3;2254:16:8;:::i;:::-;4361:12;273:7942:67;;;;-1:-1:-1;;;;;;273:7942:67;-1:-1:-1;;;;;;;;;;;2281:43:8;;;;273:7942:67;;-1:-1:-1;;;2281:43:8;;-1:-1:-1;;;;;273:7942:67;;;;4361:12:8;2281:43;;273:7942:67;12810:59:8;;;273:7942:67;;;;12810:59:8;;;273:7942:67;;;;;;12810:59:8;273:7942:67;;-1:-1:-1;;;;;;;;;;;2281:43:8;;;;;;;;;;;2102:65;2343:46;;;;;2102:65;5341:37;;;5337:92;;5447:50;;;273:7942:67;;5520:25:8;273:7942:67;;5516:256:8;;2102:65;12275:113;;;;;;;-1:-1:-1;;12275:113:8;;;5902:57;273:7942:67;;5998:29:8;;5994:84;;273:7942:67;;6319:8:8;273:7942:67;6101:89:8;643:59;273:7942:67;;6132:37:8;;273:7942:67;;;6132:37:8;;;273:7942:67;6132:37:8;;;;;:::i;:::-;273:7942:67;6122:48:8;;6180:8;;;;:::i;:::-;273:7942:67;;;;;;;643:59:8;273:7942:67;643:59:8;;273:7942:67;;643:59:8;;273:7942:67;643:59:8;;;273:7942:67;6101:89:8;6319:8;:::i;:::-;273:7942:67;;;;;643:59:8;273:7942:67;;;;;;-1:-1:-1;;;;;273:7942:67;;;;;4438:11:8;273:7942:67;;;893:3;;273:7942;6302:58:8;;893:3:67;;;273:7942;6302:58:8;;893:3:67;;;643:59:8;6302:58;;643:59;893:3:67;643:59:8;;273:7942:67;;;27635:8:3;273:7942:67;;;;;;;;;;;;;;;;6240:37:8;;;;;;;;;;:::i;:::-;273:7942:67;6230:48:8;;273:7942:67;;;;;;;;;643:59:8;;273:7942:67;893:3;643:59:8;;;273:7942:67;4397:9:8;643:59;;;;;;273:7942:67;;;;;643:59:8;;;;;;;;5089:1309;273:7942:67;;;27635:8:3;273:7942:67;;;;;;;;;;;;;;;;6471:37:8;;;;;;;;;;:::i;:::-;273:7942:67;6461:48:8;;273:7942:67;;;;;4438:11:8;273:7942:67;;;6439:77:8;273:7942:67;;643:59:8;;;273:7942:67;6664:15:8;273:7942:67;;27635:8:3;273:7942:67;;;;;;;;;;6696:37:8;;273:7942:67;;;;;;6696:37:8;;;273:7942:67;6696:37:8;;;;;:::i;:::-;273:7942:67;6686:48:8;;273:7942:67;;;;;4249:2493:8;:::o;643:59::-;273:7942:67;;-1:-1:-1;;;643:59:8;;273:7942:67;4361:12:8;643:59;;;;4911:25;643:59;;273:7942:67;643:59:8;273:7942:67;;;643:59:8;-1:-1:-1;;;643:59:8;;;;;;;5994:84;6051:8;;;;893:3:67;6051:8:8;5094:13;893:3:67;5094:13:8;;5516:256;5654:8;;3216:27;5654:8;;;;;;:::i;:::-;273:7942:67;4361:12:8;273:7942:67;;;-1:-1:-1;;;3216:27:8;;-1:-1:-1;;;;;273:7942:67;;;4361:12:8;3216:27;;273:7942:67;893:3;;;273:7942;;;;;;;;;;;;;893:3;;;;;3216:27:8;;;-1:-1:-1;;;;;;;;;;;3216:27:8;;;;;;;;;;;5516:256;3293:28;;;27635:8:3;3293:28:8;:::i;:::-;3372:29;;;;;27635:8:3;3372:29:8;:::i;:::-;4361:12;273:7942:67;;;;;;-1:-1:-1;;;;;273:7942:67;-1:-1:-1;;;;;;;;;;;3497:43:8;;;;273:7942:67;;-1:-1:-1;;;3497:43:8;;-1:-1:-1;;;;;273:7942:67;;;;4361:12:8;3497:43;;273:7942:67;12810:59:8;;;273:7942:67;;;;12810:59:8;;;273:7942:67;;;;;;12810:59:8;273:7942:67;;-1:-1:-1;;;;;;;;;;;3497:43:8;;;;;;;;;;;5516:256;3558:23;;;;;5516:256;5601:62;;5689:6;5516:256;5685:69;5723:8;;;;;893:3:67;5723:8:8;;;3558:23;;-1:-1:-1;3558:23:8;;;3497:43;;;;;:::i;:::-;273:7942:67;;3497:43:8;;;;273:7942:67;;;;3497:43:8;273:7942:67;;1590:14:0;273:7942:67;;1590:14:0;;;;3497:43:8;273:7942:67;;;3216:27:8;;;;273:7942:67;3216:27:8;;;;;;;;;1590:14:0;3216:27:8;;;:::i;:::-;;;1590:14:0;;;;;3216:27:8;;;;;;;-1:-1:-1;3216:27:8;;5337:92;5402:8;;893:3:67;5402:8:8;;;2343:46;2355:33;;;-1:-1:-1;2343:46:8;;;;2281:43;;;;;:::i;:::-;273:7942:67;;2281:43:8;;;;273:7942:67;;;;2281:43:8;273:7942:67;;1590:14:0;273:7942:67;;1590:14:0;;;;2281:43:8;273:7942:67;;;2177:37:8;;;;;:::i;:::-;273:7942:67;;2177:37:8;;;;2102:65;;;;;1978:27;;;273:7942:67;1978:27:8;;;;;;;;;1590:14:0;1978:27:8;;;:::i;:::-;;;1590:14:0;;;;;1978:27:8;;;;;;-1:-1:-1;1978:27:8;;;273:7942:67;;1590:14:0;273:7942:67;;1590:14:0;;;;5205:114:8;5256:44;;5290:8;;;;:::i;:::-;273:7942:67;;;;-1:-1:-1;;;;;273:7942:67;;;;893:3;;;273:7942;;;;;;;;893:3;;;;5256:44:8;;;;5205:114;;5165:22;;;;273:7942:67;5165:22:8;;;;;;;;;1590:14:0;5165:22:8;;;:::i;:::-;;;1590:14:0;;;;;5165:22:8;;;;;;;-1:-1:-1;5165:22:8;;;273:7942:67;;1590:14:0;273:7942:67;;1590:14:0;;;;5109:16:8;;;;;;4911:25;;;;;;;;;;;;:::i;:::-;;;273:7942:67;643:59:8;;;;;;;;-1:-1:-1;;;;;643:59:8;;;;;;;;;;:::i;:::-;;273:7942:67;643:59:8;;;;-1:-1:-1;;;;;643:59:8;;;;;;;;;:::i;:::-;;4911:25;;;643:59;273:7942:67;;;643:59:8;273:7942:67;;;4811:11:8;;;;;273:7942:67;4811:11:8;;:::i;:::-;273:7942:67;4811:11:8;;;;4547:255;4720:15;;;;;273:7942:67;;27635:8:3;273:7942:67;;;;;;;;;;4752:37:8;;273:7942:67;;;;;;4752:37:8;;;273:7942:67;4752:37:8;;;;;:::i;:::-;273:7942:67;4742:48:8;;273:7942:67;;;;;;;4713:78:8;:::o;11586:239::-;409:59:67;;;11652:12:8;273:7942:67;;11652:12:8;273:7942:67;;;11681:9:8;273:7942:67;;11681:9:8;273:7942:67;11707:10:8;273:7942:67;11645:19:8;11707:10;273:7942:67;;;;11586:239:8;273:7942:67;11645:19:8;11734:11;273:7942:67;;;11762:25:8;273:7942:67;;11762:25:8;273:7942:67;;11804:14:8;273:7942:67;;:::i;:::-;;;;11586:239:8;:::o;273:7942:67:-;;;;;;;;;11645:19:8;11804:14;273:7942:67;11586:239:8:o;273:7942:67:-;11804:14:8;11645:19;273:7942:67;;;;;;;;;;;;;;;;11804:14:8;11645:19;273:7942:67;11645:19:8;273:7942:67;;;;11804:14:8;273:7942:67;;14296:110:1:o;273:7942:67:-;;;;;;;;;11707:10:8;11645:19;273:7942:67;;;;;;;;;;;;;;;;11645:19:8;273:7942:67;;11707:10:8;273:7942:67;;;2560:514:8;;;2695:1;2698:12;2707:3;2698:12;;;;3050:17;;;;2695:1;3050:17;2695:1;2560:514;:::o;2712:8::-;785:66:67;2771:3:8;785:66:67;2771:3:8;785:66:67;;;;2824:12:8;;;273:7942:67;893:3;273:7942;;;;-1:-1:-1;;;;;273:7942:67;-1:-1:-1;;;;;;;;;;;2815:49:8;;;;273:7942:67;;-1:-1:-1;;;2815:49:8;;-1:-1:-1;;;;;273:7942:67;;;;2824:12:8;2815:49;;273:7942:67;12810:59:8;;;273:7942:67;;;12810:59:8;;;273:7942:67;;;;-1:-1:-1;273:7942:67;12810:59:8;273:7942:67;-1:-1:-1;;;;;;;;;;;;2815:49:8;;;;;;;;2712:8;2910:16;;;;:::i;:::-;2945:30;;;2712:8;2941:90;;;893:3:67;;2678:18:8;;2941:90;2995:21;;;893:3:67;2995:21:8;;:::o;2945:30::-;2957:17;;;;2945:30;;;2815:49;2695:1;2815:49;;;:::i;:::-;;;;2560:514;;;4551:10;2698:12;2707:3;2698:12;;;;3050:17;;;;4551:10;3050:17;4551:10;2560:514;:::o;2712:8::-;2824:12;;;273:7942:67;893:3;273:7942;;;-1:-1:-1;;;;;273:7942:67;-1:-1:-1;;;;;;;;;;;2815:49:8;;;;273:7942:67;;-1:-1:-1;;;2815:49:8;;-1:-1:-1;;;;;273:7942:67;;;;2824:12:8;2815:49;;273:7942:67;12810:59:8;;;273:7942:67;;;12810:59:8;;;273:7942:67;;;;-1:-1:-1;273:7942:67;12810:59:8;273:7942:67;-1:-1:-1;;;;;;;;;;;;2815:49:8;;;;;;;;2712:8;2910:16;;;;:::i;:::-;2945:30;;;2712:8;2941:90;;;893:3:67;;2678:18:8;;2945:30;2957:17;;;;2945:30;;;2815:49;4551:10;2815:49;;;:::i;:::-;;;","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","fractionToInt((uint256,uint256))":"08c41745","runPoolBehaviourTest(address,bytes32[])":"d170c3cc","setUp()":"0a9254e4","stringPctgs(uint256)":"a00872f1","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testBalancerV2PoolBehaviour()":"a2121ee5","testGetCapabilitiesFuzz(bytes32,address,address)":"53e5d760","testGetLimits()":"d3479a01","testGetPoolIds()":"99cef81b","testGetTokens()":"8f1ed4c6","testPrice()":"8335a17f","testPriceDecreasing()":"4a36e372","testPriceSingleFuzz()":"e8651645","testSwapBuyIncreasing()":"fe3ee58b","testSwapFuzz(uint256,bool)":"7f55213e","testSwapSellIncreasing()":"111f3392"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"LimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"Unavailable\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"fsig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keysHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"SlotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"WARNING_UninitedSlot\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction\",\"name\":\"price\",\"type\":\"tuple\"}],\"name\":\"fractionToInt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISwapAdapter\",\"name\":\"adapter\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"poolIds\",\"type\":\"bytes32[]\"}],\"name\":\"runPoolBehaviourTest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"stringPctgs\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testBalancerV2PoolBehaviour\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"pool\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"t0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"t1\",\"type\":\"address\"}],\"name\":\"testGetCapabilitiesFuzz\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetLimits\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetPoolIds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testPriceDecreasing\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testPriceSingleFuzz\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSwapBuyIncreasing\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isBuy\",\"type\":\"bool\"}],\"name\":\"testSwapFuzz\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSwapSellIncreasing\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"LimitExceeded(uint256)\":[{\"details\":\"The LimitExceeded error is thrown when a limit has been exceeded. E.g. the specified amount can't be traded safely.\"}],\"NotImplemented(string)\":[{\"details\":\"The NotImplemented error is thrown when a function is not implemented.\"}],\"Unavailable(string)\":[{\"details\":\"The Unavailable error is thrown when a pool or swap is not available for unexpected reason. E.g. it was paused due to a bug.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/BalancerV2SwapAdapter.t.sol\":\"BalancerV2SwapAdapterTest\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b\",\"dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54\",\"dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678\",\"dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdToml.sol\":{\"keccak256\":\"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d\",\"dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e\",\"dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a\",\"dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/balancer-v2/BalancerV2SwapAdapter.sol\":{\"keccak256\":\"0xc8b253abb798769107197c28c7d17b500387dc57f97fd7d24636ee6b0e15fad7\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://442c535784b211fd8da880a1eb75f5597c618b78e391dc1acfd3358d0fa687eb\",\"dweb:/ipfs/QmeC2r9fvL8FPnoHYss8f16PMaEK44C5UGu8PEvUb1HKAe\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/libraries/EfficientERC20.sol\":{\"keccak256\":\"0x825d7f6aa98465b3c5b5a08d24cadfbb0a06f44693beec4e00ad2fe2824b4ef0\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2a5b53d7d634f50f27a1e45ce9136a054f1f19efc3dcfc1f85c8b1bbeac735fa\",\"dweb:/ipfs/QmQSeQyF86HLRnvKgQogia8W2eoWzncG2m1GkYMnp84DJZ\"]},\"src/libraries/FractionMath.sol\":{\"keccak256\":\"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c\",\"dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr\"]},\"test/AdapterTest.sol\":{\"keccak256\":\"0x56850be2bb3898eee065c3d77aadb6d181ee789da32f30b1d415d5521397fa43\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://8ca34143db16aa27c42ee3f8566ee466095d4aedcc4ea1c7726aa9c593f4fbd0\",\"dweb:/ipfs/QmWBTLXZKbTuT5kVpAbyGCxKRdhsmzWRPZPiTqZMg9BXhd\"]},\"test/BalancerV2SwapAdapter.t.sol\":{\"keccak256\":\"0x3691dd98ca66209c2b8895e00657d8c5520b907ff59b9623317efa10088019d8\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://6061c59a0790a461309792398da122df3ce69beabe7eb4068254e96e0323c4e0\",\"dweb:/ipfs/QmT3V7Q3oLGN7r6GTSJLUiQA14X8BEYtgfqCJz9BQVEqwr\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"type":"error","name":"LimitExceeded"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"NotImplemented"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"Unavailable"},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"bytes4","name":"fsig","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"keysHash","type":"bytes32","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"SlotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"WARNING_UninitedSlot","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct ISwapAdapterTypes.Fraction","name":"price","type":"tuple","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}],"stateMutability":"pure","type":"function","name":"fractionToInt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"contract ISwapAdapter","name":"adapter","type":"address"},{"internalType":"bytes32[]","name":"poolIds","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"runPoolBehaviourTest"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"stringPctgs","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testBalancerV2PoolBehaviour"},{"inputs":[{"internalType":"bytes32","name":"pool","type":"bytes32"},{"internalType":"address","name":"t0","type":"address"},{"internalType":"address","name":"t1","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"testGetCapabilitiesFuzz"},{"inputs":[],"stateMutability":"view","type":"function","name":"testGetLimits"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testGetPoolIds"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testGetTokens"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testPrice"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testPriceDecreasing"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testPriceSingleFuzz"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testSwapBuyIncreasing"},{"inputs":[{"internalType":"uint256","name":"specifiedAmount","type":"uint256"},{"internalType":"bool","name":"isBuy","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"testSwapFuzz"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testSwapSellIncreasing"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/BalancerV2SwapAdapter.t.sol":"BalancerV2SwapAdapterTest"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef","urls":["bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b","dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d","urls":["bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54","dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3","urls":["bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678","dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdToml.sol":{"keccak256":"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab","urls":["bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d","dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe","urls":["bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e","dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456","urls":["bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a","dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/balancer-v2/BalancerV2SwapAdapter.sol":{"keccak256":"0xc8b253abb798769107197c28c7d17b500387dc57f97fd7d24636ee6b0e15fad7","urls":["bzz-raw://442c535784b211fd8da880a1eb75f5597c618b78e391dc1acfd3358d0fa687eb","dweb:/ipfs/QmeC2r9fvL8FPnoHYss8f16PMaEK44C5UGu8PEvUb1HKAe"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/libraries/EfficientERC20.sol":{"keccak256":"0x825d7f6aa98465b3c5b5a08d24cadfbb0a06f44693beec4e00ad2fe2824b4ef0","urls":["bzz-raw://2a5b53d7d634f50f27a1e45ce9136a054f1f19efc3dcfc1f85c8b1bbeac735fa","dweb:/ipfs/QmQSeQyF86HLRnvKgQogia8W2eoWzncG2m1GkYMnp84DJZ"],"license":"UNLICENSED"},"src/libraries/FractionMath.sol":{"keccak256":"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735","urls":["bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c","dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr"],"license":"AGPL-3.0-or-later"},"test/AdapterTest.sol":{"keccak256":"0x56850be2bb3898eee065c3d77aadb6d181ee789da32f30b1d415d5521397fa43","urls":["bzz-raw://8ca34143db16aa27c42ee3f8566ee466095d4aedcc4ea1c7726aa9c593f4fbd0","dweb:/ipfs/QmWBTLXZKbTuT5kVpAbyGCxKRdhsmzWRPZPiTqZMg9BXhd"],"license":"AGPL-3.0-or-later"},"test/BalancerV2SwapAdapter.t.sol":{"keccak256":"0x3691dd98ca66209c2b8895e00657d8c5520b907ff59b9623317efa10088019d8","urls":["bzz-raw://6061c59a0790a461309792398da122df3ce69beabe7eb4068254e96e0323c4e0","dweb:/ipfs/QmT3V7Q3oLGN7r6GTSJLUiQA14X8BEYtgfqCJz9BQVEqwr"],"license":"AGPL-3.0-or-later"}},"version":1},"id":67} \ No newline at end of file diff --git a/evm/out/BalancerV3Errors.sol/BalancerV3Errors.json b/evm/out/BalancerV3Errors.sol/BalancerV3Errors.json deleted file mode 100644 index 4ea2194..0000000 --- a/evm/out/BalancerV3Errors.sol/BalancerV3Errors.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"event","name":"UnorderedNonceInvalidation","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"word","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"mask","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AfterAddLiquidityHookFailed","inputs":[]},{"type":"error","name":"AfterInitializeHookFailed","inputs":[]},{"type":"error","name":"AfterRemoveLiquidityHookFailed","inputs":[]},{"type":"error","name":"AfterSwapHookFailed","inputs":[]},{"type":"error","name":"AllZeroInputs","inputs":[]},{"type":"error","name":"AllowanceExpired","inputs":[{"name":"deadline","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"AmountGivenZero","inputs":[]},{"type":"error","name":"AmountInAboveMax","inputs":[{"name":"tokenIn","type":"address","internalType":"contract IERC20"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"maxAmountIn","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"AmountOutBelowMin","inputs":[{"name":"tokenOut","type":"address","internalType":"contract IERC20"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"minAmountOut","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"AmpUpdateAlreadyStarted","inputs":[]},{"type":"error","name":"AmpUpdateDurationTooShort","inputs":[]},{"type":"error","name":"AmpUpdateRateTooFast","inputs":[]},{"type":"error","name":"AmplificationFactorTooHigh","inputs":[]},{"type":"error","name":"AmplificationFactorTooLow","inputs":[]},{"type":"error","name":"AssetBoundsExceeded","inputs":[]},{"type":"error","name":"BalanceNotSettled","inputs":[]},{"type":"error","name":"BeforeAddLiquidityHookFailed","inputs":[]},{"type":"error","name":"BeforeInitializeHookFailed","inputs":[]},{"type":"error","name":"BeforeRemoveLiquidityHookFailed","inputs":[]},{"type":"error","name":"BeforeSwapHookFailed","inputs":[]},{"type":"error","name":"BptAmountInAboveMax","inputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"maxAmountIn","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"BptAmountOutBelowMin","inputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"minAmountOut","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"BufferAlreadyInitialized","inputs":[{"name":"wrappedToken","type":"address","internalType":"contract IERC4626"}]},{"type":"error","name":"BufferNotInitialized","inputs":[{"name":"wrappedToken","type":"address","internalType":"contract IERC4626"}]},{"type":"error","name":"BufferSharesInvalidOwner","inputs":[]},{"type":"error","name":"BufferSharesInvalidReceiver","inputs":[]},{"type":"error","name":"BufferTotalSupplyTooLow","inputs":[{"name":"totalSupply","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CallerIsNotPoolCreator","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"pool","type":"address","internalType":"address"}]},{"type":"error","name":"CannotReceiveEth","inputs":[]},{"type":"error","name":"CannotSwapSameToken","inputs":[]},{"type":"error","name":"DoesNotSupportAddLiquidityCustom","inputs":[]},{"type":"error","name":"DoesNotSupportDonation","inputs":[]},{"type":"error","name":"DoesNotSupportRemoveLiquidityCustom","inputs":[]},{"type":"error","name":"DoesNotSupportUnbalancedLiquidity","inputs":[]},{"type":"error","name":"DynamicSwapFeeHookFailed","inputs":[]},{"type":"error","name":"ExcessiveInvalidation","inputs":[]},{"type":"error","name":"FeePrecisionTooHigh","inputs":[]},{"type":"error","name":"HookAdjustedAmountInAboveMax","inputs":[{"name":"tokenIn","type":"address","internalType":"contract IERC20"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"maxAmountIn","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"HookAdjustedAmountOutBelowMin","inputs":[{"name":"tokenOut","type":"address","internalType":"contract IERC20"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"minAmountOut","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"HookAdjustedSwapLimit","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"HookRegistrationFailed","inputs":[{"name":"poolHooksContract","type":"address","internalType":"address"},{"name":"pool","type":"address","internalType":"address"},{"name":"poolFactory","type":"address","internalType":"address"}]},{"type":"error","name":"InputLengthMismatch","inputs":[]},{"type":"error","name":"InsufficientAllowance","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientEth","inputs":[]},{"type":"error","name":"InvalidAddLiquidityKind","inputs":[]},{"type":"error","name":"InvalidAmount","inputs":[{"name":"maxAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidRemoveLiquidityKind","inputs":[]},{"type":"error","name":"InvalidToken","inputs":[]},{"type":"error","name":"InvalidTokenConfiguration","inputs":[]},{"type":"error","name":"InvalidTokenDecimals","inputs":[]},{"type":"error","name":"InvalidTokenType","inputs":[]},{"type":"error","name":"InvalidUnderlyingToken","inputs":[{"name":"wrappedToken","type":"address","internalType":"contract IERC4626"}]},{"type":"error","name":"IssuedSharesBelowMin","inputs":[{"name":"issuedShares","type":"uint256","internalType":"uint256"},{"name":"minIssuedShares","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LengthMismatch","inputs":[]},{"type":"error","name":"MaxTokens","inputs":[]},{"type":"error","name":"MinTokens","inputs":[]},{"type":"error","name":"MinWeight","inputs":[]},{"type":"error","name":"MultipleNonZeroInputs","inputs":[]},{"type":"error","name":"NormalizedWeightInvariant","inputs":[]},{"type":"error","name":"NotEnoughBufferShares","inputs":[]},{"type":"error","name":"NotEnoughUnderlying","inputs":[{"name":"wrappedToken","type":"address","internalType":"contract IERC4626"},{"name":"expectedUnderlyingAmount","type":"uint256","internalType":"uint256"},{"name":"actualUnderlyingAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotEnoughWrapped","inputs":[{"name":"wrappedToken","type":"address","internalType":"contract IERC4626"},{"name":"expectedWrappedAmount","type":"uint256","internalType":"uint256"},{"name":"actualWrappedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotStaticCall","inputs":[]},{"type":"error","name":"NotVaultDelegateCall","inputs":[]},{"type":"error","name":"OnlyPauseGuardian","inputs":[{"name":"caller","type":"address","internalType":"address"}]},{"type":"error","name":"PauseBufferPeriodDurationTooLarge","inputs":[]},{"type":"error","name":"PercentageAboveMax","inputs":[]},{"type":"error","name":"PoolAddressMismatch","inputs":[{"name":"pool","type":"address","internalType":"address"}]},{"type":"error","name":"PoolAlreadyInitialized","inputs":[{"name":"pool","type":"address","internalType":"address"}]},{"type":"error","name":"PoolAlreadyRegistered","inputs":[{"name":"pool","type":"address","internalType":"address"}]},{"type":"error","name":"PoolCreatorFeePercentageTooHigh","inputs":[]},{"type":"error","name":"PoolCreatorNotRegistered","inputs":[{"name":"pool","type":"address","internalType":"address"}]},{"type":"error","name":"PoolInRecoveryMode","inputs":[{"name":"pool","type":"address","internalType":"address"}]},{"type":"error","name":"PoolNotInRecoveryMode","inputs":[{"name":"pool","type":"address","internalType":"address"}]},{"type":"error","name":"PoolNotInitialized","inputs":[{"name":"pool","type":"address","internalType":"address"}]},{"type":"error","name":"PoolNotPaused","inputs":[{"name":"pool","type":"address","internalType":"address"}]},{"type":"error","name":"PoolNotRegistered","inputs":[{"name":"pool","type":"address","internalType":"address"}]},{"type":"error","name":"PoolPauseWindowExpired","inputs":[{"name":"pool","type":"address","internalType":"address"}]},{"type":"error","name":"PoolPaused","inputs":[{"name":"pool","type":"address","internalType":"address"}]},{"type":"error","name":"ProtocolFeesExceedTotalCollected","inputs":[]},{"type":"error","name":"ProtocolSwapFeePercentageTooHigh","inputs":[]},{"type":"error","name":"ProtocolYieldFeePercentageTooHigh","inputs":[]},{"type":"error","name":"QueriesDisabled","inputs":[]},{"type":"error","name":"QueriesDisabledPermanently","inputs":[]},{"type":"error","name":"QuoteResultSpoofed","inputs":[]},{"type":"error","name":"RouterNotTrusted","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SenderIsNotVault","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"StandardPoolWithCreator","inputs":[]},{"type":"error","name":"StaticATokenInvalidZeroShares","inputs":[]},{"type":"error","name":"SwapDeadline","inputs":[]},{"type":"error","name":"SwapFeePercentageTooHigh","inputs":[]},{"type":"error","name":"SwapFeePercentageTooLow","inputs":[]},{"type":"error","name":"SwapLimit","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenAlreadyRegistered","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"}]},{"type":"error","name":"TokenNotRegistered","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"}]},{"type":"error","name":"TokensMismatch","inputs":[{"name":"pool","type":"address","internalType":"address"},{"name":"expectedToken","type":"address","internalType":"address"},{"name":"actualToken","type":"address","internalType":"address"}]},{"type":"error","name":"TokensNotSorted","inputs":[]},{"type":"error","name":"TradeAmountTooSmall","inputs":[]},{"type":"error","name":"VaultBuffersArePaused","inputs":[]},{"type":"error","name":"VaultIsNotUnlocked","inputs":[]},{"type":"error","name":"VaultNotPaused","inputs":[]},{"type":"error","name":"VaultPauseWindowDurationTooLarge","inputs":[]},{"type":"error","name":"VaultPauseWindowExpired","inputs":[]},{"type":"error","name":"VaultPaused","inputs":[]},{"type":"error","name":"VaultQueriesDisabled","inputs":[]},{"type":"error","name":"WeightedPoolBptRateUnsupported","inputs":[]},{"type":"error","name":"WrapAmountTooSmall","inputs":[{"name":"wrappedToken","type":"address","internalType":"contract IERC4626"}]},{"type":"error","name":"WrongProtocolFeeControllerDeployment","inputs":[]},{"type":"error","name":"WrongUnderlyingToken","inputs":[{"name":"wrappedToken","type":"address","internalType":"contract IERC4626"},{"name":"underlyingToken","type":"address","internalType":"address"}]},{"type":"error","name":"WrongVaultAdminDeployment","inputs":[]},{"type":"error","name":"WrongVaultExtensionDeployment","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AfterAddLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterInitializeHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterRemoveLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterSwapHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AllZeroInputs\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"AllowanceExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AmountGivenZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"AmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"AmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AmpUpdateAlreadyStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AmpUpdateDurationTooShort\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AmpUpdateRateTooFast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AmplificationFactorTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AmplificationFactorTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AssetBoundsExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalanceNotSettled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeAddLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeInitializeHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeRemoveLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeSwapHookFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"BptAmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"BptAmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"BufferAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"BufferNotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BufferSharesInvalidOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BufferSharesInvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"name\":\"BufferTotalSupplyTooLow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"CallerIsNotPoolCreator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotReceiveEth\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotSwapSameToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportAddLiquidityCustom\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportDonation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportRemoveLiquidityCustom\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportUnbalancedLiquidity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DynamicSwapFeeHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExcessiveInvalidation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeePrecisionTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedAmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedAmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedSwapLimit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"poolHooksContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolFactory\",\"type\":\"address\"}],\"name\":\"HookRegistrationFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEth\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddLiquidityKind\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRemoveLiquidityKind\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenConfiguration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenDecimals\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenType\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"InvalidUnderlyingToken\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minIssuedShares\",\"type\":\"uint256\"}],\"name\":\"IssuedSharesBelowMin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxTokens\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinTokens\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinWeight\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MultipleNonZeroInputs\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NormalizedWeightInvariant\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughBufferShares\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expectedUnderlyingAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actualUnderlyingAmount\",\"type\":\"uint256\"}],\"name\":\"NotEnoughUnderlying\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expectedWrappedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actualWrappedAmount\",\"type\":\"uint256\"}],\"name\":\"NotEnoughWrapped\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotStaticCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVaultDelegateCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"OnlyPauseGuardian\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PauseBufferPeriodDurationTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PercentageAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolAddressMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PoolCreatorFeePercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolCreatorNotRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolInRecoveryMode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotInRecoveryMode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolPauseWindowExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolFeesExceedTotalCollected\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolSwapFeePercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolYieldFeePercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QueriesDisabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QueriesDisabledPermanently\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuoteResultSpoofed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RouterNotTrusted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SenderIsNotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StandardPoolWithCreator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StaticATokenInvalidZeroShares\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapDeadline\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapFeePercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapFeePercentageTooLow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"SwapLimit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenNotRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"expectedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"actualToken\",\"type\":\"address\"}],\"name\":\"TokensMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokensNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TradeAmountTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultBuffersArePaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultIsNotUnlocked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultNotPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPauseWindowDurationTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPauseWindowExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultQueriesDisabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WeightedPoolBptRateUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"WrapAmountTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongProtocolFeeControllerDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"}],\"name\":\"WrongUnderlyingToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongVaultAdminDeployment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongVaultExtensionDeployment\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"word\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mask\",\"type\":\"uint256\"}],\"name\":\"UnorderedNonceInvalidation\",\"type\":\"event\"}],\"devdoc\":{\"errors\":{\"AllZeroInputs()\":[{\"details\":\"Input arrays for single token add/remove liquidity operations are expected to have one non-zero value, corresponding to the token being added or removed. This error results if all entries are zero.\"}],\"AllowanceExpired(uint256)\":[{\"params\":{\"deadline\":\"The timestamp at which the allowed amount is no longer valid\"}}],\"AmountInAboveMax(address,uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total token amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\",\"tokenIn\":\"The incoming token\"}}],\"AmountOutBelowMin(address,uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\",\"tokenOut\":\"The outgoing token\"}}],\"BptAmountInAboveMax(uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total BPT amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\"}}],\"BptAmountOutBelowMin(uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\"}}],\"BufferAlreadyInitialized(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"BufferNotInitialized(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"BufferTotalSupplyTooLow(uint256)\":[{\"params\":{\"totalSupply\":\"The total supply value that was below the minimum\"}}],\"CallerIsNotPoolCreator(address,address)\":[{\"params\":{\"caller\":\"The account attempting to withdraw pool creator fees\",\"pool\":\"The pool the caller tried to withdraw from\"}}],\"FeePrecisionTooHigh()\":[{\"details\":\"Primary fee percentages are 18-decimal values, stored here in 64 bits, and calculated with full 256-bit precision. However, the resulting aggregate fees are stored in the Vault with 24-bit precision, which corresponds to 0.00001% resolution (i.e., a fee can be 1%, 1.00001%, 1.00002%, but not 1.000005%). Disallow setting fees such that there would be precision loss in the Vault, leading to a discrepancy between the aggregate fee calculated here and that stored in the Vault.\"}],\"HookAdjustedAmountInAboveMax(address,uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total token amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\",\"tokenIn\":\"The incoming token\"}}],\"HookAdjustedAmountOutBelowMin(address,uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\",\"tokenOut\":\"The outgoing token\"}}],\"HookAdjustedSwapLimit(uint256,uint256)\":[{\"params\":{\"amount\":\"The total amount in or out\",\"limit\":\"The amount of the limit that has been exceeded\"}}],\"HookRegistrationFailed(address,address,address)\":[{\"params\":{\"pool\":\"Address of the rejected pool\",\"poolFactory\":\"Address of the pool factory\",\"poolHooksContract\":\"Address of the hook contract that rejected the pool registration\"}}],\"InsufficientAllowance(uint256)\":[{\"params\":{\"amount\":\"The maximum amount allowed\"}}],\"InvalidUnderlyingToken(address)\":[{\"details\":\"This should never happen, but a malicious wrapper contract might do this (e.g., in an attempt to re-initialize the buffer).\",\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"IssuedSharesBelowMin(uint256,uint256)\":[{\"details\":\"Shares issued during initialization are below the requested amount.\"}],\"LengthMismatch()\":[{\"details\":\"If the spender does not need to transfer the number of tokens permitted, the spender can request amount 0 to be transferred\"}],\"MultipleNonZeroInputs()\":[{\"details\":\"Input arrays for single token add/remove liquidity operations are expected to have only one non-zero value, corresponding to the token being added or removed. This error results if there are multiple non-zero entries.\"}],\"NotEnoughUnderlying(address,uint256,uint256)\":[{\"details\":\"A wrap/unwrap operation consumed more or returned less underlying tokens than it should.\"}],\"NotEnoughWrapped(address,uint256,uint256)\":[{\"details\":\"A wrap/unwrap operation consumed more or returned less wrapped tokens than it should.\"}],\"NotVaultDelegateCall()\":[{\"details\":\"It can only be called by the Vault via delegatecall.\"}],\"PoolAlreadyInitialized(address)\":[{\"params\":{\"pool\":\"The already initialized pool\"}}],\"PoolAlreadyRegistered(address)\":[{\"params\":{\"pool\":\"The already registered pool\"}}],\"PoolCreatorNotRegistered(address)\":[{\"params\":{\"pool\":\"The pool with no creator\"}}],\"PoolInRecoveryMode(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolNotInRecoveryMode(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolNotInitialized(address)\":[{\"params\":{\"pool\":\"The uninitialized pool\"}}],\"PoolNotPaused(address)\":[{\"params\":{\"pool\":\"The unpaused pool\"}}],\"PoolNotRegistered(address)\":[{\"params\":{\"pool\":\"The unregistered pool\"}}],\"PoolPauseWindowExpired(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolPaused(address)\":[{\"params\":{\"pool\":\"The paused pool\"}}],\"ProtocolFeesExceedTotalCollected()\":[{\"details\":\"This occurs when the sum of the parts (aggregate swap or yield fee) is greater than the whole (total swap or yield fee). Also validated when the protocol fee controller updates aggregate fee percentages in the Vault.\"}],\"ProtocolSwapFeePercentageTooHigh()\":[{\"details\":\"Note that this is checked for both the global and pool-specific protocol swap fee percentages.\"}],\"ProtocolYieldFeePercentageTooHigh()\":[{\"details\":\"Note that this is checked for both the global and pool-specific protocol yield fee percentages.\"}],\"SenderIsNotVault(address)\":[{\"params\":{\"sender\":\"The account attempting to call a permissioned function\"}}],\"SwapFeePercentageTooHigh()\":[{\"details\":\"The Vault itself does not impose a universal minimum. Rather, it validates against the range specified by the `ISwapFeePercentageBounds` interface. and reverts with this error if it is above the maximum value returned by the pool. Pools with dynamic fees do not check these limits.\"}],\"SwapFeePercentageTooLow()\":[{\"details\":\"The Vault itself does not impose a universal minimum. Rather, it validates against the range specified by the `ISwapFeePercentageBounds` interface. and reverts with this error if it is below the minimum value returned by the pool. Pools with dynamic fees do not check these limits.\"}],\"SwapLimit(uint256,uint256)\":[{\"params\":{\"amount\":\"The total amount in or out\",\"limit\":\"The amount of the limit that has been exceeded\"}}],\"TokenAlreadyRegistered(address)\":[{\"params\":{\"token\":\"The duplicate token\"}}],\"TokenNotRegistered(address)\":[{\"params\":{\"token\":\"The unregistered token\"}}],\"TokensMismatch(address,address,address)\":[{\"params\":{\"actualToken\":\"The actual token found at that index\",\"expectedToken\":\"The correct token at a given index in the pool\",\"pool\":\"Address of the pool\"}}],\"TokensNotSorted()\":[{\"details\":\"Tokens are not sorted by address on registration. This is an optimization so that off-chain processes can predict the token order without having to query the Vault. (It is also legacy v2 behavior.)\"}],\"WrapAmountTooSmall(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"WrongUnderlyingToken(address,address)\":[{\"details\":\"This should never happen, but a malicious wrapper contract might not return the correct address. Legitimate wrapper contracts should make the asset a constant or immutable value.\",\"params\":{\"underlyingToken\":\"The underlying token returned by `asset`\",\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"AfterAddLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the afterAddLiquidity hook, indicating the transaction should revert.\"}],\"AfterInitializeHookFailed()\":[{\"notice\":\"The pool has returned false to the afterInitialize hook, indicating the transaction should revert.\"}],\"AfterRemoveLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the afterRemoveLiquidity hook, indicating the transaction should revert.\"}],\"AfterSwapHookFailed()\":[{\"notice\":\"The pool has returned false to the afterSwap hook, indicating the transaction should revert.\"}],\"AllZeroInputs()\":[{\"notice\":\"No valid input was given for a single token operation.\"}],\"AllowanceExpired(uint256)\":[{\"notice\":\"Thrown when an allowance on a token has expired.\"}],\"AmountGivenZero()\":[{\"notice\":\"The user tried to swap zero tokens.\"}],\"AmountInAboveMax(address,uint256,uint256)\":[{\"notice\":\"A required amountIn exceeds the maximum limit specified for the operation.\"}],\"AmountOutBelowMin(address,uint256,uint256)\":[{\"notice\":\"The actual amount out is below the minimum limit specified for the operation.\"}],\"AmpUpdateAlreadyStarted()\":[{\"notice\":\"Amplification update operations must be done one at a time.\"}],\"AmpUpdateDurationTooShort()\":[{\"notice\":\"The amplification change duration is too short.\"}],\"AmpUpdateRateTooFast()\":[{\"notice\":\"The amplification change rate is too fast.\"}],\"AmplificationFactorTooHigh()\":[{\"notice\":\"The amplification factor is above the maximum of the range (1 - 5000).\"}],\"AmplificationFactorTooLow()\":[{\"notice\":\"The amplification factor is below the minimum of the range (1 - 5000).\"}],\"BalanceNotSettled()\":[{\"notice\":\"A transient accounting operation completed with outstanding token deltas.\"}],\"BeforeAddLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeAddLiquidity hook, indicating the transaction should revert.\"}],\"BeforeInitializeHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeInitialize hook, indicating the transaction should revert.\"}],\"BeforeRemoveLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeRemoveLiquidity hook, indicating the transaction should revert.\"}],\"BeforeSwapHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeSwap hook, indicating the transaction should revert.\"}],\"BptAmountInAboveMax(uint256,uint256)\":[{\"notice\":\"The required BPT amount in exceeds the maximum limit specified for the operation.\"}],\"BptAmountOutBelowMin(uint256,uint256)\":[{\"notice\":\"The BPT amount received from adding liquidity is below the minimum specified for the operation.\"}],\"BufferAlreadyInitialized(address)\":[{\"notice\":\"The buffer for the given wrapped token was already initialized.\"}],\"BufferNotInitialized(address)\":[{\"notice\":\"The buffer for the given wrapped token was not initialized.\"}],\"BufferSharesInvalidOwner()\":[{\"notice\":\"Buffer shares were burned from the zero address.\"}],\"BufferSharesInvalidReceiver()\":[{\"notice\":\"Buffer shares were minted to the zero address.\"}],\"BufferTotalSupplyTooLow(uint256)\":[{\"notice\":\"The total supply of a buffer can't be lower than the absolute minimum.\"}],\"CallerIsNotPoolCreator(address,address)\":[{\"notice\":\"Error raised if the wrong account attempts to withdraw pool creator fees.\"}],\"CannotReceiveEth()\":[{\"notice\":\"The contract should not receive ETH.\"}],\"CannotSwapSameToken()\":[{\"notice\":\"The user attempted to swap a token for itself.\"}],\"DoesNotSupportAddLiquidityCustom()\":[{\"notice\":\"Pool does not support adding liquidity with a customized input.\"}],\"DoesNotSupportDonation()\":[{\"notice\":\"Pool does not support adding liquidity through donation.\"}],\"DoesNotSupportRemoveLiquidityCustom()\":[{\"notice\":\"Pool does not support removing liquidity with a customized input.\"}],\"DoesNotSupportUnbalancedLiquidity()\":[{\"notice\":\"Pool does not support adding / removing liquidity with an unbalanced input.\"}],\"DynamicSwapFeeHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeSwap hook, indicating the transaction should revert.\"}],\"FeePrecisionTooHigh()\":[{\"notice\":\"Primary fee percentages result in an aggregate fee that cannot be stored with the required precision.\"}],\"HookAdjustedAmountInAboveMax(address,uint256,uint256)\":[{\"notice\":\"A hook adjusted amountIn exceeds the maximum limit specified for the operation.\"}],\"HookAdjustedAmountOutBelowMin(address,uint256,uint256)\":[{\"notice\":\"The hook adjusted amount out is below the minimum limit specified for the operation.\"}],\"HookAdjustedSwapLimit(uint256,uint256)\":[{\"notice\":\"A hook adjusted amount in or out has exceeded the limit specified in the swap request.\"}],\"HookRegistrationFailed(address,address,address)\":[{\"notice\":\"A hook contract rejected a pool on registration.\"}],\"InputLengthMismatch()\":[{\"notice\":\"Arrays passed to a function and intended to be parallel have different lengths.\"}],\"InsufficientAllowance(uint256)\":[{\"notice\":\"Thrown when an allowance on a token has been depleted.\"}],\"InvalidAddLiquidityKind()\":[{\"notice\":\"Add liquidity kind not supported.\"}],\"InvalidRemoveLiquidityKind()\":[{\"notice\":\"Remove liquidity kind not supported.\"}],\"InvalidToken()\":[{\"notice\":\"Invalid tokens (e.g., zero) cannot be registered.\"}],\"InvalidTokenConfiguration()\":[{\"notice\":\"The data in a TokenConfig struct is inconsistent or unsupported.\"}],\"InvalidTokenDecimals()\":[{\"notice\":\"Tokens with more than 18 decimals are not supported.\"}],\"InvalidTokenType()\":[{\"notice\":\"The token type given in a TokenConfig during pool registration is invalid.\"}],\"InvalidUnderlyingToken(address)\":[{\"notice\":\"A wrapped token reported the zero address as its underlying token asset.\"}],\"LengthMismatch()\":[{\"notice\":\"Thrown when the number of tokens permissioned to a spender does not match the number of tokens being transferred\"}],\"MaxTokens()\":[{\"notice\":\"The token count is above the maximum allowed.\"}],\"MinTokens()\":[{\"notice\":\"The token count is below the minimum allowed.\"}],\"MinWeight()\":[{\"notice\":\"Indicates that one of the pool tokens' weight is below the minimum allowed.\"}],\"MultipleNonZeroInputs()\":[{\"notice\":\"More than one non-zero value was given for a single token operation.\"}],\"NormalizedWeightInvariant()\":[{\"notice\":\"Indicates that the sum of the pool tokens' weights is not FixedPoint.ONE.\"}],\"NotEnoughBufferShares()\":[{\"notice\":\"The user is trying to remove more than their allocated shares from the buffer.\"}],\"NotVaultDelegateCall()\":[{\"notice\":\"The `VaultExtension` contract was called by an account directly.\"}],\"PauseBufferPeriodDurationTooLarge()\":[{\"notice\":\"The caller specified a buffer period longer than the maximum.\"}],\"PercentageAboveMax()\":[{\"notice\":\"A given percentage is above the maximum (usually a value close to FixedPoint.ONE, or 1e18 wei).\"}],\"PoolAlreadyInitialized(address)\":[{\"notice\":\"A pool has already been initialized. `initialize` may only be called once.\"}],\"PoolAlreadyRegistered(address)\":[{\"notice\":\"A pool has already been registered. `registerPool` may only be called once.\"}],\"PoolCreatorFeePercentageTooHigh()\":[{\"notice\":\"Error raised when the pool creator swap or yield fee percentage exceeds the maximum allowed value.\"}],\"PoolCreatorNotRegistered(address)\":[{\"notice\":\"Error raised if there is no pool creator on a withdrawal attempt from the given pool.\"}],\"PoolInRecoveryMode(address)\":[{\"notice\":\"Cannot enable recovery mode when already enabled.\"}],\"PoolNotInRecoveryMode(address)\":[{\"notice\":\"Cannot disable recovery mode when not enabled.\"}],\"PoolNotInitialized(address)\":[{\"notice\":\"A referenced pool has not been initialized.\"}],\"PoolNotPaused(address)\":[{\"notice\":\"Governance tried to unpause the Pool when it was not paused.\"}],\"PoolNotRegistered(address)\":[{\"notice\":\"A pool has not been registered.\"}],\"PoolPauseWindowExpired(address)\":[{\"notice\":\"Governance tried to pause a Pool after the pause period expired.\"}],\"PoolPaused(address)\":[{\"notice\":\"A user tried to perform an operation involving a paused Pool.\"}],\"ProtocolFeesExceedTotalCollected()\":[{\"notice\":\"Error raised when there is an overflow in the fee calculation.\"}],\"ProtocolSwapFeePercentageTooHigh()\":[{\"notice\":\"Error raised when the protocol swap fee percentage exceeds the maximum allowed value.\"}],\"ProtocolYieldFeePercentageTooHigh()\":[{\"notice\":\"Error raised when the protocol yield fee percentage exceeds the maximum allowed value.\"}],\"QueriesDisabled()\":[{\"notice\":\"A user tried to execute a query operation when they were disabled.\"}],\"QueriesDisabledPermanently()\":[{\"notice\":\"An admin tried to re-enable queries, but they were disabled permanently.\"}],\"QuoteResultSpoofed()\":[{\"notice\":\"Quote reverted with a reserved error code.\"}],\"RouterNotTrusted()\":[{\"notice\":\"An unauthorized Router tried to call a permissioned function (i.e., using the Vault's token allowance).\"}],\"SenderIsNotVault(address)\":[{\"notice\":\"Error indicating the sender is not the Vault (e.g., someone is trying to call a permissioned function).\"}],\"SwapFeePercentageTooHigh()\":[{\"notice\":\"Error raised when the swap fee percentage is greater than the maximum allowed value.\"}],\"SwapFeePercentageTooLow()\":[{\"notice\":\"Error raised when the swap fee percentage is less than the minimum allowed value.\"}],\"SwapLimit(uint256,uint256)\":[{\"notice\":\"An amount in or out has exceeded the limit specified in the swap request.\"}],\"TokenAlreadyRegistered(address)\":[{\"notice\":\"A token was already registered (i.e., it is a duplicate in the pool).\"}],\"TokenNotRegistered(address)\":[{\"notice\":\"The user attempted to operate with a token that is not in the pool.\"}],\"TokensMismatch(address,address,address)\":[{\"notice\":\"The token list passed into an operation does not match the pool tokens in the pool.\"}],\"TokensNotSorted()\":[{\"notice\":\"The tokens supplied to an array argument were not sorted in numerical order.\"}],\"TradeAmountTooSmall()\":[{\"notice\":\"The amount given or calculated for an operation is below the minimum limit.\"}],\"VaultBuffersArePaused()\":[{\"notice\":\"Buffer operation attempted while vault buffers are paused.\"}],\"VaultIsNotUnlocked()\":[{\"notice\":\"A user called a Vault function (swap, add/remove liquidity) outside the lock context.\"}],\"VaultNotPaused()\":[{\"notice\":\"Governance tried to unpause the Vault when it was not paused.\"}],\"VaultPauseWindowDurationTooLarge()\":[{\"notice\":\"The caller specified a pause window period longer than the maximum.\"}],\"VaultPauseWindowExpired()\":[{\"notice\":\"Governance tried to pause the Vault after the pause period expired.\"}],\"VaultPaused()\":[{\"notice\":\"A user tried to perform an operation while the Vault was paused.\"}],\"WrapAmountTooSmall(address)\":[{\"notice\":\"The amount given to wrap/unwrap was too small, which can introduce rounding issues.\"}],\"WrongProtocolFeeControllerDeployment()\":[{\"notice\":\"The `ProtocolFeeController` contract was configured with an incorrect Vault address.\"}],\"WrongUnderlyingToken(address,address)\":[{\"notice\":\"The wrapped token asset does not match the underlying token.\"}],\"WrongVaultAdminDeployment()\":[{\"notice\":\"The `VaultAdmin` contract was configured with an incorrect Vault address.\"}],\"WrongVaultExtensionDeployment()\":[{\"notice\":\"The `VaultExtension` contract was configured with an incorrect Vault address.\"}]},\"events\":{\"UnorderedNonceInvalidation(address,uint256,uint256)\":{\"notice\":\"Emits an event when the owner successfully invalidates an unordered nonce.\"}},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/balancer-v3/lib/BalancerV3Errors.sol\":\"BalancerV3Errors\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf\",\"dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/balancer-v3/BalancerV3SwapAdapter.sol\":{\"keccak256\":\"0x953286f17c621bef769154e4d735e11350ddf439f4a7bb136b875ef11bcc1abc\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://916037f7d6a973f8ef83f8509e74fc9dcf4dcf34ef74836b8579353b45b4fd0a\",\"dweb:/ipfs/Qma94Vf221Q9BaYuNY2WvKJcaAQ8frZpyf5tH7LBuepfba\"]},\"src/balancer-v3/lib/BalancerCustomWrapHelpers.sol\":{\"keccak256\":\"0x0f6b335d2add29c075bdf0b4d596dfdfc1d46fd69eafa009b0d9141256ff1a30\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://94a73f885d3a4cf266128dcaf9bd276d80e54ee4fb580741213c58165c844313\",\"dweb:/ipfs/QmX2tRhSy3rYdSzViMgM1X9ResBMALBA21jhN7gTE7g2P8\"]},\"src/balancer-v3/lib/BalancerERC20Helpers.sol\":{\"keccak256\":\"0x40f4571feb1755549e172a1157af748b724aeff1a62edf118a625afe9651bdbd\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d9a7bc8172d05945a6262455c12cb8296fbe906ae20018fe2e4646d1051a63ec\",\"dweb:/ipfs/QmTFG25A5NR49dGcRsUkxB4g9PiKcxapPVZGu6GLvMPgb8\"]},\"src/balancer-v3/lib/BalancerERC4626Helpers.sol\":{\"keccak256\":\"0xf19e1a229b1cb569617e28ba1bc8d1b2cfb403d3164018610040ab439e65c211\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://2493d7748eedfc1ad1bed4bd6b16ede7f5e1b69f1ecf4176851a857f39b018ea\",\"dweb:/ipfs/QmeogRJKPvPGBTdJvciejWGMWy1tik8e817uPcp5Dp2Wn7\"]},\"src/balancer-v3/lib/BalancerInterfaces.sol\":{\"keccak256\":\"0xff32e4111c1954881e6c503c53c3406ae5b225f54ce0edf633d357a77c5a56c8\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://06ef20a4676393fb14947b7abdc6d06c19ae2249cfb508044e95fbc957c0f701\",\"dweb:/ipfs/QmaCws32eR57w1BmEZDFaV3kbEbyzQta8MP8eSL2EZcvKZ\"]},\"src/balancer-v3/lib/BalancerStorage.sol\":{\"keccak256\":\"0x16d74f81b9a15386060130b04b8be2aec55fb4ec20233742db16d2d82d6d748b\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9455e4e3a1dd98165117502ce53e12ba5787b1d5646df9873b93b1cfe3e1136\",\"dweb:/ipfs/QmQ8VohFLoeGCVziyD3iYr1Gynf52gf9VgEoM97TnyRE48\"]},\"src/balancer-v3/lib/BalancerSwapHelpers.sol\":{\"keccak256\":\"0x48d7f787de65a4671de1a49208130919b3fc7b17786c6eddf1897af122572f88\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://17ff1db9264aebdae9f74bb587a40870ace02d4d90bb083e128af48af8500b76\",\"dweb:/ipfs/QmPa9t3PmbRYZVzYoHyRVVjBZD9gs55pUNfF9hhuni5AQP\"]},\"src/balancer-v3/lib/BalancerV3Errors.sol\":{\"keccak256\":\"0x18480a94df48406540188876ec5381f4e2240013c893df0c4d74d5cfd0e7cbdb\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ae1e8647ab344c5ebad993497bccd6ad17dcf9533fb3646a333bfe99a66e82a9\",\"dweb:/ipfs/QmS5oeSX7WQttqNc1rZ7MNuA7VkffaFwMZk91j1RNC4ykY\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/libraries/CustomBytesAppend.sol\":{\"keccak256\":\"0x744de639d3f68d46b09e6f5f81ac003f92616f270007cc28778538894723276d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9278b5ff65908b5377e7b875151204ca6de587091c7bdd9f2f4f7d75b3d4d9e5\",\"dweb:/ipfs/QmPopj1aEWXtPg6CwKKAeEWBg1FBydPpQUM7VaFSvKvPU5\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"AfterAddLiquidityHookFailed"},{"inputs":[],"type":"error","name":"AfterInitializeHookFailed"},{"inputs":[],"type":"error","name":"AfterRemoveLiquidityHookFailed"},{"inputs":[],"type":"error","name":"AfterSwapHookFailed"},{"inputs":[],"type":"error","name":"AllZeroInputs"},{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"}],"type":"error","name":"AllowanceExpired"},{"inputs":[],"type":"error","name":"AmountGivenZero"},{"inputs":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"type":"error","name":"AmountInAboveMax"},{"inputs":[{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"type":"error","name":"AmountOutBelowMin"},{"inputs":[],"type":"error","name":"AmpUpdateAlreadyStarted"},{"inputs":[],"type":"error","name":"AmpUpdateDurationTooShort"},{"inputs":[],"type":"error","name":"AmpUpdateRateTooFast"},{"inputs":[],"type":"error","name":"AmplificationFactorTooHigh"},{"inputs":[],"type":"error","name":"AmplificationFactorTooLow"},{"inputs":[],"type":"error","name":"AssetBoundsExceeded"},{"inputs":[],"type":"error","name":"BalanceNotSettled"},{"inputs":[],"type":"error","name":"BeforeAddLiquidityHookFailed"},{"inputs":[],"type":"error","name":"BeforeInitializeHookFailed"},{"inputs":[],"type":"error","name":"BeforeRemoveLiquidityHookFailed"},{"inputs":[],"type":"error","name":"BeforeSwapHookFailed"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"type":"error","name":"BptAmountInAboveMax"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"type":"error","name":"BptAmountOutBelowMin"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"type":"error","name":"BufferAlreadyInitialized"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"type":"error","name":"BufferNotInitialized"},{"inputs":[],"type":"error","name":"BufferSharesInvalidOwner"},{"inputs":[],"type":"error","name":"BufferSharesInvalidReceiver"},{"inputs":[{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"type":"error","name":"BufferTotalSupplyTooLow"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"pool","type":"address"}],"type":"error","name":"CallerIsNotPoolCreator"},{"inputs":[],"type":"error","name":"CannotReceiveEth"},{"inputs":[],"type":"error","name":"CannotSwapSameToken"},{"inputs":[],"type":"error","name":"DoesNotSupportAddLiquidityCustom"},{"inputs":[],"type":"error","name":"DoesNotSupportDonation"},{"inputs":[],"type":"error","name":"DoesNotSupportRemoveLiquidityCustom"},{"inputs":[],"type":"error","name":"DoesNotSupportUnbalancedLiquidity"},{"inputs":[],"type":"error","name":"DynamicSwapFeeHookFailed"},{"inputs":[],"type":"error","name":"ExcessiveInvalidation"},{"inputs":[],"type":"error","name":"FeePrecisionTooHigh"},{"inputs":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"type":"error","name":"HookAdjustedAmountInAboveMax"},{"inputs":[{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"type":"error","name":"HookAdjustedAmountOutBelowMin"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"type":"error","name":"HookAdjustedSwapLimit"},{"inputs":[{"internalType":"address","name":"poolHooksContract","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"poolFactory","type":"address"}],"type":"error","name":"HookRegistrationFailed"},{"inputs":[],"type":"error","name":"InputLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"type":"error","name":"InsufficientAllowance"},{"inputs":[],"type":"error","name":"InsufficientEth"},{"inputs":[],"type":"error","name":"InvalidAddLiquidityKind"},{"inputs":[{"internalType":"uint256","name":"maxAmount","type":"uint256"}],"type":"error","name":"InvalidAmount"},{"inputs":[],"type":"error","name":"InvalidRemoveLiquidityKind"},{"inputs":[],"type":"error","name":"InvalidToken"},{"inputs":[],"type":"error","name":"InvalidTokenConfiguration"},{"inputs":[],"type":"error","name":"InvalidTokenDecimals"},{"inputs":[],"type":"error","name":"InvalidTokenType"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"type":"error","name":"InvalidUnderlyingToken"},{"inputs":[{"internalType":"uint256","name":"issuedShares","type":"uint256"},{"internalType":"uint256","name":"minIssuedShares","type":"uint256"}],"type":"error","name":"IssuedSharesBelowMin"},{"inputs":[],"type":"error","name":"LengthMismatch"},{"inputs":[],"type":"error","name":"MaxTokens"},{"inputs":[],"type":"error","name":"MinTokens"},{"inputs":[],"type":"error","name":"MinWeight"},{"inputs":[],"type":"error","name":"MultipleNonZeroInputs"},{"inputs":[],"type":"error","name":"NormalizedWeightInvariant"},{"inputs":[],"type":"error","name":"NotEnoughBufferShares"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"expectedUnderlyingAmount","type":"uint256"},{"internalType":"uint256","name":"actualUnderlyingAmount","type":"uint256"}],"type":"error","name":"NotEnoughUnderlying"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"expectedWrappedAmount","type":"uint256"},{"internalType":"uint256","name":"actualWrappedAmount","type":"uint256"}],"type":"error","name":"NotEnoughWrapped"},{"inputs":[],"type":"error","name":"NotStaticCall"},{"inputs":[],"type":"error","name":"NotVaultDelegateCall"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"type":"error","name":"OnlyPauseGuardian"},{"inputs":[],"type":"error","name":"PauseBufferPeriodDurationTooLarge"},{"inputs":[],"type":"error","name":"PercentageAboveMax"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"type":"error","name":"PoolAddressMismatch"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"type":"error","name":"PoolAlreadyInitialized"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"type":"error","name":"PoolAlreadyRegistered"},{"inputs":[],"type":"error","name":"PoolCreatorFeePercentageTooHigh"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"type":"error","name":"PoolCreatorNotRegistered"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"type":"error","name":"PoolInRecoveryMode"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"type":"error","name":"PoolNotInRecoveryMode"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"type":"error","name":"PoolNotInitialized"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"type":"error","name":"PoolNotPaused"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"type":"error","name":"PoolNotRegistered"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"type":"error","name":"PoolPauseWindowExpired"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"type":"error","name":"PoolPaused"},{"inputs":[],"type":"error","name":"ProtocolFeesExceedTotalCollected"},{"inputs":[],"type":"error","name":"ProtocolSwapFeePercentageTooHigh"},{"inputs":[],"type":"error","name":"ProtocolYieldFeePercentageTooHigh"},{"inputs":[],"type":"error","name":"QueriesDisabled"},{"inputs":[],"type":"error","name":"QueriesDisabledPermanently"},{"inputs":[],"type":"error","name":"QuoteResultSpoofed"},{"inputs":[],"type":"error","name":"RouterNotTrusted"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"SenderIsNotVault"},{"inputs":[],"type":"error","name":"StandardPoolWithCreator"},{"inputs":[],"type":"error","name":"StaticATokenInvalidZeroShares"},{"inputs":[],"type":"error","name":"SwapDeadline"},{"inputs":[],"type":"error","name":"SwapFeePercentageTooHigh"},{"inputs":[],"type":"error","name":"SwapFeePercentageTooLow"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"type":"error","name":"SwapLimit"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"type":"error","name":"TokenAlreadyRegistered"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"type":"error","name":"TokenNotRegistered"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"expectedToken","type":"address"},{"internalType":"address","name":"actualToken","type":"address"}],"type":"error","name":"TokensMismatch"},{"inputs":[],"type":"error","name":"TokensNotSorted"},{"inputs":[],"type":"error","name":"TradeAmountTooSmall"},{"inputs":[],"type":"error","name":"VaultBuffersArePaused"},{"inputs":[],"type":"error","name":"VaultIsNotUnlocked"},{"inputs":[],"type":"error","name":"VaultNotPaused"},{"inputs":[],"type":"error","name":"VaultPauseWindowDurationTooLarge"},{"inputs":[],"type":"error","name":"VaultPauseWindowExpired"},{"inputs":[],"type":"error","name":"VaultPaused"},{"inputs":[],"type":"error","name":"VaultQueriesDisabled"},{"inputs":[],"type":"error","name":"WeightedPoolBptRateUnsupported"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"type":"error","name":"WrapAmountTooSmall"},{"inputs":[],"type":"error","name":"WrongProtocolFeeControllerDeployment"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"underlyingToken","type":"address"}],"type":"error","name":"WrongUnderlyingToken"},{"inputs":[],"type":"error","name":"WrongVaultAdminDeployment"},{"inputs":[],"type":"error","name":"WrongVaultExtensionDeployment"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"uint256","name":"word","type":"uint256","indexed":false},{"internalType":"uint256","name":"mask","type":"uint256","indexed":false}],"type":"event","name":"UnorderedNonceInvalidation","anonymous":false}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/balancer-v3/lib/BalancerV3Errors.sol":"BalancerV3Errors"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol":{"keccak256":"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06","urls":["bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf","dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/balancer-v3/BalancerV3SwapAdapter.sol":{"keccak256":"0x953286f17c621bef769154e4d735e11350ddf439f4a7bb136b875ef11bcc1abc","urls":["bzz-raw://916037f7d6a973f8ef83f8509e74fc9dcf4dcf34ef74836b8579353b45b4fd0a","dweb:/ipfs/Qma94Vf221Q9BaYuNY2WvKJcaAQ8frZpyf5tH7LBuepfba"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerCustomWrapHelpers.sol":{"keccak256":"0x0f6b335d2add29c075bdf0b4d596dfdfc1d46fd69eafa009b0d9141256ff1a30","urls":["bzz-raw://94a73f885d3a4cf266128dcaf9bd276d80e54ee4fb580741213c58165c844313","dweb:/ipfs/QmX2tRhSy3rYdSzViMgM1X9ResBMALBA21jhN7gTE7g2P8"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerERC20Helpers.sol":{"keccak256":"0x40f4571feb1755549e172a1157af748b724aeff1a62edf118a625afe9651bdbd","urls":["bzz-raw://d9a7bc8172d05945a6262455c12cb8296fbe906ae20018fe2e4646d1051a63ec","dweb:/ipfs/QmTFG25A5NR49dGcRsUkxB4g9PiKcxapPVZGu6GLvMPgb8"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerERC4626Helpers.sol":{"keccak256":"0xf19e1a229b1cb569617e28ba1bc8d1b2cfb403d3164018610040ab439e65c211","urls":["bzz-raw://2493d7748eedfc1ad1bed4bd6b16ede7f5e1b69f1ecf4176851a857f39b018ea","dweb:/ipfs/QmeogRJKPvPGBTdJvciejWGMWy1tik8e817uPcp5Dp2Wn7"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerInterfaces.sol":{"keccak256":"0xff32e4111c1954881e6c503c53c3406ae5b225f54ce0edf633d357a77c5a56c8","urls":["bzz-raw://06ef20a4676393fb14947b7abdc6d06c19ae2249cfb508044e95fbc957c0f701","dweb:/ipfs/QmaCws32eR57w1BmEZDFaV3kbEbyzQta8MP8eSL2EZcvKZ"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerStorage.sol":{"keccak256":"0x16d74f81b9a15386060130b04b8be2aec55fb4ec20233742db16d2d82d6d748b","urls":["bzz-raw://e9455e4e3a1dd98165117502ce53e12ba5787b1d5646df9873b93b1cfe3e1136","dweb:/ipfs/QmQ8VohFLoeGCVziyD3iYr1Gynf52gf9VgEoM97TnyRE48"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerSwapHelpers.sol":{"keccak256":"0x48d7f787de65a4671de1a49208130919b3fc7b17786c6eddf1897af122572f88","urls":["bzz-raw://17ff1db9264aebdae9f74bb587a40870ace02d4d90bb083e128af48af8500b76","dweb:/ipfs/QmPa9t3PmbRYZVzYoHyRVVjBZD9gs55pUNfF9hhuni5AQP"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerV3Errors.sol":{"keccak256":"0x18480a94df48406540188876ec5381f4e2240013c893df0c4d74d5cfd0e7cbdb","urls":["bzz-raw://ae1e8647ab344c5ebad993497bccd6ad17dcf9533fb3646a333bfe99a66e82a9","dweb:/ipfs/QmS5oeSX7WQttqNc1rZ7MNuA7VkffaFwMZk91j1RNC4ykY"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/libraries/CustomBytesAppend.sol":{"keccak256":"0x744de639d3f68d46b09e6f5f81ac003f92616f270007cc28778538894723276d","urls":["bzz-raw://9278b5ff65908b5377e7b875151204ca6de587091c7bdd9f2f4f7d75b3d4d9e5","dweb:/ipfs/QmPopj1aEWXtPg6CwKKAeEWBg1FBydPpQUM7VaFSvKvPU5"],"license":"MIT"}},"version":1},"id":49} \ No newline at end of file diff --git a/evm/out/BalancerV3SwapAdapter.sol/BalancerV3SwapAdapter.json b/evm/out/BalancerV3SwapAdapter.sol/BalancerV3SwapAdapter.json deleted file mode 100644 index 2f5de5b..0000000 --- a/evm/out/BalancerV3SwapAdapter.sol/BalancerV3SwapAdapter.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"vault_","type":"address","internalType":"address payable"},{"name":"_router","type":"address","internalType":"address"},{"name":"_permit2","type":"address","internalType":"address"},{"name":"_WETH_ADDRESS","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"getCapabilities","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"capabilities","type":"uint8[]","internalType":"enum ISwapAdapterTypes.Capability[]"}],"stateMutability":"pure"},{"type":"function","name":"getLimits","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"}],"outputs":[{"name":"limits","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getPoolIds","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"pure"},{"type":"function","name":"getTokens","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"price","inputs":[{"name":"_poolId","type":"bytes32","internalType":"bytes32"},{"name":"_sellToken","type":"address","internalType":"address"},{"name":"_buyToken","type":"address","internalType":"address"},{"name":"_specifiedAmounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"_prices","type":"tuple[]","internalType":"struct ISwapAdapterTypes.Fraction[]","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"swap","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"},{"name":"side","type":"uint8","internalType":"enum ISwapAdapterTypes.OrderSide"},{"name":"specifiedAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"trade","type":"tuple","internalType":"struct ISwapAdapterTypes.Trade","components":[{"name":"calculatedAmount","type":"uint256","internalType":"uint256"},{"name":"gasUsed","type":"uint256","internalType":"uint256"},{"name":"price","type":"tuple","internalType":"struct ISwapAdapterTypes.Fraction","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"nonpayable"},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LimitExceeded","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotImplemented","inputs":[{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"Unavailable","inputs":[{"name":"reason","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x610100346101b757601f6150b538819003918201601f19168301916001600160401b038311848410176101bb578084926080946040528339810103126101b75780516001600160a01b03811691908290036101b757610060602082016101cf565b6100786060610071604085016101cf565b93016101cf565b6080939093526001600160a01b031660a05260e05260c052604051614ed190816101e48239608051818181609a01528181610810015281816122cb01528181612ba00152818161327f0152818161394b0152613dc8015260a0518181816109ba01528181610b1701528181610b9201528181610e5301528181610f2e015281816110030152818161113d015281816112f201528181611656015281816118a70152818161197b01528181611dd801528181611eea0152613ebb015260c05181818161095501528181610c6601528181610ded0152818161107801528181611599015281816115ca015281816116bf015281816116f701528181611c3001528181611c6401528181613fc101528181613ff7015261432e015260e051818181610bc601528181610fa901528181611109015281816112bf01526115f90152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101b75756fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f3560e01c90816323eeca01146104c45750806348bd7dfd146104175780638307c655146103b1578063a9270fbe14610356578063aad6e488146101b75763ecbbc0331461006a575f61000f565b346101b35760203660031901126101b35760405163ca4f280360e01b81526004803560601c908201525f816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156101a8575f91610186575b508051906100f86100e283610604565b926100f060405194856105e3565b808452610604565b602083019190601f19013683375f5b8151811015610138576001906001600160a01b03610125828561065c565b5116610131828761065c565b5201610107565b505090604051918291602083019060208452518091526040830191905f5b818110610164575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610156565b6101a291503d805f833e61019a81836105e3565b8101906107bb565b5f6100d2565b6040513d5f823e3d90fd5b5f80fd5b346101b35760803660031901126101b3576004356101d3610518565b906101dc61052e565b91606435916001600160401b0383116101b357366023840112156101b35782600401359261020984610604565b9361021760405195866105e3565b8085526024602086019160051b830101913683116101b357602401905b8282106103465750505082519361024a85610604565b9461025860405196876105e3565b808652610267601f1991610604565b015f5b8181106103235750505f5b84518110156102d2578061028b6001928761065c565b51610294610670565b506102a181858888613d9d565b90604051916102af8361057e565b825260208201526102c0828961065c565b526102cb818861065c565b5001610275565b856040518091602082016020835281518091526020604084019201905f5b8181106102fe575050500390f35b82518051855260209081015181860152869550604090940193909201916001016102f0565b6020906040516103328161057e565b5f81525f8382015282828a0101520161026a565b8135815260209182019101610234565b346101b35761036d61036736610544565b916122ab565b6040518091602082016020835281518091526020604084019201905f5b818110610398575050500390f35b825184528594506020938401939092019160010161038a565b346101b35760a03660031901126101b3576103ca610518565b6103d261052e565b6064359160028310156101b3576080926103f292608435926004356106a9565b6020604080519280518452828101518385015201518051604084015201516060820152f35b346101b35761042536610544565b5050506040516104366080826105e3565b60038152602081016060368237600161044e8361061b565b52600261045a8361063c565b5260086104668361064c565b52604051906020820192602083525180935260408201905f935b80851061048d5783830384f35b9091825190600a8210156104b05760208160019382935201930194019390610480565b634e487b7160e01b5f52602160045260245ffd5b346101b35760403660031901126101b357631d04569d60e21b815260206004820181905260248201527f42616c616e636572563353776170416461707465722e676574506f6f6c4964736044820152606490fd5b602435906001600160a01b03821682036101b357565b604435906001600160a01b03821682036101b357565b60609060031901126101b357600435906024356001600160a01b03811681036101b357906044356001600160a01b03811681036101b35790565b604081019081106001600160401b0382111761059957604052565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b0382111761059957604052565b608081019081106001600160401b0382111761059957604052565b90601f801991011681019081106001600160401b0382111761059957604052565b6001600160401b0381116105995760051b60200190565b8051156106285760200190565b634e487b7160e01b5f52603260045260245ffd5b8051600110156106285760400190565b8051600210156106285760600190565b80518210156106285760209160051b010190565b6040519061067d8261057e565b5f6020838281520152565b9190820391821161069557565b634e487b7160e01b5f52601160045260245ffd5b919493929094604051956106bc876105ad565b5f87525f602088015260408701966040516106d68161057e565b5f81525f602082015288528097861561072957505061070693926106fd9286925a956107ed565b85525a90610688565b60208401528251906040519161071b8361057e565b825260208201526040830152565b9550959650505050506040519061073f8261057e565b5f8252600160208301525290565b9080601f830112156101b35781519061076582610604565b9261077360405194856105e3565b82845260208085019360051b8201019182116101b357602001915b81831061079b5750505090565b82516001600160a01b03811681036101b35781526020928301920161078e565b906020828203126101b35781516001600160401b0381116101b3576107e0920161074d565b90565b600211156104b057565b60405163ca4f280360e01b8152606082901c600482015291945f949385846024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9384156101a8575f9461228f575b506001600160a01b038716968715958615959091905f9081898961227e575b1561220a575050506001805b8180612203575b156110bf5750505060019061088e816107e3565b03610d95576001600160a01b03168015928515610d21578647955b8781610d1a575b6108b8613777565b506108c1613777565b506108ca613699565b50479015610cad575b604051936108e0856105ad565b60601c84528460208501528260408501526108f9613737565b936109038561061b565b5261090d8461061b565b506040519361091b856105c8565b8b85526020850152604084015284606084015261093661379b565b926109408461061b565b5261094a8361061b565b50858815610b7c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166109868461061b565b51525b8715610aed576109b5928891610ae5575b604051634758db2f60e11b815293849283926004840161303b565b0381887f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1908115610ada5791610a2294939188938491610ab5575b50935b15610aa9575090808080610a1d94335af1610a176130b9565b506130f7565b61061b565b5193849215610a92575082610a3981938293610688565b335af1610a446130b9565b5015610a4d5790565b60405162461bcd60e51b815260206004820152601960248201527f4661696c656420746f207472616e7366657220455448283229000000000000006044820152606490fd5b916107e09350610aa191610688565b90339061468c565b610a1d9250339061468c565b610ad191503d8086833e610ac981836105e3565b810190612e51565b9150505f6109fb565b6040513d89823e3d90fd5b86915061099a565b610b12928291610ae557604051634758db2f60e11b815293849283926004840161303b565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1908115610ada5791610a2294939188938491610b5f575b50936109fe565b610b7391503d8086833e610ac981836105e3565b9150505f610b58565b909150610c64575b610b908630338c614648565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610bc4818b614419565b7f0000000000000000000000000000000000000000000000000000000000000000610bef818c614419565b6001600160a01b0316803b15610c6057610c23918a918c836040518096819582946387517c4560e01b845260048401612dc8565b03925af18015610c5557908991610c3c575b5090610989565b81610c46916105e3565b610c5157875f610c35565b8780fd5b6040513d8b823e3d90fd5b8980fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166020610ca581610c9d8661061b565b51015161061b565b510152610b84565b506040516370a0823160e01b81523360048201529091506020816024818d5afa908115610c5557908992918391610ce5575b506108d3565b9250506020823d602011610d12575b81610d01602093836105e3565b810103126101b3578891515f610cdf565b3d9150610cf4565b50856108b0565b6040516370a0823160e01b81523360048201526020816024818c5afa908115610d8a579088918291610d55575b50956108a9565b9150506020813d602011610d82575b81610d71602093836105e3565b810103126101b3578790515f610d4e565b3d9150610d64565b6040513d8a823e3d90fd5b9596956001600160a01b031680159594909392610dc2908290849087908c90886110b7575b60601c614aaf565b505097610dcd61379b565b98610dd78a61061b565b52610de18961061b565b50868215610f965750507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610e1e8961061b565b51525b8015610eff5790610e4f978593610ef7575b60405180998194829363286f580d60e01b8452600484016131c6565b03917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af18015610eec57610eb494958391610ecf575b50925b15610eb85750808080610a1d93610ea88661061b565b51335af1610a176130b9565b5190565b610a1d9150610ec68361061b565b5190339061468c565b610ee391503d8085833e610ac981836105e3565b9150505f610e8f565b6040513d84823e3d90fd5b869250610e33565b50508290610f29968291610f8e575b60405163286f580d60e01b81529788928392600484016131c6565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af18015610eec57610eb494958391610f71575b5092610e92565b610f8591503d8085833e610ac981836105e3565b9150505f610f6a565b859150610f0e565b611076575b610fa783303384614648565b7f0000000000000000000000000000000000000000000000000000000000000000610fd384828461458c565b6001600160a01b031690813b15611072576040516387517c4560e01b8152918791839190829084908290611035907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169060048401612dc8565b03925af180156110675790869161104e575b5050610e21565b81611058916105e3565b61106357845f611047565b8480fd5b6040513d88823e3d90fd5b8680fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660206110af81610c9d8d61061b565b510152610f9b565b8b9450610dba565b819a98939695949a9792971590816121fa575b5015611564575050506110e98260601c8886613251565b95919390946110f7816107e3565b611272576111078330338a614648565b7f000000000000000000000000000000000000000000000000000000000000000061113384828a61458c565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811698911690813b15610c60578861118d928b92836040518096819582946387517c4560e01b845260048401612dc8565b03925af18015610c555791899796959493918b9361124d575b50916111bd9593916111ed9997959360601c614c68565b90604051916111cd6020846105e3565b8383528360405180968195829463286f580d60e01b845260048401613194565b03925af1918215611241579161120f91836107e09492611223575b505061061b565b5191829033906001600160a01b031661468c565b61123792503d8091833e610ac981836105e3565b9150505f80611208565b604051903d90823e3d90fd5b61126091935097809294959697986105e3565b610c515787959493929189915f6111a6565b929094879492989697506112846136b7565b92604051966370a0823160e01b88523360048901526020886024818d5afa978815610ada578798611530575b506112bd8830338d614648565b7f00000000000000000000000000000000000000000000000000000000000000006112e8818c614419565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116959116803b1561152c578886611341928e836040518096819582946387517c4560e01b845260048401612dc8565b03925af18015610c5557908991611517575b505060038110156115035791879594939160018d94145f146114a25750906113b5838361145599611388836113d19897614816565b9150506113948a61061b565b5261139e8961061b565b506001600160a01b0385811692169060601c6149e1565b9150506113c18661063c565b526113cb8561063c565b506146c8565b9150506113dd8361064c565b526113e78261064c565b506113f061379b565b91604051906113fe826105c8565b898252602082015286604082015289606082015261141b8361061b565b526114258261061b565b50604051916114356020846105e3565b83835283604051809681958294634758db2f60e11b845260048401612fc1565b03925af19182156112415761147f6107e0969593611498959383611493949261122357505061061b565b5196879333906001600160a01b031661468c565b610688565b9033903090614648565b9683926114b56114e2956114559a6146c8565b9150506114c18861061b565b526114cb8761061b565b506001600160a01b0390811692169060601c6149e1565b9150506114ee8361063c565b526114f88261063c565b506113d18988614816565b634e487b7160e01b88526021600452602488fd5b81611521916105e3565b610c5157875f611353565b8880fd5b9097506020813d60201161155c575b8161154c602093836105e3565b810103126101b35751965f6112b0565b3d915061153f565b89975061157f9060019a888760609a98999596979a1c612b73565b99909161158b816107e3565b14908694845f146121f457507f0000000000000000000000000000000000000000000000000000000000000000945b6001600160a01b0389166121ed577f0000000000000000000000000000000000000000000000000000000000000000935b8381156121e057612171575b7f000000000000000000000000000000000000000000000000000000000000000061162c83826001600160a01b038b1661458c565b6001600160a01b0316803b156101b3576040516387517c4560e01b8152905f9082908183816116887f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168f60048401612dc8565b03925af180156101a85761215c575b505b83611c0957611bee575b506060998a956001600160a01b0381161591908215611be857507f0000000000000000000000000000000000000000000000000000000000000000945b6001600160a01b0381169c8d15918215611be257507f0000000000000000000000000000000000000000000000000000000000000000945b6005811015611bce57918d93918360018e95145f14611aad5750505050505061173f6136f7565b6040516338d52e0f60e01b81529097906020816004816001600160a01b0388165afa908115611aa257918a93918d9695938791611a4a575b506117af94939261179d92909185916001600160a01b03918216918b169060601c614aaf565b9150506117a98a61061b565b52614816565b9150506117bb8761063c565b525b156119fa57506117cb61379b565b6040516370a0823160e01b815230600482015290916001600160a01b031690602081602481855afa908115610c55579089959493929186916119bd575b5061183e939495966040519261181d846105c8565b8352602083015260408201528660608201526118388261061b565b5261061b565b505b15611944576118a3926118836040519261185b6020856105e3565b84845260405163286f580d60e01b81526080600482015295869485938493608485019061313c565b5f1960248501526001604485015283810360031901606485015290612f9d565b03917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af190811561193957906118ea91849161191c575b5061061b565b519283916001600160a01b031615611908576107e09250339061468c565b50908080806107e094335af1610a176130b9565b61193091503d8086833e610ac981836105e3565b9150505f6118e4565b6040513d85823e3d90fd5b6119769250604051906119586020836105e3565b82825260405163286f580d60e01b8152938492839260048401613194565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af190811561193957906118ea91849161191c575061061b565b93949550506020833d6020116119f2575b816119db602093836105e3565b810103126101b3579151889493929061183e611808565b3d91506119ce565b939250611a0561379b565b9260405191611a13836105c8565b6001600160a01b0316825260208201526040810185905260016060820152611a3a8361061b565b52611a448261061b565b50611840565b92945050919394506020813d602011611a9a575b81611a6b602093836105e3565b81010312611a96579261179d6117af938b80948f9897611a8a90612b13565b92949596509250611777565b8b80fd5b3d9150611a5e565b6040513d8e823e3d90fd5b859897939596949650600281145f14611b13575050505090611aef8392611b0194611ad66136f7565b9b6001600160a01b0385811691908b169060601c614aaf565b915050611afb8a61061b565b52614908565b915050611b0d8761063c565b526117bd565b929b9195949350909160038103611b6357505090611b01939291611b356136f7565b9a611b408484614816565b915050611b4c8d61061b565b526001600160a01b0390811692169060601c614aaf565b6004919b9594935014611b7a575b505050506117bd565b611bb8939950611b886136f7565b99611b938389614908565b915050611b9f8c61061b565b526001600160a01b03908116919088169060601c614aaf565b915050611bc48761063c565b525f808881611b71565b634e487b7160e01b8e52602160045260248efd5b94611718565b946116e0565b611c039030336001600160a01b038916614648565b5f6116a3565b9794918897919496999a9b935047986120db575b6060936001600160a01b038b166120d4577f0000000000000000000000000000000000000000000000000000000000000000945b6001600160a01b0389161580156120cd577f0000000000000000000000000000000000000000000000000000000000000000935b60058110156120b857918f91838f959360018d96145f14611fcf5750505050505050611caf6136f7565b6040516338d52e0f60e01b815290926020826004816001600160a01b0387165afa918215611fc257908c8f928a94611f72575b50611d169492611d0a926001600160a01b0392831615928692811691908b169060601c614aaf565b9150506117a98561061b565b915050611d228261063c565b525b611d2c61379b565b6040516370a0823160e01b815230600482015290936001600160a01b031691602082602481865afa918215611f6757908d95949392918692611f30575b5060405192611d77846105c8565b835260208301526040820152856060820152611d928361061b565b52611d9c8261061b565b5015611eb357611dd49260405191611db56020846105e3565b838352604051809581948293634758db2f60e11b845260048401612fc1565b03917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1908115610d8a578894939291611e1e918691611e9f575061061b565b519788976001600160a01b031615611e865750611e459133906001600160a01b031661468c565b15611e6957506107e092611e5891610688565b9033906001600160a01b031661468c565b80809350611e7b6107e0958294610688565b335af1610a176130b9565b611e9a925080808093335af1610a176130b9565b611e45565b61193091503d8088833e610ac981836105e3565b611ee5925060405190611ec76020836105e3565b828252604051634758db2f60e11b8152938492839260048401612fc1565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1908115610d8a578894939291611e1e918691611e9f575061061b565b955090506020853d602011611f5f575b81611f4d602093836105e3565b810103126101b3578c9451905f611d69565b3d9150611f40565b6040513d8f823e3d90fd5b92505091506020813d602011611fba575b81611f90602093836105e3565b81010312611fb65791611d0a8c898094611fac611d1697612b13565b9496509250611ce2565b8d80fd5b3d9150611f83565b8e604051903d90823e3d90fd5b95969495939492936002820361203057505050505061201261201e939483611ff56136f7565b966001600160a01b039081161592858216918b169060601c614aaf565b915050611afb8561061b565b91505061202a8261063c565b52611d24565b9397929650909493926003820361206857505061201e9495506120516136f7565b9561205c8484614816565b915050611b4c8861061b565b6004929350501461207d575b50505050611d24565b6120a293945061208b6136f7565b946120968389614908565b915050611b9f8761061b565b9150506120ae8261063c565b525f808681612074565b50634e487b7160e01b8f52602160045260248ffd5b8993611c85565b8a94611c51565b6040516370a0823160e01b81523360048201526001600160a01b038b1699506020816024818d5afa8015611f675786908e90612126575b61212192509a30903390614648565b611c1d565b50506020813d602011612154575b81612141602093836105e3565b810103126101b357856121219151612112565b3d9150612134565b612169919b505f906105e3565b5f995f611697565b6040516370a0823160e01b81523360048201529091506020816024816001600160a01b038b165afa9081156101a8575f916121ae575b50906115f7565b90506020813d6020116121d8575b816121c9602093836105e3565b810103126101b357515f6121a7565b3d91506121bc565b1561169957479150611699565b88936115eb565b946115ba565b9050155f6110d2565b508061087a565b5f9b9a9794929b999693919895995b895181101561226c576001600160a01b03612234828c61065c565b51168c810361224b57509050600180915b01612219565b6001600160a01b038c1614612263575b600190612245565b60019c5061225b565b50919396999a90929598949750610873565b506001600160a01b03861615610867565b6122a49194503d805f833e61019a81836105e3565b925f610848565b60405163ca4f280360e01b8152606082811c6004830181905295949391927f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169290915f85602481875afa9485156101a8575f95612af7575b506001600160a01b038216945f908187158015612ae6575b15612a76575050506001805b8180612a6f575b156124725750505050505f604051956123516060886105e3565b6002875260403660208901376024604051809481936333f0703b60e11b835260048301525afa9283156101a8575f915f94612449575b506001600160a01b0316915f5b825181101561244257816001600160a01b036123b0838661065c565b511614612411575b836001600160a01b036123cb838661065c565b5116146123db575b600101612394565b6123e5818661065c565b519060038202918083046003149015171561069557600a600192046124098961063c565b5290506123d3565b61241b818661065c565b5160038102908082046003149015171561069557600a900461243c8861061b565b526123b8565b5050505050565b90935061246891503d805f833e61246081836105e3565b8101906137e8565b509390505f612387565b8196949695929395159081612a66575b50156124a5575050505061249b6107e094958483613251565b949192909361390d565b889550865f9893956124b99395989a612b73565b969094604051946124ca81876105e3565b60028652601f19013660208701376024604051809581936333f0703b60e11b835260048301525afa9586156101a8575f925f97612a41575b505f9460058110156104b0576001810361268e575093966001600160a01b031693505f5b825181101561261b576001600160a01b03612541828561065c565b51168681146125ea575b6040516338d52e0f60e01b81526020816004818a5afa9081156101a8575f916125b1575b506001600160a01b031614612587575b600101612526565b9650612593878761065c565b5160038102908082046003149015171561069557600a90049661257f565b90506020813d82116125e2575b816125cb602093836105e3565b810103126101b3576125dc90612b13565b5f61256f565b3d91506125be565b6125f4828961065c565b5160038102908082046003149015171561069557600a90046126158661061b565b5261254b565b509591945050602091925060246040518094819363ef8b30f760e01b835260048301525afa9081156101a8575f9161265c575b506126588261063c565b5290565b90506020813d602011612686575b81612677602093836105e3565b810103126101b357515f61264e565b3d915061266a565b9397949695949093600281036127875750505f5b825181101561273f576001600160a01b036126bd828561065c565b51168581036126fd57506126d1818761065c565b519060038202918083046003149015171561069557600a600192046126f58a61061b565b525b016126a2565b6001600160a01b03851614612715575b6001906126f7565b9550612721868661065c565b5160038102908082046003149015171561069557600a90049561270d565b5060405163266d6a8360e11b81526004810196909652959493506020925083916024915082906001600160a01b03165afa9081156101a8575f9161265c57506126588261063c565b93965090939092600381036128ab575092946001600160a01b03928316935091909116905f5b815181101561244257836001600160a01b036127c9838561065c565b5116848114612817575b146127e1575b6001016127ad565b6127eb818661065c565b519060038202918083046003149015171561069557600a6001920461280f8961063c565b5290506127d9565b9050612823828761065c565b51906003820291808304600314901517156106955760405163266d6a8360e11b8152600a9092046004830152602082602481885afa80156101a85786925f91612877575b506128718a61061b565b526127d3565b9250506020823d82116128a3575b81612892602093836105e3565b810103126101b3578591515f612867565b3d9150612885565b600491959394979650146128c1575b5050505090565b9294939290916001600160a01b0316905f5b8151811015612a31576001600160a01b036128ee828461065c565b5116838114612a00575b6040516338d52e0f60e01b81526020816004818c5afa9081156101a8575f916129c7575b506001600160a01b031614612934575b6001016128d3565b61293e818561065c565b51906003820291808304600314901517156106955760405163ef8b30f760e01b8152600a90920460048301526020826024818b5afa80156101a8575f90612995575b6001925061298d8761061b565b52905061292c565b506020823d82116129bf575b816129ae602093836105e3565b810103126101b35760019151612980565b3d91506129a1565b90506020813d82116129f8575b816129e1602093836105e3565b810103126101b3576129f290612b13565b5f61291c565b3d91506129d4565b612a0a828661065c565b5160038102908082046003149015171561069557600a9004612a2b8761063c565b526128f8565b505050509091505f8080806128ba565b909650612a599192503d805f833e61246081836105e3565b509291905091955f612502565b9050155f612482565b5080612337565b5f99959391969492999897985b8751811015612ad6576001600160a01b03612a9e828a61065c565b51168a8103612ab557509050600180915b01612a83565b6001600160a01b038a1614612acd575b600190612aaf565b60019a50612ac5565b5091939550919397969596612330565b506001600160a01b03891615612324565b612b0c9195503d805f833e61019a81836105e3565b935f61230c565b51906001600160a01b03821682036101b357565b15612b2e57565b60405162461bcd60e51b815260206004820152601760248201527f546f6b656e206e6f7420666f756e6420696e20706f6f6c0000000000000000006044820152606490fd5b60405163ca4f280360e01b81526001600160a01b0391821660048201525f949092918590849060249082907f0000000000000000000000000000000000000000000000000000000000000000165afa9283156101a8575f93612dac575b5015612cc15750612be082614320565b15612bed5750506001915b565b5f5b8151811015612cb9576001600160a01b03612c0a828461065c565b5116612c1581614320565b80612c47575b612c285750600101612bef565b93505050505b612c426001600160a01b0382161515612b27565b600291565b506040516338d52e0f60e01b8152602081600481855afa9081156101a8575f91612c80575b506001600160a01b03858116911614612c1b565b90506020813d8211612cb1575b81612c9a602093836105e3565b810103126101b357612cab90612b13565b5f612c6c565b3d9150612c8d565b505050612c2e565b9150612ccc82614320565b15612cd8575050600491565b5f5b8151811015612da4576001600160a01b03612cf5828461065c565b5116612d0081614320565b80612d32575b612d135750600101612cda565b93505050505b612d2d6001600160a01b0382161515612b27565b600391565b506040516338d52e0f60e01b8152602081600481855afa9081156101a8575f91612d6b575b506001600160a01b03858116911614612d06565b90506020813d8211612d9c575b81612d85602093836105e3565b810103126101b357612d9690612b13565b5f612d57565b3d9150612d78565b505050612d19565b612dc19193503d805f833e61019a81836105e3565b915f612bd0565b6001600160a01b0391821681529181166020830152604082015265ffffffffffff606082015260800190565b9080601f830112156101b3578151612e0b81610604565b92612e1960405194856105e3565b81845260208085019260051b8201019283116101b357602001905b828210612e415750505090565b8151815260209182019101612e34565b916060838303126101b35782516001600160401b0381116101b35782612e78918501612df4565b9260208101516001600160401b0381116101b357810183601f820112156101b357805190612ea582610604565b91612eb360405193846105e3565b80835260208084019160051b830101918683116101b357602001905b828210612ef7575050509260408201516001600160401b0381116101b3576107e09201612df4565b60208091612f0484612b13565b815201910190612ecf565b90608081019160018060a01b038151168252602081015192608060208401528351809152602060a084019401905f5b818110612f5e575050506060816040829301516040850152015191015290565b825180516001600160a01b0390811688526020828101519091168189015260409182015115159188019190915260609096019590920191600101612f3e565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9291608084019360808152825180955260a0810194602060a08260051b8401019401905f5b818110613010575050506107e09394505f1960208201525f60408201526060818403910152612f9d565b90919460208061302c600193609f19888203018c528951612f0f565b97019801910196919096612fe6565b9291926080810160808252825180915260a0820190602060a08260051b8501019401915f905b82821061308e57505050506107e092935f1960208301521515604082015260608183039101526060612f9d565b909192946020806130ab600193609f198982030186528951612f0f565b970192019201909291613061565b3d156130f2573d906001600160401b03821161059957604051916130e7601f8201601f1916602001846105e3565b82523d5f602084013e565b606090565b156130fe57565b60405162461bcd60e51b815260206004820152601660248201527508cc2d2d8cac840e8de40e8e4c2dce6cccae4408aa8960531b6044820152606490fd5b9080602083519182815201916020808360051b8301019401925f915b83831061316757505050505090565b9091929394602080613185600193601f198682030187528951612f0f565b97019301930191939290613158565b90916131ab6107e09360808452608084019061313c565b915f1960208201525f60408201526060818403910152612f9d565b6131dc6107e0939260808352608083019061313c565b5f1960208301529115156040820152808203606091820152612f9d565b1561320057565b60405162461bcd60e51b8152602060048201526024808201527f435553544f4d5f5752415028343632362d34363236293a20496e76616c696420604482015263141bdbdb60e21b6064820152608490fd5b60405163ca4f280360e01b81526001600160a01b039384166004820152925f929183918290869060249082907f0000000000000000000000000000000000000000000000000000000000000000165afa9485156101a8575f9561367d575b506132b981614320565b8061366e575b1561346c576040516338d52e0f60e01b81529190602090839060049082906001600160a01b03165afa9182156101a8575f9261342b575b506040516338d52e0f60e01b815292602090849060049082906001600160a01b03165afa9283156101a8575f936133ef575b505f5b85518110156133e5576001600160a01b03613346828861065c565b51166001600160a01b0383161515806133d3575b61339a576001600160a01b0384168114613392575b6001600160a01b0385168114613389575b5060010161332b565b94506001613380565b91508161336f565b5050935050505b6001600160a01b0382161515806133c1575b6133bc906131f9565b600292565b506001600160a01b03811615156133b3565b506001600160a01b038616151561335a565b50935050506133a1565b9092506020813d602011613423575b8161340b602093836105e3565b810103126101b35761341c90612b13565b915f613328565b3d91506133fe565b9291506020833d602011613464575b81613447602093836105e3565b810103126101b357602061345c600494612b13565b9293506132f6565b3d915061343a565b91949061347883614320565b158061365e575b15613619575f5b855181101561360e576001600160a01b036134a1828861065c565b51166134ac81614320565b6134ba575b50600101613486565b6001600160a01b0383161515806135fc575b6135c2576040516338d52e0f60e01b8152602081600481855afa9081156101a8575f91613589575b506001600160a01b03868116911614613581575b6040516338d52e0f60e01b8152602081600481855afa9081156101a8575f91613548575b506001600160a01b038981169116036134b157945060016134b1565b90506020813d8211613579575b81613562602093836105e3565b810103126101b35761357390612b13565b5f61352c565b3d9150613555565b915081613508565b90506020813d82116135ba575b816135a3602093836105e3565b810103126101b3576135b490612b13565b5f6134f4565b3d9150613596565b505093509350505b6001600160a01b0382161515806135ea575b6135e5906131f9565b600192565b506001600160a01b03811615156135dc565b506001600160a01b03861615156134cc565b5093509350506135ca565b60405162461bcd60e51b815260206004820152601b60248201527f435553544f4d5f575241503a20496e76616c696420746f6b656e7300000000006044820152606490fd5b5061366886614320565b1561347f565b5061367883614320565b6132bf565b6136929195503d805f833e61019a81836105e3565b935f6132af565b604051906136a6826105ad565b5f6040838281528260208201520152565b604051608091906136c883826105e3565b6003815291601f1901825f5b8281106136e057505050565b6020906136eb613699565b828285010152016136d4565b6040516060919061370883826105e3565b6002815291601f1901825f5b82811061372057505050565b60209061372b613699565b82828501015201613714565b6040805190919061374883826105e3565b6001815291601f1901825f5b82811061376057505050565b60209061376b613699565b82828501015201613754565b60405190613784826105c8565b5f6060838281528160208201528260408201520152565b604080519091906137ac83826105e3565b6001815291601f1901825f5b8281106137c457505050565b6020906137cf613777565b828285010152016137b8565b519081151582036101b357565b906080828203126101b35781516001600160401b0381116101b3578161380f91840161074d565b9260208301516001600160401b0381116101b357830182601f820112156101b357805161383b81610604565b9161384960405193846105e3565b818352602060608185019302820101908582116101b357602001915b8183106138ad575050509260408101516001600160401b0381116101b3578361388f918301612df4565b9260608201516001600160401b0381116101b3576107e09201612df4565b6060838703126101b357604051906138c4826105ad565b835160028110156101b35782526020840151906001600160a01b03821682036101b357826020928360609501526138fd604087016137db565b6040820152815201920191613865565b959460405161391d6060826105e3565b6002815260403660208301376040516333f0703b60e11b815260609890981c60048901529485905f896024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9586156101a8575f995f97613d78575b5060038110156104b057600114613bf55750506040516338d52e0f60e01b81526001600160a01b0392909216969190506020816004818a5afa9081156101a8575f91613bbb575b506040516338d52e0f60e01b81526001600160a01b039384169791909316926020816004818b5afa9081156101a8575f91613b81575b506001600160a01b0316925f5b8351811015613b7657816001600160a01b03613a2b838761065c565b511614613ae9575b846001600160a01b03613a46838761065c565b511614613a56575b600101613a0f565b613a60818761065c565b51906003820291808304600314901517156106955760405163ef8b30f760e01b8152600a90920460048301526020826024818d5afa80156101a8575f90613ab7575b60019250613aaf8961063c565b529050613a4e565b506020823d8211613ae1575b81613ad0602093836105e3565b810103126101b35760019151613aa2565b3d9150613ac3565b613af3818761065c565b516003810290808204600314901517156106955760405163ef8b30f760e01b8152600a9091046004820152602081602481875afa9081156101a8575f91613b45575b50613b3f8861061b565b52613a33565b90506020813d8211613b6e575b81613b5f602093836105e3565b810103126101b357515f613b35565b3d9150613b52565b509496505050505050565b90506020813d602011613bb3575b81613b9c602093836105e3565b810103126101b357613bad90612b13565b5f613a02565b3d9150613b8f565b90506020813d602011613bed575b81613bd6602093836105e3565b810103126101b357613be790612b13565b5f6139cc565b3d9150613bc9565b935094509590505f5b8151811015613d6f576001600160a01b03613c19828461065c565b516001600160a01b038516929116828103613cc25750613c39818661065c565b5160038102908082046003149015171561069557600a6024602092604051958693849263266d6a8360e11b84520460048301525afa80156101a8575f90613c90575b60019250613c888761061b565b525b01613bfe565b506020823d8211613cba575b81613ca9602093836105e3565b810103126101b35760019151613c7b565b3d9150613c9c565b6001600160a01b03891692508214613cde575b60019150613c8a565b613ce8818661065c565b5160038102908082046003149015171561069557600a6024602092604051958693849263266d6a8360e11b84520460048301525afa80156101a8575f90613d3d575b60019250613d378761063c565b52613cd5565b506020823d8211613d67575b81613d56602093836105e3565b810103126101b35760019151613d2a565b3d9150613d49565b50929450505050565b909650613d909199503d805f833e61246081836105e3565b509991905098955f613985565b909392935f9160601c6040519363ca4f280360e01b85528160048601525f8560248160018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9485156101a8575f95614304575b506001600160a01b038316801580159690959194905f9081888a6142f3575b15614283575050506001805b818061427c575b15613f1857509798613eb698505f97613e9d97613e5b97909692956001600160a01b031694509250613f0f57614aaf565b5050613e6561379b565b90613e6f8261061b565b52613e798161061b565b506040516338ed77fd60e21b8152606060048201529384928392606484019061313c565b3060248401528281036003190160448401526060612f9d565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af180156101a857610eb4915f91613efb575061061b565b61193091503d805f833e610ac981836105e3565b82159450614aaf565b9195508092999496939750159081614273575b5015613f83575050613eb69495509181613f5693613f4c83875f9896613251565b9591939094614c68565b60405190613f656020836105e3565b8282526040516338ed77fd60e21b8152938492839260048401614d9f565b613f9290868587989497612b73565b909160058310156104b05782613fab5750505050505050565b909192939495969750606094865f1461426d57507f0000000000000000000000000000000000000000000000000000000000000000945b6001600160a01b0382161591821561426757507f0000000000000000000000000000000000000000000000000000000000000000935b60018103614152575050505061402c6136f7565b6040516338d52e0f60e01b8152959094906020876004816001600160a01b0387165afa9687156101a8575f976140f9575b50613eb6965f96959493614096938593919261408a9285916001600160a01b0390811691908a1690614aaf565b9150506117a98761061b565b9150506140a28461063c565b525b6140ac61379b565b92604051926140ba846105c8565b6001600160a01b0316835260208301526040820152600160608201526140df8261061b565b526140e98161061b565b5060405190613f656020836105e3565b909594939296506020813d60201161414a575b81614119602093836105e3565b810103126101b357613eb69661408a61409693855f996141398296612b13565b9b509450509350509293949561405d565b3d915061410c565b91613eb698969594915f9893600281148a146141b257505050506141a09161419484928361417e6136f7565b986001600160a01b0385811691908a1690614aaf565b915050611afb8761061b565b9150506141ac8461063c565b526140a4565b92979194935090916003811489146142005750506141a0929184916141d56136f7565b976141e08484614816565b9150506141ec8a61061b565b526001600160a01b03908116921690614aaf565b6004919794935014614215575b5050506140a4565b61425292955083906142256136f7565b966142308388614908565b91505061423c8961061b565b526001600160a01b039081169190871690614aaf565b91505061425e8461063c565b525f808061420d565b93614018565b94613fe2565b9050155f613f2b565b5080613e2a565b5f9a9693919799959894929a5b88518110156142e3576001600160a01b036142ab828b61065c565b51168b81036142c257509050600180915b01614290565b6001600160a01b038b16146142da575b6001906142bc565b60019b506142d2565b5091939794989650919498613e23565b506001600160a01b03861615613e17565b6143199195503d805f833e61019a81836105e3565b935f613df8565b6001600160a01b03908116907f0000000000000000000000000000000000000000000000000000000000000000168114614414576040516338d52e0f60e01b8152602081600481855afa90816143dd575b5061437b57505f90565b602060249160405192838092636c82bbbf60e11b82523360048301525afa90816143ae575b506143a9575f90565b600190565b6020813d6020116143d5575b816143c7602093836105e3565b810103126101b357516143a0565b3d91506143ba565b6020813d60201161440c575b816143f6602093836105e3565b810103126101b35761440790612b13565b614371565b3d91506143e9565b505f90565b604051636eb1769f60e11b81523060048201526001600160a01b03838116602483018190529391929190821690602084604481855afa9384156101a8575f94614558575b505f1984018094116106955760405163095ea7b360e01b602082019081526001600160a01b03909216602482015260448101949094525f9081906144ae86606481015b03601f1981018852876105e3565b85519082855af1906144be6130b9565b8261451e575b5081614513575b50156144d657505050565b61450e612beb936040519063095ea7b360e01b602083015260248201525f6044820152604481526145086064826105e3565b82614dca565b614dca565b90503b15155f6144cb565b80519192508115918215614536575b5050905f6144c4565b81925090602091810103126101b357602061455191016137db565b5f8061452d565b9093506020813d602011614584575b81614574602093836105e3565b810103126101b35751925f61445d565b3d9150614567565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830181905294919390831691602085604481865afa9485156101a8575f95614614575b5084018094116106955760405163095ea7b360e01b602082019081526001600160a01b03909216602482015260448101949094525f9081906144ae86606481016144a0565b9094506020813d602011614640575b81614630602093836105e3565b810103126101b35751935f6145cf565b3d9150614623565b6040516323b872dd60e01b60208201526001600160a01b039283166024820152929091166044830152606480830193909352918152612beb9161450e6084836105e3565b60405163a9059cbb60e01b60208201526001600160a01b03929092166024830152604480830193909352918152612beb9161450e6064836105e3565b91906146d2613777565b926146db613777565b506146e4613699565b506040516338d52e0f60e01b81526001600160a01b039190911690602081600481855afa9081156101a8575f916147dc575b5060405192906001600160a01b031661472e846105ad565b82845260208401526001604084015282614746613737565b906147508261061b565b5261475a8161061b565b506040516370a0823160e01b815230600482015290602082602481875afa9182156101a8575f926147a8575b5060405193614794856105c8565b845260208401526040830152606082015291565b9091506020813d6020116147d4575b816147c4602093836105e3565b810103126101b35751905f614786565b3d91506147b7565b90506020813d60201161480e575b816147f7602093836105e3565b810103126101b35761480890612b13565b5f614716565b3d91506147ea565b9061481f613777565b50614828613777565b91614831613699565b506040516001600160a01b03919091169161484b826105ad565b828252826020830152600160408301528192614865613737565b9261486f8461061b565b526148798361061b565b506020600491604051928380926338d52e0f60e01b82525afa9081156101a8575f916148ce575b5060405192906001600160a01b03166148b8846105c8565b8352602083015260408201526001606082015292565b90506020813d602011614900575b816148e9602093836105e3565b810103126101b3576148fa90612b13565b5f6148a0565b3d91506148dc565b90614911613777565b5061491a613777565b91614923613699565b506040516338d52e0f60e01b81526001600160a01b039190911690602081600481855afa9081156101a8575f916149a7575b5060405192906001600160a01b031661496d846105ad565b82845260208401526001604084015282614985613737565b9061498f8261061b565b526149998161061b565b50604051926148b8846105c8565b90506020813d6020116149d9575b816149c2602093836105e3565b810103126101b3576149d390612b13565b5f614955565b3d91506149b5565b919093926149ed613777565b946149f6613777565b506149ff613699565b506040516370a0823160e01b81523360048201526001600160a01b039190911692602082602481875afa9182156101a8575f92614a7b575b5060405194614a45866105ad565b6001600160a01b0390811686521660208501525f604085015283614a67613737565b90614a718261061b565b526147868161061b565b9091506020813d602011614aa7575b81614a97602093836105e3565b810103126101b35751905f614a37565b3d9150614a8a565b929091614aba613777565b50614ac3613777565b94614acc613699565b5015614b43575b60405193614ae0856105ad565b6001600160a01b0390811685521660208401525f604084015282614b02613737565b90614b0c8261061b565b52614b168161061b565b5060405192614b24846105c8565b6001600160a01b03168352602083015260408201526001606082015292565b6040516370a0823160e01b81523360048201526020816024816001600160a01b0388165afa9081156101a8575f91614b7d575b5050614ad3565b90506020813d602011614ba7575b81614b98602093836105e3565b810103126101b357515f614b76565b3d9150614b8b565b919092614bba613777565b50614bc3613777565b93614bcc613699565b506040516370a0823160e01b81523360048201526001600160a01b03919091169290602081602481875afa9081156101a8575f91614c36575b505060405193614c14856105ad565b6001600160a01b0390811685521660208401525f604084015282614985613737565b90506020813d602011614c60575b81614c51602093836105e3565b810103126101b357515f614c05565b3d9150614c44565b9695909492939196614c786136b7565b9760038410156104b0578593600103614d4457508284614cc992614c9f83614ce598614816565b915050614cab8c61061b565b52614cb58b61061b565b506001600160a01b03858116921690614baf565b915050614cd58861063c565b52614cdf8761063c565b50614908565b915050614cf18561064c565b52614cfb8461064c565b50614d0461379b565b9360405192614d12846105c8565b6001600160a01b031683526020830152604082015260016060820152614d378361061b565b52614d418261061b565b50565b91614ce594614d83928592614d59848b614908565b915050614d658d61061b565b52614d6f8c61061b565b506001600160a01b03908116921690614baf565b915050614d8f8861063c565b52614d998761063c565b50614816565b9091614db66107e09360608452606084019061313c565b915f60208201526040818403910152612f9d565b5f80614df29260018060a01b03169360208151910182865af1614deb6130b9565b9083614e3d565b8051908115159182614e1a575b5050614e085750565b635274afe760e01b5f5260045260245ffd5b81925090602091810103126101b3576020614e3591016137db565b155f80614dff565b90614e615750805115614e5257805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580614e92575b614e72575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15614e6a56fea2646970667358221220e323e5fa26c6abf091be22f35678640537c279bbf3c0177d321594dfa3820d9b64736f6c634300081b0033","sourceMap":"746:3925:42:-:0;;;;;;;;;;;;;-1:-1:-1;;746:3925:42;;;;-1:-1:-1;;;;;746:3925:42;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;746:3925:42;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;948:22;;;;-1:-1:-1;;;;;746:3925:42;;980:30;1020:18;;1048:28;;746:3925;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;980:30;746:3925;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1048:28;746:3925;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1020:18;746:3925;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;746:3925:42;;;;;;-1:-1:-1;746:3925:42;;;;;-1:-1:-1;746:3925:42;;;;-1:-1:-1;;;;;746:3925:42;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x608080604052600436101561001c575b50361561001a575f80fd5b005b5f3560e01c90816323eeca01146104c45750806348bd7dfd146104175780638307c655146103b1578063a9270fbe14610356578063aad6e488146101b75763ecbbc0331461006a575f61000f565b346101b35760203660031901126101b35760405163ca4f280360e01b81526004803560601c908201525f816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156101a8575f91610186575b508051906100f86100e283610604565b926100f060405194856105e3565b808452610604565b602083019190601f19013683375f5b8151811015610138576001906001600160a01b03610125828561065c565b5116610131828761065c565b5201610107565b505090604051918291602083019060208452518091526040830191905f5b818110610164575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610156565b6101a291503d805f833e61019a81836105e3565b8101906107bb565b5f6100d2565b6040513d5f823e3d90fd5b5f80fd5b346101b35760803660031901126101b3576004356101d3610518565b906101dc61052e565b91606435916001600160401b0383116101b357366023840112156101b35782600401359261020984610604565b9361021760405195866105e3565b8085526024602086019160051b830101913683116101b357602401905b8282106103465750505082519361024a85610604565b9461025860405196876105e3565b808652610267601f1991610604565b015f5b8181106103235750505f5b84518110156102d2578061028b6001928761065c565b51610294610670565b506102a181858888613d9d565b90604051916102af8361057e565b825260208201526102c0828961065c565b526102cb818861065c565b5001610275565b856040518091602082016020835281518091526020604084019201905f5b8181106102fe575050500390f35b82518051855260209081015181860152869550604090940193909201916001016102f0565b6020906040516103328161057e565b5f81525f8382015282828a0101520161026a565b8135815260209182019101610234565b346101b35761036d61036736610544565b916122ab565b6040518091602082016020835281518091526020604084019201905f5b818110610398575050500390f35b825184528594506020938401939092019160010161038a565b346101b35760a03660031901126101b3576103ca610518565b6103d261052e565b6064359160028310156101b3576080926103f292608435926004356106a9565b6020604080519280518452828101518385015201518051604084015201516060820152f35b346101b35761042536610544565b5050506040516104366080826105e3565b60038152602081016060368237600161044e8361061b565b52600261045a8361063c565b5260086104668361064c565b52604051906020820192602083525180935260408201905f935b80851061048d5783830384f35b9091825190600a8210156104b05760208160019382935201930194019390610480565b634e487b7160e01b5f52602160045260245ffd5b346101b35760403660031901126101b357631d04569d60e21b815260206004820181905260248201527f42616c616e636572563353776170416461707465722e676574506f6f6c4964736044820152606490fd5b602435906001600160a01b03821682036101b357565b604435906001600160a01b03821682036101b357565b60609060031901126101b357600435906024356001600160a01b03811681036101b357906044356001600160a01b03811681036101b35790565b604081019081106001600160401b0382111761059957604052565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b0382111761059957604052565b608081019081106001600160401b0382111761059957604052565b90601f801991011681019081106001600160401b0382111761059957604052565b6001600160401b0381116105995760051b60200190565b8051156106285760200190565b634e487b7160e01b5f52603260045260245ffd5b8051600110156106285760400190565b8051600210156106285760600190565b80518210156106285760209160051b010190565b6040519061067d8261057e565b5f6020838281520152565b9190820391821161069557565b634e487b7160e01b5f52601160045260245ffd5b919493929094604051956106bc876105ad565b5f87525f602088015260408701966040516106d68161057e565b5f81525f602082015288528097861561072957505061070693926106fd9286925a956107ed565b85525a90610688565b60208401528251906040519161071b8361057e565b825260208201526040830152565b9550959650505050506040519061073f8261057e565b5f8252600160208301525290565b9080601f830112156101b35781519061076582610604565b9261077360405194856105e3565b82845260208085019360051b8201019182116101b357602001915b81831061079b5750505090565b82516001600160a01b03811681036101b35781526020928301920161078e565b906020828203126101b35781516001600160401b0381116101b3576107e0920161074d565b90565b600211156104b057565b60405163ca4f280360e01b8152606082901c600482015291945f949385846024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9384156101a8575f9461228f575b506001600160a01b038716968715958615959091905f9081898961227e575b1561220a575050506001805b8180612203575b156110bf5750505060019061088e816107e3565b03610d95576001600160a01b03168015928515610d21578647955b8781610d1a575b6108b8613777565b506108c1613777565b506108ca613699565b50479015610cad575b604051936108e0856105ad565b60601c84528460208501528260408501526108f9613737565b936109038561061b565b5261090d8461061b565b506040519361091b856105c8565b8b85526020850152604084015284606084015261093661379b565b926109408461061b565b5261094a8361061b565b50858815610b7c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166109868461061b565b51525b8715610aed576109b5928891610ae5575b604051634758db2f60e11b815293849283926004840161303b565b0381887f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1908115610ada5791610a2294939188938491610ab5575b50935b15610aa9575090808080610a1d94335af1610a176130b9565b506130f7565b61061b565b5193849215610a92575082610a3981938293610688565b335af1610a446130b9565b5015610a4d5790565b60405162461bcd60e51b815260206004820152601960248201527f4661696c656420746f207472616e7366657220455448283229000000000000006044820152606490fd5b916107e09350610aa191610688565b90339061468c565b610a1d9250339061468c565b610ad191503d8086833e610ac981836105e3565b810190612e51565b9150505f6109fb565b6040513d89823e3d90fd5b86915061099a565b610b12928291610ae557604051634758db2f60e11b815293849283926004840161303b565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1908115610ada5791610a2294939188938491610b5f575b50936109fe565b610b7391503d8086833e610ac981836105e3565b9150505f610b58565b909150610c64575b610b908630338c614648565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610bc4818b614419565b7f0000000000000000000000000000000000000000000000000000000000000000610bef818c614419565b6001600160a01b0316803b15610c6057610c23918a918c836040518096819582946387517c4560e01b845260048401612dc8565b03925af18015610c5557908991610c3c575b5090610989565b81610c46916105e3565b610c5157875f610c35565b8780fd5b6040513d8b823e3d90fd5b8980fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166020610ca581610c9d8661061b565b51015161061b565b510152610b84565b506040516370a0823160e01b81523360048201529091506020816024818d5afa908115610c5557908992918391610ce5575b506108d3565b9250506020823d602011610d12575b81610d01602093836105e3565b810103126101b3578891515f610cdf565b3d9150610cf4565b50856108b0565b6040516370a0823160e01b81523360048201526020816024818c5afa908115610d8a579088918291610d55575b50956108a9565b9150506020813d602011610d82575b81610d71602093836105e3565b810103126101b3578790515f610d4e565b3d9150610d64565b6040513d8a823e3d90fd5b9596956001600160a01b031680159594909392610dc2908290849087908c90886110b7575b60601c614aaf565b505097610dcd61379b565b98610dd78a61061b565b52610de18961061b565b50868215610f965750507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610e1e8961061b565b51525b8015610eff5790610e4f978593610ef7575b60405180998194829363286f580d60e01b8452600484016131c6565b03917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af18015610eec57610eb494958391610ecf575b50925b15610eb85750808080610a1d93610ea88661061b565b51335af1610a176130b9565b5190565b610a1d9150610ec68361061b565b5190339061468c565b610ee391503d8085833e610ac981836105e3565b9150505f610e8f565b6040513d84823e3d90fd5b869250610e33565b50508290610f29968291610f8e575b60405163286f580d60e01b81529788928392600484016131c6565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af18015610eec57610eb494958391610f71575b5092610e92565b610f8591503d8085833e610ac981836105e3565b9150505f610f6a565b859150610f0e565b611076575b610fa783303384614648565b7f0000000000000000000000000000000000000000000000000000000000000000610fd384828461458c565b6001600160a01b031690813b15611072576040516387517c4560e01b8152918791839190829084908290611035907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169060048401612dc8565b03925af180156110675790869161104e575b5050610e21565b81611058916105e3565b61106357845f611047565b8480fd5b6040513d88823e3d90fd5b8680fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660206110af81610c9d8d61061b565b510152610f9b565b8b9450610dba565b819a98939695949a9792971590816121fa575b5015611564575050506110e98260601c8886613251565b95919390946110f7816107e3565b611272576111078330338a614648565b7f000000000000000000000000000000000000000000000000000000000000000061113384828a61458c565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811698911690813b15610c60578861118d928b92836040518096819582946387517c4560e01b845260048401612dc8565b03925af18015610c555791899796959493918b9361124d575b50916111bd9593916111ed9997959360601c614c68565b90604051916111cd6020846105e3565b8383528360405180968195829463286f580d60e01b845260048401613194565b03925af1918215611241579161120f91836107e09492611223575b505061061b565b5191829033906001600160a01b031661468c565b61123792503d8091833e610ac981836105e3565b9150505f80611208565b604051903d90823e3d90fd5b61126091935097809294959697986105e3565b610c515787959493929189915f6111a6565b929094879492989697506112846136b7565b92604051966370a0823160e01b88523360048901526020886024818d5afa978815610ada578798611530575b506112bd8830338d614648565b7f00000000000000000000000000000000000000000000000000000000000000006112e8818c614419565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116959116803b1561152c578886611341928e836040518096819582946387517c4560e01b845260048401612dc8565b03925af18015610c5557908991611517575b505060038110156115035791879594939160018d94145f146114a25750906113b5838361145599611388836113d19897614816565b9150506113948a61061b565b5261139e8961061b565b506001600160a01b0385811692169060601c6149e1565b9150506113c18661063c565b526113cb8561063c565b506146c8565b9150506113dd8361064c565b526113e78261064c565b506113f061379b565b91604051906113fe826105c8565b898252602082015286604082015289606082015261141b8361061b565b526114258261061b565b50604051916114356020846105e3565b83835283604051809681958294634758db2f60e11b845260048401612fc1565b03925af19182156112415761147f6107e0969593611498959383611493949261122357505061061b565b5196879333906001600160a01b031661468c565b610688565b9033903090614648565b9683926114b56114e2956114559a6146c8565b9150506114c18861061b565b526114cb8761061b565b506001600160a01b0390811692169060601c6149e1565b9150506114ee8361063c565b526114f88261063c565b506113d18988614816565b634e487b7160e01b88526021600452602488fd5b81611521916105e3565b610c5157875f611353565b8880fd5b9097506020813d60201161155c575b8161154c602093836105e3565b810103126101b35751965f6112b0565b3d915061153f565b89975061157f9060019a888760609a98999596979a1c612b73565b99909161158b816107e3565b14908694845f146121f457507f0000000000000000000000000000000000000000000000000000000000000000945b6001600160a01b0389166121ed577f0000000000000000000000000000000000000000000000000000000000000000935b8381156121e057612171575b7f000000000000000000000000000000000000000000000000000000000000000061162c83826001600160a01b038b1661458c565b6001600160a01b0316803b156101b3576040516387517c4560e01b8152905f9082908183816116887f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168f60048401612dc8565b03925af180156101a85761215c575b505b83611c0957611bee575b506060998a956001600160a01b0381161591908215611be857507f0000000000000000000000000000000000000000000000000000000000000000945b6001600160a01b0381169c8d15918215611be257507f0000000000000000000000000000000000000000000000000000000000000000945b6005811015611bce57918d93918360018e95145f14611aad5750505050505061173f6136f7565b6040516338d52e0f60e01b81529097906020816004816001600160a01b0388165afa908115611aa257918a93918d9695938791611a4a575b506117af94939261179d92909185916001600160a01b03918216918b169060601c614aaf565b9150506117a98a61061b565b52614816565b9150506117bb8761063c565b525b156119fa57506117cb61379b565b6040516370a0823160e01b815230600482015290916001600160a01b031690602081602481855afa908115610c55579089959493929186916119bd575b5061183e939495966040519261181d846105c8565b8352602083015260408201528660608201526118388261061b565b5261061b565b505b15611944576118a3926118836040519261185b6020856105e3565b84845260405163286f580d60e01b81526080600482015295869485938493608485019061313c565b5f1960248501526001604485015283810360031901606485015290612f9d565b03917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af190811561193957906118ea91849161191c575b5061061b565b519283916001600160a01b031615611908576107e09250339061468c565b50908080806107e094335af1610a176130b9565b61193091503d8086833e610ac981836105e3565b9150505f6118e4565b6040513d85823e3d90fd5b6119769250604051906119586020836105e3565b82825260405163286f580d60e01b8152938492839260048401613194565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af190811561193957906118ea91849161191c575061061b565b93949550506020833d6020116119f2575b816119db602093836105e3565b810103126101b3579151889493929061183e611808565b3d91506119ce565b939250611a0561379b565b9260405191611a13836105c8565b6001600160a01b0316825260208201526040810185905260016060820152611a3a8361061b565b52611a448261061b565b50611840565b92945050919394506020813d602011611a9a575b81611a6b602093836105e3565b81010312611a96579261179d6117af938b80948f9897611a8a90612b13565b92949596509250611777565b8b80fd5b3d9150611a5e565b6040513d8e823e3d90fd5b859897939596949650600281145f14611b13575050505090611aef8392611b0194611ad66136f7565b9b6001600160a01b0385811691908b169060601c614aaf565b915050611afb8a61061b565b52614908565b915050611b0d8761063c565b526117bd565b929b9195949350909160038103611b6357505090611b01939291611b356136f7565b9a611b408484614816565b915050611b4c8d61061b565b526001600160a01b0390811692169060601c614aaf565b6004919b9594935014611b7a575b505050506117bd565b611bb8939950611b886136f7565b99611b938389614908565b915050611b9f8c61061b565b526001600160a01b03908116919088169060601c614aaf565b915050611bc48761063c565b525f808881611b71565b634e487b7160e01b8e52602160045260248efd5b94611718565b946116e0565b611c039030336001600160a01b038916614648565b5f6116a3565b9794918897919496999a9b935047986120db575b6060936001600160a01b038b166120d4577f0000000000000000000000000000000000000000000000000000000000000000945b6001600160a01b0389161580156120cd577f0000000000000000000000000000000000000000000000000000000000000000935b60058110156120b857918f91838f959360018d96145f14611fcf5750505050505050611caf6136f7565b6040516338d52e0f60e01b815290926020826004816001600160a01b0387165afa918215611fc257908c8f928a94611f72575b50611d169492611d0a926001600160a01b0392831615928692811691908b169060601c614aaf565b9150506117a98561061b565b915050611d228261063c565b525b611d2c61379b565b6040516370a0823160e01b815230600482015290936001600160a01b031691602082602481865afa918215611f6757908d95949392918692611f30575b5060405192611d77846105c8565b835260208301526040820152856060820152611d928361061b565b52611d9c8261061b565b5015611eb357611dd49260405191611db56020846105e3565b838352604051809581948293634758db2f60e11b845260048401612fc1565b03917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1908115610d8a578894939291611e1e918691611e9f575061061b565b519788976001600160a01b031615611e865750611e459133906001600160a01b031661468c565b15611e6957506107e092611e5891610688565b9033906001600160a01b031661468c565b80809350611e7b6107e0958294610688565b335af1610a176130b9565b611e9a925080808093335af1610a176130b9565b611e45565b61193091503d8088833e610ac981836105e3565b611ee5925060405190611ec76020836105e3565b828252604051634758db2f60e11b8152938492839260048401612fc1565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1908115610d8a578894939291611e1e918691611e9f575061061b565b955090506020853d602011611f5f575b81611f4d602093836105e3565b810103126101b3578c9451905f611d69565b3d9150611f40565b6040513d8f823e3d90fd5b92505091506020813d602011611fba575b81611f90602093836105e3565b81010312611fb65791611d0a8c898094611fac611d1697612b13565b9496509250611ce2565b8d80fd5b3d9150611f83565b8e604051903d90823e3d90fd5b95969495939492936002820361203057505050505061201261201e939483611ff56136f7565b966001600160a01b039081161592858216918b169060601c614aaf565b915050611afb8561061b565b91505061202a8261063c565b52611d24565b9397929650909493926003820361206857505061201e9495506120516136f7565b9561205c8484614816565b915050611b4c8861061b565b6004929350501461207d575b50505050611d24565b6120a293945061208b6136f7565b946120968389614908565b915050611b9f8761061b565b9150506120ae8261063c565b525f808681612074565b50634e487b7160e01b8f52602160045260248ffd5b8993611c85565b8a94611c51565b6040516370a0823160e01b81523360048201526001600160a01b038b1699506020816024818d5afa8015611f675786908e90612126575b61212192509a30903390614648565b611c1d565b50506020813d602011612154575b81612141602093836105e3565b810103126101b357856121219151612112565b3d9150612134565b612169919b505f906105e3565b5f995f611697565b6040516370a0823160e01b81523360048201529091506020816024816001600160a01b038b165afa9081156101a8575f916121ae575b50906115f7565b90506020813d6020116121d8575b816121c9602093836105e3565b810103126101b357515f6121a7565b3d91506121bc565b1561169957479150611699565b88936115eb565b946115ba565b9050155f6110d2565b508061087a565b5f9b9a9794929b999693919895995b895181101561226c576001600160a01b03612234828c61065c565b51168c810361224b57509050600180915b01612219565b6001600160a01b038c1614612263575b600190612245565b60019c5061225b565b50919396999a90929598949750610873565b506001600160a01b03861615610867565b6122a49194503d805f833e61019a81836105e3565b925f610848565b60405163ca4f280360e01b8152606082811c6004830181905295949391927f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169290915f85602481875afa9485156101a8575f95612af7575b506001600160a01b038216945f908187158015612ae6575b15612a76575050506001805b8180612a6f575b156124725750505050505f604051956123516060886105e3565b6002875260403660208901376024604051809481936333f0703b60e11b835260048301525afa9283156101a8575f915f94612449575b506001600160a01b0316915f5b825181101561244257816001600160a01b036123b0838661065c565b511614612411575b836001600160a01b036123cb838661065c565b5116146123db575b600101612394565b6123e5818661065c565b519060038202918083046003149015171561069557600a600192046124098961063c565b5290506123d3565b61241b818661065c565b5160038102908082046003149015171561069557600a900461243c8861061b565b526123b8565b5050505050565b90935061246891503d805f833e61246081836105e3565b8101906137e8565b509390505f612387565b8196949695929395159081612a66575b50156124a5575050505061249b6107e094958483613251565b949192909361390d565b889550865f9893956124b99395989a612b73565b969094604051946124ca81876105e3565b60028652601f19013660208701376024604051809581936333f0703b60e11b835260048301525afa9586156101a8575f925f97612a41575b505f9460058110156104b0576001810361268e575093966001600160a01b031693505f5b825181101561261b576001600160a01b03612541828561065c565b51168681146125ea575b6040516338d52e0f60e01b81526020816004818a5afa9081156101a8575f916125b1575b506001600160a01b031614612587575b600101612526565b9650612593878761065c565b5160038102908082046003149015171561069557600a90049661257f565b90506020813d82116125e2575b816125cb602093836105e3565b810103126101b3576125dc90612b13565b5f61256f565b3d91506125be565b6125f4828961065c565b5160038102908082046003149015171561069557600a90046126158661061b565b5261254b565b509591945050602091925060246040518094819363ef8b30f760e01b835260048301525afa9081156101a8575f9161265c575b506126588261063c565b5290565b90506020813d602011612686575b81612677602093836105e3565b810103126101b357515f61264e565b3d915061266a565b9397949695949093600281036127875750505f5b825181101561273f576001600160a01b036126bd828561065c565b51168581036126fd57506126d1818761065c565b519060038202918083046003149015171561069557600a600192046126f58a61061b565b525b016126a2565b6001600160a01b03851614612715575b6001906126f7565b9550612721868661065c565b5160038102908082046003149015171561069557600a90049561270d565b5060405163266d6a8360e11b81526004810196909652959493506020925083916024915082906001600160a01b03165afa9081156101a8575f9161265c57506126588261063c565b93965090939092600381036128ab575092946001600160a01b03928316935091909116905f5b815181101561244257836001600160a01b036127c9838561065c565b5116848114612817575b146127e1575b6001016127ad565b6127eb818661065c565b519060038202918083046003149015171561069557600a6001920461280f8961063c565b5290506127d9565b9050612823828761065c565b51906003820291808304600314901517156106955760405163266d6a8360e11b8152600a9092046004830152602082602481885afa80156101a85786925f91612877575b506128718a61061b565b526127d3565b9250506020823d82116128a3575b81612892602093836105e3565b810103126101b3578591515f612867565b3d9150612885565b600491959394979650146128c1575b5050505090565b9294939290916001600160a01b0316905f5b8151811015612a31576001600160a01b036128ee828461065c565b5116838114612a00575b6040516338d52e0f60e01b81526020816004818c5afa9081156101a8575f916129c7575b506001600160a01b031614612934575b6001016128d3565b61293e818561065c565b51906003820291808304600314901517156106955760405163ef8b30f760e01b8152600a90920460048301526020826024818b5afa80156101a8575f90612995575b6001925061298d8761061b565b52905061292c565b506020823d82116129bf575b816129ae602093836105e3565b810103126101b35760019151612980565b3d91506129a1565b90506020813d82116129f8575b816129e1602093836105e3565b810103126101b3576129f290612b13565b5f61291c565b3d91506129d4565b612a0a828661065c565b5160038102908082046003149015171561069557600a9004612a2b8761063c565b526128f8565b505050509091505f8080806128ba565b909650612a599192503d805f833e61246081836105e3565b509291905091955f612502565b9050155f612482565b5080612337565b5f99959391969492999897985b8751811015612ad6576001600160a01b03612a9e828a61065c565b51168a8103612ab557509050600180915b01612a83565b6001600160a01b038a1614612acd575b600190612aaf565b60019a50612ac5565b5091939550919397969596612330565b506001600160a01b03891615612324565b612b0c9195503d805f833e61019a81836105e3565b935f61230c565b51906001600160a01b03821682036101b357565b15612b2e57565b60405162461bcd60e51b815260206004820152601760248201527f546f6b656e206e6f7420666f756e6420696e20706f6f6c0000000000000000006044820152606490fd5b60405163ca4f280360e01b81526001600160a01b0391821660048201525f949092918590849060249082907f0000000000000000000000000000000000000000000000000000000000000000165afa9283156101a8575f93612dac575b5015612cc15750612be082614320565b15612bed5750506001915b565b5f5b8151811015612cb9576001600160a01b03612c0a828461065c565b5116612c1581614320565b80612c47575b612c285750600101612bef565b93505050505b612c426001600160a01b0382161515612b27565b600291565b506040516338d52e0f60e01b8152602081600481855afa9081156101a8575f91612c80575b506001600160a01b03858116911614612c1b565b90506020813d8211612cb1575b81612c9a602093836105e3565b810103126101b357612cab90612b13565b5f612c6c565b3d9150612c8d565b505050612c2e565b9150612ccc82614320565b15612cd8575050600491565b5f5b8151811015612da4576001600160a01b03612cf5828461065c565b5116612d0081614320565b80612d32575b612d135750600101612cda565b93505050505b612d2d6001600160a01b0382161515612b27565b600391565b506040516338d52e0f60e01b8152602081600481855afa9081156101a8575f91612d6b575b506001600160a01b03858116911614612d06565b90506020813d8211612d9c575b81612d85602093836105e3565b810103126101b357612d9690612b13565b5f612d57565b3d9150612d78565b505050612d19565b612dc19193503d805f833e61019a81836105e3565b915f612bd0565b6001600160a01b0391821681529181166020830152604082015265ffffffffffff606082015260800190565b9080601f830112156101b3578151612e0b81610604565b92612e1960405194856105e3565b81845260208085019260051b8201019283116101b357602001905b828210612e415750505090565b8151815260209182019101612e34565b916060838303126101b35782516001600160401b0381116101b35782612e78918501612df4565b9260208101516001600160401b0381116101b357810183601f820112156101b357805190612ea582610604565b91612eb360405193846105e3565b80835260208084019160051b830101918683116101b357602001905b828210612ef7575050509260408201516001600160401b0381116101b3576107e09201612df4565b60208091612f0484612b13565b815201910190612ecf565b90608081019160018060a01b038151168252602081015192608060208401528351809152602060a084019401905f5b818110612f5e575050506060816040829301516040850152015191015290565b825180516001600160a01b0390811688526020828101519091168189015260409182015115159188019190915260609096019590920191600101612f3e565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9291608084019360808152825180955260a0810194602060a08260051b8401019401905f5b818110613010575050506107e09394505f1960208201525f60408201526060818403910152612f9d565b90919460208061302c600193609f19888203018c528951612f0f565b97019801910196919096612fe6565b9291926080810160808252825180915260a0820190602060a08260051b8501019401915f905b82821061308e57505050506107e092935f1960208301521515604082015260608183039101526060612f9d565b909192946020806130ab600193609f198982030186528951612f0f565b970192019201909291613061565b3d156130f2573d906001600160401b03821161059957604051916130e7601f8201601f1916602001846105e3565b82523d5f602084013e565b606090565b156130fe57565b60405162461bcd60e51b815260206004820152601660248201527508cc2d2d8cac840e8de40e8e4c2dce6cccae4408aa8960531b6044820152606490fd5b9080602083519182815201916020808360051b8301019401925f915b83831061316757505050505090565b9091929394602080613185600193601f198682030187528951612f0f565b97019301930191939290613158565b90916131ab6107e09360808452608084019061313c565b915f1960208201525f60408201526060818403910152612f9d565b6131dc6107e0939260808352608083019061313c565b5f1960208301529115156040820152808203606091820152612f9d565b1561320057565b60405162461bcd60e51b8152602060048201526024808201527f435553544f4d5f5752415028343632362d34363236293a20496e76616c696420604482015263141bdbdb60e21b6064820152608490fd5b60405163ca4f280360e01b81526001600160a01b039384166004820152925f929183918290869060249082907f0000000000000000000000000000000000000000000000000000000000000000165afa9485156101a8575f9561367d575b506132b981614320565b8061366e575b1561346c576040516338d52e0f60e01b81529190602090839060049082906001600160a01b03165afa9182156101a8575f9261342b575b506040516338d52e0f60e01b815292602090849060049082906001600160a01b03165afa9283156101a8575f936133ef575b505f5b85518110156133e5576001600160a01b03613346828861065c565b51166001600160a01b0383161515806133d3575b61339a576001600160a01b0384168114613392575b6001600160a01b0385168114613389575b5060010161332b565b94506001613380565b91508161336f565b5050935050505b6001600160a01b0382161515806133c1575b6133bc906131f9565b600292565b506001600160a01b03811615156133b3565b506001600160a01b038616151561335a565b50935050506133a1565b9092506020813d602011613423575b8161340b602093836105e3565b810103126101b35761341c90612b13565b915f613328565b3d91506133fe565b9291506020833d602011613464575b81613447602093836105e3565b810103126101b357602061345c600494612b13565b9293506132f6565b3d915061343a565b91949061347883614320565b158061365e575b15613619575f5b855181101561360e576001600160a01b036134a1828861065c565b51166134ac81614320565b6134ba575b50600101613486565b6001600160a01b0383161515806135fc575b6135c2576040516338d52e0f60e01b8152602081600481855afa9081156101a8575f91613589575b506001600160a01b03868116911614613581575b6040516338d52e0f60e01b8152602081600481855afa9081156101a8575f91613548575b506001600160a01b038981169116036134b157945060016134b1565b90506020813d8211613579575b81613562602093836105e3565b810103126101b35761357390612b13565b5f61352c565b3d9150613555565b915081613508565b90506020813d82116135ba575b816135a3602093836105e3565b810103126101b3576135b490612b13565b5f6134f4565b3d9150613596565b505093509350505b6001600160a01b0382161515806135ea575b6135e5906131f9565b600192565b506001600160a01b03811615156135dc565b506001600160a01b03861615156134cc565b5093509350506135ca565b60405162461bcd60e51b815260206004820152601b60248201527f435553544f4d5f575241503a20496e76616c696420746f6b656e7300000000006044820152606490fd5b5061366886614320565b1561347f565b5061367883614320565b6132bf565b6136929195503d805f833e61019a81836105e3565b935f6132af565b604051906136a6826105ad565b5f6040838281528260208201520152565b604051608091906136c883826105e3565b6003815291601f1901825f5b8281106136e057505050565b6020906136eb613699565b828285010152016136d4565b6040516060919061370883826105e3565b6002815291601f1901825f5b82811061372057505050565b60209061372b613699565b82828501015201613714565b6040805190919061374883826105e3565b6001815291601f1901825f5b82811061376057505050565b60209061376b613699565b82828501015201613754565b60405190613784826105c8565b5f6060838281528160208201528260408201520152565b604080519091906137ac83826105e3565b6001815291601f1901825f5b8281106137c457505050565b6020906137cf613777565b828285010152016137b8565b519081151582036101b357565b906080828203126101b35781516001600160401b0381116101b3578161380f91840161074d565b9260208301516001600160401b0381116101b357830182601f820112156101b357805161383b81610604565b9161384960405193846105e3565b818352602060608185019302820101908582116101b357602001915b8183106138ad575050509260408101516001600160401b0381116101b3578361388f918301612df4565b9260608201516001600160401b0381116101b3576107e09201612df4565b6060838703126101b357604051906138c4826105ad565b835160028110156101b35782526020840151906001600160a01b03821682036101b357826020928360609501526138fd604087016137db565b6040820152815201920191613865565b959460405161391d6060826105e3565b6002815260403660208301376040516333f0703b60e11b815260609890981c60048901529485905f896024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9586156101a8575f995f97613d78575b5060038110156104b057600114613bf55750506040516338d52e0f60e01b81526001600160a01b0392909216969190506020816004818a5afa9081156101a8575f91613bbb575b506040516338d52e0f60e01b81526001600160a01b039384169791909316926020816004818b5afa9081156101a8575f91613b81575b506001600160a01b0316925f5b8351811015613b7657816001600160a01b03613a2b838761065c565b511614613ae9575b846001600160a01b03613a46838761065c565b511614613a56575b600101613a0f565b613a60818761065c565b51906003820291808304600314901517156106955760405163ef8b30f760e01b8152600a90920460048301526020826024818d5afa80156101a8575f90613ab7575b60019250613aaf8961063c565b529050613a4e565b506020823d8211613ae1575b81613ad0602093836105e3565b810103126101b35760019151613aa2565b3d9150613ac3565b613af3818761065c565b516003810290808204600314901517156106955760405163ef8b30f760e01b8152600a9091046004820152602081602481875afa9081156101a8575f91613b45575b50613b3f8861061b565b52613a33565b90506020813d8211613b6e575b81613b5f602093836105e3565b810103126101b357515f613b35565b3d9150613b52565b509496505050505050565b90506020813d602011613bb3575b81613b9c602093836105e3565b810103126101b357613bad90612b13565b5f613a02565b3d9150613b8f565b90506020813d602011613bed575b81613bd6602093836105e3565b810103126101b357613be790612b13565b5f6139cc565b3d9150613bc9565b935094509590505f5b8151811015613d6f576001600160a01b03613c19828461065c565b516001600160a01b038516929116828103613cc25750613c39818661065c565b5160038102908082046003149015171561069557600a6024602092604051958693849263266d6a8360e11b84520460048301525afa80156101a8575f90613c90575b60019250613c888761061b565b525b01613bfe565b506020823d8211613cba575b81613ca9602093836105e3565b810103126101b35760019151613c7b565b3d9150613c9c565b6001600160a01b03891692508214613cde575b60019150613c8a565b613ce8818661065c565b5160038102908082046003149015171561069557600a6024602092604051958693849263266d6a8360e11b84520460048301525afa80156101a8575f90613d3d575b60019250613d378761063c565b52613cd5565b506020823d8211613d67575b81613d56602093836105e3565b810103126101b35760019151613d2a565b3d9150613d49565b50929450505050565b909650613d909199503d805f833e61246081836105e3565b509991905098955f613985565b909392935f9160601c6040519363ca4f280360e01b85528160048601525f8560248160018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9485156101a8575f95614304575b506001600160a01b038316801580159690959194905f9081888a6142f3575b15614283575050506001805b818061427c575b15613f1857509798613eb698505f97613e9d97613e5b97909692956001600160a01b031694509250613f0f57614aaf565b5050613e6561379b565b90613e6f8261061b565b52613e798161061b565b506040516338ed77fd60e21b8152606060048201529384928392606484019061313c565b3060248401528281036003190160448401526060612f9d565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af180156101a857610eb4915f91613efb575061061b565b61193091503d805f833e610ac981836105e3565b82159450614aaf565b9195508092999496939750159081614273575b5015613f83575050613eb69495509181613f5693613f4c83875f9896613251565b9591939094614c68565b60405190613f656020836105e3565b8282526040516338ed77fd60e21b8152938492839260048401614d9f565b613f9290868587989497612b73565b909160058310156104b05782613fab5750505050505050565b909192939495969750606094865f1461426d57507f0000000000000000000000000000000000000000000000000000000000000000945b6001600160a01b0382161591821561426757507f0000000000000000000000000000000000000000000000000000000000000000935b60018103614152575050505061402c6136f7565b6040516338d52e0f60e01b8152959094906020876004816001600160a01b0387165afa9687156101a8575f976140f9575b50613eb6965f96959493614096938593919261408a9285916001600160a01b0390811691908a1690614aaf565b9150506117a98761061b565b9150506140a28461063c565b525b6140ac61379b565b92604051926140ba846105c8565b6001600160a01b0316835260208301526040820152600160608201526140df8261061b565b526140e98161061b565b5060405190613f656020836105e3565b909594939296506020813d60201161414a575b81614119602093836105e3565b810103126101b357613eb69661408a61409693855f996141398296612b13565b9b509450509350509293949561405d565b3d915061410c565b91613eb698969594915f9893600281148a146141b257505050506141a09161419484928361417e6136f7565b986001600160a01b0385811691908a1690614aaf565b915050611afb8761061b565b9150506141ac8461063c565b526140a4565b92979194935090916003811489146142005750506141a0929184916141d56136f7565b976141e08484614816565b9150506141ec8a61061b565b526001600160a01b03908116921690614aaf565b6004919794935014614215575b5050506140a4565b61425292955083906142256136f7565b966142308388614908565b91505061423c8961061b565b526001600160a01b039081169190871690614aaf565b91505061425e8461063c565b525f808061420d565b93614018565b94613fe2565b9050155f613f2b565b5080613e2a565b5f9a9693919799959894929a5b88518110156142e3576001600160a01b036142ab828b61065c565b51168b81036142c257509050600180915b01614290565b6001600160a01b038b16146142da575b6001906142bc565b60019b506142d2565b5091939794989650919498613e23565b506001600160a01b03861615613e17565b6143199195503d805f833e61019a81836105e3565b935f613df8565b6001600160a01b03908116907f0000000000000000000000000000000000000000000000000000000000000000168114614414576040516338d52e0f60e01b8152602081600481855afa90816143dd575b5061437b57505f90565b602060249160405192838092636c82bbbf60e11b82523360048301525afa90816143ae575b506143a9575f90565b600190565b6020813d6020116143d5575b816143c7602093836105e3565b810103126101b357516143a0565b3d91506143ba565b6020813d60201161440c575b816143f6602093836105e3565b810103126101b35761440790612b13565b614371565b3d91506143e9565b505f90565b604051636eb1769f60e11b81523060048201526001600160a01b03838116602483018190529391929190821690602084604481855afa9384156101a8575f94614558575b505f1984018094116106955760405163095ea7b360e01b602082019081526001600160a01b03909216602482015260448101949094525f9081906144ae86606481015b03601f1981018852876105e3565b85519082855af1906144be6130b9565b8261451e575b5081614513575b50156144d657505050565b61450e612beb936040519063095ea7b360e01b602083015260248201525f6044820152604481526145086064826105e3565b82614dca565b614dca565b90503b15155f6144cb565b80519192508115918215614536575b5050905f6144c4565b81925090602091810103126101b357602061455191016137db565b5f8061452d565b9093506020813d602011614584575b81614574602093836105e3565b810103126101b35751925f61445d565b3d9150614567565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830181905294919390831691602085604481865afa9485156101a8575f95614614575b5084018094116106955760405163095ea7b360e01b602082019081526001600160a01b03909216602482015260448101949094525f9081906144ae86606481016144a0565b9094506020813d602011614640575b81614630602093836105e3565b810103126101b35751935f6145cf565b3d9150614623565b6040516323b872dd60e01b60208201526001600160a01b039283166024820152929091166044830152606480830193909352918152612beb9161450e6084836105e3565b60405163a9059cbb60e01b60208201526001600160a01b03929092166024830152604480830193909352918152612beb9161450e6064836105e3565b91906146d2613777565b926146db613777565b506146e4613699565b506040516338d52e0f60e01b81526001600160a01b039190911690602081600481855afa9081156101a8575f916147dc575b5060405192906001600160a01b031661472e846105ad565b82845260208401526001604084015282614746613737565b906147508261061b565b5261475a8161061b565b506040516370a0823160e01b815230600482015290602082602481875afa9182156101a8575f926147a8575b5060405193614794856105c8565b845260208401526040830152606082015291565b9091506020813d6020116147d4575b816147c4602093836105e3565b810103126101b35751905f614786565b3d91506147b7565b90506020813d60201161480e575b816147f7602093836105e3565b810103126101b35761480890612b13565b5f614716565b3d91506147ea565b9061481f613777565b50614828613777565b91614831613699565b506040516001600160a01b03919091169161484b826105ad565b828252826020830152600160408301528192614865613737565b9261486f8461061b565b526148798361061b565b506020600491604051928380926338d52e0f60e01b82525afa9081156101a8575f916148ce575b5060405192906001600160a01b03166148b8846105c8565b8352602083015260408201526001606082015292565b90506020813d602011614900575b816148e9602093836105e3565b810103126101b3576148fa90612b13565b5f6148a0565b3d91506148dc565b90614911613777565b5061491a613777565b91614923613699565b506040516338d52e0f60e01b81526001600160a01b039190911690602081600481855afa9081156101a8575f916149a7575b5060405192906001600160a01b031661496d846105ad565b82845260208401526001604084015282614985613737565b9061498f8261061b565b526149998161061b565b50604051926148b8846105c8565b90506020813d6020116149d9575b816149c2602093836105e3565b810103126101b3576149d390612b13565b5f614955565b3d91506149b5565b919093926149ed613777565b946149f6613777565b506149ff613699565b506040516370a0823160e01b81523360048201526001600160a01b039190911692602082602481875afa9182156101a8575f92614a7b575b5060405194614a45866105ad565b6001600160a01b0390811686521660208501525f604085015283614a67613737565b90614a718261061b565b526147868161061b565b9091506020813d602011614aa7575b81614a97602093836105e3565b810103126101b35751905f614a37565b3d9150614a8a565b929091614aba613777565b50614ac3613777565b94614acc613699565b5015614b43575b60405193614ae0856105ad565b6001600160a01b0390811685521660208401525f604084015282614b02613737565b90614b0c8261061b565b52614b168161061b565b5060405192614b24846105c8565b6001600160a01b03168352602083015260408201526001606082015292565b6040516370a0823160e01b81523360048201526020816024816001600160a01b0388165afa9081156101a8575f91614b7d575b5050614ad3565b90506020813d602011614ba7575b81614b98602093836105e3565b810103126101b357515f614b76565b3d9150614b8b565b919092614bba613777565b50614bc3613777565b93614bcc613699565b506040516370a0823160e01b81523360048201526001600160a01b03919091169290602081602481875afa9081156101a8575f91614c36575b505060405193614c14856105ad565b6001600160a01b0390811685521660208401525f604084015282614985613737565b90506020813d602011614c60575b81614c51602093836105e3565b810103126101b357515f614c05565b3d9150614c44565b9695909492939196614c786136b7565b9760038410156104b0578593600103614d4457508284614cc992614c9f83614ce598614816565b915050614cab8c61061b565b52614cb58b61061b565b506001600160a01b03858116921690614baf565b915050614cd58861063c565b52614cdf8761063c565b50614908565b915050614cf18561064c565b52614cfb8461064c565b50614d0461379b565b9360405192614d12846105c8565b6001600160a01b031683526020830152604082015260016060820152614d378361061b565b52614d418261061b565b50565b91614ce594614d83928592614d59848b614908565b915050614d658d61061b565b52614d6f8c61061b565b506001600160a01b03908116921690614baf565b915050614d8f8861063c565b52614d998761063c565b50614816565b9091614db66107e09360608452606084019061313c565b915f60208201526040818403910152612f9d565b5f80614df29260018060a01b03169360208151910182865af1614deb6130b9565b9083614e3d565b8051908115159182614e1a575b5050614e085750565b635274afe760e01b5f5260045260245ffd5b81925090602091810103126101b3576020614e3591016137db565b155f80614dff565b90614e615750805115614e5257805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580614e92575b614e72575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15614e6a56fea2646970667358221220e323e5fa26c6abf091be22f35678640537c279bbf3c0177d321594dfa3820d9b64736f6c634300081b0033","sourceMap":"746:3925:42:-:0;;;;;;;;;;-1:-1:-1;746:3925:42;;;;;;;;;;;;;;;;;;;;;3948:50;;746:3925;3948:50;;;746:3925;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;746:3925:42;;;;;;-1:-1:-1;;;3603:32:42;;746:3925;;;;;3603:32;;;746:3925;-1:-1:-1;746:3925:42;3603:32;746:3925;3603:5;-1:-1:-1;;;;;746:3925:42;3603:32;;;;;;;746:3925;3603:32;;;746:3925;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;-1:-1:-1;;746:3925:42;;;;;3734:3;746:3925;;3714:18;;;;;746:3925;;-1:-1:-1;;;;;3773:10:42;746:3925;3773:10;;:::i;:::-;746:3925;;3753:31;;;;:::i;:::-;746:3925;;3699:13;;3714:18;;;;746:3925;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;746:3925:42;;;;;-1:-1:-1;746:3925:42;;;;;;;;;;;;;3603:32;;;;;;746:3925;3603:32;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;746:3925;;;;;;;;;;;;;;;;;;;-1:-1:-1;;746:3925:42;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;-1:-1:-1;;;;;746:3925:42;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;1466:13;;746:3925;1511:3;746:3925;;1481:28;;;;;1602:20;;746:3925;1602:20;;;:::i;:::-;746:3925;;;:::i;:::-;;4557:66;;;;;;:::i;:::-;746:3925;;;;;;;:::i;:::-;;;;4535:127;;746:3925;1530:93;;;;:::i;:::-;;;;;;:::i;:::-;;746:3925;1466:13;;1481:28;;746:3925;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;746:3925:42;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;746:3925:42;;-1:-1:-1;746:3925:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2781:48;746:3925;;;:::i;:::-;2781:48;;:::i;:::-;746:3925;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;746:3925:42;;;;;;;;;;;;;;;;;;;-1:-1:-1;;746:3925:42;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;3071:1;746:3925;;;;;;;;;3101:20;3083:38;;;:::i;:::-;746:3925;3149:19;3131:37;;;:::i;:::-;746:3925;3196:21;3178:39;;;:::i;:::-;746:3925;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3101:20;746:3925;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;746:3925:42;;;;-1:-1:-1;;;3948:50:42;;746:3925;;3948:50;;746:3925;;;;;;;;;;;;3948:50;;;746:3925;;;;-1:-1:-1;;;;;746:3925:42;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;746:3925:42;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;746:3925:42;;;;;;;;;-1:-1:-1;;;;;746:3925:42;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;746:3925:42;;;;;;;:::o;:::-;;;;-1:-1:-1;746:3925:42;;;;;-1:-1:-1;746:3925:42;;;;;;;;-1:-1:-1;;;;;746:3925:42;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;746:3925:42;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;746:3925:42;;;;;;;:::o;:::-;-1:-1:-1;;;;;746:3925:42;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;3101:20;746:3925;;;;;;;:::o;:::-;;;3149:19;746:3925;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;746:3925:42;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;1679:879;;;;;;;746:3925;;;;;;:::i;:::-;-1:-1:-1;746:3925:42;;-1:-1:-1;746:3925:42;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;746:3925:42;;-1:-1:-1;746:3925:42;;;;;;1860:18;1894:20;;;1890:223;;2143:9;;2341:21;2143:9;;2248:66;2143:9;;;;2248:66;;:::i;:::-;746:3925;;2353:9;2341:21;;:::i;:::-;746:3925;2325:13;;746:3925;;;;;;;;;;:::i;:::-;;;;2502:49;;746:3925;;2488:11;;:63;1679:879::o;1890:223::-;746:3925;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;746:3925:42;;2074:1;746:3925;2062:14;;746:3925;2048:28;2090:12;:::o;746:3925::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;746:3925:42;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;746:3925:42;;;;;;;;:::i;:::-;;:::o;:::-;;-1:-1:-1;746:3925:42;;;:::o;2936:3143:48:-;746:3925:42;;-1:-1:-1;;;3327:32:48;;746:3925:42;;;;3327:32:48;;;746:3925:42;2936:3143:48;;746:3925:42;;2936:3143:48;746:3925:42;;3327:32:48;746:3925:42;3327:5:48;-1:-1:-1;;;;;746:3925:42;3327:32:48;;;;;;;746:3925:42;3327:32:48;;;2936:3143;-1:-1:-1;;;;;;746:3925:42;;;3431:23:48;;;:49;;;3399:18;;746:3925:42;;;;3431:23:48;:49;;;2936:3143;3427:469;;;3496:21;;;3513:4;3531:20;3427:469;3910:31;;;;3427:469;3906:2167;;;746:3925:42;;;4122:13:48;746:3925:42;;;;:::i;:::-;4114:21:48;4122:13;;-1:-1:-1;;;;;746:3925:42;5189:31:44;;;5269:67;;;;5281:21;;5269:67;;5576:21;;;;5269:67;746:3925:42;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;8593:21:44;8628:6;;8624:91;;5269:67;746:3925:42;;;;;;:::i;:::-;;;;;8757:122:44;746:3925:42;8757:122:44;;746:3925:42;8757:122:44;746:3925:42;8757:122:44;;746:3925:42;8944:34:44;;:::i;:::-;8988:15;;;;:::i;:::-;;;;;:::i;:::-;;746:3925:42;;;;;;:::i;:::-;;;;;9049:209:44;;746:3925:42;;9049:209:44;;746:3925:42;9049:209:44;746:3925:42;9049:209:44;;746:3925:42;5682:44:44;;:::i;:::-;5736:18;;;;:::i;:::-;;;;;:::i;:::-;-1:-1:-1;5825:799:44;;;;;-1:-1:-1;5916:12:44;-1:-1:-1;;;;;746:3925:42;5890:8:44;;;:::i;:::-;;746:3925:42;5825:799:44;6658:346;;;;6704:133;6792:21;;;;;6658:346;746:3925:42;;-1:-1:-1;;;6704:133:44;;746:3925:42;;;;;3327:32:48;6704:133:44;;;:::i;:::-;;746:3925:42;;6704:6:44;-1:-1:-1;;;;;746:3925:42;6704:133:44;;;;;;;746:3925:42;7425:12:44;746:3925:42;;;;;;6704:133:44;;;6658:346;6687:150;6658:346;;7081:280;;;7156:10;;;;;7218:39;7156:10;;7148:52;;;;:::i;:::-;;7218:39;:::i;:::-;7425:12;:::i;:::-;746:3925:42;;;;7496:347:44;;;7590:35;;;;;;;;:::i;:::-;7549:10;7541:102;;;;:::i;:::-;;746:3925:42;;;4155:215:48;:::o;746:3925:42:-;;;-1:-1:-1;;;746:3925:42;;;3327:32:48;746:3925:42;;;;3327:32:48;746:3925:42;;;;;;;;;;;7496:347:44;7783:35;;;;;;;:::i;:::-;7771:10;;7783:35;;:::i;7081:280::-;7330:15;7318:10;;;7330:15;;:::i;6704:133::-;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;746:3925:42;;;;;;;;;6792:21:44;;;-1:-1:-1;6792:21:44;;6658:346;6885:108;6948:21;;;;;746:3925:42;;-1:-1:-1;;;6885:108:44;;746:3925:42;;;;;3327:32:48;6885:108:44;;;:::i;:::-;;746:3925:42;;6885:6:44;-1:-1:-1;;;;;746:3925:42;6885:108:44;;;;;;;746:3925:42;7425:12:44;746:3925:42;;;;;;6885:108:44;;;6658:346;6868:125;6658:346;;;6885:108;;;;;;;;;;;;;:::i;:::-;;;;;;;5825:799;5960:145;;;;;5825:799;6238:16;6231:4;;6211:10;6238:16;;:::i;:::-;6322:6;-1:-1:-1;;;;;746:3925:42;6331:17:44;746:3925:42;6331:17:44;;:::i;:::-;6395:7;6404:17;;;;:::i;:::-;-1:-1:-1;;;;;746:3925:42;6436:177:44;;;;;;746:3925:42;;;;;;;;;;;;;;;;6436:177:44;;3327:32:48;6436:177:44;;;:::i;:::-;;;;;;;;;;;;;;5825:799;;;;;6436:177;;;;;:::i;:::-;746:3925:42;;6436:177:44;;;;746:3925:42;;;;6436:177:44;746:3925:42;;;;;;;;;6436:177:44;746:3925:42;;;5960:145:44;6077:12;-1:-1:-1;;;;;746:3925:42;;6041:17:44;746:3925:42;6041:8:44;;;:::i;:::-;;:14;;:17;:::i;:::-;;:26;746:3925:42;5960:145:44;;8624:91;-1:-1:-1;746:3925:42;;-1:-1:-1;;;8665:39:44;;8693:10;3327:32:48;8665:39:44;;746:3925:42;;;-1:-1:-1;746:3925:42;;3327:32:48;746:3925:42;8665:39:44;;;;;;;;;;;;;;;;8624:91;8650:54;8624:91;;8665:39;;;;746:3925:42;8665:39:44;;746:3925:42;8665:39:44;;;;;;746:3925:42;8665:39:44;;;:::i;:::-;;;746:3925:42;;;;;;;8665:39:44;;;;;;-1:-1:-1;8665:39:44;;5576:21;;;;;5269:67;746:3925:42;;-1:-1:-1;;;5305:31:44;;5325:10;3327:32:48;5305:31:44;;746:3925:42;;;3327:32:48;746:3925:42;5305:31:44;;;;;;;;;;;;;;;5269:67;;;;;5305:31;;;;746:3925:42;5305:31:44;;746:3925:42;5305:31:44;;;;;;746:3925:42;5305:31:44;;;:::i;:::-;;;746:3925:42;;;;;;;5305:31:44;;;;;;-1:-1:-1;5305:31:44;;;746:3925:42;;;;;;;;;4110:529:48;746:3925:42;;;-1:-1:-1;;;;;746:3925:42;2361:31:44;;;746:3925:42;;;;2484:171:44;;746:3925:42;;2361:31:44;;746:3925:42;;;;;2624:21:44;;4110:529:48;746:3925:42;;2484:171:44;:::i;:::-;2729:43;;;;;:::i;:::-;2782:19;;;;:::i;:::-;;;;;:::i;:::-;-1:-1:-1;2873:679:44;;;;;-1:-1:-1;;2928:12:44;-1:-1:-1;;;;;746:3925:42;2902:8:44;;;:::i;:::-;;746:3925:42;2873:679:44;3591:345;;;;3724:21;3638:131;3724:21;;;;;3591:345;746:3925:42;;;;;;;;;;;3638:131:44;;3327:32:48;3638:131:44;;;:::i;:::-;;;:6;-1:-1:-1;;;;;746:3925:42;3638:131:44;;;;;;4353:13;746:3925:42;;;3638:131:44;;;3591:345;3620:149;3591:345;;4013:276;;;4112:13;;;;4148:39;4112:13;;;;:::i;:::-;746:3925:42;4088:10:44;4080:50;;;;:::i;4353:13::-;746:3925:42;4409:215:48;:::o;4013:276:44:-;4260:13;;;;;;:::i;:::-;746:3925:42;4248:10:44;;4260:13;;:::i;3638:131::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;746:3925:42;;;;;;;;;3724:21:44;;;-1:-1:-1;3724:21:44;;3591:345;3880:21;;;;3818:107;3880:21;;;;;3591:345;746:3925:42;;-1:-1:-1;;;3818:107:44;;746:3925:42;;;;;3327:32:48;3818:107:44;;;:::i;:::-;;746:3925:42;;3818:6:44;-1:-1:-1;;;;;746:3925:42;3818:107:44;;;;;;4353:13;746:3925:42;;;3818:107:44;;;3591:345;3800:125;3591:345;;;3818:107;;;;;;;;;;;;;:::i;:::-;;;;;;;3880:21;;;-1:-1:-1;3880:21:44;;2873:679;2972:145;;2873:679;3249:15;3242:4;;3222:10;3249:15;;:::i;:::-;3325:7;3334:15;;;;;:::i;:::-;-1:-1:-1;;;;;746:3925:42;;3364:177:44;;;;;746:3925:42;;-1:-1:-1;;;3364:177:44;;746:3925:42;;;;;;;;;;;;3364:177:44;;3451:6;-1:-1:-1;;;;;746:3925:42;;3327:32:48;3364:177:44;;;:::i;:::-;;;;;;;;;;;;;;2873:679;;;;;3364:177;;;;;:::i;:::-;746:3925:42;;3364:177:44;;;;746:3925:42;;;;3364:177:44;746:3925:42;;;;;;;;;3364:177:44;746:3925:42;;;2972:145:44;3089:12;-1:-1:-1;;;;;746:3925:42;;3053:17:44;746:3925:42;3053:8:44;;;:::i;:17::-;;:26;746:3925:42;2972:145:44;;2624:21;;;-1:-1:-1;2624:21:44;;3906:2167:48;4659:15;;;;;;;;;;;;:33;;;;3906:2167;-1:-1:-1;4655:1418:48;;;746:3925:42;;;4882:47:48;746:3925:42;;;4882:47:48;;;:::i;:::-;746:3925:42;;;;;;;;:::i;:::-;4948:22:48;;8402:15:43;8395:4;;8375:10;8402:15;;:::i;:::-;8469:7;8478:15;;;;;:::i;:::-;-1:-1:-1;;;;;8583:6:43;746:3925:42;;;;;;8504:157:43;;;;;746:3925:42;8504:157:43;746:3925:42;;;;;;;;;;;;;;;8504:157:43;;3327:32:48;8504:157:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4944:645:48;746:3925:42;;8732:200:43;746:3925:42;;;8990:62:43;746:3925:42;;;;;;8732:200:43;:::i;:::-;746:3925:42;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;8990:62:43;;3327:32:48;8990:62:43;;;:::i;:::-;;;;;;;;;;746:3925:42;9082:13:43;746:3925:42;;9149:16:43;746:3925:42;8990:62:43;;;4944:645:48;9082:13:43;;;:::i;:::-;746:3925:42;;;;8375:10:43;;-1:-1:-1;;;;;746:3925:42;9149:16:43;:::i;8990:62::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;746:3925:42;;;;;;;;;;8504:157:43;;;;;;;;;;;;;;:::i;:::-;746:3925:42;;8504:157:43;;;;;;;;;;;4944:645:48;5309:265;;;;;;;;;9624:24:43;9715:34;;:::i;:::-;746:3925:42;;;;;;;9871:39:43;;9899:10;3327:32:48;9871:39:43;;746:3925:42;;9871:39:43;3327:32:48;9871:39:43;;;;;;;;;;;;;4944:645:48;10021:4:43;10028:20;10021:4;;9899:10;10028:20;;:::i;:::-;10100:7;10109:17;;;;:::i;:::-;-1:-1:-1;;;;;10216:6:43;746:3925:42;;;;;10137:157:43;;;;;746:3925:42;;10137:157:43;746:3925:42;;;;;;;;;;;;;;10137:157:43;;3327:32:48;10137:157:43;;;:::i;:::-;;;;;;;;;;;;;;4944:645:48;746:3925:42;;9747:1:43;746:3925:42;;;;;10309:39:43;;;;;;746:3925:42;10309:39:43;;;10305:3331;746:3925:42;;;10473:172:43;;10799:214;10473:172;;11811:63;10473:172;;;11165;10473;;;:::i;:::-;10659:16;;;;;;:::i;:::-;;;;;:::i;:::-;-1:-1:-1;;;;;;746:3925:42;;;;;;;;10799:214:43;:::i;:::-;11027:16;;;;;;:::i;:::-;;;;;:::i;:::-;;11165:172;:::i;:::-;11351:16;;;;;;:::i;:::-;;;;;:::i;:::-;;11451:44;;:::i;:::-;746:3925:42;;;;;;;:::i;:::-;;;;;11520:226:43;;746:3925:42;11520:226:43;746:3925:42;11520:226:43;;746:3925:42;11520:226:43;746:3925:42;11520:226:43;;746:3925:42;11509:237:43;;;:::i;:::-;;;;;:::i;:::-;;746:3925:42;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;11811:63:43;;3327:32:48;11811:63:43;;;:::i;:::-;;;;;;;;;;11908:12;13766:39;746:3925:42;;;13766:39:43;746:3925:42;;;11978:15:43;746:3925:42;11811:63:43;;;11908:12;;;:::i;:::-;746:3925:42;;;;9899:10:43;;-1:-1:-1;;;;;746:3925:42;11978:15:43;:::i;:::-;13766:39;:::i;:::-;9899:10;;10021:4;;13766:39;;:::i;10305:3331::-;12168:168;;;;12488:210;12168:168;13442:63;12168:168;;:::i;:::-;12350:16;;;;;;:::i;:::-;;;;;:::i;:::-;-1:-1:-1;;;;;;746:3925:42;;;;;;;;12488:210:43;:::i;:::-;12712:16;;;;;;:::i;:::-;;;;;:::i;:::-;;12850:118;;;;:::i;746:3925:42:-;-1:-1:-1;;;746:3925:42;;;3327:32:48;746:3925:42;3327:32:48;746:3925:42;;10137:157:43;;;;;:::i;:::-;746:3925:42;;10137:157:43;;;;;746:3925:42;;;9871:39:43;;;;746:3925:42;9871:39:43;;746:3925:42;9871:39:43;;;;;;746:3925:42;9871:39:43;;;:::i;:::-;;;746:3925:42;;;;;9871:39:43;;;;;;;-1:-1:-1;9871:39:43;;4655:1418:48;746:3925:42;;;5702:98:48;746:3925:42;6035:13:48;746:3925:42;;;;;;;;;;;;5702:98:48;:::i;:::-;746:3925:42;;;;;;:::i;:::-;6027:21:48;5822:240;6608:40:45;6679:52;;;;;;6706:12;;6679:52;;-1:-1:-1;;;;;746:3925:42;;;;6786:12:45;6760:50;;6821:535;;;;;6865:100;;6821:535;7018:7;7027:14;746:3925:42;7018:7:45;-1:-1:-1;;;;;746:3925:42;;7027:14:45;:::i;:::-;-1:-1:-1;;;;;746:3925:42;7056:177:45;;;;;746:3925:42;;-1:-1:-1;;;7056:177:45;;746:3925:42;;;;;;;;7056:177:45;7143:6;-1:-1:-1;;;;;746:3925:42;;3327:32:48;7056:177:45;;;:::i;:::-;;;;;;;;;;;6821:535;;;7370:6;;;7392:178;;7366:3222;-1:-1:-1;746:3925:42;;;;-1:-1:-1;;;;;746:3925:42;;2490:24:45;;746:3925:42;2490:52:45;;;;2517:12;;2490:52;;-1:-1:-1;;;;;746:3925:42;;;2571:23:45;;;:50;;;;2597:12;;2571:50;;746:3925:42;;;;;;2636:35:45;;;;;6035:13:48;2636:35:45;;;2632:2971;6035:13:48;;;2818:34:45;;;;;;;;:::i;:::-;746:3925:42;;-1:-1:-1;;;3031:26:45;;746:3925:42;;;;;3327:32:48;746:3925:42;-1:-1:-1;;;;;746:3925:42;;3031:26:45;;;;;;;;;;;;;;;;;;;2632:2971;-1:-1:-1;3260:117:45;;746:3925:42;;2934:236:45;;746:3925:42;;;;-1:-1:-1;;;;;746:3925:42;;;;;;;;;2934:236:45;:::i;:::-;2918:252;;;;;;:::i;:::-;;3260:117;:::i;:::-;3244:133;;;;;;:::i;:::-;;2632:2971;5613:682;;;5648:44;;;:::i;:::-;746:3925:42;;-1:-1:-1;;;5860:42:45;;5896:4;3327:32:48;5860:42:45;;746:3925:42;;;-1:-1:-1;;;;;746:3925:42;;;;3327:32:48;746:3925:42;;5860:42:45;;;;;;;;;;;;;;;;;;5613:682;746:3925:42;5706:260:45;746:3925:42;;;;;;;;;;:::i;:::-;;;;5719:247:45;;746:3925:42;;5719:247:45;;746:3925:42;5719:247:45;746:3925:42;5719:247:45;;746:3925:42;5706:260:45;;;:::i;:::-;;;:::i;:::-;;5613:682;7931:367;;;746:3925:42;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;7997:126:45;;746:3925:42;3327:32:48;7997:126:45;;746:3925:42;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;3327:32:48;746:3925:42;;;6035:13:48;746:3925:42;;;;;;;-1:-1:-1;;746:3925:42;;;;;8071:17:45;746:3925:42;:::i;:::-;7997:126:45;;:6;-1:-1:-1;;;;;746:3925:42;7997:126:45;;;;;;;746:3925:42;8331:13:45;746:3925:42;;7997:126:45;;;7931:367;7979:144;8331:13;:::i;:::-;746:3925:42;;;;-1:-1:-1;;;;;746:3925:42;6760:23:45;746:3925:42;;8448:16:45;8436:10;;;8448:16;;:::i;8359:305::-;8547:10;;;;;8610:39;8547:10;;8539:53;;;;:::i;7997:126::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;746:3925:42;;;;;;;;;7931:367:45;8180:103;746:3925:42;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;8180:103:45;;746:3925:42;;;;;3327:32:48;8180:103:45;;;:::i;:::-;;746:3925:42;;8180:6:45;-1:-1:-1;;;;;746:3925:42;8180:103:45;;;;;;;746:3925:42;8331:13:45;746:3925:42;;8180:103:45;;;8162:121;8331:13;:::i;5860:42::-;;;;;;746:3925:42;5860:42:45;;746:3925:42;5860:42:45;;;;;;746:3925:42;5860:42:45;;;:::i;:::-;;;746:3925:42;;;;;;;;5860:42:45;;-1:-1:-1;5706:260:45;5860:42;;;;;-1:-1:-1;5860:42:45;;5613:682;6008:43;;;;;:::i;:::-;746:3925:42;;;;;;;:::i;:::-;-1:-1:-1;;;;;746:3925:42;;;;6079:205:45;;746:3925:42;;6079:205:45;;746:3925:42;;;;;6079:205:45;;746:3925:42;6065:219:45;;;:::i;:::-;;;;;:::i;:::-;;5613:682;;3031:26;;;;;;;;;746:3925:42;3031:26:45;;746:3925:42;3031:26:45;;;;;;746:3925:42;3031:26:45;;;:::i;:::-;;;746:3925:42;;;;;2934:236:45;3260:117;746:3925:42;;;;;;;;;;:::i;:::-;3031:26:45;;;;;;;;;746:3925:42;;;;3031:26:45;;;-1:-1:-1;3031:26:45;;;746:3925:42;;;;;;;;;2632:2971:45;746:3925:42;;;;;;;;3398:37:45;746:3925:42;3398:37:45;;3394:2209;746:3925:42;;;3584:34:45;;;;;3701:223;3584:34;;4016:172;3584:34;;;:::i;:::-;746:3925:42;-1:-1:-1;;;;;746:3925:42;;;;;;;;;;3701:223:45;:::i;:::-;3685:239;;;;;;:::i;:::-;;4016:172;:::i;:::-;4000:188;;;;;;:::i;:::-;;2632:2971;;3394:2209;746:3925:42;;;;;;-1:-1:-1;746:3925:42;;4217:27:45;4209:35;;4217:27;;4317:34;;;4694:221;4317:34;;;;;:::i;:::-;4443:170;;;;;:::i;:::-;4427:186;;;;;;:::i;:::-;;-1:-1:-1;;;;;746:3925:42;;;;;;;;4694:221:45;:::i;4205:1398::-;3327:32:48;746:3925:42;;;;;;4936:37:45;4932:671;;4205:1398;;;;;2632:2971;;4932:671;5375:217;4997:34;;;;;:::i;:::-;5125:168;;;;;:::i;:::-;5109:184;;;;;;:::i;:::-;;-1:-1:-1;;;;;746:3925:42;;;;;;;;;;5375:217:45;:::i;:::-;5359:233;;;;;;:::i;:::-;;4932:671;;;;;;746:3925:42;-1:-1:-1;;;746:3925:42;;;3327:32:48;746:3925:42;3327:32:48;746:3925:42;;2571:50:45;;;;2490:52;;;;7392:178;7523:14;;7516:4;7496:10;-1:-1:-1;;;;;746:3925:42;;7523:14:45;:::i;:::-;7392:178;;;7366:3222;8725:21;;;;;;;;;;;;;;8760:258;;;7366:3222;746:3925:42;;-1:-1:-1;;;;;746:3925:42;;;;2517:12:45;2490:52;;-1:-1:-1;;;;;746:3925:42;;2571:23:45;:50;;;;2597:12;2571:50;;746:3925:42;;;;;;2636:35:45;;;;;;;6035:13:48;2636:35:45;;;2632:2971;6035:13:48;;;2818:34:45;;;;;;;;;:::i;:::-;746:3925:42;;-1:-1:-1;;;3031:26:45;;746:3925:42;;;;3327:32:48;746:3925:42;-1:-1:-1;;;;;746:3925:42;;3031:26:45;;;;;;;;;;;;;;;2632:2971;-1:-1:-1;3260:117:45;;746:3925:42;2934:236:45;;-1:-1:-1;;;;;746:3925:42;;;2490:24:45;;746:3925:42;;;;;;;;;;;2934:236:45;:::i;:::-;2918:252;;;;;;:::i;3260:117::-;3244:133;;;;;;:::i;:::-;;2632:2971;5648:44;;:::i;:::-;746:3925:42;;-1:-1:-1;;;5860:42:45;;8733:4;3327:32:48;5860:42:45;;746:3925:42;;;-1:-1:-1;;;;;746:3925:42;;;;3327:32:48;746:3925:42;;5860:42:45;;;;;;;;;;;;;;;;;;2632:2971;746:3925:42;;;;;;;:::i;:::-;;;;5719:247:45;;746:3925:42;;5719:247:45;;746:3925:42;5719:247:45;746:3925:42;5719:247:45;;746:3925:42;5706:260:45;;;:::i;:::-;;;;;:::i;:::-;-1:-1:-1;9378:365:45;;;9443:126;746:3925:42;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;9443:126:45;;3327:32:48;9443:126:45;;;:::i;:::-;;;:6;-1:-1:-1;;;;;746:3925:42;9443:126:45;;;;;;;746:3925:42;;;;;9776:12:45;746:3925:42;;9443:126:45;;;9426:143;9776:12;:::i;:::-;746:3925:42;;;;-1:-1:-1;;;;;746:3925:42;6760:23:45;746:3925:42;;-1:-1:-1;9892:15:45;;9880:10;;-1:-1:-1;;;;;746:3925:42;9892:15:45;:::i;:::-;10169:409;;;10281:39;;;;;;:::i;:::-;10269:10;;;-1:-1:-1;;;;;746:3925:42;10281:39:45;:::i;10169:409::-;10445:39;;;;;10524;10445;;;;:::i;:::-;10400:10;10392:114;;;;:::i;9803:303::-;10052:39;9990:10;;;;;;;9982:52;;;;:::i;10052:39::-;9803:303;;9443:126;;;;;;;;;;;;;:::i;9378:365::-;9625:103;746:3925:42;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;9625:103:45;;746:3925:42;;;;;3327:32:48;9625:103:45;;;:::i;:::-;;746:3925:42;;9625:6:45;-1:-1:-1;;;;;746:3925:42;9625:103:45;;;;;;;746:3925:42;;;;;9776:12:45;746:3925:42;;9625:103:45;;;9608:120;9776:12;:::i;5860:42::-;;;;;746:3925:42;5860:42:45;;746:3925:42;5860:42:45;;;;;;746:3925:42;5860:42:45;;;:::i;:::-;;;746:3925:42;;;;;;;5860:42:45;;;;;;;-1:-1:-1;5860:42:45;;;746:3925:42;;;;;;;;;3031:26:45;;;;;;746:3925:42;3031:26:45;;746:3925:42;3031:26:45;;;;;;746:3925:42;3031:26:45;;;:::i;:::-;;;746:3925:42;;;;;2934:236:45;746:3925:42;;;;;3260:117:45;746:3925:42;;:::i;:::-;3031:26:45;;;;;;;746:3925:42;;;;3031:26:45;;;-1:-1:-1;3031:26:45;;;746:3925:42;;;;;;;;;;;2632:2971:45;746:3925:42;;;;;;;;;3398:37:45;;746:3925:42;;3584:34:45;;;;;3701:223;4016:172;3584:34;;;;;:::i;:::-;746:3925:42;-1:-1:-1;;;;;746:3925:42;;;2490:24:45;;746:3925:42;;;;;;;;;3701:223:45;:::i;:::-;3685:239;;;;;;:::i;4016:172::-;4000:188;;;;;;:::i;:::-;;2632:2971;;3394:2209;746:3925:42;;;;-1:-1:-1;746:3925:42;;;;4217:27:45;4209:35;;4217:27;;4317:34;;4694:221;4317:34;;;;;:::i;:::-;4443:170;;;;;:::i;:::-;4427:186;;;;;;:::i;4205:1398::-;3327:32:48;746:3925:42;;;4936:37:45;;4932:671;;4205:1398;;;;;2632:2971;;4932:671;5375:217;4997:34;;;;;:::i;:::-;5125:168;;;;;:::i;:::-;5109:184;;;;;;:::i;5375:217::-;5359:233;;;;;;:::i;:::-;;4932:671;;;;;;746:3925:42;-1:-1:-1;;;;746:3925:42;;;3327:32:48;746:3925:42;3327:32:48;746:3925:42;;2571:50:45;;;;;2490:52;;;;;8760:258;746:3925:42;;-1:-1:-1;;;8831:39:45;;8859:10;3327:32:48;8831:39:45;;746:3925:42;-1:-1:-1;;;;;746:3925:42;;;-1:-1:-1;746:3925:42;;3327:32:48;746:3925:42;;8831:39:45;;;;;;;;;;;;8760:258;8971:14;8808:62;;8733:4;;8859:10;;8971:14;;:::i;:::-;8760:258;;8831:39;;;746:3925:42;8831:39:45;;746:3925:42;8831:39:45;;;;;;746:3925:42;8831:39:45;;;:::i;:::-;;;746:3925:42;;;;;8971:14:45;746:3925:42;;8831:39:45;;;;;-1:-1:-1;8831:39:45;;7056:177;;;;;746:3925:42;7056:177:45;;:::i;:::-;746:3925:42;7056:177:45;;;;6865:100;746:3925:42;;-1:-1:-1;;;6911:39:45;;6939:10;3327:32:48;6911:39:45;;746:3925:42;;;-1:-1:-1;746:3925:42;;3327:32:48;746:3925:42;-1:-1:-1;;;;;746:3925:42;;6911:39:45;;;;;;;746:3925:42;6911:39:45;;;6865:100;6894:56;6865:100;;;6911:39;;;746:3925:42;6911:39:45;;746:3925:42;6911:39:45;;;;;;746:3925:42;6911:39:45;;;:::i;:::-;;;746:3925:42;;;;;6911:39:45;;;;;;-1:-1:-1;6911:39:45;;6821:535;7264:82;6821:535;7264:82;7310:21;;-1:-1:-1;6821:535:45;;6760:50;;;;;6679:52;;;;4659:33:48;4678:14;;;4659:33;;;3910:31;;;;;3427:469;746:3925:42;3587:13:48;;;;;;;;;;;;;3621:3;746:3925:42;;3602:17:48;;;;;-1:-1:-1;;;;;3668:9:48;;;;:::i;:::-;746:3925:42;;3700:18:48;;;;;3742:21;;;746:3925:42;3742:21:48;3696:176;;746:3925:42;3587:13:48;;3696:176;-1:-1:-1;;;;;746:3925:42;;3792:17:48;3788:84;;3696:176;746:3925:42;3696:176:48;;;3788:84;746:3925:42;;-1:-1:-1;3788:84:48;;3602:17;;;;;;;;;;;;;;3427:469;;3431:49;-1:-1:-1;;;;;;746:3925:42;;3458:22:48;3431:49;;3327:32;;;;;;;746:3925:42;3327:32:48;;;;;;:::i;:::-;;;;;6085:1939;746:3925:42;;-1:-1:-1;;;6449:32:48;;746:3925:42;;;;6449:32:48;;;746:3925:42;;;;6085:1939:48;;746:3925:42;;6449:5:48;-1:-1:-1;;;;;746:3925:42;;6085:1939:48;;-1:-1:-1;746:3925:42;6449:32:48;746:3925:42;;6449:32:48;;;;;;;-1:-1:-1;6449:32:48;;;6085:1939;-1:-1:-1;;;;;;746:3925:42;;;-1:-1:-1;;;6553:23:48;;:49;;;;6085:1939;6549:469;;;6618:21;;;6635:4;6653:20;6549:469;7032:31;;;;6549:469;7028:990;;;746:3925:42;;;;;-1:-1:-1;746:3925:42;;;;;;;:::i;:::-;9706:1:44;746:3925:42;;;;;;;;6449:32:48;746:3925:42;;;;;;;;;9839:28:44;;6449:32:48;9839:28:44;;746:3925:42;9839:28:44;;;;;;;-1:-1:-1;;;9839:28:44;;;7028:990:48;-1:-1:-1;;;;;;746:3925:42;;-1:-1:-1;10059:3:44;746:3925:42;;10040:17:44;;;;;746:3925:42;-1:-1:-1;;;;;10082:9:44;;;;:::i;:::-;746:3925:42;;10082:25:44;10078:120;;10059:3;746:3925:42;-1:-1:-1;;;;;10215:9:44;;;;:::i;:::-;746:3925:42;;10215:24:44;10211:119;;10059:3;746:3925:42;;10025:13:44;;10211:119;10272:14;;;;:::i;:::-;746:3925:42;254:1:47;;;;;;;;;;;;;;;;10313:2:44;746:3925:42;254:1:47;;10259:56:44;;;:::i;:::-;746:3925:42;10211:119:44;;;;10078:120;10140:14;;;;:::i;:::-;746:3925:42;254:1:47;;;;;;;;;;;;;;;10181:2:44;254:1:47;;10127:56:44;;;:::i;:::-;746:3925:42;10078:120:44;;10040:17;;;;;;7106:50:48:o;9839:28:44:-;;;;;;;;;-1:-1:-1;9839:28:44;;;;;;:::i;:::-;;;;;:::i;:::-;-1:-1:-1;9839:28:44;;-1:-1:-1;9839:28:44;;;7028:990:48;7177:15;;;;;;;;;:33;;;;7028:990;-1:-1:-1;7173:845:48;;;7400:47;;;;;7469:201;7400:47;;;;;:::i;:::-;7469:201;;;;;;:::i;7173:845::-;7784:98;;;;-1:-1:-1;7784:98:48;;;;;;;;;:::i;:::-;746:3925:42;;;;;;;;;;:::i;:::-;11546:1:45;746:3925:42;;-1:-1:-1;;746:3925:42;;;;;;6449:32:48;746:3925:42;;;;;;;;;11678:28:45;;6449:32:48;11678:28:45;;746:3925:42;11678:28:45;;;;;;;-1:-1:-1;;;11678:28:45;;;7173:845:48;11717:18:45;-1:-1:-1;746:3925:42;;;;;;;11758:27:45;11750:35;;11758:27;;-1:-1:-1;11806:13:45;;-1:-1:-1;;;;;746:3925:42;;-1:-1:-1;;11840:3:45;746:3925:42;;11821:17:45;;;;;-1:-1:-1;;;;;11887:9:45;;;;:::i;:::-;746:3925:42;;11919:18:45;;;11915:119;;11840:3;746:3925:42;;-1:-1:-1;;;12065:26:45;;746:3925:42;;6449:32:48;746:3925:42;12065:26:45;;;;;;;;-1:-1:-1;12065:26:45;;;11840:3;-1:-1:-1;;;;;;746:3925:42;12056:35:45;12052:137;;11840:3;11758:27;746:3925:42;11806:13:45;;12052:137;12128:14;;;;;;:::i;:::-;746:3925:42;254:1:47;;;;;;;;;;;;;;;12168:2:45;254:1:47;;;12052:137:45;;12065:26;;;746:3925:42;12065:26:45;;;;;;;;;746:3925:42;12065:26:45;;;:::i;:::-;;;746:3925:42;;;;;;;:::i;:::-;12065:26:45;;;;;;-1:-1:-1;12065:26:45;;11915:119;11973:14;;;;:::i;:::-;746:3925:42;254:1:47;;;;;;;;;;;;;;;12013:2:45;254:1:47;;11961:54:45;;;:::i;:::-;746:3925:42;11915:119:45;;11821:17;;;;;;;746:3925:42;11821:17:45;;;6449:32:48;746:3925:42;;;;;;;;;12228:45:45;;6449:32:48;12228:45:45;;746:3925:42;12228:45:45;;;;;;;-1:-1:-1;12228:45:45;;;11801:402;12216:57;;;;:::i;:::-;746:3925:42;7896:111:48;:::o;12228:45:45:-;;;746:3925:42;12228:45:45;;746:3925:42;12228:45:45;;;;;;746:3925:42;12228:45:45;;;:::i;:::-;;;746:3925:42;;;;;12228:45:45;;;;;;-1:-1:-1;12228:45:45;;11746:2164;746:3925:42;;;;;;;;11546:1:45;12294:37;;11546:1;;12352:13;;-1:-1:-1;12386:3:45;746:3925:42;;12367:17:45;;;;;-1:-1:-1;;;;;12433:9:45;;;;:::i;:::-;746:3925:42;;12465:18:45;;;;;12519:14;;;;;:::i;:::-;746:3925:42;254:1:47;;;;;;;;;;;;;;;;12559:2:45;11758:27;254:1:47;;12507:54:45;;;:::i;:::-;746:3925:42;12461:249:45;746:3925:42;12352:13:45;;12461:249;-1:-1:-1;;;;;746:3925:42;;12590:22:45;12586:124;;12461:249;11758:27;12461:249;;;12586:124;12649:14;;;;;;:::i;:::-;746:3925:42;254:1:47;;;;;;;;;;;;;;;12689:2:45;254:1:47;;;12586:124:45;;12367:17;-1:-1:-1;746:3925:42;;-1:-1:-1;;;12749:49:45;;6449:32:48;12749:49:45;;746:3925:42;;;;12367:17:45;;746:3925:42;-1:-1:-1;746:3925:42;;-1:-1:-1;746:3925:42;;6449:32:48;;-1:-1:-1;746:3925:42;;-1:-1:-1;;;;;746:3925:42;12749:49:45;;;;;;;-1:-1:-1;12749:49:45;;;12737:61;;;;:::i;12290:1620::-;746:3925:42;;-1:-1:-1;746:3925:42;;;;12827:27:45;12819:35;;12827:27;;-1:-1:-1;12875:13:45;;-1:-1:-1;;;;;746:3925:42;;;;-1:-1:-1;746:3925:42;;;;;-1:-1:-1;12909:3:45;746:3925:42;;12890:17:45;;;;;746:3925:42;-1:-1:-1;;;;;12956:9:45;;;;:::i;:::-;746:3925:42;;12989:22:45;;;12985:208;;12909:3;13215:17;13211:118;;12909:3;11758:27;746:3925:42;12875:13:45;;13211:118;13268:14;;;;:::i;:::-;746:3925:42;254:1:47;12827:27:45;254:1:47;;;;;;12827:27:45;254:1:47;;;;;;;13308:2:45;11758:27;254:1:47;;13256:54:45;;;:::i;:::-;746:3925:42;13211:118:45;;;;12985:208;13110:14;;;;;;:::i;:::-;746:3925:42;254:1:47;12827:27:45;254:1:47;;;;;;12827:27:45;254:1:47;;;;;;;746:3925:42;;-1:-1:-1;;;13047:127:45;;13150:2;254:1:47;;;6449:32:48;13047:127:45;;746:3925:42;;;6449:32:48;746:3925:42;13047:127:45;;;;;;;;;-1:-1:-1;13047:127:45;;;12985:208;13035:139;;;;:::i;:::-;746:3925:42;12985:208:45;;13047:127;;;;746:3925:42;13047:127:45;;;;;;;;;746:3925:42;13047:127:45;;;:::i;:::-;;;746:3925:42;;;;;;;13047:127:45;;;;;;-1:-1:-1;13047:127:45;;12815:1095;6449:32:48;746:3925:42;;;;;;;13363:37:45;13359:551;;12815:1095;;;;;746:3925:42;:::o;13359:551:45:-;13421:13;;;;;;-1:-1:-1;;;;;746:3925:42;;-1:-1:-1;13455:3:45;746:3925:42;;13436:17:45;;;;;-1:-1:-1;;;;;13502:9:45;;;;:::i;:::-;746:3925:42;;13535:17:45;;;13531:118;;13455:3;746:3925:42;;-1:-1:-1;;;13680:27:45;;746:3925:42;;6449:32:48;746:3925:42;13680:27:45;;;;;;;;-1:-1:-1;13680:27:45;;;13455:3;-1:-1:-1;;;;;;746:3925:42;13671:36:45;13667:219;;13455:3;11758:27;746:3925:42;13421:13:45;;13667:219;13803:14;;;;:::i;:::-;746:3925:42;254:1:47;12827:27:45;254:1:47;;;;;;12827:27:45;254:1:47;;;;;;;746:3925:42;;-1:-1:-1;;;13743:124:45;;13843:2;254:1:47;;;6449:32:48;13743:124:45;;746:3925:42;;;6449:32:48;746:3925:42;13743:124:45;;;;;;;-1:-1:-1;13743:124:45;;;13667:219;11758:27;13731:136;;;;;:::i;:::-;746:3925:42;13667:219:45;;;;13743:124;;746:3925:42;13743:124:45;;;;;;;;;746:3925:42;13743:124:45;;;:::i;:::-;;;746:3925:42;;;;11758:27:45;746:3925:42;;13743:124:45;;;;;-1:-1:-1;13743:124:45;;13680:27;;;746:3925:42;13680:27:45;;;;;;;;;746:3925:42;13680:27:45;;;:::i;:::-;;;746:3925:42;;;;;;;:::i;:::-;13680:27:45;;;;;;-1:-1:-1;13680:27:45;;13531:118;13588:14;;;;:::i;:::-;746:3925:42;12827:27:45;254:1:47;;;;;;12827:27:45;254:1:47;;;;;;;13628:2:45;254:1:47;;13576:54:45;;;:::i;:::-;746:3925:42;13531:118:45;;13436:17;;;;;;;;13359:551;;;;;;11678:28;;;;;;;;;;-1:-1:-1;11678:28:45;;;;;;:::i;:::-;;;;;;;;;;;7177:33:48;7196:14;;;7177:33;;;7032:31;;;;;6549:469;-1:-1:-1;6709:13:48;;;;;;;;;;;6743:3;746:3925:42;;6724:17:48;;;;;-1:-1:-1;;;;;6790:9:48;;;;:::i;:::-;746:3925:42;;6822:18:48;;;;;6864:21;;;746:3925:42;6864:21:48;6818:176;;746:3925:42;6709:13:48;;6818:176;-1:-1:-1;;;;;746:3925:42;;6914:17:48;6910:84;;6818:176;746:3925:42;6818:176:48;;;6910:84;746:3925:42;;-1:-1:-1;6910:84:48;;6724:17;;;;;;;;;;;;6549:469;;6553:49;-1:-1:-1;;;;;;746:3925:42;;6580:22:48;6553:49;;6449:32;;;;;;;-1:-1:-1;6449:32:48;;;;;;:::i;:::-;;;;;746:3925:42;;;-1:-1:-1;;;;;746:3925:42;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;746:3925:42;;;;;;;;;;;;;;;;;;;;223:1755:45;746:3925:42;;-1:-1:-1;;;466:25:45;;-1:-1:-1;;;;;746:3925:42;;;466:25:45;;;746:3925:42;;;;;223:1755:45;746:3925:42;;;;466:25:45;;746:3925:42;;466:5:45;746:3925:42;466:25:45;;;;;;;746:3925:42;466:25:45;;;223:1755;-1:-1:-1;502:1470:45;;;602:19;;;;:::i;:::-;;;;677:34;;684:27;636:603;;223:1755::o;636:603::-;746:3925:42;789:3:45;746:3925:42;;770:17:45;;;;;-1:-1:-1;;;;;840:9:45;;;;:::i;:::-;746:3925:42;;876:16:45;;;:::i;:::-;:55;;;789:3;872:200;;789:3;746:3925:42;;755:13:45;;872:200;979:21;;;;;750:340;1107:63;-1:-1:-1;;;;;746:3925:42;;1115:27:45;;1107:63;:::i;:::-;1195:29;636:603;223:1755::o;876:55::-;-1:-1:-1;746:3925:42;;-1:-1:-1;;;896:23:45;;746:3925:42;;466:25:45;746:3925:42;896:23:45;;;;;;;;746:3925:42;896:23:45;;;876:55;-1:-1:-1;;;;;;746:3925:42;;;;;896:35:45;876:55;;896:23;;;746:3925:42;896:23:45;;;;;;;;;746:3925:42;896:23:45;;;:::i;:::-;;;746:3925:42;;;;;;;:::i;:::-;896:23:45;;;;;;-1:-1:-1;896:23:45;;770:17;;;;;;502:1470;1295:20;;;;;:::i;:::-;;;;1372:36;;466:25;1330:632;223:1755::o;1330:632::-;746:3925:42;1486:3:45;746:3925:42;;1467:17:45;;;;;-1:-1:-1;;;;;1537:9:45;;;;:::i;:::-;746:3925:42;;1598:16:45;;;:::i;:::-;:56;;;1486:3;1569:228;;1486:3;746:3925:42;;1452:13:45;;1569:228;1703:21;;;;;1447:368;1832:63;-1:-1:-1;;;;;746:3925:42;;1840:27:45;;1832:63;:::i;:::-;1920:27;1330:632;223:1755::o;1598:56::-;-1:-1:-1;746:3925:42;;-1:-1:-1;;;1618:23:45;;746:3925:42;;466:25:45;746:3925:42;1618:23:45;;;;;;;;746:3925:42;1618:23:45;;;1598:56;-1:-1:-1;;;;;;746:3925:42;;;;;1618:36:45;1598:56;;1618:23;;;746:3925:42;1618:23:45;;;;;;;;;746:3925:42;1618:23:45;;;:::i;:::-;;;746:3925:42;;;;;;;:::i;:::-;1618:23:45;;;;;;-1:-1:-1;1618:23:45;;1467:17;;;;;;466:25;;;;;;;746:3925:42;466:25:45;;;;;;:::i;:::-;;;;;746:3925:42;-1:-1:-1;;;;;746:3925:42;;;;;;;;;;;;;;;;7203:16:45;746:3925:42;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;746:3925:42;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;746:3925:42;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;746:3925:42;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;-1:-1:-1;;;;;746:3925:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;746:3925:42;;;;;;;;-1:-1:-1;;746:3925:42;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8071:17:45;;;746:3925:42;8071:17:45;;;;;746:3925:42;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8071:17:45;;;;746:3925:42;8071:17:45;;;;746:3925:42;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;746:3925:42;;;;;;;;;;;-1:-1:-1;;746:3925:42;;;;;:::i;:::-;;;;-1:-1:-1;746:3925:42;;;;:::o;:::-;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;746:3925:42;;;;;;;;;;;;-1:-1:-1;;;746:3925:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;746:3925:42;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8071:17:45;;;746:3925:42;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;746:3925:42;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;-1:-1:-1;;;746:3925:42;;;;;;;;;;;;;;;;;-1:-1:-1;;;746:3925:42;;;;;;;653:2518:43;746:3925:42;;-1:-1:-1;;;931:25:43;;-1:-1:-1;;;;;746:3925:42;;;931:25:43;;;746:3925:42;;;;653:2518:43;746:3925:42;;;;;;931:25:43;;746:3925:42;;931:5:43;746:3925:42;931:25:43;;;;;;;746:3925:42;931:25:43;;;653:2518;971:20;;;;:::i;:::-;:43;;;653:2518;967:2198;;;746:3925:42;;-1:-1:-1;;;1088:27:43;;746:3925:42;;;;;;931:25:43;;746:3925:42;;-1:-1:-1;;;;;746:3925:42;1088:27:43;;;;;;;746:3925:42;1088:27:43;;;967:2198;-1:-1:-1;746:3925:42;;-1:-1:-1;;;1153:26:43;;746:3925:42;;;;;931:25:43;;746:3925:42;;-1:-1:-1;;;;;746:3925:42;1153:26:43;;;;;;;746:3925:42;1153:26:43;;;967:2198;1199:13;746:3925:42;1233:3:43;746:3925:42;;1214:17:43;;;;;-1:-1:-1;;;;;1280:9:43;;;;:::i;:::-;746:3925:42;;-1:-1:-1;;;;;746:3925:42;;1333:29:43;;;:85;;1233:3;1308:248;;-1:-1:-1;;;;;746:3925:42;;1578:23:43;;1574:102;;1233:3;-1:-1:-1;;;;;746:3925:42;;1697:22:43;;1693:100;;1233:3;;746:3925:42;;1199:13:43;;1693:100;;-1:-1:-1;746:3925:42;1693:100:43;;1574:102;1625:23;-1:-1:-1;1625:23:43;1574:102;;1308:248;1532:5;;;;;;1194:613;-1:-1:-1;;;;;746:3925:42;;1846:29:43;;;:61;;1194:613;1821:156;;;:::i;:::-;1998:35;967:2198;653:2518::o;1846:61::-;-1:-1:-1;;;;;;746:3925:42;;1879:28:43;;1846:61;;1333:85;-1:-1:-1;;;;;;746:3925:42;;1390:28:43;;1333:85;;1214:17;;;;;;;;1153:26;;;;746:3925:42;1153:26:43;;746:3925:42;1153:26:43;;;;;;746:3925:42;1153:26:43;;;:::i;:::-;;;746:3925:42;;;;;;;:::i;:::-;1153:26:43;;;;;;;-1:-1:-1;1153:26:43;;1088:27;;;;746:3925:42;1088:27:43;;746:3925:42;1088:27:43;;;;;;746:3925:42;1088:27:43;;;:::i;:::-;;;746:3925:42;;;;;;931:25:43;746:3925:42;;:::i;:::-;1088:27:43;;;;;;;;-1:-1:-1;1088:27:43;;967:2198;2055:20;;;;;;:::i;:::-;2054:21;:45;;;967:2198;2050:1115;;;746:3925:42;2154:3:43;746:3925:42;;2135:17:43;;;;;-1:-1:-1;;;;;2201:9:43;;;;:::i;:::-;746:3925:42;;2233:16:43;;;:::i;:::-;2229:621;;2154:3;;746:3925:42;;2120:13:43;;2229:621;-1:-1:-1;;;;;746:3925:42;;2302:29:43;;;:89;;2229:621;2273:272;;746:3925:42;;-1:-1:-1;;;2571:23:43;;746:3925:42;;931:25:43;746:3925:42;2571:23:43;;;;;;;;746:3925:42;2571:23:43;;;2229:621;-1:-1:-1;;;;;;746:3925:42;;;;;2571:36:43;2567:123;;2229:621;746:3925:42;;-1:-1:-1;;;2715:23:43;;746:3925:42;;931:25:43;746:3925:42;2715:23:43;;;;;;;;746:3925:42;2715:23:43;;;2229:621;-1:-1:-1;;;;;;746:3925:42;;;;;2715:35:43;2229:621;2711:121;;-1:-1:-1;746:3925:42;2229:621:43;;2715:23;;;746:3925:42;2715:23:43;;;;;;;;;746:3925:42;2715:23:43;;;:::i;:::-;;;746:3925:42;;;;;;;:::i;:::-;2715:23:43;;;;;;-1:-1:-1;2715:23:43;;2567:123;2635:23;-1:-1:-1;2635:23:43;2567:123;;2571:23;;;746:3925:42;2571:23:43;;;;;;;;;746:3925:42;2571:23:43;;;:::i;:::-;;;746:3925:42;;;;;;;:::i;:::-;2571:23:43;;;;;;-1:-1:-1;2571:23:43;;2273:272;2517:5;;;;;;;2115:749;-1:-1:-1;;;;;746:3925:42;;2903:29:43;;;:61;;2115:749;2878:156;;;:::i;:::-;746:3925:42;2050:1115:43;653:2518::o;2903:61::-;-1:-1:-1;;;;;;746:3925:42;;2936:28:43;;2903:61;;2302:89;-1:-1:-1;;;;;;746:3925:42;;2363:28:43;;2302:89;;2135:17;;;;;;;;;2050:1115;746:3925:42;;-1:-1:-1;;;3117:37:43;;746:3925:42;931:25:43;3117:37;;746:3925:42;;931:25:43;746:3925:42;;;;;;;;3117:37:43;;;2054:45;2080:19;;;;:::i;:::-;2079:20;2054:45;;971:43;995:19;;;;:::i;:::-;971:43;;931:25;;;;;;;746:3925:42;931:25:43;;;;;;:::i;:::-;;;;;746:3925:42;;;;;;;:::i;:::-;-1:-1:-1;746:3925:42;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;9747:1:43;746:3925:42;;;-1:-1:-1;;746:3925:42;;-1:-1:-1;746:3925:42;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;3406:29:45;746:3925:42;;;-1:-1:-1;;746:3925:42;;-1:-1:-1;746:3925:42;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14634:31:43;746:3925:42;;;-1:-1:-1;;746:3925:42;;-1:-1:-1;746:3925:42;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;746:3925:42;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;10317:31:43;746:3925:42;;;-1:-1:-1;;746:3925:42;;-1:-1:-1;746:3925:42;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;746:3925:42;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;746:3925:42;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;746:3925:42;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;746:3925:42;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;746:3925:42;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;15831:1917:43;;;746:3925:42;;;;;;:::i;:::-;16120:1:43;746:3925:42;;;;;;;;;;-1:-1:-1;;;16253:28:43;;746:3925:42;;;;;16253:28:43;;;746:3925:42;16097:25:43;;;-1:-1:-1;746:3925:42;16253:28:43;746:3925:42;16253:5:43;-1:-1:-1;;;;;746:3925:42;16253:28:43;;;;;;;-1:-1:-1;;;16253:28:43;;;15831:1917;746:3925:42;;;;;;;16304:31:43;16296:39;16292:726;;-1:-1:-1;;746:3925:42;;-1:-1:-1;;;17128:27:43;;-1:-1:-1;;;;;746:3925:42;;;;;;;-1:-1:-1;746:3925:42;;16253:28:43;746:3925:42;;17128:27:43;;;;;;;-1:-1:-1;17128:27:43;;;15831:1917;-1:-1:-1;746:3925:42;;-1:-1:-1;;;17201:26:43;;-1:-1:-1;;;;;746:3925:42;;;;;;;;;;;16253:28:43;746:3925:42;;17201:26:43;;;;;;;-1:-1:-1;17201:26:43;;;15831:1917;-1:-1:-1;;;;;;746:3925:42;;-1:-1:-1;17277:3:43;746:3925:42;;17258:17:43;;;;;746:3925:42;-1:-1:-1;;;;;17300:9:43;;;;:::i;:::-;746:3925:42;;17300:32:43;17296:201;;17277:3;746:3925:42;-1:-1:-1;;;;;17514:9:43;;;;:::i;:::-;746:3925:42;;17514:31:43;17510:199;;17277:3;16304:31;746:3925:42;17243:13:43;;17510:199;17633:14;;;;:::i;:::-;746:3925:42;254:1:47;746:3925:42;254:1:47;;;;;;746:3925:42;254:1:47;;;;;;;746:3925:42;;-1:-1:-1;;;17577:117:43;;17674:2;254:1:47;;;16253:28:43;17577:117;;746:3925:42;;;16253:28:43;746:3925:42;17577:117:43;;;;;;;-1:-1:-1;17577:117:43;;;17510:199;16304:31;17565:129;;;;;:::i;:::-;746:3925:42;17510:199:43;;;;17577:117;;746:3925:42;17577:117:43;;;;;;;;;746:3925:42;17577:117:43;;;:::i;:::-;;;746:3925:42;;;;16304:31:43;746:3925:42;;17577:117:43;;;;;-1:-1:-1;17577:117:43;;17296:201;17421:14;;;;:::i;:::-;746:3925:42;;254:1:47;;;;;;746:3925:42;254:1:47;;;;;;;746:3925:42;;-1:-1:-1;;;17364:118:43;;17462:2;254:1:47;;;16253:28:43;17364:118;;746:3925:42;;;16253:28:43;746:3925:42;17364:118:43;;;;;;;;-1:-1:-1;17364:118:43;;;17296:201;17352:130;;;;:::i;:::-;746:3925:42;17296:201:43;;17364:118;;;746:3925:42;17364:118:43;;;;;;;;;746:3925:42;17364:118:43;;;:::i;:::-;;;746:3925:42;;;;;17364:118:43;;;;;;-1:-1:-1;17364:118:43;;17258:17;-1:-1:-1;17258:17:43;;-1:-1:-1;;;;;;15831:1917:43:o;17201:26::-;;;746:3925:42;17201:26:43;;746:3925:42;17201:26:43;;;;;;746:3925:42;17201:26:43;;;:::i;:::-;;;746:3925:42;;;;;;;:::i;:::-;17201:26:43;;;;;;-1:-1:-1;17201:26:43;;17128:27;;;746:3925:42;17128:27:43;;746:3925:42;17128:27:43;;;;;;746:3925:42;17128:27:43;;;:::i;:::-;;;746:3925:42;;;;;;;:::i;:::-;17128:27:43;;;;;;-1:-1:-1;17128:27:43;;16292:726;16424:13;;;;;;;-1:-1:-1;16458:3:43;746:3925:42;;16439:17:43;;;;;-1:-1:-1;;;;;16505:9:43;;;;:::i;:::-;746:3925:42;-1:-1:-1;;;;;746:3925:42;;;;;16538:24:43;;;;;16664:14;;;;;:::i;:::-;746:3925:42;;254:1:47;;;;;;746:3925:42;254:1:47;;;;;;;16705:2:43;16253:28;746:3925:42;;;;;;;;;;;;16598:131:43;;254:1:47;16253:28:43;16598:131;;746:3925:42;16598:131:43;;;;;;-1:-1:-1;16598:131:43;;;16534:432;16304:31;16586:143;;;;;:::i;:::-;746:3925:42;16534:432:43;746:3925:42;16424:13:43;;16598:131;;746:3925:42;16598:131:43;;;;;;;;;746:3925:42;16598:131:43;;;:::i;:::-;;;746:3925:42;;;;16304:31:43;746:3925:42;;16598:131:43;;;;;-1:-1:-1;16598:131:43;;16534:432;-1:-1:-1;;;;;746:3925:42;;;-1:-1:-1;16758:23:43;;16754:212;;16534:432;16304:31;16534:432;;;;16754:212;16882:14;;;;:::i;:::-;746:3925:42;;254:1:47;;;;;;746:3925:42;254:1:47;;;;;;;16923:2:43;16253:28;746:3925:42;;;;;;;;;;;;16817:130:43;;254:1:47;16253:28:43;16817:130;;746:3925:42;16817:130:43;;;;;;-1:-1:-1;16817:130:43;;;16754:212;16304:31;16805:142;;;;;:::i;:::-;746:3925:42;16754:212:43;;16817:130;;746:3925:42;16817:130:43;;;;;;;;;746:3925:42;16817:130:43;;;:::i;:::-;;;746:3925:42;;;;16304:31:43;746:3925:42;;16817:130:43;;;;;-1:-1:-1;16817:130:43;;16439:17;-1:-1:-1;16439:17:43;;-1:-1:-1;;;;16994:13:43:o;16253:28::-;;;;;;;;;;-1:-1:-1;16253:28:43;;;;;;:::i;:::-;;;;;;;;;;;364:2514:48;;;;;746:3925:42;;;;;;;;;;749:32:48;;;;;;746:3925:42;;;749:32:48;746:3925:42;;;;;;749:5:48;746:3925:42;749:32:48;;;;;;;746:3925:42;749:32:48;;;364:2514;-1:-1:-1;;;;;;746:3925:42;;853:23:48;;:49;;;:23;;746:3925:42;;;;;;853:23:48;:49;;;364:2514;849:469;;;918:21;;;935:4;953:20;849:469;1332:31;;;;849:469;1328:1544;;;-1:-1:-1;746:3925:42;;;;-1:-1:-1;746:3925:42;;;;1475:250:48;;746:3925:42;;;;-1:-1:-1;;;;;746:3925:42;;-1:-1:-1;746:3925:42;-1:-1:-1;1662:49:48;;1475:250;:::i;:::-;1320:43:44;;;;:::i;:::-;1373:15;;;;:::i;:::-;;;;;:::i;:::-;-1:-1:-1;746:3925:42;;-1:-1:-1;;;1446:55:44;;746:3925:42;749:32:48;1446:55:44;;746:3925:42;;;;;;;;;;;:::i;:::-;1485:4:44;749:32:48;746:3925:42;;;;;;-1:-1:-1;;746:3925:42;;;;;;;:::i;:::-;1446:55:44;746:3925:42;;1446:6:44;-1:-1:-1;;;;;746:3925:42;1446:55:44;;;;;;1524:13;746:3925:42;;1446:55:44;;;1524:13;;:::i;1446:55::-;;;;;;746:3925:42;1446:55:44;;;;;;:::i;1662:49:48:-;1689:22;;;-1:-1:-1;1475:250:48;:::i;1328:1544::-;1789:15;;;;;;;;;;;;:33;;;;1328:1544;-1:-1:-1;1785:1087:48;;;2012:47;;6989:53:43;2012:47:48;;;;;6732:199:43;2012:47:48;;;;746:3925:42;2012:47:48;;;:::i;:::-;6732:199:43;;;;;;:::i;:::-;746:3925:42;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;6989:53:43;;746:3925:42;;;;;749:32:48;6989:53:43;;;:::i;1785:1087:48:-;2436:98;;;;;;;;;:::i;:::-;746:3925:42;;;;;;;;2553:30:48;2549:313;;1785:1087;;;;;;;364:2514::o;2549:313::-;10931:189:45;;;;;;;;;746:3925:42;2490:52:45;;;;;;2517:12;;2490:52;;-1:-1:-1;;;;;746:3925:42;;2571:23:45;;:50;;;;2597:12;;2571:50;;2644:27;2636:35;;2644:27;;2818:34;;;;;;:::i;:::-;746:3925:42;;-1:-1:-1;;;3031:26:45;;746:3925:42;;;;3031:26:45;746:3925:42;749:32:48;746:3925:42;-1:-1:-1;;;;;746:3925:42;;3031:26:45;;;;;;;746:3925:42;3031:26:45;;;2632:2971;-1:-1:-1;11177:53:45;;746:3925:42;;;;;3260:117:45;;746:3925:42;;;;2934:236:45;;746:3925:42;;-1:-1:-1;;;;;746:3925:42;;;;;;;;2934:236:45;:::i;:::-;2918:252;;;;;;:::i;3260:117::-;3244:133;;;;;;:::i;:::-;;2632:2971;6008:43;;:::i;:::-;746:3925:42;;;;;;;:::i;:::-;-1:-1:-1;;;;;746:3925:42;;;6079:205:45;;;746:3925:42;;6079:205:45;;746:3925:42;;;6079:205:45;;746:3925:42;6065:219:45;;;:::i;:::-;;;;;:::i;:::-;;746:3925:42;;;;;;;:::i;3031:26:45:-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;746:3925:42;;;;11177:53:45;746:3925:42;2934:236:45;3260:117;746:3925:42;;;;;;;;:::i;:::-;3031:26:45;;;;;;;;;;;;;;;;;-1:-1:-1;3031:26:45;;2632:2971;746:3925:42;11177:53:45;746:3925:42;;;;;;;;3406:29:45;3398:37;;3406:29;;;;3584:34;;;;4016:172;3584:34;3701:223;3584:34;;;;;:::i;:::-;746:3925:42;-1:-1:-1;;;;;746:3925:42;;;;;;;;3701:223:45;:::i;:::-;3685:239;;;;;;:::i;4016:172::-;4000:188;;;;;;:::i;:::-;;2632:2971;;3394:2209;746:3925:42;;;;;-1:-1:-1;746:3925:42;;4217:27:45;4209:35;;4217:27;;;;4317:34;;4694:221;4317:34;;;;;;:::i;:::-;4443:170;;;;;:::i;:::-;4427:186;;;;;;:::i;:::-;;-1:-1:-1;;;;;746:3925:42;;;;;;4694:221:45;:::i;4205:1398::-;749:32:48;746:3925:42;;;;;4936:37:45;4932:671;;4205:1398;;;;2632:2971;;4932:671;5375:217;4997:34;;;;;;;:::i;:::-;5125:168;;;;;:::i;:::-;5109:184;;;;;;:::i;:::-;;-1:-1:-1;;;;;746:3925:42;;;;;;;;5375:217:45;:::i;:::-;5359:233;;;;;;:::i;:::-;;4932:671;;;;;2571:50;;;;2490:52;;;;1789:33:48;1808:14;;;1789:33;;;1332:31;;;;;849:469;746:3925:42;1009:13:48;;;;;;;;;;;1043:3;746:3925:42;;1024:17:48;;;;;-1:-1:-1;;;;;1090:9:48;;;;:::i;:::-;746:3925:42;;1122:18:48;;;;;1164:21;;;746:3925:42;1164:21:48;1118:176;;746:3925:42;1009:13:48;;1118:176;-1:-1:-1;;;;;746:3925:42;;1214:17:48;1210:84;;1118:176;746:3925:42;1118:176:48;;;1210:84;746:3925:42;;-1:-1:-1;1210:84:48;;1024:17;;;;;;;;;;;;849:469;;853:49;-1:-1:-1;;;;;;746:3925:42;;880:22:48;853:49;;749:32;;;;;;;746:3925:42;749:32:48;;;;;;:::i;:::-;;;;;216:431:43;-1:-1:-1;;;;;746:3925:42;;;;302:12:43;746:3925:42;293:21:43;;289:64;;746:3925:42;;-1:-1:-1;;;366:23:43;;;746:3925:42;366:23:43;746:3925:42;366:23:43;;;;;;;216:431;362:256;;;628:12;746:3925:42;216:431:43;:::o;362:256::-;366:23;408:37;746:3925:42;;;;;;;;;;408:37:43;;434:10;366:23;408:37;;746:3925:42;408:37:43;;;;;;362:256;404:157;;;746:3925:42;216:431:43;:::o;404:157::-;471:4;464:11;:::o;408:37::-;366:23;408:37;;366:23;408:37;;;;;;746:3925:42;408:37:43;;;:::i;:::-;;;746:3925:42;;;;;408:37:43;;;;;-1:-1:-1;408:37:43;;366:23;;;;;;;;;;;;;;;:::i;:::-;;;746:3925:42;;;;;;;:::i;:::-;366:23:43;;;;;-1:-1:-1;366:23:43;;289:64;330:12;746:3925:42;330:12:43;:::o;2081:225:32:-;746:3925:42;;-1:-1:-1;;;2200:39:32;;2224:4;2200:39;;;746:3925:42;-1:-1:-1;;;;;746:3925:42;;;;;;;;;;;;;;;;;;;2200:39:32;746:3925:42;;2200:39:32;;;;;;;-1:-1:-1;2200:39:32;;;2081:225;8071:17:45;;;746:3925:42;;;;;;;;;-1:-1:-1;;;746:3925:42;3411:47:32;;;;;-1:-1:-1;;;;;746:3925:42;;;;3411:47:32;;746:3925:42;;;;;;;;-1:-1:-1;;;;3411:47:32;746:3925:42;;;;3411:47:32;;746:3925:42;;3411:47:32;;;;;;:::i;:::-;8024:25;;;;;;;;;;:::i;:::-;8066:69;;;2081:225;8066:103;;;;2081:225;3473:45;;3469:201;;2081:225;;;:::o;3469:201::-;3561:43;3646:12;746:3925:42;;;;;;;;3561:43:32;;;746:3925:42;3561:43:32;;746:3925:42;-1:-1:-1;2200:39:32;746:3925:42;;;2200:39:32;3561:43;;;;;;:::i;:::-;;;:::i;:::-;3646:12;:::i;8066:103::-;8139:26;;;:30;;8066:103;;;:69;746:3925:42;;;;-1:-1:-1;8078:22:32;;;:56;;;;8066:69;;;;;;;8078:56;8104:30;;;;746:3925:42;8104:30:32;;;746:3925:42;;;;;;8104:30:32;;746:3925:42;:::i;:::-;8078:56:32;;;;2200:39;;;;746:3925:42;2200:39:32;;746:3925:42;2200:39:32;;;;;;746:3925:42;2200:39:32;;;:::i;:::-;;;746:3925:42;;;;;2200:39:32;;;;;;;-1:-1:-1;2200:39:32;;2081:225;746:3925:42;;-1:-1:-1;;;2200:39:32;;2224:4;2200:39;;;746:3925:42;-1:-1:-1;;;;;746:3925:42;;;;;;;;;;;;;;;;;;2200:39:32;746:3925:42;;2200:39:32;;;;;;;-1:-1:-1;2200:39:32;;;2081:225;746:3925:42;;;;;;;;;;-1:-1:-1;;;746:3925:42;3411:47:32;;;;;-1:-1:-1;;;;;746:3925:42;;;;3411:47:32;;746:3925:42;;;;;;;;-1:-1:-1;;;;3411:47:32;746:3925:42;;;;3411:47:32;746:3925:42;2200:39:32;;;;746:3925:42;2200:39:32;;746:3925:42;2200:39:32;;;;;;746:3925:42;2200:39:32;;;:::i;:::-;;;746:3925:42;;;;;2200:39:32;;;;;;;-1:-1:-1;2200:39:32;;1702:188;746:3925:42;;-1:-1:-1;;;1829:53:32;;;;-1:-1:-1;;;;;746:3925:42;;;1829:53:32;;;746:3925:42;;;;;;;;;;;;;;;;;1829:53:32;;;;;;;746:3925:42;1829:53:32;:::i;1303:160::-;746:3925:42;;-1:-1:-1;;;1412:43:32;;;;-1:-1:-1;;;;;746:3925:42;;;;1412:43:32;;;746:3925:42;;;;;;;;;1412:43:32;;;;;;746:3925:42;;1412:43:32;:::i;14140:1685:43:-;;;746:3925:42;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;-1:-1:-1;746:3925:42;;-1:-1:-1;;;14691:23:43;;-1:-1:-1;;;;;746:3925:42;;;;;14691:23:43;746:3925:42;14691:23:43;746:3925:42;;14691:23:43;;;;;;;-1:-1:-1;14691:23:43;;;14140:1685;-1:-1:-1;746:3925:42;;;;-1:-1:-1;;;;;746:3925:42;;;;:::i;:::-;;;;14691:23:43;14546:240;;746:3925:42;10317:31:43;746:3925:42;14546:240:43;;746:3925:42;14539:247:43;14851:34;;:::i;:::-;14895:15;;;;:::i;:::-;;;;;:::i;:::-;-1:-1:-1;746:3925:42;;-1:-1:-1;;;15281:38:43;;15313:4;14691:23;15281:38;;746:3925:42;;14691:23:43;746:3925:42;15281:38:43;746:3925:42;15281:38:43;;;;;;;;-1:-1:-1;15281:38:43;;;14140:1685;15214:184;746:3925:42;;;;;;:::i;:::-;;;14691:23:43;14956:497;;746:3925:42;;14956:497:43;;746:3925:42;;14956:497:43;;746:3925:42;14140:1685:43;:::o;15281:38::-;;;;14691:23;15281:38;;14691:23;15281:38;;;;;;746:3925:42;15281:38:43;;;:::i;:::-;;;746:3925:42;;;;;15281:38:43;;;;;;;-1:-1:-1;15281:38:43;;14691:23;;;;;;;;;;;;;;;;;:::i;:::-;;;746:3925:42;;;;;;;:::i;:::-;14691:23:43;;;;;;-1:-1:-1;14691:23:43;;14140:1685;;746:3925:42;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;-1:-1:-1;746:3925:42;;-1:-1:-1;;;;;746:3925:42;;;;;;;;:::i;:::-;;;;14546:240:43;;;;746:3925:42;14634:31:43;746:3925:42;14546:240:43;;746:3925:42;14539:247:43;14851:34;;;:::i;:::-;14895:15;;;;:::i;:::-;;;;;:::i;:::-;-1:-1:-1;14546:240:43;15667:23;15557:134;746:3925:42;;;;;;;;;15667:23:43;;;;;;;;;14921:898;15667:23;;;14140:1685;-1:-1:-1;746:3925:42;;;;-1:-1:-1;;;;;746:3925:42;;;;:::i;:::-;;;14546:240:43;15495:313;;746:3925:42;;15495:313:43;;746:3925:42;14634:31:43;746:3925:42;15495:313:43;;746:3925:42;14140:1685:43;:::o;15667:23::-;;;14546:240;15667:23;;14546:240;15667:23;;;;;;14546:240;15667:23;;;:::i;:::-;;;746:3925:42;;;;;;;:::i;:::-;15667:23:43;;;;;;-1:-1:-1;15667:23:43;;14140:1685;;746:3925:42;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;-1:-1:-1;746:3925:42;;-1:-1:-1;;;14691:23:43;;-1:-1:-1;;;;;746:3925:42;;;;;14691:23:43;746:3925:42;14691:23:43;746:3925:42;;14691:23:43;;;;;;;-1:-1:-1;14691:23:43;;;14140:1685;-1:-1:-1;746:3925:42;;;;-1:-1:-1;;;;;746:3925:42;;;;:::i;:::-;;;;14691:23:43;14546:240;;746:3925:42;2644:27:45;746:3925:42;14546:240:43;;746:3925:42;14539:247:43;14851:34;;:::i;:::-;14895:15;;;;:::i;:::-;;;;;:::i;:::-;-1:-1:-1;746:3925:42;;;;;;:::i;14691:23:43:-;;;;;;;;;;;;;;;;;:::i;:::-;;;746:3925:42;;;;;;;:::i;:::-;14691:23:43;;;;;;-1:-1:-1;14691:23:43;;8143:1371:44;;;;;746:3925:42;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;-1:-1:-1;746:3925:42;;-1:-1:-1;;;8665:39:44;;8693:10;8665:39;;;746:3925:42;-1:-1:-1;;;;;746:3925:42;;;;;;;8665:39:44;746:3925:42;;8665:39:44;;;;;;;746:3925:42;8665:39:44;;;8143:1371;8650:54;746:3925:42;;;;;;:::i;:::-;-1:-1:-1;;;;;746:3925:42;;;;;;;8757:122:44;;746:3925:42;-1:-1:-1;746:3925:42;8757:122:44;;746:3925:42;;8944:34:44;;:::i;:::-;8988:15;;;;:::i;:::-;;;;;:::i;8665:39::-;;;;746:3925:42;8665:39:44;;746:3925:42;8665:39:44;;;;;;746:3925:42;8665:39:44;;;:::i;:::-;;;746:3925:42;;;;;8665:39:44;;;;;;;-1:-1:-1;8665:39:44;;8143:1371;;;;746:3925:42;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;8628:6:44;8624:91;;8143:1371;746:3925:42;;;;;;:::i;:::-;-1:-1:-1;;;;;746:3925:42;;;;;;8757:122:44;;;746:3925:42;-1:-1:-1;746:3925:42;8757:122:44;;746:3925:42;;8944:34:44;;:::i;:::-;8988:15;;;;:::i;:::-;;;;;:::i;:::-;;746:3925:42;;;;;;:::i;:::-;-1:-1:-1;;;;;746:3925:42;;;8757:122:44;9300:197;;746:3925:42;;9300:197:44;;746:3925:42;;;9300:197:44;;746:3925:42;;8143:1371:44:o;8624:91::-;746:3925:42;;-1:-1:-1;;;8665:39:44;;8693:10;8665:39;;;746:3925:42;;;8665:39:44;746:3925:42;-1:-1:-1;;;;;746:3925:42;;8665:39:44;;;;;;;746:3925:42;8665:39:44;;;8624:91;8650:54;8624:91;;;8665:39;;;746:3925:42;8665:39:44;;746:3925:42;8665:39:44;;;;;;746:3925:42;8665:39:44;;;:::i;:::-;;;746:3925:42;;;;;8665:39:44;;;;;;-1:-1:-1;8665:39:44;;8143:1371;;;;746:3925:42;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;-1:-1:-1;746:3925:42;;-1:-1:-1;;;8665:39:44;;8693:10;8665:39;;;746:3925:42;-1:-1:-1;;;;;746:3925:42;;;;;;;;8665:39:44;746:3925:42;;8665:39:44;;;;;;;5312:5:43;8665:39:44;;;8143:1371;8650:54;746:3925:42;;;;;;;:::i;:::-;-1:-1:-1;;;;;746:3925:42;;;;;;;8757:122:44;;746:3925:42;-1:-1:-1;746:3925:42;8757:122:44;;746:3925:42;;8944:34:44;;:::i;8665:39::-;;;746:3925:42;8665:39:44;;746:3925:42;8665:39:44;;;;;;746:3925:42;8665:39:44;;;:::i;:::-;;;746:3925:42;;;;;8665:39:44;;;;;;-1:-1:-1;8665:39:44;;3177:3130:43;;;;;;;;;3586:34;;:::i;:::-;746:3925:42;3618:1:43;746:3925:42;;;;;3635:39:43;;3643:31;3635:39;3643:31;;3799:172;;;4125:211;3799:172;;;4488:173;3799:172;;:::i;:::-;3985:16;;;;;;:::i;:::-;;;;;:::i;:::-;-1:-1:-1;;;;;;746:3925:42;;;;;;4125:211:43;:::i;:::-;4350:16;;;;;;:::i;:::-;;;;;:::i;:::-;;4488:173;:::i;:::-;4675:16;;;;;;:::i;:::-;;;;;:::i;:::-;;4714:43;;:::i;:::-;746:3925:42;;;;;;;:::i;:::-;-1:-1:-1;;;;;746:3925:42;;;4782:206:43;;;746:3925:42;;4782:206:43;;746:3925:42;;;4782:206:43;;746:3925:42;4771:217:43;;;:::i;:::-;;;;;:::i;:::-;;3177:3130::o;3631:2670::-;5162:169;5846:117;5162:169;5483:211;5162:169;;;;;;;:::i;:::-;5345:16;;;;;;:::i;:::-;;;;;:::i;:::-;-1:-1:-1;;;;;;746:3925:42;;;;;;5483:211:43;:::i;:::-;5708:16;;;;;;:::i;:::-;;;;;:::i;:::-;;5846:117;:::i;746:3925:42:-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;6468:629:32:-;2626:1:33;6468:629:32;3304:55:33;6468:629:32;746:3925:42;;;;;;3256:31:33;;;;;;;;;;;;:::i;:::-;3304:55;;;:::i;:::-;746:3925:42;;6960:22:32;;;;:57;;;;6468:629;6956:135;;;;6468:629;:::o;6956:135::-;7040:40;;;2626:1:33;7040:40:32;;746:3925:42;;2626:1:33;7040:40:32;6960:57;6987:30;;;;3256:31:33;6987:30:32;;;746:3925:42;;;;3256:31:33;746:3925:42;6987:30:32;;746:3925:42;:::i;:::-;6986:31:32;6960:57;;;;4421:582:33;;4593:8;;-1:-1:-1;746:3925:42;;5674:21:33;:17;;5846:142;;;;;;5670:385;6025:19;;;5694:1;6025:19;;5694:1;6025:19;4589:408;746:3925:42;;4841:22:33;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:33;4917:24;;;-1:-1:-1;;;;;746:3925:42;;;;4917:24:33;746:3925:42;;;4917:24:33;4841:49;4867:18;;;:23;4841:49;","linkReferences":{},"immutableReferences":{"59453":[{"start":154,"length":32},{"start":2064,"length":32},{"start":8907,"length":32},{"start":11168,"length":32},{"start":12927,"length":32},{"start":14667,"length":32},{"start":15816,"length":32}],"59456":[{"start":2490,"length":32},{"start":2839,"length":32},{"start":2962,"length":32},{"start":3667,"length":32},{"start":3886,"length":32},{"start":4099,"length":32},{"start":4413,"length":32},{"start":4850,"length":32},{"start":5718,"length":32},{"start":6311,"length":32},{"start":6523,"length":32},{"start":7640,"length":32},{"start":7914,"length":32},{"start":16059,"length":32}],"59458":[{"start":2389,"length":32},{"start":3174,"length":32},{"start":3565,"length":32},{"start":4216,"length":32},{"start":5529,"length":32},{"start":5578,"length":32},{"start":5823,"length":32},{"start":5879,"length":32},{"start":7216,"length":32},{"start":7268,"length":32},{"start":16321,"length":32},{"start":16375,"length":32},{"start":17198,"length":32}],"59466":[{"start":3014,"length":32},{"start":4009,"length":32},{"start":4361,"length":32},{"start":4799,"length":32},{"start":5625,"length":32}]}},"methodIdentifiers":{"getCapabilities(bytes32,address,address)":"48bd7dfd","getLimits(bytes32,address,address)":"a9270fbe","getPoolIds(uint256,uint256)":"23eeca01","getTokens(bytes32)":"ecbbc033","price(bytes32,address,address,uint256[])":"aad6e488","swap(bytes32,address,address,uint8,uint256)":"8307c655"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"vault_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_router\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_permit2\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_WETH_ADDRESS\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"LimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"Unavailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getCapabilities\",\"outputs\":[{\"internalType\":\"enum ISwapAdapterTypes.Capability[]\",\"name\":\"capabilities\",\"type\":\"uint8[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"}],\"name\":\"getLimits\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"limits\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getPoolIds\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"getTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyToken\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_specifiedAmounts\",\"type\":\"uint256[]\"}],\"name\":\"price\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction[]\",\"name\":\"_prices\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"enum ISwapAdapterTypes.OrderSide\",\"name\":\"side\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"calculatedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction\",\"name\":\"price\",\"type\":\"tuple\"}],\"internalType\":\"struct ISwapAdapterTypes.Trade\",\"name\":\"trade\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"Supports: Direct Swaps: - ETH<->ERC20 - ERC20<->ERC20 - ERC4626<->ERC4626 - ERC4626<->ERC20 2 steps: - (ERC20->ERC20)->ERC4626: swap, wrap_0 - (ERC4626->ERC20)->ERC4626: swap, wrap_1 - (ERC4626->ERC4626)->ERC20: swap, unwrap_0 - (ERC20->ERC4626)->ERC20; swap, unwrap_1 - ERC20->(ERC4626->ERC4626): wrap, swap_0 - ERC20->(ERC4626->ERC20); wrap, swap_1 - ERC4626->(ERC20->ERC20): unwrap, swap_0 - ERC4626->(ERC20->ERC4626): unwrap, swap_1 3 steps: - ERC20->(ERC4626->ERC4626)->ERC20 - ERC4626->(ERC20->ERC20)->ERC4626\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"LimitExceeded(uint256)\":[{\"details\":\"The LimitExceeded error is thrown when a limit has been exceeded. E.g. the specified amount can't be traded safely.\"}],\"NotImplemented(string)\":[{\"details\":\"The NotImplemented error is thrown when a function is not implemented.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}],\"Unavailable(string)\":[{\"details\":\"The Unavailable error is thrown when a pool or swap is not available for unexpected reason. E.g. it was paused due to a bug.\"}]},\"kind\":\"dev\",\"methods\":{\"getCapabilities(bytes32,address,address)\":{\"params\":{\"poolId\":\"The ID of the trading pool.\"},\"returns\":{\"capabilities\":\"An array of Capability.\"}},\"getLimits(bytes32,address,address)\":{\"details\":\"Retrieve the maximum limits of a token that can be traded. The limit is reached when the change in the received amounts is zero or close to zero or when the swap fails because of the pools restrictions. Overestimate if in doubt rather than underestimate. The swap function should not error with `LimitExceeded` if called with amounts below the limit.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\"},\"returns\":{\"limits\":\"An array of size two indicating the limit amount for the sell token (maximum the pool is willing to buy in sell token) as well as the limit amount of the buy token (maximum the pool is willing to sell in buy token).\"}},\"getTokens(bytes32)\":{\"details\":\"Mainly used for testing as this is redundant with the required substreams implementation.\",\"params\":{\"poolId\":\"The ID of the trading pool.\"},\"returns\":{\"tokens\":\"An array of address contracts.\"}},\"price(bytes32,address,address,uint256[])\":{\"details\":\"The returned prices should include all dex fees. In case the fee is dynamic on the amount traded, the returned price is expected to include the minimum fee. Note that the returned price should be the marginal price which is distinct from the executed price `swap(amount_in) / amount_in`! The marginal price is defined as the price to trade an arbitrarily small (almost zero) amount after the trade of (amount). E.g. the marginal price of a uniswap v2 pool at amount=0 is `reserve0/reserve1`. Ideally this method should be implemented, although it is optional as the price function can be numerically derived from the swap function. In case it is not available, it should be flagged via capabilities and calling it should revert using the `NotImplemented` error. The method needs to be implemented as view as this is usually more efficient and can be run in parallel.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\",\"specifiedAmounts\":\"Amounts to calculate marginal prices at.\"},\"returns\":{\"_prices\":\"array of prices as fractions corresponding to the provided amounts.\"}},\"swap(bytes32,address,address,uint8,uint256)\":{\"details\":\"This function should be state modifying, meaning it should actually execute the swap and change the state of the EVM accordingly. Please include a gas usage estimate for each amount. This can be achieved e.g. by using the `gasleft()` function. The return type `Trade` has an attribute called price which should contain the value of `price(specifiedAmount)`. As this is optional, defined via `Capability.PriceFunction`, it is valid to return a Fraction(0, 0) value for this price. In that case the price will be estimated numerically.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\",\"side\":\"The side of the trade (Sell or Buy).\",\"specifiedAmount\":\"The amount to be traded.\"},\"returns\":{\"trade\":\"Trade struct representing the executed trade.\"}}},\"title\":\"Balancer V3 Swap Adapter\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCapabilities(bytes32,address,address)\":{\"notice\":\"Retrieves the capabilities of the selected pool.\"},\"getLimits(bytes32,address,address)\":{\"notice\":\"Retrieves the limits for each token.\"},\"getTokens(bytes32)\":{\"notice\":\"Retrieves the tokens in the selected pool.\"},\"price(bytes32,address,address,uint256[])\":{\"notice\":\"Calculates marginal prices for specified amounts (optional).\"},\"swap(bytes32,address,address,uint8,uint256)\":{\"notice\":\"Simulates swapping tokens on a given pool.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/balancer-v3/BalancerV3SwapAdapter.sol\":\"BalancerV3SwapAdapter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf\",\"dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/balancer-v3/BalancerV3SwapAdapter.sol\":{\"keccak256\":\"0x953286f17c621bef769154e4d735e11350ddf439f4a7bb136b875ef11bcc1abc\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://916037f7d6a973f8ef83f8509e74fc9dcf4dcf34ef74836b8579353b45b4fd0a\",\"dweb:/ipfs/Qma94Vf221Q9BaYuNY2WvKJcaAQ8frZpyf5tH7LBuepfba\"]},\"src/balancer-v3/lib/BalancerCustomWrapHelpers.sol\":{\"keccak256\":\"0x0f6b335d2add29c075bdf0b4d596dfdfc1d46fd69eafa009b0d9141256ff1a30\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://94a73f885d3a4cf266128dcaf9bd276d80e54ee4fb580741213c58165c844313\",\"dweb:/ipfs/QmX2tRhSy3rYdSzViMgM1X9ResBMALBA21jhN7gTE7g2P8\"]},\"src/balancer-v3/lib/BalancerERC20Helpers.sol\":{\"keccak256\":\"0x40f4571feb1755549e172a1157af748b724aeff1a62edf118a625afe9651bdbd\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d9a7bc8172d05945a6262455c12cb8296fbe906ae20018fe2e4646d1051a63ec\",\"dweb:/ipfs/QmTFG25A5NR49dGcRsUkxB4g9PiKcxapPVZGu6GLvMPgb8\"]},\"src/balancer-v3/lib/BalancerERC4626Helpers.sol\":{\"keccak256\":\"0xf19e1a229b1cb569617e28ba1bc8d1b2cfb403d3164018610040ab439e65c211\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://2493d7748eedfc1ad1bed4bd6b16ede7f5e1b69f1ecf4176851a857f39b018ea\",\"dweb:/ipfs/QmeogRJKPvPGBTdJvciejWGMWy1tik8e817uPcp5Dp2Wn7\"]},\"src/balancer-v3/lib/BalancerInterfaces.sol\":{\"keccak256\":\"0xff32e4111c1954881e6c503c53c3406ae5b225f54ce0edf633d357a77c5a56c8\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://06ef20a4676393fb14947b7abdc6d06c19ae2249cfb508044e95fbc957c0f701\",\"dweb:/ipfs/QmaCws32eR57w1BmEZDFaV3kbEbyzQta8MP8eSL2EZcvKZ\"]},\"src/balancer-v3/lib/BalancerStorage.sol\":{\"keccak256\":\"0x16d74f81b9a15386060130b04b8be2aec55fb4ec20233742db16d2d82d6d748b\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9455e4e3a1dd98165117502ce53e12ba5787b1d5646df9873b93b1cfe3e1136\",\"dweb:/ipfs/QmQ8VohFLoeGCVziyD3iYr1Gynf52gf9VgEoM97TnyRE48\"]},\"src/balancer-v3/lib/BalancerSwapHelpers.sol\":{\"keccak256\":\"0x48d7f787de65a4671de1a49208130919b3fc7b17786c6eddf1897af122572f88\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://17ff1db9264aebdae9f74bb587a40870ace02d4d90bb083e128af48af8500b76\",\"dweb:/ipfs/QmPa9t3PmbRYZVzYoHyRVVjBZD9gs55pUNfF9hhuni5AQP\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/libraries/CustomBytesAppend.sol\":{\"keccak256\":\"0x744de639d3f68d46b09e6f5f81ac003f92616f270007cc28778538894723276d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9278b5ff65908b5377e7b875151204ca6de587091c7bdd9f2f4f7d75b3d4d9e5\",\"dweb:/ipfs/QmPopj1aEWXtPg6CwKKAeEWBg1FBydPpQUM7VaFSvKvPU5\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address payable","name":"vault_","type":"address"},{"internalType":"address","name":"_router","type":"address"},{"internalType":"address","name":"_permit2","type":"address"},{"internalType":"address","name":"_WETH_ADDRESS","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"type":"error","name":"LimitExceeded"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"NotImplemented"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"Unavailable"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function","name":"getCapabilities","outputs":[{"internalType":"enum ISwapAdapterTypes.Capability[]","name":"capabilities","type":"uint8[]"}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"}],"stateMutability":"view","type":"function","name":"getLimits","outputs":[{"internalType":"uint256[]","name":"limits","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function","name":"getPoolIds","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getTokens","outputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}]},{"inputs":[{"internalType":"bytes32","name":"_poolId","type":"bytes32"},{"internalType":"address","name":"_sellToken","type":"address"},{"internalType":"address","name":"_buyToken","type":"address"},{"internalType":"uint256[]","name":"_specifiedAmounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"price","outputs":[{"internalType":"struct ISwapAdapterTypes.Fraction[]","name":"_prices","type":"tuple[]","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"},{"internalType":"enum ISwapAdapterTypes.OrderSide","name":"side","type":"uint8"},{"internalType":"uint256","name":"specifiedAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swap","outputs":[{"internalType":"struct ISwapAdapterTypes.Trade","name":"trade","type":"tuple","components":[{"internalType":"uint256","name":"calculatedAmount","type":"uint256"},{"internalType":"uint256","name":"gasUsed","type":"uint256"},{"internalType":"struct ISwapAdapterTypes.Fraction","name":"price","type":"tuple","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"getCapabilities(bytes32,address,address)":{"params":{"poolId":"The ID of the trading pool."},"returns":{"capabilities":"An array of Capability."}},"getLimits(bytes32,address,address)":{"details":"Retrieve the maximum limits of a token that can be traded. The limit is reached when the change in the received amounts is zero or close to zero or when the swap fails because of the pools restrictions. Overestimate if in doubt rather than underestimate. The swap function should not error with `LimitExceeded` if called with amounts below the limit.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold."},"returns":{"limits":"An array of size two indicating the limit amount for the sell token (maximum the pool is willing to buy in sell token) as well as the limit amount of the buy token (maximum the pool is willing to sell in buy token)."}},"getTokens(bytes32)":{"details":"Mainly used for testing as this is redundant with the required substreams implementation.","params":{"poolId":"The ID of the trading pool."},"returns":{"tokens":"An array of address contracts."}},"price(bytes32,address,address,uint256[])":{"details":"The returned prices should include all dex fees. In case the fee is dynamic on the amount traded, the returned price is expected to include the minimum fee. Note that the returned price should be the marginal price which is distinct from the executed price `swap(amount_in) / amount_in`! The marginal price is defined as the price to trade an arbitrarily small (almost zero) amount after the trade of (amount). E.g. the marginal price of a uniswap v2 pool at amount=0 is `reserve0/reserve1`. Ideally this method should be implemented, although it is optional as the price function can be numerically derived from the swap function. In case it is not available, it should be flagged via capabilities and calling it should revert using the `NotImplemented` error. The method needs to be implemented as view as this is usually more efficient and can be run in parallel.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold.","specifiedAmounts":"Amounts to calculate marginal prices at."},"returns":{"_prices":"array of prices as fractions corresponding to the provided amounts."}},"swap(bytes32,address,address,uint8,uint256)":{"details":"This function should be state modifying, meaning it should actually execute the swap and change the state of the EVM accordingly. Please include a gas usage estimate for each amount. This can be achieved e.g. by using the `gasleft()` function. The return type `Trade` has an attribute called price which should contain the value of `price(specifiedAmount)`. As this is optional, defined via `Capability.PriceFunction`, it is valid to return a Fraction(0, 0) value for this price. In that case the price will be estimated numerically.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold.","side":"The side of the trade (Sell or Buy).","specifiedAmount":"The amount to be traded."},"returns":{"trade":"Trade struct representing the executed trade."}}},"version":1},"userdoc":{"kind":"user","methods":{"getCapabilities(bytes32,address,address)":{"notice":"Retrieves the capabilities of the selected pool."},"getLimits(bytes32,address,address)":{"notice":"Retrieves the limits for each token."},"getTokens(bytes32)":{"notice":"Retrieves the tokens in the selected pool."},"price(bytes32,address,address,uint256[])":{"notice":"Calculates marginal prices for specified amounts (optional)."},"swap(bytes32,address,address,uint8,uint256)":{"notice":"Simulates swapping tokens on a given pool."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/balancer-v3/BalancerV3SwapAdapter.sol":"BalancerV3SwapAdapter"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol":{"keccak256":"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06","urls":["bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf","dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/balancer-v3/BalancerV3SwapAdapter.sol":{"keccak256":"0x953286f17c621bef769154e4d735e11350ddf439f4a7bb136b875ef11bcc1abc","urls":["bzz-raw://916037f7d6a973f8ef83f8509e74fc9dcf4dcf34ef74836b8579353b45b4fd0a","dweb:/ipfs/Qma94Vf221Q9BaYuNY2WvKJcaAQ8frZpyf5tH7LBuepfba"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerCustomWrapHelpers.sol":{"keccak256":"0x0f6b335d2add29c075bdf0b4d596dfdfc1d46fd69eafa009b0d9141256ff1a30","urls":["bzz-raw://94a73f885d3a4cf266128dcaf9bd276d80e54ee4fb580741213c58165c844313","dweb:/ipfs/QmX2tRhSy3rYdSzViMgM1X9ResBMALBA21jhN7gTE7g2P8"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerERC20Helpers.sol":{"keccak256":"0x40f4571feb1755549e172a1157af748b724aeff1a62edf118a625afe9651bdbd","urls":["bzz-raw://d9a7bc8172d05945a6262455c12cb8296fbe906ae20018fe2e4646d1051a63ec","dweb:/ipfs/QmTFG25A5NR49dGcRsUkxB4g9PiKcxapPVZGu6GLvMPgb8"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerERC4626Helpers.sol":{"keccak256":"0xf19e1a229b1cb569617e28ba1bc8d1b2cfb403d3164018610040ab439e65c211","urls":["bzz-raw://2493d7748eedfc1ad1bed4bd6b16ede7f5e1b69f1ecf4176851a857f39b018ea","dweb:/ipfs/QmeogRJKPvPGBTdJvciejWGMWy1tik8e817uPcp5Dp2Wn7"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerInterfaces.sol":{"keccak256":"0xff32e4111c1954881e6c503c53c3406ae5b225f54ce0edf633d357a77c5a56c8","urls":["bzz-raw://06ef20a4676393fb14947b7abdc6d06c19ae2249cfb508044e95fbc957c0f701","dweb:/ipfs/QmaCws32eR57w1BmEZDFaV3kbEbyzQta8MP8eSL2EZcvKZ"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerStorage.sol":{"keccak256":"0x16d74f81b9a15386060130b04b8be2aec55fb4ec20233742db16d2d82d6d748b","urls":["bzz-raw://e9455e4e3a1dd98165117502ce53e12ba5787b1d5646df9873b93b1cfe3e1136","dweb:/ipfs/QmQ8VohFLoeGCVziyD3iYr1Gynf52gf9VgEoM97TnyRE48"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerSwapHelpers.sol":{"keccak256":"0x48d7f787de65a4671de1a49208130919b3fc7b17786c6eddf1897af122572f88","urls":["bzz-raw://17ff1db9264aebdae9f74bb587a40870ace02d4d90bb083e128af48af8500b76","dweb:/ipfs/QmPa9t3PmbRYZVzYoHyRVVjBZD9gs55pUNfF9hhuni5AQP"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/libraries/CustomBytesAppend.sol":{"keccak256":"0x744de639d3f68d46b09e6f5f81ac003f92616f270007cc28778538894723276d","urls":["bzz-raw://9278b5ff65908b5377e7b875151204ca6de587091c7bdd9f2f4f7d75b3d4d9e5","dweb:/ipfs/QmPopj1aEWXtPg6CwKKAeEWBg1FBydPpQUM7VaFSvKvPU5"],"license":"MIT"}},"version":1},"id":42} \ No newline at end of file diff --git a/evm/out/BalancerV3SwapAdapter.t.sol/BalancerV3SwapAdapterTest.json b/evm/out/BalancerV3SwapAdapter.t.sol/BalancerV3SwapAdapterTest.json deleted file mode 100644 index e19d086..0000000 --- a/evm/out/BalancerV3SwapAdapter.t.sol/BalancerV3SwapAdapterTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"ERC4626_sETHx","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract MockSETHx"}],"stateMutability":"view"},{"type":"function","name":"ERC4626_sGOETH","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract MockSGOETH"}],"stateMutability":"view"},{"type":"function","name":"ERC4626_sUSDC","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract MockSUSDC"}],"stateMutability":"view"},{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"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":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"fractionToInt","inputs":[{"name":"price","type":"tuple","internalType":"struct ISwapAdapterTypes.Fraction","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"runPoolBehaviourTest","inputs":[{"name":"adapter","type":"address","internalType":"contract ISwapAdapter"},{"name":"poolIds","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stringPctgs","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testPriceFuzzBalancerV3_ERC20_ERC20_DIRECT","inputs":[{"name":"amount0","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPriceFuzzBalancerV3_ERC20_ERC20_ERC4626_SWAP_WRAP","inputs":[{"name":"amount0","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPriceFuzzBalancerV3_ERC20_ERC20_UNDERLYING_DIRECT","inputs":[{"name":"amount0","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPriceFuzzBalancerV3_ERC20_ERC4626_ERC20_ALTERNATIVE_SWAP_UNWRAP","inputs":[{"name":"amount0","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPriceFuzzBalancerV3_ERC20_ERC4626_ERC20_SWAP_UNWRAP","inputs":[{"name":"amount0","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPriceFuzzBalancerV3_ERC20_ERC4626_ERC4626_ERC20_WRAP_SWAP_UNWRAP","inputs":[{"name":"amount0","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPriceFuzzBalancerV3_ERC20_ERC4626_ERC4626_WRAP_SWAP","inputs":[{"name":"amount0","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPriceFuzzBalancerV3_ERC4626_ERC20_DIRECT","inputs":[{"name":"amount0","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPriceFuzzBalancerV3_ERC4626_ERC20_ERC20_ERC4626_UNWRAP_SWAP_WRAP","inputs":[{"name":"amount0","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPriceFuzzBalancerV3_ERC4626_ERC20_ERC20_UNWRAP_SWAP","inputs":[{"name":"amount0","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPriceFuzzBalancerV3_ERC4626_ERC20_ERC4626_UNWRAP_SWAP","inputs":[{"name":"amount0","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPriceFuzzBalancerV3_ERC4626_ERC4626_DIRECT","inputs":[{"name":"amount0","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPriceFuzzBalancerV3_ERC4626_ERC4626_ERC20_SWAP_UNWRAP","inputs":[{"name":"amount0","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapFuzzBalancerV3_ERC20_ERC20_DIRECT","inputs":[{"name":"specifiedAmount","type":"uint256","internalType":"uint256"},{"name":"isBuy","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapFuzzBalancerV3_ERC20_ERC20_ERC4626_SWAP_WRAP","inputs":[{"name":"specifiedAmount","type":"uint256","internalType":"uint256"},{"name":"isBuy","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapFuzzBalancerV3_ERC20_ERC20_UNDERLYING_DIRECT","inputs":[{"name":"specifiedAmount","type":"uint256","internalType":"uint256"},{"name":"isBuy","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapFuzzBalancerV3_ERC20_ERC4626_ERC20_ALTERNATIVE_SWAP_UNWRAP","inputs":[{"name":"specifiedAmount","type":"uint256","internalType":"uint256"},{"name":"isBuy","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapFuzzBalancerV3_ERC20_ERC4626_ERC20_SWAP_UNWRAP","inputs":[{"name":"specifiedAmount","type":"uint256","internalType":"uint256"},{"name":"isBuy","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapFuzzBalancerV3_ERC20_ERC4626_ERC4626_WRAP_SWAP","inputs":[{"name":"specifiedAmount","type":"uint256","internalType":"uint256"},{"name":"isBuy","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapFuzzBalancerV3_ERC4626_ERC20_DIRECT","inputs":[{"name":"specifiedAmount","type":"uint256","internalType":"uint256"},{"name":"isBuy","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapFuzzBalancerV3_ERC4626_ERC20_ERC20_ERC4626_UNWRAP_SWAP_WRAP","inputs":[{"name":"specifiedAmount","type":"uint256","internalType":"uint256"},{"name":"isBuy","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapFuzzBalancerV3_ERC4626_ERC20_ERC20_UNWRAP_SWAP","inputs":[{"name":"specifiedAmount","type":"uint256","internalType":"uint256"},{"name":"isBuy","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapFuzzBalancerV3_ERC4626_ERC20_ERC4626_UNWRAP_SWAP","inputs":[{"name":"specifiedAmount","type":"uint256","internalType":"uint256"},{"name":"isBuy","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapFuzzBalancerV3_ERC4626_ERC4626_DIRECT","inputs":[{"name":"specifiedAmount","type":"uint256","internalType":"uint256"},{"name":"isBuy","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapFuzzBalancerV3_ERC4626_ERC4626_ERC20_SWAP_UNWRAP","inputs":[{"name":"specifiedAmount","type":"uint256","internalType":"uint256"},{"name":"isBuy","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"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":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","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":"event","name":"UnorderedNonceInvalidation","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"word","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"mask","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"AfterAddLiquidityHookFailed","inputs":[]},{"type":"error","name":"AfterInitializeHookFailed","inputs":[]},{"type":"error","name":"AfterRemoveLiquidityHookFailed","inputs":[]},{"type":"error","name":"AfterSwapHookFailed","inputs":[]},{"type":"error","name":"AllZeroInputs","inputs":[]},{"type":"error","name":"AllowanceExpired","inputs":[{"name":"deadline","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"AmountGivenZero","inputs":[]},{"type":"error","name":"AmountInAboveMax","inputs":[{"name":"tokenIn","type":"address","internalType":"contract IERC20"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"maxAmountIn","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"AmountOutBelowMin","inputs":[{"name":"tokenOut","type":"address","internalType":"contract IERC20"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"minAmountOut","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"AmpUpdateAlreadyStarted","inputs":[]},{"type":"error","name":"AmpUpdateDurationTooShort","inputs":[]},{"type":"error","name":"AmpUpdateRateTooFast","inputs":[]},{"type":"error","name":"AmplificationFactorTooHigh","inputs":[]},{"type":"error","name":"AmplificationFactorTooLow","inputs":[]},{"type":"error","name":"AssetBoundsExceeded","inputs":[]},{"type":"error","name":"BalanceNotSettled","inputs":[]},{"type":"error","name":"BeforeAddLiquidityHookFailed","inputs":[]},{"type":"error","name":"BeforeInitializeHookFailed","inputs":[]},{"type":"error","name":"BeforeRemoveLiquidityHookFailed","inputs":[]},{"type":"error","name":"BeforeSwapHookFailed","inputs":[]},{"type":"error","name":"BptAmountInAboveMax","inputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"maxAmountIn","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"BptAmountOutBelowMin","inputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"minAmountOut","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"BufferAlreadyInitialized","inputs":[{"name":"wrappedToken","type":"address","internalType":"contract IERC4626"}]},{"type":"error","name":"BufferNotInitialized","inputs":[{"name":"wrappedToken","type":"address","internalType":"contract IERC4626"}]},{"type":"error","name":"BufferSharesInvalidOwner","inputs":[]},{"type":"error","name":"BufferSharesInvalidReceiver","inputs":[]},{"type":"error","name":"BufferTotalSupplyTooLow","inputs":[{"name":"totalSupply","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CallerIsNotPoolCreator","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"pool","type":"address","internalType":"address"}]},{"type":"error","name":"CannotReceiveEth","inputs":[]},{"type":"error","name":"CannotSwapSameToken","inputs":[]},{"type":"error","name":"DoesNotSupportAddLiquidityCustom","inputs":[]},{"type":"error","name":"DoesNotSupportDonation","inputs":[]},{"type":"error","name":"DoesNotSupportRemoveLiquidityCustom","inputs":[]},{"type":"error","name":"DoesNotSupportUnbalancedLiquidity","inputs":[]},{"type":"error","name":"DynamicSwapFeeHookFailed","inputs":[]},{"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"}]},{"type":"error","name":"ExcessiveInvalidation","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"FeePrecisionTooHigh","inputs":[]},{"type":"error","name":"HookAdjustedAmountInAboveMax","inputs":[{"name":"tokenIn","type":"address","internalType":"contract IERC20"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"maxAmountIn","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"HookAdjustedAmountOutBelowMin","inputs":[{"name":"tokenOut","type":"address","internalType":"contract IERC20"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"minAmountOut","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"HookAdjustedSwapLimit","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"HookRegistrationFailed","inputs":[{"name":"poolHooksContract","type":"address","internalType":"address"},{"name":"pool","type":"address","internalType":"address"},{"name":"poolFactory","type":"address","internalType":"address"}]},{"type":"error","name":"InputLengthMismatch","inputs":[]},{"type":"error","name":"InsufficientAllowance","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientEth","inputs":[]},{"type":"error","name":"InvalidAddLiquidityKind","inputs":[]},{"type":"error","name":"InvalidAmount","inputs":[{"name":"maxAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidRemoveLiquidityKind","inputs":[]},{"type":"error","name":"InvalidToken","inputs":[]},{"type":"error","name":"InvalidTokenConfiguration","inputs":[]},{"type":"error","name":"InvalidTokenDecimals","inputs":[]},{"type":"error","name":"InvalidTokenType","inputs":[]},{"type":"error","name":"InvalidUnderlyingToken","inputs":[{"name":"wrappedToken","type":"address","internalType":"contract IERC4626"}]},{"type":"error","name":"IssuedSharesBelowMin","inputs":[{"name":"issuedShares","type":"uint256","internalType":"uint256"},{"name":"minIssuedShares","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LengthMismatch","inputs":[]},{"type":"error","name":"LimitExceeded","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MaxTokens","inputs":[]},{"type":"error","name":"MinTokens","inputs":[]},{"type":"error","name":"MinWeight","inputs":[]},{"type":"error","name":"MultipleNonZeroInputs","inputs":[]},{"type":"error","name":"NormalizedWeightInvariant","inputs":[]},{"type":"error","name":"NotEnoughBufferShares","inputs":[]},{"type":"error","name":"NotEnoughUnderlying","inputs":[{"name":"wrappedToken","type":"address","internalType":"contract IERC4626"},{"name":"expectedUnderlyingAmount","type":"uint256","internalType":"uint256"},{"name":"actualUnderlyingAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotEnoughWrapped","inputs":[{"name":"wrappedToken","type":"address","internalType":"contract IERC4626"},{"name":"expectedWrappedAmount","type":"uint256","internalType":"uint256"},{"name":"actualWrappedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotImplemented","inputs":[{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"NotStaticCall","inputs":[]},{"type":"error","name":"NotVaultDelegateCall","inputs":[]},{"type":"error","name":"OnlyPauseGuardian","inputs":[{"name":"caller","type":"address","internalType":"address"}]},{"type":"error","name":"PauseBufferPeriodDurationTooLarge","inputs":[]},{"type":"error","name":"PercentageAboveMax","inputs":[]},{"type":"error","name":"PoolAddressMismatch","inputs":[{"name":"pool","type":"address","internalType":"address"}]},{"type":"error","name":"PoolAlreadyInitialized","inputs":[{"name":"pool","type":"address","internalType":"address"}]},{"type":"error","name":"PoolAlreadyRegistered","inputs":[{"name":"pool","type":"address","internalType":"address"}]},{"type":"error","name":"PoolCreatorFeePercentageTooHigh","inputs":[]},{"type":"error","name":"PoolCreatorNotRegistered","inputs":[{"name":"pool","type":"address","internalType":"address"}]},{"type":"error","name":"PoolInRecoveryMode","inputs":[{"name":"pool","type":"address","internalType":"address"}]},{"type":"error","name":"PoolNotInRecoveryMode","inputs":[{"name":"pool","type":"address","internalType":"address"}]},{"type":"error","name":"PoolNotInitialized","inputs":[{"name":"pool","type":"address","internalType":"address"}]},{"type":"error","name":"PoolNotPaused","inputs":[{"name":"pool","type":"address","internalType":"address"}]},{"type":"error","name":"PoolNotRegistered","inputs":[{"name":"pool","type":"address","internalType":"address"}]},{"type":"error","name":"PoolPauseWindowExpired","inputs":[{"name":"pool","type":"address","internalType":"address"}]},{"type":"error","name":"PoolPaused","inputs":[{"name":"pool","type":"address","internalType":"address"}]},{"type":"error","name":"ProtocolFeesExceedTotalCollected","inputs":[]},{"type":"error","name":"ProtocolSwapFeePercentageTooHigh","inputs":[]},{"type":"error","name":"ProtocolYieldFeePercentageTooHigh","inputs":[]},{"type":"error","name":"QueriesDisabled","inputs":[]},{"type":"error","name":"QueriesDisabledPermanently","inputs":[]},{"type":"error","name":"QuoteResultSpoofed","inputs":[]},{"type":"error","name":"RouterNotTrusted","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SenderIsNotVault","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"StandardPoolWithCreator","inputs":[]},{"type":"error","name":"StaticATokenInvalidZeroShares","inputs":[]},{"type":"error","name":"SwapDeadline","inputs":[]},{"type":"error","name":"SwapFeePercentageTooHigh","inputs":[]},{"type":"error","name":"SwapFeePercentageTooLow","inputs":[]},{"type":"error","name":"SwapLimit","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenAlreadyRegistered","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"}]},{"type":"error","name":"TokenNotRegistered","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"}]},{"type":"error","name":"TokensMismatch","inputs":[{"name":"pool","type":"address","internalType":"address"},{"name":"expectedToken","type":"address","internalType":"address"},{"name":"actualToken","type":"address","internalType":"address"}]},{"type":"error","name":"TokensNotSorted","inputs":[]},{"type":"error","name":"TradeAmountTooSmall","inputs":[]},{"type":"error","name":"Unavailable","inputs":[{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"VaultBuffersArePaused","inputs":[]},{"type":"error","name":"VaultIsNotUnlocked","inputs":[]},{"type":"error","name":"VaultNotPaused","inputs":[]},{"type":"error","name":"VaultPauseWindowDurationTooLarge","inputs":[]},{"type":"error","name":"VaultPauseWindowExpired","inputs":[]},{"type":"error","name":"VaultPaused","inputs":[]},{"type":"error","name":"VaultQueriesDisabled","inputs":[]},{"type":"error","name":"WeightedPoolBptRateUnsupported","inputs":[]},{"type":"error","name":"WrapAmountTooSmall","inputs":[{"name":"wrappedToken","type":"address","internalType":"contract IERC4626"}]},{"type":"error","name":"WrongProtocolFeeControllerDeployment","inputs":[]},{"type":"error","name":"WrongUnderlyingToken","inputs":[{"name":"wrappedToken","type":"address","internalType":"contract IERC4626"},{"name":"underlyingToken","type":"address","internalType":"address"}]},{"type":"error","name":"WrongVaultAdminDeployment","inputs":[]},{"type":"error","name":"WrongVaultExtensionDeployment","inputs":[]}],"bytecode":{"object":"0x60806040523461051857610013602061051c565b5f8152610020602061051c565b5f8152600160ff19600c541617600c55600160ff19601e541617601e556040516080810181811060018060401b038211176102b157604052610062604061051c565b6002815261302560f01b6020820152815261007d604061051c565b6004815263302e312560e01b6020820152602082015261009d604061051c565b600381526235302560e81b602082015260408201526100bc604061051c565b60048152633130302560e01b60208201526060820152601f546004601f5580600410610479575b50601f5f9081525f5160206201b8655f395f51905f52915b60048210610374575050825190506001600160401b0381116102b157610122602354610541565b601f8111610326575b50602092601f82116001146102c55761015c929382915f926101ed575b50508160011b915f199060031b1c19161790565b6023555b80516001600160401b0381116102b15761017b602454610541565b601f8111610258575b50602091601f82116001146101f8576101b2925f91836101ed5750508160011b915f199060031b1c19161790565b6024555b602680546001600160a01b03191673136f1efcc3f8f88516b9e94110d56fdbfb1778d11790556040516201b2d59081620005908239f35b015190505f80610148565b601f1982169260245f52805f20915f5b85811061024057508360019510610228575b505050811b016024556101b6565b01515f1960f88460031b161c191690555f808061021a565b91926020600181928685015181550194019201610208565b60245f526102a1907f7cd332d19b93bcabe3cce7ca0c18a052f57e5fd03b4758a09f30f5ddc4b22ec4601f840160051c810191602085106102a7575b601f0160051c0190610579565b5f610184565b9091508190610294565b634e487b7160e01b5f52604160045260245ffd5b601f1982169360235f52805f20915f5b86811061030e57508360019596106102f6575b505050811b01602355610160565b01515f1960f88460031b161c191690555f80806102e8565b919260206001819286850151815501940192016102d5565b60235f5261036e907fd57b2b5166478fd4318d2acc6cc2c704584312bdd8781b32d5d06abda57f4230601f840160051c810191602085106102a757601f0160051c0190610579565b5f61012b565b80518051906001600160401b0382116102b1576103918554610541565b601f8111610449575b50602090601f83116001146103e057926103d1836001959460209487965f926101ed5750508160011b915f199060031b1c19161790565b86555b019301910190916100fb565b90601f19831691865f52815f20925f5b8181106104315750936020936001969387969383889510610419575b505050811b0186556103d4565b01515f1960f88460031b161c191690555f808061040c565b929360206001819287860151815501950193016103f0565b61047390865f5260205f20601f850160051c810191602086106102a757601f0160051c0190610579565b5f61039a565b601f5f525f5160206201b8655f395f51905f52017fa03837a25210ee280c2113ff4b77ca23440b19d4866cca721c801278fd08d80b5b8181106104bc57506100e3565b806104c960019254610541565b806104d6575b50016104af565b601f811183146104eb57505f81555b5f6104cf565b61050790825f5283601f60205f20920160051c82019101610579565b805f525f60208120818355556104e5565b5f80fd5b6040519190601f01601f191682016001600160401b038111838210176102b157604052565b90600182811c9216801561056f575b602083101461055b57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610550565b818110610584575050565b5f815560010161057956fe61016080604052600436101562000014575f80fd5b5f905f3560e01c90816306fdde03146200e61c5750806308c41745146200e5db578063095ea7b3146200e52d5780630a9254e4146200b3585780630bdca2c1146200aa3b5780630eed78c4146200a76257806318160ddd146200a7425780631e1685c0146200a7175780631ed7831c146200a69257806323b872dd146200a5a25780632ade3880146200a41c578063313ce567146200a3fe578063325a4265146200a2595780633e5e3c23146200a1d45780633f7286f4146200a14f5780633fbb8b681462009f5157806342f331481462009cfa5780634964eb1a14620092895780634c6b2e7e146200925e5780635090a8ce1462008f8557806356733b9114620087515780636181917e1462007ccb57806366d9a9a01462007b0557806367b4dbe714620071a457806370a082311462007168578063790a2a0b1462006e8f57806385226c811462006de85780638c15484614620063bb578063916a17c6146200610f57806395d89b41146200603157806396a2fce61462005d585780639a8ebd3614620052e35780639e8518b314620048b6578063a00872f1146200483f578063a9059cbb1462004807578063b5508aa91462004758578063ba414fa6146200472f578063c102053a14620044c3578063c700ea2e14620041ea578063cf18b43d1462003f11578063d170c3cc1462003c15578063d32913cc14620031d8578063d3a14f16146200291c578063d46cbfcd14620026c5578063d7ffd44d1462001c60578063d85792281462001c35578063dd62ed3e1462001bdc578063e198fb1814620008fc578063e20c9f711462000866578063f08985501462000560578063f3869e2414620002b75763fa7626d41462000290575f80fd5b34620002b45780600319360112620002b457602060ff601e54166040519015158152f35b80fd5b5034620002b4576020366003190112620002b45760295460275460255460405163549387df60e11b81525f5160206201b2605f395f51905f526004808301919091526001600160a01b03948516602483018190529385166044830181905290359594909392859183916064918391165afa9081156200051857906200034591859162000539575b506200eccd565b5184108062000527575b5f5160206201b1205f395f51905f523b156200052357604051632631f2b160e11b8152901515600482015283816024815f5160206201b1205f395f51905f525afa80156200051857908491620004fb575b50909391604094855193620003b687866200e74e565b600185526020850190601f198801368337620003d2866200eccd565b52620003dd6200f38e565b602554875163155adc9160e31b81525f5160206201b2605f395f51905f5260048201526024810193909352604483019390935260806064830152935160848201819052909384926001600160a01b03169160a484019190855b818110620004de5750505083838281935003925af1928315620004d357508192620004aa575b50805b8251811015620004a65780620004846200047c600193866200ecec565b51516200f3e3565b6200049f60206200049683876200ecec565b5101516200f3e3565b016200045f565b5080f35b620004cb9192503d8084833e620004c281836200e74e565b8101906200eda6565b905f6200045c565b51913d9150823e3d90fd5b825184528896508795506020938401939092019160010162000436565b8162000507916200e74e565b6200051457825f620003a0565b8280fd5b6040513d86823e3d90fd5b8380fd5b5067016345785d8a000084116200034f565b6200055991503d8087833e6200055081836200e74e565b8101906200ec4a565b5f6200033e565b5034620002b4576020366003190112620002b45760255460405163549387df60e11b81525f5160206201b1c05f395f51905f526004828101919091525f5160206201b1405f395f51905f526024830152737f39c581f595b53c5cb19bd0b3f8da6c935e2ca060448301523592918290829060649082906001600160a01b03165afa9081156200081557829162000848575b5062000607620006006200f047565b916200eccd565b5183105f5160206201b1205f395f51905f523b15620005145760405190632631f2b160e11b8252600482015282816024815f5160206201b1205f395f51905f525afa80156200083d5790839162000824575b50505f5160206201b1205f395f51905f523b156200082057604051632631f2b160e11b8152908311600482015281816024815f5160206201b1205f395f51905f525afa80156200081557908291620007fc575b5050604091818351620006c085826200e74e565b600181526020810192601f198601368537620006dc826200eccd565b52620006e76200f38e565b602554855163155adc9160e31b81525f5160206201b1c05f395f51905f5260048201525f5160206201b1405f395f51905f526024820152737f39c581f595b53c5cb19bd0b3f8da6c935e2ca0604482015260806064820152915160848301819052919384926001600160a01b039092169160a484019190855b818110620007df5750505083838281935003925af1928315620004d357508192620007bf575b50805b8251811015620004a65780620007a66200047c600193866200ecec565b620007b860206200049683876200ecec565b0162000789565b620007d79192503d8084833e620004c281836200e74e565b905f62000786565b825184528896508795506020938401939092019160010162000760565b8162000808916200e74e565b620002b457805f620006ac565b6040513d84823e3d90fd5b5080fd5b8162000830916200e74e565b6200082057815f62000659565b6040513d85823e3d90fd5b6200085f91503d8084833e6200055081836200e74e565b5f620005f1565b5034620002b45780600319360112620002b45760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b818110620008dc57620008d885620008cb818703826200e74e565b604051918291826200e7bf565b0390f35b82546001600160a01b0316845260209093019260019283019201620008b0565b5034620002b4576200090e366200e79e565b60295460275460255460405163549387df60e11b81525f5160206201b2605f395f51905f5260048201526001600160a01b03938416602482018190529284166044820181905295929492938792839183916064918391165afa9081156200081557829162001bbe575b50821562001bb6576001925b15620018365762000994906200ecdb565b5183108062001824575b5f5160206201b1205f395f51905f523b156200082057604051632631f2b160e11b8152901515600482015281816024815f5160206201b1205f395f51905f525afa8015620008155762001807575b508060405160208101906370a0823160e01b82523060248201526024815262000a176044826200e74e565b5190865afa5062000a3b62000a2b62010eea565b602080825183010191016200eb28565b50601180546001600160a01b0319166001600160a01b0385161790556370a0823163ffffffff19600f541617600f55600e54600160401b811015620016565762000a9081600162000aa99301600e556200e912565b919091309083549060031b91821b915f19901b19161790565b905560018060a01b0360115416600f5460e01b6010549062000aca620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818a5260205260408920604051602081019062000b208162000b11888886620113bc565b03601f1981018352826200e74e565b5190208a5260205260ff600360408b2001541615620017f6575b6001600160a01b0384165f908152600d6020526040902090895260205262000b1162000b7660408a2093604051928391602083019586620113bc565b5190208752602052856040812091600183015492600281015462000b9b81866200eb70565b620016cf578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f5160206201b1205f395f51905f525afa9687156200133857869762001690575b506001908201610100031b5f1901811b1986165f5160206201b1205f395f51905f523b15620014a8576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528381606481835f5160206201b1205f395f51905f525af19081156200051857849162001677575b505062000c7b620115b6565b90159081156200166a575b5062001399575050505062000c9a6201218f565b848060405160208101906370a0823160e01b82523060248201526024815262000cc56044826200e74e565b5190865afa5062000cd962000a2b62010eea565b50601180546001600160a01b0319166001600160a01b0385161790556370a0823163ffffffff19600f541617600f55600e54600160401b811015620016565762000a9081600162000d2e9301600e556200e912565b905560018060a01b0360115416600f5460e01b6010549062000d4f620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818a5260205260408920604051602081019062000d968162000b11888886620113bc565b5190208a5260205260ff600360408b200154161562001645575b6001600160a01b0384165f908152600d6020526040902090895260205262000b1162000dec60408a2093604051928391602083019586620113bc565b5190208752602052856040812091600183015492600281015462000e1181866200eb70565b620014eb575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f5160206201b1205f395f51905f525afa96871562001338578697620014ac575b506001908201610100031b5f1901811b198616915f5160206201b1205f395f51905f523b15620014a8576040516370ca10bb60e01b81526001600160a01b038616600482015260248101919091529088901b9190911760448201528381606481835f5160206201b1205f395f51905f525af1908115620005185784916200148f575b50508562000ef6620115b6565b91901591821562001483575b505062001399575050505062000f176201218f565b60405163095ea7b360e01b81523060048201525f19602482015260208160448189885af18015620013385762001377575b5060255460405163095ea7b360e01b81526001600160a01b0390911660048201525f19602482015260208160448189885af18015620013385762001343575b506040516370a0823160e01b815230600482015293602085602481875afa94851562001338578695620012fe575b506040516370a0823160e01b815230600482015290602082602481845afa91821562001163578792620012c4575b50602554604051638307c65560e01b81525f5160206201b2605f395f51905f526004820152602481018790526044810183905293906001600160a01b03166002821015620012b0578460a4818b6080948660648401528a60848401525af1938415620012a55788946200126a575b506001036200116e576020602491604051928380926370a0823160e01b82523060048301525afa9081156200116357879162001124575b506024936200109f60209493620010a6936200ed98565b906200f32c565b5192604051928380926370a0823160e01b82523060048301525afa90811562000518578491620010e5575b506200109f90620010e2936200ed98565b80f35b90506020813d6020116200111b575b8162001103602093836200e74e565b81010312620011175751620010e2620010d1565b5f80fd5b3d9150620010f4565b929190506020833d6020116200115a575b8162001144602093836200e74e565b8101031262001117579151909190602462001088565b3d915062001135565b6040513d89823e3d90fd5b9394602060249296604051938480926370a0823160e01b82523060048301525afa918215620011635787926200122d575b506024936200109f60209493620011b6936200ed98565b5192604051928380926370a0823160e01b82523060048301525afa90811562000518578491620011f2575b50620010e2926200109f916200ed98565b90506020813d60201162001224575b8162001210602093836200e74e565b81010312620011175751620010e2620011e1565b3d915062001201565b9291506020833d60201162001261575b816200124c602093836200e74e565b8101031262001117579151909160246200119f565b3d91506200123d565b6001919450620012959060803d6080116200129d575b6200128c81836200e74e565b8101906200ed2c565b939062001051565b503d62001280565b6040513d8a823e3d90fd5b634e487b7160e01b89526021600452602489fd5b9091506020813d602011620012f5575b81620012e3602093836200e74e565b81010312620011175751905f62000fe3565b3d9150620012d4565b9094506020813d6020116200132f575b816200131d602093836200e74e565b81010312620011175751935f62000fb5565b3d91506200130e565b6040513d88823e3d90fd5b620013699060203d6020116200136f575b6200136081836200e74e565b8101906200eb56565b62000f87565b503d62001354565b620013939060203d6020116200136f576200136081836200e74e565b62000f48565b82945054905f5160206201b1205f395f51905f523b1562000514576040516370ca10bb60e01b81526001600160a01b039091166004820152602481019190915260448101929092528180606481015b0381835f5160206201b1205f395f51905f525af1801562000815576200146a575b60405162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b620014778280926200e74e565b620002b4578062001409565b14159050865f62000f02565b816200149b916200e74e565b6200051457825f62000ee9565b8580fd5b955095506020853d602011620014e2575b81620014cc602093836200e74e565b8101031262001117579351948a94908162000e67565b3d9150620014bd565b90919250620014fb81856200eb70565b610100036101008111620016315760ff8111620016315760405163348051d760e11b8152600190911b600482018190528a826024815f5160206201b1205f395f51905f525afa918b83156200162557602093620015c09282606a9392620015fd575b90506040519586925f5160206201b2805f395f51905f52828501525f5160206201b1005f395f51905f52604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f1981018452836200e74e565b871015620015d357509088929162000e17565b60405162461bcd60e51b815260206004820152908190620015f99060248301906200e6f2565b0390fd5b6200161d92503d8091833e6200161481836200e74e565b8101906200eabe565b5f8e6200155d565b604051903d90823e3d90fd5b634e487b7160e01b8a52601160045260248afd5b6200164f6201185a565b5062000db0565b634e487b7160e01b86526041600452602486fd5b5f19141590505f62000c86565b8162001683916200e74e565b6200051457825f62000c6f565b955095506020853d602011620016c6575b81620016b0602093836200e74e565b8101031262001117579351948a94908162000bf0565b3d9150620016a1565b620016dc8491866200eb70565b610100036101008111620017e25760ff8111620017e25760405163348051d760e11b8152600190911b600482015281816024815f5160206201b1205f395f51905f525afa9081156200081557606a60209284620017a193620015f99692620017c2575b506040519485925f5160206201b2805f395f51905f52828501525f5160206201b1005f395f51905f52604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f1981018352826200e74e565b60405162461bcd60e51b81526020600482015291829160248301906200e6f2565b620017da9192503d8084833e6200161481836200e74e565b90866200173f565b634e487b7160e01b82526011600452602482fd5b620018006201185a565b5062000b3a565b8162001813916200e74e565b6200182057845f620009ec565b8480fd5b5067016345785d8a000083116200099e565b62001841906200eccd565b5183108062001ba4575b5f5160206201b1205f395f51905f523b156200082057604051632631f2b160e11b8152901515600482015281816024815f5160206201b1205f395f51905f525afa8015620008155762001b8b575b508060405160208101906370a0823160e01b825230602482015260248152620018c46044826200e74e565b5190865afa50620018d862000a2b62010eea565b50601180546001600160a01b0319166001600160a01b0385161790556370a0823163ffffffff19600f541617600f55600e54600160401b811015620016565762000a908160016200192d9301600e556200e912565b905560018060a01b0360115416600f5460e01b601054906200194e620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818a52602052604089206040516020810190620019958162000b11888886620113bc565b5190208a5260205260ff600360408b200154161562001b7a575b6001600160a01b0384165f908152600d6020526040902090895260205262000b11620019eb60408a2093604051928391602083019586620113bc565b5190208752602052856040812091600183015492600281015462001a1081866200eb70565b620016cf578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f5160206201b1205f395f51905f525afa9687156200133857869762001b3b575b506001908201610100031b5f1901811b1986165f5160206201b1205f395f51905f523b15620014a8576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528381606481835f5160206201b1205f395f51905f525af19081156200051857849162001b22575b505062001af0620115b6565b901590811562001b15575b5062001399575050505062001b0f6201218f565b62000c9a565b5f19141590505f62001afb565b8162001b2e916200e74e565b6200051457825f62001ae4565b955095506020853d60201162001b71575b8162001b5b602093836200e74e565b8101031262001117579351948a94908162001a65565b3d915062001b4c565b62001b846201185a565b50620019af565b8162001b97916200e74e565b6200182057845f62001899565b5067016345785d8a000083116200184b565b819262000983565b62001bd591503d8084833e6200055081836200e74e565b5f62000977565b5034620002b4576040366003190112620002b457604062001bfc6200e770565b9162001c076200e787565b9260018060a01b031681526021602052209060018060a01b03165f52602052602060405f2054604051908152f35b5034620002b45780600319360112620002b4576027546040516001600160a01b039091168152602090f35b5034620002b45762001c72366200e79e565b15620026be5760015b60255460405163549387df60e11b81525f5160206201b2605f395f51905f5260048201525f5160206201b1605f395f51905f5260248201525f5160206201b2205f395f51905f526044820152908490829060649082906001600160a01b03165afa90811562000518578491620026a0575b5060028210156200268c57836001831491825f14620025f55762001d10906200ecdb565b51841080620024ef575b5f5160206201b1205f395f51905f523b156200082057604051632631f2b160e11b8152901515600482015281816024815f5160206201b1205f395f51905f525afa80156200081557620024d6575b50505b838060405160208101906370a0823160e01b82523060248201526024815262001d966044826200e74e565b51905f5160206201b1605f395f51905f525afa5062001db862000a2b62010eea565b50601180546001600160a01b0319165f5160206201b1605f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b811015620024c2579062001e1462000a90836001889501600e556200e912565b905560018060a01b0360115416600f5460e01b6010549062001e35620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b169081875260205260408620604051602081019062001e7c8162000b11888886620113bc565b519020875260205260ff60036040882001541615620024b1575b6001600160a01b0384165f908152600d6020526040902090865260205262000b1162001ed26040872093604051928391602083019586620113bc565b51902084526020526040832090600182015491600281015462001ef681856200eb70565b620024a4578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052949091906020866044815f5160206201b1205f395f51905f525afa958615620012a557889662002465575b506001908201610100031b5f1901811b1985165f5160206201b1205f395f51905f523b1562002461576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528581606481835f5160206201b1205f395f51905f525af19081156200133857869162002448575b505062001fd6620115b6565b90159081156200243b575b50620023e65750505062001ff46201218f565b60255460405163095ea7b360e01b81526001600160a01b0390911660048201525f196024820152602081604481865f5160206201b1605f395f51905f525af180156200083d57620023c4575b506040516370a0823160e01b8152306004820152936020856024815f5160206201b1605f395f51905f525afa9485156200083d57839562002387575b506040516370a0823160e01b8152306004820152916020836024815f5160206201b2205f395f51905f525afa928315620005185784936200234a575b50608060409583620020e68851620020d18a826200e74e565b60018152601f198a013660208301376200eccd565b526025548751638307c65560e01b81525f5160206201b2605f395f51905f5260048201525f5160206201b1605f395f51905f5260248201525f5160206201b2205f395f51905f5260448201526064810192909252608482018590529095869160a49183916001600160a01b03165af19384156200224657879462002324575b5015620022505783516370a0823160e01b81523060048201526020816024815f5160206201b2205f395f51905f525afa908115620022465787916200220b575b50620021b6926200109f916200ed98565b519080516370a0823160e01b81523060048201526020816024815f5160206201b1605f395f51905f525afa9182156200220257508491620010e557506200109f90620010e2936200ed98565b513d86823e3d90fd5b90506020813d6020116200223d575b8162002229602093836200e74e565b81010312620011175751620021b6620021a5565b3d91506200221a565b85513d89823e3d90fd5b83516370a0823160e01b81523060048201529194916020816024815f5160206201b1605f395f51905f525afa90811562002246578791620022e9575b506200109f906200229d936200ed98565b519080516370a0823160e01b81523060048201526020816024815f5160206201b2205f395f51905f525afa9182156200220257508491620011f25750620010e2926200109f916200ed98565b90506020813d6020116200231b575b8162002307602093836200e74e565b810103126200111757516200229d6200228c565b3d9150620022f8565b6200234291945060803d6080116200129d576200128c81836200e74e565b925f62002165565b935091506020833d6020116200237e575b816200236a602093836200e74e565b810103126200111757859251915f620020b8565b3d91506200235b565b925093506020823d602011620023bb575b81620023a7602093836200e74e565b810103126200111757849151935f6200207c565b3d915062002398565b620023e09060203d6020116200136f576200136081836200e74e565b62002040565b8492935054905f5160206201b1205f395f51905f523b1562000514576040516370ca10bb60e01b81526001600160a01b03909116600482015260248101919091526044810192909252818060648101620013e8565b5f19141590505f62001fe1565b8162002454916200e74e565b6200182057845f62001fca565b8780fd5b975094506020873d6020116200249b575b8162002485602093836200e74e565b8101031262001117579551899690948162001f4b565b3d915062002476565b620016dc8691856200eb70565b620024bb6201185a565b5062001e96565b634e487b7160e01b85526041600452602485fd5b81620024e2916200e74e565b6200052357835f62001d68565b505060405163313ce56760e01b81526020816004815f5160206201b2205f395f51905f525afa8015620025ea578590620025a6575b60ff91501680600682116200257e575b600c811162002569575b50604d811162002555578490600a0a841162001d1a565b634e487b7160e01b85526011600452602485fd5b60021981019150811162002555575f6200253e565b905f19810190811162002592579062002534565b634e487b7160e01b86526011600452602486fd5b506020813d602011620025e1575b81620025c3602093836200e74e565b8101031262001820575160ff81168103620018205760ff9062002524565b3d9150620025b4565b6040513d87823e3d90fd5b62002600906200eccd565b5184108062002679575b5f5160206201b1205f395f51905f523b156200082057604051632631f2b160e11b8152901515600482015281816024815f5160206201b1205f395f51905f525afa8015620008155762002660575b505062001d6b565b816200266c916200e74e565b6200052357835f62002658565b50620026846200f1c5565b84116200260a565b634e487b7160e01b84526021600452602484fd5b620026b791503d8086833e6200055081836200e74e565b5f62001cec565b8162001c7b565b5034620002b4576020366003190112620002b45760285460255460405163549387df60e11b81525f5160206201b1805f395f51905f5260048201526001600160a01b03928316602482018190525f5160206201b2405f395f51905f52604483015293929091839183916064918391165afa90811562000815578291620028fe575b5062002758620006006004356200f52f565b5181105f5160206201b1205f395f51905f523b15620005145760405190632631f2b160e11b8252600482015282816024815f5160206201b1205f395f51905f525afa80156200083d57908391620028e5575b50509181604093845190620027c086836200e74e565b600182526020820190601f198701368337620027dc836200eccd565b52620027e76200f38e565b602554865163155adc9160e31b81525f5160206201b1805f395f51905f52600482015260248101959095525f5160206201b2405f395f51905f5260448601526080606486015291516084850181905284926001600160a01b03169160a4840191855b818110620028c85750505083838281935003925af1928315620004d357508192620028a8575b50805b8251811015620004a657806200288f6200047c600193866200ecec565b620028a160206200049683876200ecec565b0162002872565b620028c09192503d8084833e620004c281836200e74e565b905f6200286f565b825184528896508795506020938401939092019160010162002849565b81620028f1916200e74e565b6200082057815f620027aa565b6200291591503d8084833e6200055081836200e74e565b5f62002746565b5034620002b4576200292e366200e79e565b15620031d15760015b60255460405163549387df60e11b81525f5160206201b1805f395f51905f5260048201525f5160206201b2405f395f51905f5260248201525f5160206201b1e05f395f51905f526044820152908490829060649082906001600160a01b03165afa90811562000518578491620031b3575b5060028210156200268c57836001831491825f146200311c57620029cc906200ecdb565b5184108062003109575b5f5160206201b1205f395f51905f523b156200082057604051632631f2b160e11b8152901515600482015281816024815f5160206201b1205f395f51905f525afa80156200081557620030f0575b50505b838060405160208101906370a0823160e01b82523060248201526024815262002a526044826200e74e565b51905f5160206201b2405f395f51905f525afa5062002a7462000a2b62010eea565b50601180546001600160a01b0319165f5160206201b2405f395f51905f52179055600f805463ffffffff19166370a08231179055600e54600160401b811015620024c2579062002ad062000a90836001889501600e556200e912565b905560018060a01b0360115416600f5460e01b6010549062002af1620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b169081875260205260408620604051602081019062002b388162000b11888886620113bc565b519020875260205260ff60036040882001541615620030df575b6001600160a01b0384165f908152600d6020526040902090865260205262000b1162002b8e6040872093604051928391602083019586620113bc565b51902084526020526040832090600182015491600281015462002bb281856200eb70565b620024a4578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052949091906020866044815f5160206201b1205f395f51905f525afa958615620012a5578896620030a0575b506001908201610100031b5f1901811b1985165f5160206201b1205f395f51905f523b1562002461576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528581606481835f5160206201b1205f395f51905f525af19081156200133857869162003087575b505062002c92620115b6565b90159081156200307a575b50620023e65750505062002cb06201218f565b60255460405163095ea7b360e01b81526001600160a01b0390911660048201525f196024820152602081604481865f5160206201b2405f395f51905f525af180156200083d5762003058575b506040516370a0823160e01b8152306004820152936020856024815f5160206201b2405f395f51905f525afa9485156200083d5783956200301b575b506040516370a0823160e01b8152306004820152916020836024815f5160206201b1e05f395f51905f525afa9283156200051857849362002fde575b5060806040958362002d8d8851620020d18a826200e74e565b526025548751638307c65560e01b81525f5160206201b1805f395f51905f5260048201525f5160206201b2405f395f51905f5260248201525f5160206201b1e05f395f51905f5260448201526064810192909252608482018590529095869160a49183916001600160a01b03165af19384156200224657879462002fb8575b501562002ee45783516370a0823160e01b81523060048201526020816024815f5160206201b1e05f395f51905f525afa9081156200224657879162002ea9575b5062002e5d926200109f916200ed98565b519080516370a0823160e01b81523060048201526020816024815f5160206201b2405f395f51905f525afa9182156200220257508491620010e557506200109f90620010e2936200ed98565b90506020813d60201162002edb575b8162002ec7602093836200e74e565b8101031262001117575162002e5d62002e4c565b3d915062002eb8565b83516370a0823160e01b81523060048201529194916020816024815f5160206201b2405f395f51905f525afa9081156200224657879162002f7d575b506200109f9062002f31936200ed98565b519080516370a0823160e01b81523060048201526020816024815f5160206201b1e05f395f51905f525afa9182156200220257508491620011f25750620010e2926200109f916200ed98565b90506020813d60201162002faf575b8162002f9b602093836200e74e565b8101031262001117575162002f3162002f20565b3d915062002f8c565b62002fd691945060803d6080116200129d576200128c81836200e74e565b925f62002e0c565b935091506020833d60201162003012575b8162002ffe602093836200e74e565b810103126200111757859251915f62002d74565b3d915062002fef565b925093506020823d6020116200304f575b816200303b602093836200e74e565b810103126200111757849151935f62002d38565b3d91506200302c565b620030749060203d6020116200136f576200136081836200e74e565b62002cfc565b5f19141590505f62002c9d565b8162003093916200e74e565b6200182057845f62002c86565b975094506020873d602011620030d6575b81620030c0602093836200e74e565b8101031262001117579551899690948162002c07565b3d9150620030b1565b620030e96201185a565b5062002b52565b81620030fc916200e74e565b6200052357835f62002a24565b50620031146200f21f565b8411620029d6565b62003127906200eccd565b51841080620031a0575b5f5160206201b1205f395f51905f523b156200082057604051632631f2b160e11b8152901515600482015281816024815f5160206201b1205f395f51905f525afa8015620008155762003187575b505062002a27565b8162003193916200e74e565b6200052357835f6200317f565b50620031ab6200f21f565b841162003131565b620031ca91503d8086833e6200055081836200e74e565b5f620029a8565b8162002937565b5034620002b457606490620031ed366200e79e565b1562003c0e5760015b60255460405163549387df60e11b81525f5160206201b1805f395f51905f5260048201525f5160206201b1405f395f51905f5260248201525f5160206201b1e05f395f51905f52604482015294849186919082906001600160a01b03165afa9384156200083d57839462003bee575b50600281101562003bda576001811493841562003b405762003287906200ecdb565b5182108062003b2d575b5f5160206201b1205f395f51905f523b156200052357604051632631f2b160e11b8152901515600482015283816024815f5160206201b1205f395f51905f525afa8015620005185790849162003b14575b50505b6040516318160ddd60e01b8152936020856004815f5160206201b1405f395f51905f525afa9485156200051857849562003ada575b508460011b948086046002149015171562003ac657838060405160208101906370a0823160e01b8252306024820152602481526200335a6044826200e74e565b51905f5160206201b1405f395f51905f525afa506200337c62000a2b62010eea565b50601180546001600160a01b0319165f5160206201b1405f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b811015620024c25762000a90816001620033d69301600e556200e912565b905560018060a01b0360115416600f5460e01b60105490620033f7620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908189526020526040882060405160208101906200343e8162000b11888886620113bc565b519020895260205260ff600360408a200154161562003ab5575b6001600160a01b0384165f908152600d6020526040902090885260205262000b11620034946040892093604051928391602083019586620113bc565b51902086526020526040852090600182015491600281015497620034b989856200eb70565b62003977575b8154604051630667f9d760e41b81526001600160a01b0385166004820152602481018290529899979896978a97956020876044815f5160206201b1205f395f51905f525afa9687156200396c5789976200392d575b506001908201610100031b5f1901811b198616915f5160206201b1205f395f51905f523b1562003929576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528681606481835f5160206201b1205f395f51905f525af19081156200116357879162003910575b5050620035a2620115b6565b91901591821562003904575b5050620023e657505050620035c26201218f565b60255460405163095ea7b360e01b81526001600160a01b0390911660048201525f196024820152602081604481865f5160206201b1405f395f51905f525af180156200083d57620038e2575b506040516370a0823160e01b8152306004820152936020856024815f5160206201b1405f395f51905f525afa9485156200083d578395620038a5575b506040516370a0823160e01b8152306004820152916020836024815f5160206201b1e05f395f51905f525afa9283156200051857849362003868575b506080604095836200369f8851620020d18a826200e74e565b526025548751638307c65560e01b81525f5160206201b1805f395f51905f5260048201525f5160206201b1405f395f51905f5260248201525f5160206201b1e05f395f51905f5260448201526064810192909252608482018590529095869160a49183916001600160a01b03165af19384156200224657879462003842575b5015620037f65783516370a0823160e01b81523060048201526020816024815f5160206201b1e05f395f51905f525afa90811562002246578791620037bb575b506200376f926200109f916200ed98565b519080516370a0823160e01b81523060048201526020816024815f5160206201b1405f395f51905f525afa9182156200220257508491620010e557506200109f90620010e2936200ed98565b90506020813d602011620037ed575b81620037d9602093836200e74e565b810103126200111757516200376f6200375e565b3d9150620037ca565b83516370a0823160e01b81523060048201529194916020816024815f5160206201b1405f395f51905f525afa9081156200224657879162002f7d57506200109f9062002f31936200ed98565b6200386091945060803d6080116200129d576200128c81836200e74e565b925f6200371e565b935091506020833d6020116200389c575b8162003888602093836200e74e565b810103126200111757859251915f62003686565b3d915062003879565b925093506020823d602011620038d9575b81620038c5602093836200e74e565b810103126200111757849151935f6200364a565b3d9150620038b6565b620038fe9060203d6020116200136f576200136081836200e74e565b6200360e565b141590505f80620035ae565b816200391c916200e74e565b620014a857855f62003596565b8880fd5b985095506020883d60201162003963575b816200394d602093836200e74e565b81010312620011175796518a9790958162003514565b3d91506200393e565b6040513d8b823e3d90fd5b6200398389856200eb70565b61010003610100811162003aa15760ff811162003aa1576001901b986040519963348051d760e11b8b528060048c0152898b6024815f5160206201b1205f395f51905f525afa9a8b1562003a9657606a60209c62003a45928d9162003a78575b506040519d8e915f5160206201b2805f395f51905f52828401525f5160206201b1005f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018d838201520301601f1981018d528c6200e74e565b82101562003a55579850620034bf565b60405162461bcd60e51b81526020600482015280620015f9602482018d6200e6f2565b62003a8f91503d808f833e6200161481836200e74e565b5f620039e3565b6040513d8c823e3d90fd5b634e487b7160e01b89526011600452602489fd5b62003abf6201185a565b5062003458565b634e487b7160e01b84526011600452602484fd5b9094506020813d60201162003b0b575b8162003af9602093836200e74e565b81010312620011175751935f6200331a565b3d915062003aea565b8162003b20916200e74e565b6200051457825f620032e2565b5062003b386200f279565b821162003291565b62003b4b906200eccd565b5182108062003bc7575b5f5160206201b1205f395f51905f523b156200052357604051632631f2b160e11b8152901515600482015283816024815f5160206201b1205f395f51905f525afa8015620005185790849162003bae575b5050620032e5565b8162003bba916200e74e565b6200051457825f62003ba6565b5062003bd26200f047565b821162003b55565b634e487b7160e01b83526021600452602483fd5b62003c069194503d8085833e6200055081836200e74e565b925f62003265565b81620031f6565b5034620002b4576040366003190112620002b4576004356001600160a01b038116908181036200051457602435926001600160401b038411620002b45736602385011215620002b45783600401359362003c6f856200ea1a565b9462003c7f60405196876200e74e565b8086526024602087019160051b830101913683116200052357602401905b82821062003f005750505062003cb3846200eccd565b51604051906348bd7dfd60e01b82526004820152816024820152816044820152818160648183885af190811562000815579062003cf991839162003ed9575b506200f54c565b1593815b815181101562003ed55762003d1381836200ecec565b516040519063ecbbc03360e01b825260048201528381602481838a5af19081156200051857908791859162003e07575b506001929162003e009162003d6d896001600160a01b0362003d65846200eccd565b51166200f609565b62003d8389868060a01b0362003d65846200ecdb565b62003dc38262003d9486896200ecec565b51878060a01b0362003da6856200eccd565b5116888060a01b0362003db9866200ecdb565b5116918c6200f760565b62003dcf84876200ecec565b5190858060a01b0362003de2826200ecdb565b51169062003df6878060a01b03916200eccd565b511691896200f760565b0162003cfd565b9150503d8085833e62003e1b81836200e74e565b81019060208183031262001820578051906001600160401b038211620014a857019080601f83011215620018205781519062003e57826200ea1a565b9262003e6760405194856200e74e565b82845260208085019360051b82010191821162003ed1579060208a94939201915b81831062003e9b57505050600162003d43565b825195999793959294509092916001600160a01b0381168103620005145781602092918392520193019095979391899362003e88565b8680fd5b8280f35b62003ef991503d8085833e62003ef081836200e74e565b8101906200efb9565b5f62003cf2565b813581526020918201910162003c9d565b5034620002b4576020366003190112620002b45760255460405163549387df60e11b81525f5160206201b1c05f395f51905f526004828101919091525f5160206201b1a05f395f51905f5260248301525f5160206201b1405f395f51905f5260448301523592918290829060649082906001600160a01b03165afa90811562000815578291620041cc575b5062003fab620006006200f111565b5183105f5160206201b1205f395f51905f523b15620005145760405190632631f2b160e11b8252600482015282816024815f5160206201b1205f395f51905f525afa80156200083d57908391620041b3575b50505f5160206201b1205f395f51905f523b156200082057604051632631f2b160e11b8152908311600482015281816024815f5160206201b1205f395f51905f525afa801562000815579082916200419a575b50506040918183516200406485826200e74e565b600181526020810192601f19860136853762004080826200eccd565b526200408b6200f38e565b602554855163155adc9160e31b81525f5160206201b1c05f395f51905f5260048201525f5160206201b1a05f395f51905f5260248201525f5160206201b1405f395f51905f52604482015260806064820152915160848301819052919384926001600160a01b039092169160a484019190855b8181106200417d5750505083838281935003925af1928315620004d3575081926200415d575b50805b8251811015620004a65780620041446200047c600193866200ecec565b6200415660206200049683876200ecec565b0162004127565b620041759192503d8084833e620004c281836200e74e565b905f62004124565b8251845288965087955060209384019390920191600101620040fe565b81620041a6916200e74e565b620002b457805f62004050565b81620041bf916200e74e565b6200082057815f62003ffd565b620041e391503d8084833e6200055081836200e74e565b5f62003f9c565b5034620002b4576020366003190112620002b45760255460405163549387df60e11b81525f5160206201b1c05f395f51905f526004828101919091525f5160206201b1405f395f51905f5260248301525f5160206201b1a05f395f51905f5260448301523592918290829060649082906001600160a01b03165afa90811562000815578291620044a5575b5062004284620006006200f047565b5183105f5160206201b1205f395f51905f523b15620005145760405190632631f2b160e11b8252600482015282816024815f5160206201b1205f395f51905f525afa80156200083d579083916200448c575b50505f5160206201b1205f395f51905f523b156200082057604051632631f2b160e11b8152908311600482015281816024815f5160206201b1205f395f51905f525afa8015620008155790829162004473575b50506040918183516200433d85826200e74e565b600181526020810192601f19860136853762004359826200eccd565b52620043646200f38e565b602554855163155adc9160e31b81525f5160206201b1c05f395f51905f5260048201525f5160206201b1405f395f51905f5260248201525f5160206201b1a05f395f51905f52604482015260806064820152915160848301819052919384926001600160a01b039092169160a484019190855b818110620044565750505083838281935003925af1928315620004d35750819262004436575b50805b8251811015620004a657806200441d6200047c600193866200ecec565b6200442f60206200049683876200ecec565b0162004400565b6200444e9192503d8084833e620004c281836200e74e565b905f620043fd565b8251845288965087955060209384019390920191600101620043d7565b816200447f916200e74e565b620002b457805f62004329565b8162004498916200e74e565b6200082057815f620042d6565b620044bc91503d8084833e6200055081836200e74e565b5f62004275565b5034620002b4576020366003190112620002b45760275460255460405163549387df60e11b81525f5160206201b2605f395f51905f526004828101919091526001600160a01b03938416602483018190525f5160206201b1605f395f51905f5260448401529493903592849183916064918391165afa9081156200083d5790620045559184916200471857506200eccd565b5181108062004704575b5f5160206201b1205f395f51905f523b156200051457604051632631f2b160e11b8152901515600482015282816024815f5160206201b1205f395f51905f525afa80156200083d57908391620046eb575b50509181604093845190620045c686836200e74e565b600182526020820190601f198701368337620045e2836200eccd565b52620045ed6200f38e565b602554865163155adc9160e31b81525f5160206201b2605f395f51905f52600482015260248101959095525f5160206201b1605f395f51905f5260448601526080606486015291516084850181905284926001600160a01b03169160a4840191855b818110620046ce5750505083838281935003925af1928315620004d357508192620046ae575b50805b8251811015620004a65780620046956200047c600193866200ecec565b620046a760206200049683876200ecec565b0162004678565b620046c69192503d8084833e620004c281836200e74e565b905f62004675565b82518452889650879550602093840193909201916001016200464f565b81620046f7916200e74e565b6200082057815f620045b0565b5062004710836200f2d3565b81116200455f565b6200055991503d8086833e6200055081836200e74e565b5034620002b45780600319360112620002b45760206200474e6200ef13565b6040519015158152f35b5034620002b45780600319360112620002b45760195462004779816200ea1a565b916200478960405193846200e74e565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b838310620047d65760405160208082528190620008d8908201886200e803565b600160208192604051620047f881620047f081896200e993565b03826200e74e565b815201920192019190620047b6565b5034620002b4576040366003190112620002b45762004834620048296200e770565b60243590336200f437565b602060405160018152f35b5034620002b4576020366003190112620002b457600435601f5481101562000820576200486c906200e93f565b919091620048a257604051620008d8906200488d81620047f081876200e993565b6040519182916020835260208301906200e6f2565b634e487b7160e01b81526004819052602490fd5b5034620002b457606490620048cb366200e79e565b15620052dc5760015b60255460405163549387df60e11b81525f5160206201b1805f395f51905f5260048201525f5160206201b1e05f395f51905f5260248201525f5160206201b1405f395f51905f52604482015294849186919082906001600160a01b03165afa9384156200083d578394620052bc575b50600281101562003bda5760018114938415620052225762004965906200ecdb565b518210806200520f575b5f5160206201b1205f395f51905f523b156200052357604051632631f2b160e11b8152901515600482015283816024815f5160206201b1205f395f51905f525afa80156200051857908491620051f6575b50505b6040516318160ddd60e01b8152936020856004815f5160206201b1e05f395f51905f525afa94851562000518578495620051bc575b508460011b948086046002149015171562003ac657838060405160208101906370a0823160e01b82523060248201526024815262004a386044826200e74e565b51905f5160206201b1e05f395f51905f525afa5062004a5a62000a2b62010eea565b50601180546001600160a01b0319165f5160206201b1e05f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b811015620024c25762000a9081600162004ab49301600e556200e912565b905560018060a01b0360115416600f5460e01b6010549062004ad5620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b169081895260205260408820604051602081019062004b1c8162000b11888886620113bc565b519020895260205260ff600360408a2001541615620051ab575b6001600160a01b0384165f908152600d6020526040902090885260205262000b1162004b726040892093604051928391602083019586620113bc565b5190208652602052604085209060018201549160028101549762004b9789856200eb70565b620050ce575b8154604051630667f9d760e41b81526001600160a01b0385166004820152602481018290529899979896978a97956020876044815f5160206201b1205f395f51905f525afa9687156200396c5789976200508f575b506001908201610100031b5f1901811b198616915f5160206201b1205f395f51905f523b1562003929576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528681606481835f5160206201b1205f395f51905f525af19081156200116357879162005076575b505062004c80620115b6565b9190159182156200506a575b5050620023e65750505062004ca06201218f565b60255460405163095ea7b360e01b81526001600160a01b0390911660048201525f196024820152602081604481865f5160206201b1e05f395f51905f525af180156200083d5762005048575b506040516370a0823160e01b8152306004820152936020856024815f5160206201b1e05f395f51905f525afa9485156200083d5783956200500b575b506040516370a0823160e01b8152306004820152916020836024815f5160206201b1405f395f51905f525afa9283156200051857849362004fce575b5060806040958362004d7d8851620020d18a826200e74e565b526025548751638307c65560e01b81525f5160206201b1805f395f51905f5260048201525f5160206201b1e05f395f51905f5260248201525f5160206201b1405f395f51905f5260448201526064810192909252608482018590529095869160a49183916001600160a01b03165af19384156200224657879462004fa8575b501562004ed45783516370a0823160e01b81523060048201526020816024815f5160206201b1405f395f51905f525afa9081156200224657879162004e99575b5062004e4d926200109f916200ed98565b519080516370a0823160e01b81523060048201526020816024815f5160206201b1e05f395f51905f525afa9182156200220257508491620010e557506200109f90620010e2936200ed98565b90506020813d60201162004ecb575b8162004eb7602093836200e74e565b8101031262001117575162004e4d62004e3c565b3d915062004ea8565b83516370a0823160e01b81523060048201529194916020816024815f5160206201b1e05f395f51905f525afa9081156200224657879162004f6d575b506200109f9062004f21936200ed98565b519080516370a0823160e01b81523060048201526020816024815f5160206201b1405f395f51905f525afa9182156200220257508491620011f25750620010e2926200109f916200ed98565b90506020813d60201162004f9f575b8162004f8b602093836200e74e565b8101031262001117575162004f2162004f10565b3d915062004f7c565b62004fc691945060803d6080116200129d576200128c81836200e74e565b925f62004dfc565b935091506020833d60201162005002575b8162004fee602093836200e74e565b810103126200111757859251915f62004d64565b3d915062004fdf565b925093506020823d6020116200503f575b816200502b602093836200e74e565b810103126200111757849151935f62004d28565b3d91506200501c565b620050649060203d6020116200136f576200136081836200e74e565b62004cec565b141590505f8062004c8c565b8162005082916200e74e565b620014a857855f62004c74565b985095506020883d602011620050c5575b81620050af602093836200e74e565b81010312620011175796518a9790958162004bf2565b3d9150620050a0565b620050da89856200eb70565b61010003610100811162003aa15760ff811162003aa1576001901b986040519963348051d760e11b8b528060048c0152898b6024815f5160206201b1205f395f51905f525afa9a8b1562003a9657606a60209c6200519b928d9162003a7857506040519d8e915f5160206201b2805f395f51905f52828401525f5160206201b1005f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018d838201520301601f1981018d528c6200e74e565b82101562003a5557985062004b9d565b620051b56201185a565b5062004b36565b9094506020813d602011620051ed575b81620051db602093836200e74e565b81010312620011175751935f620049f8565b3d9150620051cc565b8162005202916200e74e565b6200051457825f620049c0565b506200521a6200f047565b82116200496f565b6200522d906200eccd565b51821080620052a9575b5f5160206201b1205f395f51905f523b156200052357604051632631f2b160e11b8152901515600482015283816024815f5160206201b1205f395f51905f525afa8015620005185790849162005290575b5050620049c3565b816200529c916200e74e565b6200051457825f62005288565b50620052b46200f279565b821162005237565b620052d49194503d8085833e6200055081836200e74e565b925f62004943565b81620048d4565b5034620002b457606490620052f8366200e79e565b929080841562005d46575064174876e80062989680620053189262010f29565b62005371816200536b604051620053316040826200e74e565b600c81526b109bdd5b990814995cdd5b1d60a21b602082015262000b11604051938492632d839cb360e21b6020850152602484016200eb38565b6201246d565b6027546001600160a01b0316931562005d3e576001905b60255460405163549387df60e11b81525f5160206201b2605f395f51905f5260048201525f5160206201b1605f395f51905f5260248201526044810187905293859185919082906001600160a01b03165afa9283156200051857849362005d1e575b5060028210156200268c576001821492831562005ca0576200540c906200ecdb565b5181105f5160206201b1205f395f51905f523b15620018205760405190632631f2b160e11b8252600482015284816024815f5160206201b1205f395f51905f525afa8015620025ea5790859162005c87575b50505b6040516318160ddd60e01b8152946020866004815f5160206201b1605f395f51905f525afa958615620025ea57859662005c4d575b508560011b95808704600214901517156200255557848060405160208101906370a0823160e01b825230602482015260248152620054d66044826200e74e565b51905f5160206201b1605f395f51905f525afa50620054f862000a2b62010eea565b50601180546001600160a01b0319165f5160206201b1605f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b811015620016565762000a90816001620055529301600e556200e912565b905560018060a01b0360115416600f5460e01b6010549062005573620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818a52602052604089206040516020810190620055ba8162000b11888886620113bc565b5190208a5260205260ff600360408b200154161562005c3c575b6001600160a01b0384165f908152600d6020526040902090895260205262000b116200561060408a2093604051928391602083019586620113bc565b51902087526020526040862090600182015491600281015498620056358a856200eb70565b62005b18575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052999a98998b9990956020876044815f5160206201b1205f395f51905f525afa96871562005b0d578b9762005ace575b506001908201610100031b5f1901811b198616915f5160206201b1205f395f51905f523b1562005aca576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528881606481835f5160206201b1205f395f51905f525af19081156200396c57899162005ab1575b50506200571d620115b6565b91901591821562005aa5575b505062005a4f575050506200573d6201218f565b60255460405163095ea7b360e01b81526001600160a01b0390911660048201525f196024820152602081604481885f5160206201b1605f395f51905f525af18015620025ea5762005a2d575b506040516370a0823160e01b8152306004820152946020866024815f5160206201b1605f395f51905f525afa958615620025ea578596620059f0575b506040516370a0823160e01b815230600482015293602085602481865afa94851562001338578695620059b1575b50602554604051638307c65560e01b81525f5160206201b2605f395f51905f5260048201525f5160206201b1605f395f51905f526024820152604481018590526064810192909252608482018590529095608091879160a4918391906001600160a01b03165af1948515620011635787956200598b575b501562005936576020602491604051928380926370a0823160e01b82523060048301525afa90811562001338578691620058fb575b50620058b0926200109f916200ed98565b516040516370a0823160e01b81523060048201526020816024815f5160206201b1605f395f51905f525afa90811562000518578491620010e557506200109f90620010e2936200ed98565b90506020813d6020116200592d575b8162005919602093836200e74e565b81010312620011175751620058b06200589f565b3d91506200590a565b92909193604051906370a0823160e01b82523060048301526020826024815f5160206201b1605f395f51905f525afa918215620011635787926200122d57506024936200109f60209493620011b6936200ed98565b620059a991955060803d6080116200129d576200128c81836200e74e565b935f6200586a565b955093506020853d602011620059e7575b81620059d1602093836200e74e565b81010312620011175760808795519490620057f3565b3d9150620059c2565b945094506020843d60201162005a24575b8162005a10602093836200e74e565b810103126200111757859351945f620057c5565b3d915062005a01565b62005a499060203d6020116200136f576200136081836200e74e565b62005789565b869291839154905f5160206201b1205f395f51905f523b1562000514576040516370ca10bb60e01b81526001600160a01b03909116600482015260248101919091526044810192909252818060648101620013e8565b141590505f8062005729565b8162005abd916200e74e565b6200246157875f62005711565b8a80fd5b9a50955060208a3d60201162005b04575b8162005aee602093836200e74e565b81010312620011175798518b999095816200568f565b3d915062005adf565b6040513d8d823e3d90fd5b62005b248a856200eb70565b610100036101008111620016315760ff811162001631576001901b996040519a63348051d760e11b8c528060048d01528a8c6024815f5160206201b1205f395f51905f525afa9b8c1562005b0d578b9c62005c1c575b50604051809c602082015f5160206201b2805f395f51905f529052604082015f5160206201b1005f395f51905f5290526060820169030ba32b9103a3430b7160b51b905280516020819201606a84015e81018c606a82015203606a01601f1981018d5262005be9908d6200e74e565b82101562005bf95799506200563b565b60405162461bcd60e51b81526020600482015280620015f9602482018e6200e6f2565b62005c34919c503d808d833e6200161481836200e74e565b9a5f62005b7a565b62005c466201185a565b50620055d4565b9095506020813d60201162005c7e575b8162005c6c602093836200e74e565b81010312620011175751945f62005496565b3d915062005c5d565b8162005c93916200e74e565b6200052357835f6200545e565b62005cab906200eccd565b5181105f5160206201b1205f395f51905f523b15620018205760405190632631f2b160e11b8252600482015284816024815f5160206201b1205f395f51905f525afa8015620025ea5790859162005d05575b505062005461565b8162005d11916200e74e565b6200052357835f62005cfd565b62005d369193503d8086833e6200055081836200e74e565b915f620053ea565b829062005388565b62005d5291506200f4f7565b62005371565b5034620002b4576020366003190112620002b45760255460405163549387df60e11b81525f5160206201b1805f395f51905f526004828101919091525f5160206201b1e05f395f51905f5260248301525f5160206201b1405f395f51905f5260448301523592918290829060649082906001600160a01b03165afa9081156200081557829162006013575b5062005df2620006006200f279565b5183105f5160206201b1205f395f51905f523b15620005145760405190632631f2b160e11b8252600482015282816024815f5160206201b1205f395f51905f525afa80156200083d5790839162005ffa575b50505f5160206201b1205f395f51905f523b156200082057604051632631f2b160e11b8152908311600482015281816024815f5160206201b1205f395f51905f525afa8015620008155790829162005fe1575b505060409181835162005eab85826200e74e565b600181526020810192601f19860136853762005ec7826200eccd565b5262005ed26200f38e565b602554855163155adc9160e31b81525f5160206201b1805f395f51905f5260048201525f5160206201b1e05f395f51905f5260248201525f5160206201b1405f395f51905f52604482015260806064820152915160848301819052919384926001600160a01b039092169160a484019190855b81811062005fc45750505083838281935003925af1928315620004d35750819262005fa4575b50805b8251811015620004a6578062005f8b6200047c600193866200ecec565b62005f9d60206200049683876200ecec565b0162005f6e565b62005fbc9192503d8084833e620004c281836200e74e565b905f62005f6b565b825184528896508795506020938401939092019160010162005f45565b8162005fed916200e74e565b620002b457805f62005e97565b8162006006916200e74e565b6200082057815f62005e44565b6200602a91503d8084833e6200055081836200e74e565b5f62005de3565b5034620002b45780600319360112620002b45760405190806024549062006058826200e958565b8085529160018116908115620060e6575060011462006085575b620008d8846200488d818603826200e74e565b602481527f7cd332d19b93bcabe3cce7ca0c18a052f57e5fd03b4758a09f30f5ddc4b22ec4939250905b808210620060cb575090915081016020016200488d8262006072565b919260018160209254838588010152019101909291620060af565b60ff191660208087019190915292151560051b850190920192506200488d915083905062006072565b5034620002b45780600319360112620002b457601c5462006130816200ea1a565b906200614060405192836200e74e565b808252601c8352827f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b838310620061865760405180620008d887826200e85f565b60405162006194816200e716565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b8160078401106200631b57846001979460029794602097946200622a945491818110620062fe575b818110620062e1575b818110620062c4575b818110620062a7575b8181106200628a575b8181106200626d575b81811062006252575b106200623d575b5003826200e74e565b838201528152019201920191906200616e565b6001600160e01b031916815286015f62006221565b828a1b6001600160e01b0319168452928901928b016200621a565b604083901b6001600160e01b0319168452928901928b0162006211565b606083901b6001600160e01b0319168452928901928b0162006208565b608083901b6001600160e01b0319168452928901928b01620061ff565b60a083901b6001600160e01b0319168452928901928b01620061f6565b60c083901b6001600160e01b0319168452928901928b01620061ed565b60e083901b6001600160e01b0319168452928901928b01620061e4565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e0820152019401920191620061bc565b5034620002b457606490620063d0366200e79e565b1562006de15760015b60255460405163549387df60e11b81525f5160206201b1c05f395f51905f5260048201525f5160206201b2005f395f51905f5260248201525f5160206201b1a05f395f51905f52604482015294849186919082906001600160a01b03165afa9384156200083d57839462006dc1575b50600281101562003bda576001811493841562006d27576200646a906200ecdb565b5182108062006d14575b5f5160206201b1205f395f51905f523b156200052357604051632631f2b160e11b8152901515600482015283816024815f5160206201b1205f395f51905f525afa8015620005185790849162006cfb575b50505b6040516318160ddd60e01b8152936020856004815f5160206201b2005f395f51905f525afa9485156200051857849562006cc1575b508460011b948086046002149015171562003ac657838060405160208101906370a0823160e01b8252306024820152602481526200653d6044826200e74e565b51905f5160206201b2005f395f51905f525afa506200655f62000a2b62010eea565b50601180546001600160a01b0319165f5160206201b2005f395f51905f52179055600f805463ffffffff19166370a08231179055600e54600160401b811015620024c25762000a90816001620065b99301600e556200e912565b905560018060a01b0360115416600f5460e01b60105490620065da620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818952602052604088206040516020810190620066218162000b11888886620113bc565b519020895260205260ff600360408a200154161562006cb0575b6001600160a01b0384165f908152600d6020526040902090885260205262000b11620066776040892093604051928391602083019586620113bc565b519020865260205260408520906001820154916002810154976200669c89856200eb70565b62006bd3575b8154604051630667f9d760e41b81526001600160a01b0385166004820152602481018290529899979896978a97956020876044815f5160206201b1205f395f51905f525afa9687156200396c57899762006b94575b506001908201610100031b5f1901811b198616915f5160206201b1205f395f51905f523b1562003929576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528681606481835f5160206201b1205f395f51905f525af19081156200116357879162006b7b575b505062006785620115b6565b91901591821562006b6f575b5050620023e657505050620067a56201218f565b60255460405163095ea7b360e01b81526001600160a01b0390911660048201525f196024820152602081604481865f5160206201b2005f395f51905f525af180156200083d5762006b4d575b506040516370a0823160e01b8152306004820152936020856024815f5160206201b2005f395f51905f525afa9485156200083d57839562006b10575b506040516370a0823160e01b8152306004820152916020836024815f5160206201b1a05f395f51905f525afa9283156200051857849362006ad3575b50608060409583620068828851620020d18a826200e74e565b526025548751638307c65560e01b81525f5160206201b1c05f395f51905f5260048201525f5160206201b2005f395f51905f5260248201525f5160206201b1a05f395f51905f5260448201526064810192909252608482018590529095869160a49183916001600160a01b03165af19384156200224657879462006aad575b5015620069d95783516370a0823160e01b81523060048201526020816024815f5160206201b1a05f395f51905f525afa908115620022465787916200699e575b5062006952926200109f916200ed98565b519080516370a0823160e01b81523060048201526020816024815f5160206201b2005f395f51905f525afa9182156200220257508491620010e557506200109f90620010e2936200ed98565b90506020813d602011620069d0575b81620069bc602093836200e74e565b810103126200111757516200695262006941565b3d9150620069ad565b83516370a0823160e01b81523060048201529194916020816024815f5160206201b2005f395f51905f525afa9081156200224657879162006a72575b506200109f9062006a26936200ed98565b519080516370a0823160e01b81523060048201526020816024815f5160206201b1a05f395f51905f525afa9182156200220257508491620011f25750620010e2926200109f916200ed98565b90506020813d60201162006aa4575b8162006a90602093836200e74e565b8101031262001117575162006a2662006a15565b3d915062006a81565b62006acb91945060803d6080116200129d576200128c81836200e74e565b925f62006901565b935091506020833d60201162006b07575b8162006af3602093836200e74e565b810103126200111757859251915f62006869565b3d915062006ae4565b925093506020823d60201162006b44575b8162006b30602093836200e74e565b810103126200111757849151935f6200682d565b3d915062006b21565b62006b699060203d6020116200136f576200136081836200e74e565b620067f1565b141590505f8062006791565b8162006b87916200e74e565b620014a857855f62006779565b985095506020883d60201162006bca575b8162006bb4602093836200e74e565b81010312620011175796518a97909581620066f7565b3d915062006ba5565b62006bdf89856200eb70565b61010003610100811162003aa15760ff811162003aa1576001901b986040519963348051d760e11b8b528060048c0152898b6024815f5160206201b1205f395f51905f525afa9a8b1562003a9657606a60209c62006ca0928d9162003a7857506040519d8e915f5160206201b2805f395f51905f52828401525f5160206201b1005f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018d838201520301601f1981018d528c6200e74e565b82101562003a55579850620066a2565b62006cba6201185a565b506200663b565b9094506020813d60201162006cf2575b8162006ce0602093836200e74e565b81010312620011175751935f620064fd565b3d915062006cd1565b8162006d07916200e74e565b6200051457825f620064c5565b5062006d1f6200f111565b821162006474565b62006d32906200eccd565b5182108062006dae575b5f5160206201b1205f395f51905f523b156200052357604051632631f2b160e11b8152901515600482015283816024815f5160206201b1205f395f51905f525afa8015620005185790849162006d95575b5050620064c8565b8162006da1916200e74e565b6200051457825f62006d8d565b5062006db96200f16b565b821162006d3c565b62006dd99194503d8085833e6200055081836200e74e565b925f62006448565b81620063d9565b5034620002b45780600319360112620002b457601a5462006e09816200ea1a565b9162006e1960405193846200e74e565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b83831062006e665760405160208082528190620008d8908201886200e803565b60016020819260405162006e8081620047f081896200e993565b81520192019201919062006e46565b5034620002b4576020366003190112620002b45760255460405163549387df60e11b81525f5160206201b1805f395f51905f526004828101919091525f5160206201b1405f395f51905f5260248301525f5160206201b1e05f395f51905f5260448301523592918290829060649082906001600160a01b03165afa908115620008155782916200714a575b5062006f29620006006200f047565b5183105f5160206201b1205f395f51905f523b15620005145760405190632631f2b160e11b8252600482015282816024815f5160206201b1205f395f51905f525afa80156200083d5790839162007131575b50505f5160206201b1205f395f51905f523b156200082057604051632631f2b160e11b8152908311600482015281816024815f5160206201b1205f395f51905f525afa8015620008155790829162007118575b505060409181835162006fe285826200e74e565b600181526020810192601f19860136853762006ffe826200eccd565b52620070096200f38e565b602554855163155adc9160e31b81525f5160206201b1805f395f51905f5260048201525f5160206201b1405f395f51905f5260248201525f5160206201b1e05f395f51905f52604482015260806064820152915160848301819052919384926001600160a01b039092169160a484019190855b818110620070fb5750505083838281935003925af1928315620004d357508192620070db575b50805b8251811015620004a65780620070c26200047c600193866200ecec565b620070d460206200049683876200ecec565b01620070a5565b620070f39192503d8084833e620004c281836200e74e565b905f620070a2565b82518452889650879550602093840193909201916001016200707c565b8162007124916200e74e565b620002b457805f62006fce565b816200713d916200e74e565b6200082057815f62006f7b565b6200716191503d8084833e6200055081836200e74e565b5f62006f1a565b5034620002b4576020366003190112620002b4576020906040906001600160a01b03620071946200e770565b1681528280522054604051908152f35b5034620002b457606490620071b9366200e79e565b929080841562007af25750620071cf906200f52f565b925b6028546001600160a01b0316901562007aea576001935b60255460405163549387df60e11b81525f5160206201b1805f395f51905f526004820152602481018490525f5160206201b2405f395f51905f52604482015293859185919082906001600160a01b03165afa9283156200051857849362007aca575b5060028510156200268c576001851492831562007a4c576200726c906200ecdb565b5181105f5160206201b1205f395f51905f523b15620018205760405190632631f2b160e11b8252600482015284816024815f5160206201b1205f395f51905f525afa8015620025ea5790859162007a33575b50505b6040516318160ddd60e01b815294602086600481865afa958615620025ea578596620079f9575b508560011b95808704600214901517156200255557848060405160208101906370a0823160e01b825230602482015260248152620073286044826200e74e565b5190865afa506200733c62000a2b62010eea565b50601180546001600160a01b0319166001600160a01b0385161790556370a0823163ffffffff19600f541617600f55600e54600160401b811015620016565762000a90816001620073919301600e556200e912565b905560018060a01b0360115416600f5460e01b60105490620073b2620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818a52602052604089206040516020810190620073f98162000b11888886620113bc565b5190208a5260205260ff600360408b2001541615620079e8575b6001600160a01b0384165f908152600d6020526040902090895260205262000b116200744f60408a2093604051928391602083019586620113bc565b51902087526020526040862090600182015491600281015498620074748a856200eb70565b620078e7575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052999a9899979896978b9790956020876044815f5160206201b1205f395f51905f525afa9687156200396c578997620078a8575b506001908201610100031b5f1901811b198616915f5160206201b1205f395f51905f523b1562003929576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528681606481835f5160206201b1205f395f51905f525af1908115620011635787916200788f575b505062007560620115b6565b91901591821562007883575b5050620023e657505050620075806201218f565b60255460405163095ea7b360e01b81526001600160a01b0390911660048201525f19602482015260208160448186895af180156200083d5762007861575b506040516370a0823160e01b815230600482015294602086602481885afa9586156200083d57839662007824575b506040516370a0823160e01b8152306004820152916020836024815f5160206201b2405f395f51905f525afa92831562000518578493620077e5575b50602554604051638307c65560e01b81525f5160206201b1805f395f51905f526004820152602481018890525f5160206201b2405f395f51905f5260448201526064810192909252608482018690529093608091859160a4918391906001600160a01b03165af192831562001163578793620077bf575b5015620076f6576040516370a0823160e01b81523060048201526020816024815f5160206201b2405f395f51905f525afa908115620011635787916200112457506024936200109f60209493620010a6936200ed98565b939190926020602491604051928380926370a0823160e01b82523060048301525afa9081156200133857869162007784575b506200109f9062007739936200ed98565b516040516370a0823160e01b81523060048201526020816024815f5160206201b2405f395f51905f525afa90811562000518578491620011f25750620010e2926200109f916200ed98565b90506020813d602011620077b6575b81620077a2602093836200e74e565b810103126200111757516200773962007728565b3d915062007793565b620077dd91935060803d6080116200129d576200128c81836200e74e565b915f6200769f565b935091506020833d6020116200781b575b8162007805602093836200e74e565b8101031262001117576080879351929062007628565b3d9150620077f6565b925094506020823d60201162007858575b8162007844602093836200e74e565b810103126200111757859151945f620075ec565b3d915062007835565b6200787d9060203d6020116200136f576200136081836200e74e565b620075be565b141590505f806200756c565b816200789b916200e74e565b620014a857855f62007554565b985095506020883d602011620078de575b81620078c8602093836200e74e565b81010312620011175796518b97909581620074d2565b3d9150620078b9565b620078f38a856200eb70565b610100036101008111620016315760ff811162001631576001901b996040519a63348051d760e11b8c528060048d01528a8c6024815f5160206201b1205f395f51905f525afa9b8c1562005b0d578b9c620079c8575b50604051809c602082015f5160206201b2805f395f51905f529052604082015f5160206201b1005f395f51905f5290526060820169030ba32b9103a3430b7160b51b905280516020819201606a84015e81018c606a82015203606a01601f1981018d52620079b8908d6200e74e565b82101562005bf95799506200747a565b620079e0919c503d808d833e6200161481836200e74e565b9a5f62007949565b620079f26201185a565b5062007413565b9095506020813d60201162007a2a575b8162007a18602093836200e74e565b81010312620011175751945f620072e8565b3d915062007a09565b8162007a3f916200e74e565b6200052357835f620072be565b62007a57906200eccd565b5181105f5160206201b1205f395f51905f523b15620018205760405190632631f2b160e11b8252600482015284816024815f5160206201b1205f395f51905f525afa8015620025ea5790859162007ab1575b5050620072c1565b8162007abd916200e74e565b6200052357835f62007aa9565b62007ae29193503d8086833e6200055081836200e74e565b915f6200724a565b8293620071e8565b62007afe91506200f52f565b92620071d1565b5034620002b45780600319360112620002b457601b5462007b26816200ea1a565b9062007b3660405192836200e74e565b808252601b8352827f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1602084015b83831062007b7c5760405180620008d887826200e85f565b60405162007b8a816200e716565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b81600784011062007c2b578460019794600297946020979462007c18945491818110620062fe57818110620062e157818110620062c457818110620062a7578181106200628a578181106200626d578181106200625257106200623d575003826200e74e565b8382015281520192019201919062007b64565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e082015201940192019162007bb2565b5034620002b45760649062007ce0366200e79e565b156200874a5760015b60255460405163549387df60e11b81525f5160206201b1c05f395f51905f5260048201525f5160206201b1405f395f51905f526024820152737f39c581f595b53c5cb19bd0b3f8da6c935e2ca0604482015294849186919082906001600160a01b03165afa9384156200083d5783946200872a575b50600281101562003bda5760018114938415620086905762007d80906200ecdb565b51821080620085ba575b5f5160206201b1205f395f51905f523b156200052357604051632631f2b160e11b8152901515600482015283816024815f5160206201b1205f395f51905f525afa80156200051857908491620085a1575b50505b6040516318160ddd60e01b8152936020856004815f5160206201b1405f395f51905f525afa9485156200051857849562008567575b508460011b948086046002149015171562003ac657838060405160208101906370a0823160e01b82523060248201526024815262007e536044826200e74e565b51905f5160206201b1405f395f51905f525afa5062007e7562000a2b62010eea565b50601180546001600160a01b0319165f5160206201b1405f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b811015620024c25762000a9081600162007ecf9301600e556200e912565b905560018060a01b0360115416600f5460e01b6010549062007ef0620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b169081895260205260408820604051602081019062007f378162000b11888886620113bc565b519020895260205260ff600360408a200154161562008556575b6001600160a01b0384165f908152600d6020526040902090885260205262000b1162007f8d6040892093604051928391602083019586620113bc565b5190208652602052604085209060018201549160028101549762007fb289856200eb70565b62008479575b8154604051630667f9d760e41b81526001600160a01b0385166004820152602481018290529899979896978a97956020876044815f5160206201b1205f395f51905f525afa9687156200396c5789976200843a575b506001908201610100031b5f1901811b198616915f5160206201b1205f395f51905f523b1562003929576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528681606481835f5160206201b1205f395f51905f525af19081156200116357879162008421575b50506200809b620115b6565b91901591821562008415575b5050620023e657505050620080bb6201218f565b60255460405163095ea7b360e01b81526001600160a01b0390911660048201525f196024820152602081604481865f5160206201b1405f395f51905f525af180156200083d57620083f3575b506040516370a0823160e01b8152306004820152936020856024815f5160206201b1405f395f51905f525afa9485156200083d578395620083b6575b506040516370a0823160e01b815230600482015291602083602481737f39c581f595b53c5cb19bd0b3f8da6c935e2ca05afa9283156200051857849362008379575b506080604095836200819e8851620020d18a826200e74e565b526025548751638307c65560e01b81525f5160206201b1c05f395f51905f5260048201525f5160206201b1405f395f51905f526024820152737f39c581f595b53c5cb19bd0b3f8da6c935e2ca060448201526064810192909252608482018590529095869160a49183916001600160a01b03165af19384156200224657879462008353575b5015620082795783516370a0823160e01b8152306004820152602081602481737f39c581f595b53c5cb19bd0b3f8da6c935e2ca05afa90811562002246578791620037bb57506200376f926200109f916200ed98565b83516370a0823160e01b81523060048201529194916020816024815f5160206201b1405f395f51905f525afa9081156200224657879162008318575b506200109f90620082c6936200ed98565b519080516370a0823160e01b8152306004820152602081602481737f39c581f595b53c5cb19bd0b3f8da6c935e2ca05afa9182156200220257508491620011f25750620010e2926200109f916200ed98565b90506020813d6020116200834a575b8162008336602093836200e74e565b81010312620011175751620082c6620082b5565b3d915062008327565b6200837191945060803d6080116200129d576200128c81836200e74e565b925f62008223565b935091506020833d602011620083ad575b8162008399602093836200e74e565b810103126200111757859251915f62008185565b3d91506200838a565b925093506020823d602011620083ea575b81620083d6602093836200e74e565b810103126200111757849151935f62008143565b3d9150620083c7565b6200840f9060203d6020116200136f576200136081836200e74e565b62008107565b141590505f80620080a7565b816200842d916200e74e565b620014a857855f6200808f565b985095506020883d60201162008470575b816200845a602093836200e74e565b81010312620011175796518a979095816200800d565b3d91506200844b565b6200848589856200eb70565b61010003610100811162003aa15760ff811162003aa1576001901b986040519963348051d760e11b8b528060048c0152898b6024815f5160206201b1205f395f51905f525afa9a8b1562003a9657606a60209c62008546928d9162003a7857506040519d8e915f5160206201b2805f395f51905f52828401525f5160206201b1005f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018d838201520301601f1981018d528c6200e74e565b82101562003a5557985062007fb8565b620085606201185a565b5062007f51565b9094506020813d60201162008598575b8162008586602093836200e74e565b81010312620011175751935f62007e13565b3d915062008577565b81620085ad916200e74e565b6200051457825f62007ddb565b5060405163313ce56760e01b8152602081600481737f39c581f595b53c5cb19bd0b3f8da6c935e2ca05afa8015620005185784906200864c575b60ff915016806006821162008638575b600c811162008623575b50604d811162003ac657600a0a821162007d8a565b60021981019150811162003ac6575f6200860e565b905f19810190811162002555579062008604565b506020813d60201162008687575b8162008669602093836200e74e565b8101031262000523575160ff81168103620005235760ff90620085f4565b3d91506200865a565b6200869b906200eccd565b5182108062008717575b5f5160206201b1205f395f51905f523b156200052357604051632631f2b160e11b8152901515600482015283816024815f5160206201b1205f395f51905f525afa80156200051857908491620086fe575b505062007dde565b816200870a916200e74e565b6200051457825f620086f6565b50620087226200f047565b8211620086a5565b620087429194503d8085833e6200055081836200e74e565b925f62007d5e565b8162007ce9565b5034620002b45762008763366200e79e565b1562008f7e5760015b60255460405163549387df60e11b81525f5160206201b1c05f395f51905f5260048201525f5160206201b1a05f395f51905f5260248201525f5160206201b1405f395f51905f526044820152908490829060649082906001600160a01b03165afa9081156200051857849162008f60575b5060028210156200268c57836001831491825f1462008ec95762008801906200ecdb565b5184108062008eb6575b5f5160206201b1205f395f51905f523b156200082057604051632631f2b160e11b8152901515600482015281816024815f5160206201b1205f395f51905f525afa8015620008155762008e9d575b50505b838060405160208101906370a0823160e01b825230602482015260248152620088876044826200e74e565b51905f5160206201b1a05f395f51905f525afa50620088a962000a2b62010eea565b50601180546001600160a01b0319165f5160206201b1a05f395f51905f52179055600f805463ffffffff19166370a08231179055600e54600160401b811015620024c257906200890562000a90836001889501600e556200e912565b905560018060a01b0360115416600f5460e01b6010549062008926620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908187526020526040862060405160208101906200896d8162000b11888886620113bc565b519020875260205260ff6003604088200154161562008e8c575b6001600160a01b0384165f908152600d6020526040902090865260205262000b11620089c36040872093604051928391602083019586620113bc565b519020845260205260408320906001820154916002810154620089e781856200eb70565b620024a4578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052949091906020866044815f5160206201b1205f395f51905f525afa958615620012a557889662008e4d575b506001908201610100031b5f1901811b1985165f5160206201b1205f395f51905f523b1562002461576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528581606481835f5160206201b1205f395f51905f525af19081156200133857869162008e34575b505062008ac7620115b6565b901590811562008e27575b50620023e65750505062008ae56201218f565b60255460405163095ea7b360e01b81526001600160a01b0390911660048201525f196024820152602081604481865f5160206201b1a05f395f51905f525af180156200083d5762008e05575b506040516370a0823160e01b8152306004820152936020856024815f5160206201b1a05f395f51905f525afa9485156200083d57839562008dc8575b506040516370a0823160e01b8152306004820152916020836024815f5160206201b1405f395f51905f525afa9283156200051857849362008d8b575b5060806040958362008bc28851620020d18a826200e74e565b526025548751638307c65560e01b81525f5160206201b1c05f395f51905f5260048201525f5160206201b1a05f395f51905f5260248201525f5160206201b1405f395f51905f5260448201526064810192909252608482018590529095869160a49183916001600160a01b03165af19384156200224657879462008d65575b501562008d195783516370a0823160e01b81523060048201526020816024815f5160206201b1405f395f51905f525afa9081156200224657879162008cde575b5062008c92926200109f916200ed98565b519080516370a0823160e01b81523060048201526020816024815f5160206201b1a05f395f51905f525afa9182156200220257508491620010e557506200109f90620010e2936200ed98565b90506020813d60201162008d10575b8162008cfc602093836200e74e565b8101031262001117575162008c9262008c81565b3d915062008ced565b83516370a0823160e01b81523060048201529194916020816024815f5160206201b1a05f395f51905f525afa9081156200224657879162004f6d57506200109f9062004f21936200ed98565b62008d8391945060803d6080116200129d576200128c81836200e74e565b925f62008c41565b935091506020833d60201162008dbf575b8162008dab602093836200e74e565b810103126200111757859251915f62008ba9565b3d915062008d9c565b925093506020823d60201162008dfc575b8162008de8602093836200e74e565b810103126200111757849151935f62008b6d565b3d915062008dd9565b62008e219060203d6020116200136f576200136081836200e74e565b62008b31565b5f19141590505f62008ad2565b8162008e40916200e74e565b6200182057845f62008abb565b975094506020873d60201162008e83575b8162008e6d602093836200e74e565b8101031262001117579551899690948162008a3c565b3d915062008e5e565b62008e966201185a565b5062008987565b8162008ea9916200e74e565b6200052357835f62008859565b5062008ec16200f047565b84116200880b565b62008ed4906200eccd565b5184108062008f4d575b5f5160206201b1205f395f51905f523b156200082057604051632631f2b160e11b8152901515600482015281816024815f5160206201b1205f395f51905f525afa8015620008155762008f34575b50506200885c565b8162008f40916200e74e565b6200052357835f62008f2c565b5062008f586200f111565b841162008ede565b62008f7791503d8086833e6200055081836200e74e565b5f620087dd565b816200876c565b5034620002b4576020366003190112620002b45760255460405163549387df60e11b81525f5160206201b1805f395f51905f526004828101919091525f5160206201b2405f395f51905f5260248301525f5160206201b1e05f395f51905f5260448301523592918290829060649082906001600160a01b03165afa9081156200081557829162009240575b506200901f620006006200f21f565b5183105f5160206201b1205f395f51905f523b15620005145760405190632631f2b160e11b8252600482015282816024815f5160206201b1205f395f51905f525afa80156200083d5790839162009227575b50505f5160206201b1205f395f51905f523b156200082057604051632631f2b160e11b8152908311600482015281816024815f5160206201b1205f395f51905f525afa801562000815579082916200920e575b5050604091818351620090d885826200e74e565b600181526020810192601f198601368537620090f4826200eccd565b52620090ff6200f38e565b602554855163155adc9160e31b81525f5160206201b1805f395f51905f5260048201525f5160206201b2405f395f51905f5260248201525f5160206201b1e05f395f51905f52604482015260806064820152915160848301819052919384926001600160a01b039092169160a484019190855b818110620091f15750505083838281935003925af1928315620004d357508192620091d1575b50805b8251811015620004a65780620091b86200047c600193866200ecec565b620091ca60206200049683876200ecec565b016200919b565b620091e99192503d8084833e620004c281836200e74e565b905f62009198565b825184528896508795506020938401939092019160010162009172565b816200921a916200e74e565b620002b457805f620090c4565b8162009233916200e74e565b6200082057815f62009071565b6200925791503d8084833e6200055081836200e74e565b5f62009010565b5034620002b45780600319360112620002b4576028546040516001600160a01b039091168152602090f35b5034620002b4576064906200929e366200e79e565b6027549093916001600160a01b0390911690841562009cf2576001945b60255460405163549387df60e11b81525f5160206201b2605f395f51905f526004820152602481018590525f5160206201b1605f395f51905f52604482015294869186919082906001600160a01b03165afa938415620025ea57859462009cd2575b501562009c37576200932f836200ecdb565b5181108062009c25575b5f5160206201b1205f395f51905f523b156200182057604051632631f2b160e11b8152901515600482015284816024815f5160206201b1205f395f51905f525afa8015620025ea5790859162009c0c575b50505b60028510156200268c576001851492831562009b8e57620093ae906200ecdb565b5181105f5160206201b1205f395f51905f523b15620018205760405190632631f2b160e11b8252600482015284816024815f5160206201b1205f395f51905f525afa8015620025ea5790859162009b75575b50505b6040516318160ddd60e01b815294602086600481865afa958615620025ea57859662009b3b575b508560011b95808704600214901517156200255557848060405160208101906370a0823160e01b8252306024820152602481526200946a6044826200e74e565b5190865afa506200947e62000a2b62010eea565b50601180546001600160a01b0319166001600160a01b0385161790556370a0823163ffffffff19600f541617600f55600e54600160401b811015620016565762000a90816001620094d39301600e556200e912565b905560018060a01b0360115416600f5460e01b60105490620094f4620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818a526020526040892060405160208101906200953b8162000b11888886620113bc565b5190208a5260205260ff600360408b200154161562009b2a575b6001600160a01b0384165f908152600d6020526040902090895260205262000b116200959160408a2093604051928391602083019586620113bc565b51902087526020526040862090600182015491600281015498620095b68a856200eb70565b62009a29575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052999a9899979896978b9790956020876044815f5160206201b1205f395f51905f525afa9687156200396c578997620099ea575b506001908201610100031b5f1901811b198616915f5160206201b1205f395f51905f523b1562003929576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528681606481835f5160206201b1205f395f51905f525af190811562001163578791620099d1575b5050620096a2620115b6565b919015918215620099c5575b5050620023e657505050620096c26201218f565b60255460405163095ea7b360e01b81526001600160a01b0390911660048201525f19602482015260208160448186895af180156200083d57620099a3575b506040516370a0823160e01b815230600482015294602086602481885afa9586156200083d57839662009966575b506040516370a0823160e01b8152306004820152916020836024815f5160206201b1605f395f51905f525afa9283156200051857849362009927575b50602554604051638307c65560e01b81525f5160206201b2605f395f51905f526004820152602481018890525f5160206201b1605f395f51905f5260448201526064810192909252608482018690529093608091859160a4918391906001600160a01b03165af19283156200116357879362009901575b501562009838576040516370a0823160e01b81523060048201526020816024815f5160206201b1605f395f51905f525afa908115620011635787916200112457506024936200109f60209493620010a6936200ed98565b939190926020602491604051928380926370a0823160e01b82523060048301525afa90811562001338578691620098c6575b506200109f906200987b936200ed98565b516040516370a0823160e01b81523060048201526020816024815f5160206201b1605f395f51905f525afa90811562000518578491620011f25750620010e2926200109f916200ed98565b90506020813d602011620098f8575b81620098e4602093836200e74e565b810103126200111757516200987b6200986a565b3d9150620098d5565b6200991f91935060803d6080116200129d576200128c81836200e74e565b915f620097e1565b935091506020833d6020116200995d575b8162009947602093836200e74e565b810103126200111757608087935192906200976a565b3d915062009938565b925094506020823d6020116200999a575b8162009986602093836200e74e565b810103126200111757859151945f6200972e565b3d915062009977565b620099bf9060203d6020116200136f576200136081836200e74e565b62009700565b141590505f80620096ae565b81620099dd916200e74e565b620014a857855f62009696565b985095506020883d60201162009a20575b8162009a0a602093836200e74e565b81010312620011175796518b9790958162009614565b3d9150620099fb565b62009a358a856200eb70565b610100036101008111620016315760ff811162001631576001901b996040519a63348051d760e11b8c528060048d01528a8c6024815f5160206201b1205f395f51905f525afa9b8c1562005b0d578b9c62009b0a575b50604051809c602082015f5160206201b2805f395f51905f529052604082015f5160206201b1005f395f51905f5290526060820169030ba32b9103a3430b7160b51b905280516020819201606a84015e81018c606a82015203606a01601f1981018d5262009afa908d6200e74e565b82101562005bf9579950620095bc565b62009b22919c503d808d833e6200161481836200e74e565b9a5f62009a8b565b62009b346201185a565b5062009555565b9095506020813d60201162009b6c575b8162009b5a602093836200e74e565b81010312620011175751945f6200942a565b3d915062009b4b565b8162009b81916200e74e565b6200052357835f62009400565b62009b99906200eccd565b5181105f5160206201b1205f395f51905f523b15620018205760405190632631f2b160e11b8252600482015284816024815f5160206201b1205f395f51905f525afa8015620025ea5790859162009bf3575b505062009403565b8162009bff916200e74e565b6200052357835f62009beb565b8162009c18916200e74e565b6200052357835f6200938a565b50670de0b6b3a7640000811162009339565b62009c42836200eccd565b5181108062009cbe575b5f5160206201b1205f395f51905f523b156200182057604051632631f2b160e11b8152901515600482015284816024815f5160206201b1205f395f51905f525afa8015620025ea5790859162009ca5575b50506200938d565b8162009cb1916200e74e565b6200052357835f62009c9d565b5062009cca826200f2d3565b811162009c4c565b62009cea9194503d8087833e6200055081836200e74e565b925f6200931d565b8394620092bb565b5034620002b4576020366003190112620002b45760275460255460405163549387df60e11b81525f5160206201b2605f395f51905f5260048201525f5160206201b1605f395f51905f5260248201526001600160a01b039283166044820181905293929091839183916064918391165afa9081156200081557829162009f33575b5062009d8d620006006004356200f4f7565b5181105f5160206201b1205f395f51905f523b15620005145760405190632631f2b160e11b8252600482015282816024815f5160206201b1205f395f51905f525afa80156200083d5790839162009f1a575b5050918160409384519062009df586836200e74e565b600182526020820190601f19870136833762009e11836200eccd565b5262009e1c6200f38e565b602554865163155adc9160e31b81525f5160206201b2605f395f51905f5260048201525f5160206201b1605f395f51905f52602482015260448101959095526080606486015291516084850181905284926001600160a01b03169160a4840191855b81811062009efd5750505083838281935003925af1928315620004d35750819262009edd575b50805b8251811015620004a6578062009ec46200047c600193866200ecec565b62009ed660206200049683876200ecec565b0162009ea7565b62009ef59192503d8084833e620004c281836200e74e565b905f62009ea4565b825184528896508795506020938401939092019160010162009e7e565b8162009f26916200e74e565b6200082057815f62009ddf565b62009f4a91503d8084833e6200055081836200e74e565b5f62009d7b565b5034620002b4576020366003190112620002b45760255460405163549387df60e11b81525f5160206201b2605f395f51905f526004828101919091525f5160206201b1605f395f51905f5260248301525f5160206201b2205f395f51905f5260448301523592918290829060649082906001600160a01b03165afa90811562000815579062009fe89183916200a13857506200eccd565b518210806200a125575b5f5160206201b1205f395f51905f523b156200082057604051632631f2b160e11b8152901515600482015281816024815f5160206201b1205f395f51905f525afa801562000815579082916200a10c575b505080806200a0ae6040948551906200a05d87836200e74e565b60018252601f1987013660208401376200a077826200eccd565b526200a0826200f38e565b602554865163155adc9160e31b81529485936001600160a01b039092169284928391600483016200ee36565b03925af1928315620004d3575081926200a0ec575b50805b8251811015620004a657806200a0e5602062000496600194876200ecec565b016200a0c6565b6200a1049192503d8084833e620004c281836200e74e565b905f6200a0c3565b816200a118916200e74e565b620002b457805f6200a043565b506200a1306200f1c5565b821162009ff2565b6200055991503d8085833e6200055081836200e74e565b5034620002b45780600319360112620002b45760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b8181106200a1b457620008d885620008cb818703826200e74e565b82546001600160a01b03168452602090930192600192830192016200a199565b5034620002b45780600319360112620002b45760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b8181106200a23957620008d885620008cb818703826200e74e565b82546001600160a01b03168452602090930192600192830192016200a21e565b5034620002b4576020366003190112620002b45760255460405163549387df60e11b81525f5160206201b2605f395f51905f526004828101919091525f5160206201b1605f395f51905f5260248301525f5160206201b2205f395f51905f5260448301523592918290829060649082906001600160a01b03165afa9081156200081557906200a2f09183916200a13857506200eccd565b518210806200a3ec575b5f5160206201b1205f395f51905f523b156200082057604051632631f2b160e11b8152901515600482015281816024815f5160206201b1205f395f51905f525afa801562000815579082916200a3d3575b505080806200a3656040948551906200a05d87836200e74e565b03925af1928315620004d3575081926200a3b3575b50805b8251811015620004a657806200a39a6200047c600193866200ecec565b6200a3ac60206200049683876200ecec565b016200a37d565b6200a3cb9192503d8084833e620004c281836200e74e565b905f6200a37a565b816200a3df916200e74e565b620002b457805f6200a34b565b5067016345785d8a000082116200a2fa565b5034620002b45780600319360112620002b457602060405160128152f35b5034620002b45780600319360112620002b457601d546200a43d816200ea1a565b6200a44c60405191826200e74e565b818152601d83526020810191837f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f845b8383106200a50557868587604051928392602084019060208552518091526040840160408260051b8601019392905b8282106200a4bb57505050500390f35b919360019193955060206200a4f48192603f198a82030186526040838a51878060a01b038151168452015191818582015201906200e803565b96019201920185949391926200a4ab565b6040516200a513816200e716565b82546001600160a01b031681526001830180546200a531816200ea1a565b916200a54160405193846200e74e565b8183528a526020808b20908b9084015b8382106200a5795750505050600192826020928360029501528152019201920191906200a47c565b6001602081926040516200a59381620047f0818a6200e993565b8152019301910190916200a551565b5034620002b4576060366003190112620002b4576200a5c06200e770565b6200a5ca6200e787565b6001600160a01b038216808452602160209081526040808620335f90815292529020546044359391600182016200a60a575b50506200483493506200f437565b8482106200a6775780156200a6635733156200a64f578560409162004834975260216020522060018060a01b0333165f526020528360405f20910390555f806200a5fc565b634a1406b160e11b86526004869052602486fd5b63e602df0560e01b86526004869052602486fd5b6064868684637dc7a0d960e11b835233600452602452604452fd5b5034620002b45780600319360112620002b45760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b8181106200a6f757620008d885620008cb818703826200e74e565b82546001600160a01b03168452602090930192600192830192016200a6dc565b5034620002b45780600319360112620002b4576029546040516001600160a01b039091168152602090f35b5034620002b45780600319360112620002b4576020602254604051908152f35b5034620002b4576020366003190112620002b45760255460405163549387df60e11b81525f5160206201b1c05f395f51905f526004828101919091525f5160206201b2005f395f51905f5260248301525f5160206201b1a05f395f51905f5260448301523592918290829060649082906001600160a01b03165afa908115620008155782916200aa1d575b506200a7fc620006006200f16b565b5183105f5160206201b1205f395f51905f523b15620005145760405190632631f2b160e11b8252600482015282816024815f5160206201b1205f395f51905f525afa80156200083d579083916200aa04575b50505f5160206201b1205f395f51905f523b156200082057604051632631f2b160e11b8152908311600482015281816024815f5160206201b1205f395f51905f525afa801562000815579082916200a9eb575b50506040918183516200a8b585826200e74e565b600181526020810192601f1986013685376200a8d1826200eccd565b526200a8dc6200f38e565b602554855163155adc9160e31b81525f5160206201b1c05f395f51905f5260048201525f5160206201b2005f395f51905f5260248201525f5160206201b1a05f395f51905f52604482015260806064820152915160848301819052919384926001600160a01b039092169160a484019190855b8181106200a9ce5750505083838281935003925af1928315620004d3575081926200a9ae575b50805b8251811015620004a657806200a9956200047c600193866200ecec565b6200a9a760206200049683876200ecec565b016200a978565b6200a9c69192503d8084833e620004c281836200e74e565b905f6200a975565b82518452889650879550602093840193909201916001016200a94f565b816200a9f7916200e74e565b620002b457805f6200a8a1565b816200aa10916200e74e565b6200082057815f6200a84e565b6200aa3491503d8084833e6200055081836200e74e565b5f6200a7ed565b5034620002b4576064906200aa50366200e79e565b156200b3515760015b60255460405163549387df60e11b81525f5160206201b1c05f395f51905f5260048201525f5160206201b1405f395f51905f5260248201525f5160206201b1a05f395f51905f52604482015294849186919082906001600160a01b03165afa9384156200083d5783946200b331575b50600281101562003bda57600181149384156200b297576200aaea906200ecdb565b518210806200b284575b5f5160206201b1205f395f51905f523b156200052357604051632631f2b160e11b8152901515600482015283816024815f5160206201b1205f395f51905f525afa801562000518579084916200b26b575b50505b6040516318160ddd60e01b8152936020856004815f5160206201b1405f395f51905f525afa948515620005185784956200b231575b508460011b948086046002149015171562003ac657838060405160208101906370a0823160e01b8252306024820152602481526200abbd6044826200e74e565b51905f5160206201b1405f395f51905f525afa506200abdf62000a2b62010eea565b50601180546001600160a01b0319165f5160206201b1405f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b811015620024c25762000a908160016200ac399301600e556200e912565b905560018060a01b0360115416600f5460e01b601054906200ac5a620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908189526020526040882060405160208101906200aca18162000b11888886620113bc565b519020895260205260ff600360408a20015416156200b220575b6001600160a01b0384165f908152600d6020526040902090885260205262000b116200acf76040892093604051928391602083019586620113bc565b519020865260205260408520906001820154916002810154976200ad1c89856200eb70565b6200b143575b8154604051630667f9d760e41b81526001600160a01b0385166004820152602481018290529899979896978a97956020876044815f5160206201b1205f395f51905f525afa9687156200396c5789976200b104575b506001908201610100031b5f1901811b198616915f5160206201b1205f395f51905f523b1562003929576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528681606481835f5160206201b1205f395f51905f525af1908115620011635787916200b0eb575b50506200ae05620115b6565b9190159182156200b0df575b5050620023e6575050506200ae256201218f565b60255460405163095ea7b360e01b81526001600160a01b0390911660048201525f196024820152602081604481865f5160206201b1405f395f51905f525af180156200083d576200b0bd575b506040516370a0823160e01b8152306004820152936020856024815f5160206201b1405f395f51905f525afa9485156200083d5783956200b080575b506040516370a0823160e01b8152306004820152916020836024815f5160206201b1a05f395f51905f525afa928315620005185784936200b043575b506080604095836200af028851620020d18a826200e74e565b526025548751638307c65560e01b81525f5160206201b1c05f395f51905f5260048201525f5160206201b1405f395f51905f5260248201525f5160206201b1a05f395f51905f5260448201526064810192909252608482018590529095869160a49183916001600160a01b03165af1938415620022465787946200b01d575b50156200afd15783516370a0823160e01b81523060048201526020816024815f5160206201b1a05f395f51905f525afa90811562002246578791620037bb57506200376f926200109f916200ed98565b83516370a0823160e01b81523060048201529194916020816024815f5160206201b1405f395f51905f525afa9081156200224657879162006a7257506200109f9062006a26936200ed98565b6200b03b91945060803d6080116200129d576200128c81836200e74e565b925f6200af81565b935091506020833d6020116200b077575b816200b063602093836200e74e565b810103126200111757859251915f6200aee9565b3d91506200b054565b925093506020823d6020116200b0b4575b816200b0a0602093836200e74e565b810103126200111757849151935f6200aead565b3d91506200b091565b6200b0d99060203d6020116200136f576200136081836200e74e565b6200ae71565b141590505f806200ae11565b816200b0f7916200e74e565b620014a857855f6200adf9565b985095506020883d6020116200b13a575b816200b124602093836200e74e565b81010312620011175796518a979095816200ad77565b3d91506200b115565b6200b14f89856200eb70565b61010003610100811162003aa15760ff811162003aa1576001901b986040519963348051d760e11b8b528060048c0152898b6024815f5160206201b1205f395f51905f525afa9a8b1562003a9657606a60209c6200b210928d9162003a7857506040519d8e915f5160206201b2805f395f51905f52828401525f5160206201b1005f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018d838201520301601f1981018d528c6200e74e565b82101562003a555798506200ad22565b6200b22a6201185a565b506200acbb565b9094506020813d6020116200b262575b816200b250602093836200e74e565b81010312620011175751935f6200ab7d565b3d91506200b241565b816200b277916200e74e565b6200051457825f6200ab45565b506200b28f6200f111565b82116200aaf4565b6200b2a2906200eccd565b518210806200b31e575b5f5160206201b1205f395f51905f523b156200052357604051632631f2b160e11b8152901515600482015283816024815f5160206201b1205f395f51905f525afa801562000518579084916200b305575b50506200ab48565b816200b311916200e74e565b6200051457825f6200b2fd565b506200b3296200f047565b82116200b2ac565b6200b3499194503d8085833e6200055081836200e74e565b925f6200aac8565b816200aa59565b503462001117575f366003190112620011175760405163975a6ce960e01b81526020600482015260076024820152661b585a5b9b995d60ca1b60448201525f816064815f5160206201b1205f395f51905f525afa9081156200e4bb576200b3e8916020915f916200e50f575b50604051809381926371ee464d60e01b83526040600484015260448301906200e6f2565b630146de46602483015203815f5f5160206201b1205f395f51905f525af180156200e4bb576200e4da575b50602654604051906001600160a01b03166150b58083016001600160401b038111848210176200e4c657608092849262012488843973ba1333333333a1ba1108e8412f11850a5c319ba9825260208201526e22d473030f116ddee9f6b43ac78ba360408201525f5160206201b1405f395f51905f5260608201520301905ff080156200e4bb5760018060a01b03166bffffffffffffffffffffffff60a01b60255416176025556040516113eb808201908282106001600160401b038311176200e4c65760209183916201753d83395f5160206201b2205f395f51905f5281520301905ff080156200e4bb57602780546001600160a01b0319166001600160a01b039290921691821790555f5160206201b1205f395f51905f523b156200111757604051906318caf8e360e31b8252600482015260406024820152600d60448201526c455243343632365f735553444360981b60648201525f81608481835f5160206201b1205f395f51905f525af180156200e4bb576200e4a5575b50604051906113ed91828101928184106001600160401b038511176200e478578183946020926201892883395f5160206201b1605f395f51905f52815203019082f080156200e46b57602980546001600160a01b0319166001600160a01b039290921691821790555f5160206201b1205f395f51905f523b156200d82c57604051906318caf8e360e31b8252600482015260406024820152600e60448201526d08aa486686c646cbee68e9e8aa8960931b60648201528181608481835f5160206201b1205f395f51905f525af1801562000815576200e48c575b5050604051906113eb91828101928184106001600160401b038511176200e4785781839460209262019d1583395f5160206201b1e05f395f51905f52815203019082f080156200e46b57602880546001600160a01b0319166001600160a01b039290921691821790555f5160206201b1205f395f51905f523b156200d82c57604051906318caf8e360e31b8252600482015260406024820152600d60448201526c08aa486686c646cbee68aa890f609b1b60648201528181608481835f5160206201b1205f395f51905f525af1801562000815576200e452575b508060405160208101906370a0823160e01b8252306024820152602481526200b76d6044826200e74e565b51905f5160206201b2205f395f51905f525afa506200b78f62000a2b62010eea565b50601180546001600160a01b0319165f5160206201b2205f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b8110156200db2d5762000a908160016200b7e99301600e556200e912565b905560018060a01b0360115416600f5460e01b601054906200b80a620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908186526020526040852060405160208101906200b8518162000b11888886620113bc565b519020865260205260ff600360408720015416156200e441575b6001600160a01b0384165f908152600d6020526040902090855260205262000b116200b8a76040862093604051928391602083019586620113bc565b519020835260205281604081209160018301549260028101546200b8cc81866200eb70565b6200e33b575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f5160206201b1205f395f51905f525afa968715620013385786976200e2fc575b506001908201610100031b5f1901811b198616915f5160206201b1205f395f51905f523b15620014a8576040516370ca10bb60e01b81526001600160a01b0386166004820152602481019190915264e8d4a5100090911b9190911760448201528381606481835f5160206201b1205f395f51905f525af1908115620005185784916200e2e3575b50506200b9b5620115b6565b90159081156200e2d2575b506200d95357826200b9d16201218f565b808060405160208101906370a0823160e01b8252306024820152602481526200b9fc6044826200e74e565b51905f5160206201b1e05f395f51905f525afa506200ba1e62000a2b62010eea565b50601180546001600160a01b0319165f5160206201b1e05f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b8110156200db2d5762000a908160016200ba789301600e556200e912565b905560018060a01b0360115416600f5460e01b601054906200ba99620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908186526020526040852060405160208101906200bae08162000b11888886620113bc565b519020865260205260ff600360408720015416156200e2c1575b6001600160a01b0384165f908152600d6020526040902090855260205262000b116200bb366040862093604051928391602083019586620113bc565b519020835260205281604081209160018301549260028101546200bb5b81866200eb70565b6200e1d4575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f5160206201b1205f395f51905f525afa968715620013385786976200e195575b506001908201610100031b5f1901811b198616915f5160206201b1205f395f51905f523b15620014a8576040516370ca10bb60e01b81526001600160a01b0386166004820152602481019190915269152d02c7e14af680000090911b9190911760448201528381606481835f5160206201b1205f395f51905f525af1908115620005185784916200e17c575b50506200bc49620115b6565b90159081156200e166575b506200d95357826200bc656201218f565b808060405160208101906370a0823160e01b8252306024820152602481526200bc906044826200e74e565b51905f5160206201b1605f395f51905f525afa506200bcb262000a2b62010eea565b50601180546001600160a01b0319165f5160206201b1605f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b8110156200db2d5762000a908160016200bd0c9301600e556200e912565b905560018060a01b0360115416600f5460e01b601054906200bd2d620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908186526020526040852060405160208101906200bd748162000b11888886620113bc565b519020865260205260ff600360408720015416156200e155575b6001600160a01b0384165f908152600d6020526040902090855260205262000b116200bdca6040862093604051928391602083019586620113bc565b519020835260205281604081209160018301549260028101546200bdef81866200eb70565b6200e067575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f5160206201b1205f395f51905f525afa968715620013385786976200e028575b506001908201610100031b5f1901811b198616915f5160206201b1205f395f51905f523b15620014a8576040516370ca10bb60e01b81526001600160a01b038616600482015260248101919091526a084595161401484a00000090911b9190911760448201528381606481835f5160206201b1205f395f51905f525af1908115620005185784916200e00f575b50506200bede620115b6565b90159081156200dff8575b506200d95357826200befa6201218f565b60405163095ea7b360e01b81526e22d473030f116ddee9f6b43ac78ba360048201525f196024820152602081604481855f5160206201b1605f395f51905f525af1801562000815576200dfd6575b5060295460405163095ea7b360e01b81526e22d473030f116ddee9f6b43ac78ba360048201525f196024820152906020908290604490829086906001600160a01b03165af1801562000815576200dfb4575b5060405163095ea7b360e01b81526e22d473030f116ddee9f6b43ac78ba360048201525f196024820152602081604481855f5160206201b2205f395f51905f525af1801562000815576200df92575b5060405163095ea7b360e01b81526e22d473030f116ddee9f6b43ac78ba360048201525f196024820152602081604481855f5160206201b1e05f395f51905f525af1801562000815576200df70575b50620151804201804211620017e25765ffffffffffff8291166e22d473030f116ddee9f6b43ac78ba33b156200d82c576040516387517c4560e01b81525f5160206201b1605f395f51905f526004820152739179c06629ef7f17cb5759f501d89997fe0e7b4560248201526001600160a01b036044820152606481018290528281608481836e22d473030f116ddee9f6b43ac78ba35af19081156200083d5783916200df57575b50506029546001600160a01b03166e22d473030f116ddee9f6b43ac78ba33b156200de605782826200c1279260405193849283926387517c4560e01b8452600484016200eb7e565b0381836e22d473030f116ddee9f6b43ac78ba35af19081156200083d5783916200df3e575b50506e22d473030f116ddee9f6b43ac78ba33b156200d82c576040516387517c4560e01b81525f5160206201b2205f395f51905f526004820152739179c06629ef7f17cb5759f501d89997fe0e7b4560248201526001600160a01b036044820152606481018290528281608481836e22d473030f116ddee9f6b43ac78ba35af19081156200083d5783916200df25575b50506e22d473030f116ddee9f6b43ac78ba33b156200d82c576040516387517c4560e01b81525f5160206201b1e05f395f51905f526004820152739179c06629ef7f17cb5759f501d89997fe0e7b4560248201526001600160a01b036044820152606481018290528281608481836e22d473030f116ddee9f6b43ac78ba35af19081156200083d5783916200df0c575b5060275460405163095ea7b360e01b81526e22d473030f116ddee9f6b43ac78ba360048201525f1960248201529160209183916044918391906001600160a01b03165af180156200083d576200deea575b506027546001600160a01b03166e22d473030f116ddee9f6b43ac78ba33b156200de605782826200c3049260405193849283926387517c4560e01b8452600484016200eb7e565b0381836e22d473030f116ddee9f6b43ac78ba35af19081156200083d5783916200ded1575b5060285460405163095ea7b360e01b81526e22d473030f116ddee9f6b43ac78ba360048201525f1960248201529160209183916044918391906001600160a01b03165af180156200083d576200deaf575b506028546001600160a01b03166e22d473030f116ddee9f6b43ac78ba33b156200de605782826200c3c19260405193849283926387517c4560e01b8452600484016200eb7e565b0381836e22d473030f116ddee9f6b43ac78ba35af19081156200083d5783916200de96575b50506027546001600160a01b03166e22d473030f116ddee9f6b43ac78ba33b156200de605782826200c42e9260405193849283926387517c4560e01b8452600484016200ebc2565b0381836e22d473030f116ddee9f6b43ac78ba35af19081156200083d5783916200de7d575b50506028546001600160a01b03166e22d473030f116ddee9f6b43ac78ba33b156200de605782826200c49b9260405193849283926387517c4560e01b8452600484016200ebc2565b0381836e22d473030f116ddee9f6b43ac78ba35af19081156200083d5783916200de64575b50506029546001600160a01b03166e22d473030f116ddee9f6b43ac78ba33b156200de60576040516387517c4560e01b8152918391839182916200c5099190600484016200ebc2565b0381836e22d473030f116ddee9f6b43ac78ba35af1801562000815576200de47575b505060275460405163095ea7b360e01b81526001600160a01b0390911660048201525f196024820152602081604481855f5160206201b2205f395f51905f525af1801562000815576200de25575b5060285460405163095ea7b360e01b81526001600160a01b0390911660048201525f196024820152602081604481855f5160206201b1e05f395f51905f525af1801562000815576200de03575b5060295460405163095ea7b360e01b81526001600160a01b0390911660048201525f196024820152602081604481855f5160206201b1605f395f51905f525af1801562000815576200dde1575b50602754604051636e553f6560e01b8152633b9aca006004820152306024820152906020908290604490829086906001600160a01b03165af1801562000815576200ddac575b50602854604051636e553f6560e01b8152683635c9adc5dea000006004820152306024820152906020908290604490829086906001600160a01b03165af1801562000815576200dd77575b50602954604051636e553f6560e01b815269d3c21bcecceda10000006004820152306024820152906020908290604490829086906001600160a01b03165af1801562000815576200dd42575b506027546040516359b2d1e160e11b81526001600160a01b0390911660048201526298968060248201819052604482015262895440606482015260208160848185739179c06629ef7f17cb5759f501d89997fe0e7b455af1801562000815576200dd0d575b506028546040516359b2d1e160e11b81526001600160a01b039091166004820152678ac7230489e80000602482018190526044820152677ce66c50e2840000606482015260208160848185739179c06629ef7f17cb5759f501d89997fe0e7b455af1801562000815576200dcd8575b506029546040516359b2d1e160e11b81526001600160a01b039091166004820152678ac7230489e80000602482018190526044820152677ce66c50e2840000606482015260208160848185739179c06629ef7f17cb5759f501d89997fe0e7b455af1801562000815576200dca3575b50808060405160208101906370a0823160e01b8252306024820152602481526200c85f6044826200e74e565b51905f5160206201b2205f395f51905f525afa506200c88162000a2b62010eea565b50601180546001600160a01b0319165f5160206201b2205f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b8110156200db2d5762000a908160016200c8db9301600e556200e912565b905560018060a01b0360115416600f5460e01b601054906200c8fc620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908186526020526040852060405160208101906200c9438162000b11888886620113bc565b519020865260205260ff600360408720015416156200dc92575b6001600160a01b0384165f908152600d6020526040902090855260205262000b116200c9996040862093604051928391602083019586620113bc565b519020835260205281604081209160018301549260028101546200c9be81866200eb70565b6200dbaa575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f5160206201b1205f395f51905f525afa968715620013385786976200db6b575b506001908201610100031b5f1901811b198616915f5160206201b1205f395f51905f523b15620014a8576040516370ca10bb60e01b81526001600160a01b0386166004820152602481019190915264e8d4a5100090911b9190911760448201528381606481835f5160206201b1205f395f51905f525af1908115620005185784916200db52575b50506200caa7620115b6565b90159081156200db41575b506200d95357826200cac36201218f565b808060405160208101906370a0823160e01b8252306024820152602481526200caee6044826200e74e565b51905f5160206201b1e05f395f51905f525afa506200cb1062000a2b62010eea565b50601180546001600160a01b0319165f5160206201b1e05f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b8110156200db2d5762000a908160016200cb6a9301600e556200e912565b905560018060a01b0360115416600f5460e01b601054906200cb8b620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908186526020526040852060405160208101906200cbd28162000b11888886620113bc565b519020865260205260ff600360408720015416156200db1c575b6001600160a01b0384165f908152600d6020526040902090855260205262000b116200cc286040862093604051928391602083019586620113bc565b519020835260205281604081209160018301549260028101546200cc4d81866200eb70565b6200da11575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f5160206201b1205f395f51905f525afa968715620013385786976200d9d2575b506001908201610100031b5f1901811b198616915f5160206201b1205f395f51905f523b15620014a8576040516370ca10bb60e01b81526001600160a01b03861660048201526024810191909152683635c9adc5dea0000090911b9190911760448201528381606481835f5160206201b1205f395f51905f525af1908115620005185784916200d9b9575b50506200cd3a620115b6565b90159081156200d9a4575b506200d95357826200cd566201218f565b60275460405163095ea7b360e01b81526001600160a01b0390911660048201525f196024820152602081604481855f5160206201b2205f395f51905f525af1801562000815576200d931575b5060285460405163095ea7b360e01b81526001600160a01b0390911660048201525f196024820152602081604481855f5160206201b1e05f395f51905f525af1801562000815576200d90f575b50602754604051636e553f6560e01b815264e8d4a510006004820152306024820152906020908290604490829086906001600160a01b03165af1801562000815576200d8da575b50602854604051636e553f6560e01b8152683635c9adc5dea000006004820152306024820152906020908290604490829086906001600160a01b03165af1801562000815576200d8a5575b5060405163095ea7b360e01b815273ba1333333333a1ba1108e8412f11850a5c319ba960048201525f196024820152602081604481855f5160206201b2205f395f51905f525af1801562000815576200d883575b5060405163095ea7b360e01b815273ba1333333333a1ba1108e8412f11850a5c319ba960048201525f196024820152602081604481855f5160206201b1e05f395f51905f525af1801562000815576200d861575b505f5160206201b1205f395f51905f523b15620002b457806040516318caf8e360e31b815273ba1333333333a1ba1108e8412f11850a5c319ba9600482015260406024820152600f60448201526e10985b185b98d95c958cd5985d5b1d608a1b60648201528181608481835f5160206201b1205f395f51905f525af1801562000815576200d848575b506026546001600160a01b03165f5160206201b1205f395f51905f523b156200d82c57604051906318caf8e360e31b825260048201526040602482015260156044820152742130b630b731b2b92b19a130ba31b42937baba32b960591b60648201528181608481835f5160206201b1205f395f51905f525af1801562000815576200d82f575b506025546001600160a01b03165f5160206201b1205f395f51905f523b156200d82c57604051906318caf8e360e31b825260048201526040602482015260156044820152742130b630b731b2b92b19a9bbb0b820b230b83a32b960591b60648201528181608481835f5160206201b1205f395f51905f525af1801562000815576200d813575b50505f5160206201b1205f395f51905f523b15620002b457806040516318caf8e360e31b81525f5160206201b2405f395f51905f52600482015260406024820152601160448201527008aa486686c646cbeeec28ae8d0ae8aa89607b1b60648201528181608481835f5160206201b1205f395f51905f525af1801562000815576200d7fa575b50505f5160206201b1205f395f51905f523b15620002b457806040516318caf8e360e31b81525f5160206201b1e05f395f51905f52600482015260406024820152600a60448201526908aa4866460be8aa890f60b31b60648201528181608481835f5160206201b1205f395f51905f525af1801562000815576200d7e1575b50505f5160206201b1205f395f51905f523b15620002b457806040516318caf8e360e31b8152734ab7ab316d43345009b2140e0580b072eec7df16600482015260406024820152602560448201527f455243343632365f45524332305f455448785f7761574554485f535441424c4560648201526417d413d3d360da1b6084820152818160a481835f5160206201b1205f395f51905f525af1801562000815576200d7c8575b50505f5160206201b1205f395f51905f523b15620002b457806040516318caf8e360e31b815273f91c11ba4220b7a72e1dc5e92f2b48d3fdf62726600482015260406024820152602460448201527f45524332305f45524332305f474f4554485f555344435f57454947485445445f6064820152631413d3d360e21b6084820152818160a481835f5160206201b1205f395f51905f525af1801562000815576200d7af575b50505f5160206201b1205f395f51905f523b15620002b457806040516318caf8e360e31b81525f5160206201b1605f395f51905f52600482015260406024820152600b60448201526a08aa4866460be8e9e8aa8960ab1b60648201528181608481835f5160206201b1205f395f51905f525af1801562000815576200d796575b50505f5160206201b1205f395f51905f523b15620002b457806040516318caf8e360e31b81525f5160206201b2205f395f51905f52600482015260406024820152600a60448201526945524332305f5553444360b01b60648201528181608481835f5160206201b1205f395f51905f525af1801562000815576200d77d575b50505f5160206201b1205f395f51905f523b15620002b457806040516318caf8e360e31b815273c4ce391d82d164c166df9c8336ddf84206b2f812600482015260406024820152602760448201527f455243343632365f455243343632365f574554485f7773744554485f53544142606482015266131157d413d3d360ca1b6084820152818160a481835f5160206201b1205f395f51905f525af1801562000815576200d764575b50505f5160206201b1205f395f51905f523b15620002b457806040516318caf8e360e31b81525f5160206201b1405f395f51905f52600482015260406024820152600a60448201526908aa4866460beae8aa8960b31b60648201528181608481835f5160206201b1205f395f51905f525af1801562000815576200d74b575b50505f5160206201b1205f395f51905f523b15620002b457806040516318caf8e360e31b8152737f39c581f595b53c5cb19bd0b3f8da6c935e2ca0600482015260406024820152600c60448201526b08aa4866460beeee6e88aa8960a31b60648201528181608481835f5160206201b1205f395f51905f525af1801562000815576200d732575b50505f5160206201b1205f395f51905f523b15620002b4576040516318caf8e360e31b815281908181806200d5f3600482016200ec06565b0381835f5160206201b1205f395f51905f525af1801562000815576200d719575b50505f5160206201b1205f395f51905f523b15620002b4576040516318caf8e360e31b815281908181806200d64c600482016200ec06565b0381835f5160206201b1205f395f51905f525af1801562000815576200d700575b50505f5160206201b1205f395f51905f523b15620002b457806040516318caf8e360e31b81526e22d473030f116ddee9f6b43ac78ba360048201526040602482015260076044820152662832b936b4ba1960c91b60648201528181608481835f5160206201b1205f395f51905f525af1801562000815576200d6ec5750f35b816200d6f8916200e74e565b620002b45780f35b816200d70c916200e74e565b620002b45780826200d66d565b816200d725916200e74e565b620002b45780826200d614565b816200d73e916200e74e565b620002b45780826200d5bb565b816200d757916200e74e565b620002b45780826200d534565b816200d770916200e74e565b620002b45780826200d4b5565b816200d789916200e74e565b620002b45780826200d40d565b816200d7a2916200e74e565b620002b45780826200d38e565b816200d7bb916200e74e565b620002b45780826200d30e565b816200d7d4916200e74e565b620002b45780826200d269565b816200d7ed916200e74e565b620002b45780826200d1c3565b816200d806916200e74e565b620002b45780826200d144565b816200d81f916200e74e565b620002b45780826200d0be565b50fd5b816200d83b916200e74e565b620002b45780826200d038565b816200d854916200e74e565b620002b45780826200cfb2565b6200d87d9060203d6020116200136f576200136081836200e74e565b6200cf29565b6200d89f9060203d6020116200136f576200136081836200e74e565b6200ced5565b6020813d6020116200d8d1575b816200d8c1602093836200e74e565b810103126200111757516200ce81565b3d91506200d8b2565b6020813d6020116200d906575b816200d8f6602093836200e74e565b810103126200111757516200ce36565b3d91506200d8e7565b6200d92b9060203d6020116200136f576200136081836200e74e565b6200cdef565b6200d94d9060203d6020116200136f576200136081836200e74e565b6200cda2565b54905f5160206201b1205f395f51905f523b1562000514576040516370ca10bb60e01b81526001600160a01b03909116600482015260248101919091526044810192909252818060648101620013e8565b683635c9adc5dea0000091501415866200cd45565b816200d9c5916200e74e565b620005145782866200cd2e565b955095506020853d6020116200da08575b816200d9f2602093836200e74e565b810103126200111757935194869490816200cca3565b3d91506200d9e3565b909192506200da2181856200eb70565b610100036101008111620025925760ff8111620025925760405163348051d760e11b8152600190911b6004820181905286826024815f5160206201b1205f395f51905f525afa80156200116357606a6200dae2916020948a916200dafe575b506040519485915f5160206201b2805f395f51905f52828401525f5160206201b1005f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018a838201520301601f1981018452836200e74e565b683635c9adc5dea000001015620015d35750908492916200cc53565b6200db1591503d808c833e6200161481836200e74e565b8a6200da80565b6200db266201185a565b506200cbec565b634e487b7160e01b82526041600452602482fd5b64e8d4a5100091501415866200cab2565b816200db5e916200e74e565b620005145782866200ca9b565b955095506020853d6020116200dba1575b816200db8b602093836200e74e565b810103126200111757935194869490816200ca14565b3d91506200db7c565b909192506200dbba81856200eb70565b610100036101008111620025925760ff8111620025925760405163348051d760e11b8152600190911b6004820181905286826024815f5160206201b1205f395f51905f525afa80156200116357606a6200dc7a916020948a916200dafe57506040519485915f5160206201b2805f395f51905f52828401525f5160206201b1005f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018a838201520301601f1981018452836200e74e565b64e8d4a510001015620015d35750908492916200c9c4565b6200dc9c6201185a565b506200c95d565b6020813d6020116200dccf575b816200dcbf602093836200e74e565b810103126200111757516200c833565b3d91506200dcb0565b6020813d6020116200dd04575b816200dcf4602093836200e74e565b810103126200111757516200c7c4565b3d91506200dce5565b6020813d6020116200dd39575b816200dd29602093836200e74e565b810103126200111757516200c755565b3d91506200dd1a565b6020813d6020116200dd6e575b816200dd5e602093836200e74e565b810103126200111757516200c6f0565b3d91506200dd4f565b6020813d6020116200dda3575b816200dd93602093836200e74e565b810103126200111757516200c6a4565b3d91506200dd84565b6020813d6020116200ddd8575b816200ddc8602093836200e74e565b810103126200111757516200c659565b3d91506200ddb9565b6200ddfd9060203d6020116200136f576200136081836200e74e565b6200c613565b6200de1f9060203d6020116200136f576200136081836200e74e565b6200c5c6565b6200de419060203d6020116200136f576200136081836200e74e565b6200c579565b816200de53916200e74e565b620002b45780826200c52b565b5050fd5b816200de70916200e74e565b6200d82c5781846200c4c0565b816200de89916200e74e565b6200d82c5781846200c453565b816200dea2916200e74e565b6200d82c5781846200c3e6565b6200decb9060203d6020116200136f576200136081836200e74e565b6200c37a565b816200dedd916200e74e565b6200d82c5781846200c329565b6200df069060203d6020116200136f576200136081836200e74e565b6200c2bd565b816200df18916200e74e565b6200d82c5781846200c26c565b816200df31916200e74e565b6200d82c5781846200c1dc565b816200df4a916200e74e565b6200d82c5781846200c14c565b816200df63916200e74e565b6200d82c5781846200c0df565b6200df8c9060203d6020116200136f576200136081836200e74e565b6200c038565b6200dfae9060203d6020116200136f576200136081836200e74e565b6200bfe9565b6200dfd09060203d6020116200136f576200136081836200e74e565b6200bf9a565b6200dff29060203d6020116200136f576200136081836200e74e565b6200bf48565b6a084595161401484a00000091501415866200bee9565b816200e01b916200e74e565b620005145782866200bed2565b955095506020853d6020116200e05e575b816200e048602093836200e74e565b810103126200111757935194869490816200be45565b3d91506200e039565b909192506200e07781856200eb70565b610100036101008111620025925760ff8111620025925760405163348051d760e11b8152600190911b6004820181905286826024815f5160206201b1205f395f51905f525afa80156200116357606a6200e137916020948a916200dafe57506040519485915f5160206201b2805f395f51905f52828401525f5160206201b1005f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018a838201520301601f1981018452836200e74e565b6a084595161401484a0000001015620015d35750908492916200bdf5565b6200e15f6201185a565b506200bd8e565b69152d02c7e14af680000091501415866200bc54565b816200e188916200e74e565b620005145782866200bc3d565b955095506020853d6020116200e1cb575b816200e1b5602093836200e74e565b810103126200111757935194869490816200bbb1565b3d91506200e1a6565b909192506200e1e481856200eb70565b610100036101008111620025925760ff8111620025925760405163348051d760e11b8152600190911b6004820181905286826024815f5160206201b1205f395f51905f525afa80156200116357606a6200e2a4916020948a916200dafe57506040519485915f5160206201b2805f395f51905f52828401525f5160206201b1005f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018a838201520301601f1981018452836200e74e565b69152d02c7e14af68000001015620015d35750908492916200bb61565b6200e2cb6201185a565b506200bafa565b64e8d4a51000915014155f6200b9c0565b816200e2ef916200e74e565b6200051457825f6200b9a9565b955095506020853d6020116200e332575b816200e31c602093836200e74e565b810103126200111757935194869490816200b922565b3d91506200e30d565b909192506200e34b81856200eb70565b610100036101008111620025925760ff8111620025925760405163348051d760e11b8152600190911b6004820181905286826024815f5160206201b1205f395f51905f525afa80156200116357606a6200e40b916020948a916200e42357506040519485915f5160206201b2805f395f51905f52828401525f5160206201b1005f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018a838201520301601f1981018452836200e74e565b64e8d4a510001015620015d35750908492916200b8d2565b6200e43a91503d808c833e6200161481836200e74e565b5f6200da80565b6200e44b6201185a565b506200b86b565b816200e45e916200e74e565b620002b457805f6200b742565b50604051903d90823e3d90fd5b634e487b7160e01b83526041600452602483fd5b816200e498916200e74e565b620002b457805f6200b668565b6200e4b391505f906200e74e565b5f5f6200b58e565b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b6020813d6020116200e506575b816200e4f6602093836200e74e565b810103126200111757516200b413565b3d91506200e4e7565b6200e52691503d805f833e6200161481836200e74e565b5f6200b3c4565b346200111757604036600319011262001117576200e54a6200e770565b6024359033156200e5c8576001600160a01b03169081156200e5b557335f52602160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b3462001117576040366003190112620011175760206200e6146040516200e602816200e716565b6004358152602435838201526200ea51565b604051908152f35b3462001117575f36600319011262001117575f6023546200e63d816200e958565b80845290600181169081156200e6cc57506001146200e66a575b620008d8836200488d818503826200e74e565b60235f9081527fd57b2b5166478fd4318d2acc6cc2c704584312bdd8781b32d5d06abda57f4230939250905b8082106200e6b1575090915081016020016200488d6200e657565b9192600181602092548385880101520191019092916200e696565b60ff191660208086019190915291151560051b840190910191506200488d90506200e657565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b604081019081106001600160401b038211176200e4c657604052565b606081019081106001600160401b038211176200e4c657604052565b90601f801991011681019081106001600160401b038211176200e4c657604052565b600435906001600160a01b03821682036200111757565b602435906001600160a01b03821682036200111757565b60409060031901126200111757600435906024358015158103620011175790565b60206040818301928281528451809452019201905f5b8181106200e7e35750505090565b82516001600160a01b03168452602093840193909201916001016200e7d5565b9080602083519182815201916020808360051b8301019401925f915b8383106200e82f57505050505090565b90919293946020806200e84f600193601f1986820301875289516200e6f2565b970193019301919392906200e81f565b602081016020825282518091526040820191602060408360051b8301019401925f915b8383106200e89257505050505090565b9091929394603f1982820301835285516020606081604085019360018060a01b0381511686520151936040838201528451809452019201905f905b8082106200e8ee57505050602080600192970193019301919392906200e882565b82516001600160e01b0319168452602093840193909201916001909101906200e8cd565b600e548110156200e92b57600e5f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b601f548110156200e92b57601f5f5260205f2001905f90565b90600182811c921680156200e988575b60208310146200e97457565b634e487b7160e01b5f52602260045260245ffd5b91607f16916200e968565b5f92918154916200e9a4836200e958565b80835292600181169081156200e9fd57506001146200e9c257505050565b5f9081526020812093945091925b8383106200e9e2575060209250010190565b6001816020929493945483858701015201910191906200e9d0565b915050602093945060ff929192191683830152151560051b010190565b6001600160401b0381116200e4c65760051b60200190565b81156200ea3d570490565b634e487b7160e01b5f52601260045260245ffd5b80516a084595161401484a0000008102908082046a084595161401484a00000014901517156200ea8e5760206200ea8b920151906200ea32565b90565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b0381116200e4c657601f01601f191660200190565b60208183031262001117578051906001600160401b03821162001117570181601f8201121562001117578051906200eaf6826200eaa2565b926200eb0660405194856200e74e565b828452602083830101116200111757815f9260208093018386015e8301015290565b9081602091031262001117575190565b9291906200eb516020916040865260408601906200e6f2565b930152565b908160209103126200111757518015158103620011175790565b919082018092116200ea8e57565b6001600160a01b039182168152739179c06629ef7f17cb5759f501d89997fe0e7b456020820152604081019190915265ffffffffffff909116606082015260800190565b6001600160a01b03918216815273ba1333333333a1ba1108e8412f11850a5c319ba96020820152604081019190915265ffffffffffff909116606082015260800190565b6080905f5160206201b2005f395f51905f52815260406020820152601560408201527408aa486686c646cbeeec28ae8d098d2c8deae8aa89605b1b60608201520190565b60208183031262001117578051906001600160401b0382116200111757019080601f83011215620011175781516200ec82816200ea1a565b926200ec9260405194856200e74e565b81845260208085019260051b8201019283116200111757602001905b8282106200ecbc5750505090565b81518152602091820191016200ecae565b8051156200e92b5760200190565b8051600110156200e92b5760400190565b80518210156200e92b5760209160051b010190565b919082604091031262001117576040516200ed1c816200e716565b6020808294805184520151910152565b9060808282031262001117576200ed629060408051936200ed4d856200e732565b8051855260208101516020860152016200ed01565b604082015290565b9081526001600160a01b039182166020820152911660408201525f6060820152608081019190915260a00190565b919082039182116200ea8e57565b60208183031262001117578051906001600160401b03821162001117570181601f82011215620011175780516200eddd816200ea1a565b926200eded60405194856200e74e565b81845260208085019260061b840101928184116200111757602001915b8383106200ee19575050505090565b60206040916200ee2a84866200ed01565b8152019201916200ee0a565b602060a06080830192737c8e08dd21105bd3970ee2f49795a469fefb139360611b81525f5160206201b1605f395f51905f52838201525f5160206201b2205f395f51905f526040820152608060608201528451809452019201905f5b8181106200eea05750505090565b82518452602093840193909201916001016200ee92565b60a0919360209360808301958352600180851b031684830152600180841b03166040820152608060608201528451809452019201905f5b8181106200eefc5750505090565b82518452602093840193909201916001016200eeee565b60085460ff1680156200ef235790565b50604051630667f9d760e41b81525f5160206201b1205f395f51905f5260048201526519985a5b195960d21b60248201526020816044815f5160206201b1205f395f51905f525afa9081156200e4bb575f916200ef81575b50151590565b90506020813d6020116200efb0575b816200ef9f602093836200e74e565b810103126200111757515f6200ef7b565b3d91506200ef90565b60208183031262001117578051906001600160401b0382116200111757019080601f8301121562001117578151906200eff2826200ea1a565b926200f00260405194856200e74e565b82845260208085019360051b8201019182116200111757602001915b8183106200f02c5750505090565b8251600a81101562001117578152602092830192016200f01e565b60405163313ce56760e01b81526020816004815f5160206201b1405f395f51905f525afa80156200e4bb575f906200f0cd575b60ff91501680600682116200f0b9575b600c81116200f0a4575b50604d81116200ea8e57600a0a90565b6002198101915081116200ea8e575f6200f094565b905f1981019081116200ea8e57906200f08a565b506020813d6020116200f108575b816200f0ea602093836200e74e565b8101031262001117575160ff81168103620011175760ff906200f07a565b3d91506200f0db565b60405163313ce56760e01b81526020816004815f5160206201b1a05f395f51905f525afa80156200e4bb575f906200f0cd5760ff91501680600682116200f0b957600c81116200f0a45750604d81116200ea8e57600a0a90565b60405163313ce56760e01b81526020816004815f5160206201b2005f395f51905f525afa80156200e4bb575f906200f0cd5760ff91501680600682116200f0b957600c81116200f0a45750604d81116200ea8e57600a0a90565b60405163313ce56760e01b81526020816004815f5160206201b1605f395f51905f525afa80156200e4bb575f906200f0cd5760ff91501680600682116200f0b957600c81116200f0a45750604d81116200ea8e57600a0a90565b60405163313ce56760e01b81526020816004815f5160206201b2405f395f51905f525afa80156200e4bb575f906200f0cd5760ff91501680600682116200f0b957600c81116200f0a45750604d81116200ea8e57600a0a90565b60405163313ce56760e01b81526020816004815f5160206201b1e05f395f51905f525afa80156200e4bb575f906200f0cd5760ff91501680600682116200f0b957600c81116200f0a45750604d81116200ea8e57600a0a90565b60405163313ce56760e01b815290602090829060049082906001600160a01b03165afa80156200e4bb575f906200f0cd5760ff91501680600682116200f0b957600c81116200f0a45750604d81116200ea8e57600a0a90565b905f5160206201b1205f395f51905f523b1562001117576040519163260a5b1560e21b8352600483015260248201525f816044815f5160206201b1205f395f51905f525afa80156200e4bb576200f3805750565b5f6200f38c916200e74e565b565b5f5160206201b1205f395f51905f523b1562001117576040516323f2866760e11b81525f60048201525f60248201525f81604481835f5160206201b1205f395f51905f525af180156200e4bb576200f3805750565b5f5160206201b1205f395f51905f523b15620011175760405190636d83fe6960e11b825260048201525f60248201525f816044815f5160206201b1205f395f51905f525afa80156200e4bb576200f3805750565b6001600160a01b03169081156200f4e4576001600160a01b03169182156200f4d157815f526020805260405f20548181106200f4b857817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f528380520360405f2055845f5281805260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b63ec442f0560e01b5f525f60045260245ffd5b634b637e8f60e11b5f525f60045260245ffd5b683635c9adc5dea0000067016345785d8a00006200f5159262010f29565b906200f38c826200536b604051620053316040826200e74e565b683635c9adc5dea0000066038d7ea4c680006200f5159262010f29565b5f5b81518110156200f59b576200f56481836200ecec565b51600a8110156200f587576005146200f580576001016200f54e565b5050600190565b634e487b7160e01b5f52602160045260245ffd5b50505f90565b5f5b81518110156200f59b576200f5b981836200ecec565b51600a8110156200f587576009146200f580576001016200f5a3565b5f5b81518110156200f59b576200f5ed81836200ecec565b51600a8110156200f587576008146200f580576001016200f5d7565b60405190602082019263095ea7b360e01b845260018060a01b0316928360248401525f196044840152604483526200f6436064846200e74e565b82516001600160a01b038316915f91829182855af1906200f66362010eea565b826200f6cd575b50816200f6c1575b50156200f67e57505050565b6200f6bb6200f38c936040519063095ea7b360e01b602083015260248201525f6044820152604481526200f6b46064826200e74e565b82620110d4565b620110d4565b90503b15155f6200f672565b805191925081159182156200f6e7575b5050905f6200f66a565b6200f6fc92506020809183010191016200eb56565b5f806200f6dd565b604051906200f7156060836200e74e565b603682527536103a3790383934b1b29030b33a32b91039bbb0b81760511b6040837f45786563757465642070726963652073686f756c64206265206f72206571756160208201520152565b60c09490945260405163549387df60e11b8152600481018290526001600160a01b0380841660248301528416604482015291939290915f8180606481016101208490520381836001600160a01b0389165af180156200e4bb576200f7cc915f9162010ed357506200eccd565b5161010052606060a08190526040516200f82c916200f7ec90826200e74e565b602381527f53656c6c206c696d69742073686f756c6420626520677265617465722074686160208201526206e20360ec1b604082015261010051620111a1565b60a051506200f8ea6200f8bb6200536b6040516200f84d60a051826200e74e565b603681527f544553543a2054657374696e672070726963657320666f722070616972202573602082015275080b4f88095ccb8814d95b1b081b1a5b5a5d0e88095960521b6040820152604051928391638ef3f39960e01b60208401526080602484015260a48301906200e6f2565b6001600160a01b0389811660448401528616606483015261010051608483015203601f1981018352826200e74e565b6040516348bd7dfd60e01b8152600481018390526001600160a01b038086166024830152821660448201525f8180606481010381836001600160a01b0389165af180156200e4bb576200f946915f9162010eb5575b506200f5a1565b90604051916200f95860a0846200e74e565b6004835260803660208501371562010ea7575f5b6200f977836200eccd565b526103e861010051046200f98b836200ecdb565b528151600210156200e92b5760a05182016101005160011c90528151600310156200e92b5761010051608083015260405163155adc9160e31b8152935f85806200f9dc86868b8a600486016200eeb7565b0381836001600160a01b0386165af19485156200e4bb575f9562010e87575b506200fa126200fa0b866200eccd565b516200ea51565b85515f198101919082116200ea8e576200fa356200fa0b6200fa9293896200ecec565b60a05160405192906200fa4990846200e74e565b603083527f5072696365206174206c696d69742073686f756c6420626520736d616c6c657260208401526f0207468616e20707269636520617420360841b60408401526201120f565b6200faa16200fa0b866200eccd565b85515f198101919082116200ea8e576200536b6200fb48916200facd6200fa0b6200fb62958b6200ecec565b60a0516040519291906200fae290846200e74e565b602d83527f544553543a20507269636520617420303a2025642c207072696365206174207360208401526c195b1b081b1a5b5a5d0e880959609a1b604084015260405194859363ca47c4eb60e01b602086015260a051602486015260848501906200e6f2565b916044840152606483015203601f1981018352826200e74e565b60a0516040516200fbb7916200fb7990826200e74e565b602581527f544553543a2054657374696e67206265686176696f7220666f72207072696365602082015264020617420360dc1b604082015262011248565b6200fc0f6200fbc6866200eccd565b5151604060e0819052805191906200fbdf90836200e74e565b601882527f4e6f6d696e61746f722073686f756c646e2774206265203000000000000000006020830152620111a1565b6200fc6660206200fc20876200eccd565b51015160e051805191906200fc3690836200e74e565b601a82527f44656e6f6d696e61746f722073686f756c646e277420626520300000000000006020830152620111a1565b6200fc756200fa0b866200eccd565b9460e051506200fcb88660e051516200fc9160e051826200e74e565b6014815273151154d50e88141c9a58d948185d080c0e88095960621b60208201526201127a565b60e051516200fcc7816200e732565b5f81525f602082015260e05151906200fce0826200e716565b5f808352602083015260e051015283515f1981019081116200ea8e576200fd0890856200ecec565b5160058181020481036200ea8e575f8060e0515160208101906370a0823160e01b8252306024820152602481526200fd426044826200e74e565b51908b5afa506200fd5662000a2b62010eea565b50601180546001600160a01b0319166001600160a01b038a161790556370a0823163ffffffff19600f541617600f55600e54600160401b8110156200e4c65762000a908160016200fdab9301600e556200e912565b90556011546001600160a01b031661014052600f546010549060e01b6200fdd1620113d3565b610140516001600160a01b03165f908152600d60205260409020909163ffffffff60e01b1690815f5260205260e0515f2060e0515160208101906200fe1d8162000b11888886620113bc565b5190205f5260205260ff600360e0515f200154161562010e76575b610140516001600160a01b03165f908152600d60205260409020905f5260205262000b116200fe7960e0515f209360e05151928391602083019586620113bc565b5190205f5260205260e0515f2060018101549160028201546200fe9d81856200eb70565b62010d4d575b825460e05151630667f9d760e41b8152610140516001600160a01b0316600482015260248101829052949091906020866044815f5160206201b1205f395f51905f525afa95861562010d07575f9662010d13575b506001908201610100031b5f1901811b1985165f5160206201b1205f395f51905f523b15620011175760e051516370ca10bb60e01b8152610140516001600160a01b0316600482015260248101939093526005840290911b1760448201525f81606481835f5160206201b1205f395f51905f525af1801562010d075762010cef575b506200ff84620115b6565b901591821562010ce0575b505062010be35750506200ffa26201218f565b60e05151634b88b8ad60e11b8152602081600481610120515f5160206201b1205f395f51905f525af18015620104c0576101205160805262010baa575b5060015b84518110156201059f57620100d2620100aa6200536b62010004846200e93f565b5062010011858a6200ecec565b51620100bd620047f06201008360e05151946201003160a051876200e74e565b603086527f544553543a2054657374696e67206265686176696f7220666f7220707269636560208701526f1030ba1012b99037b3103634b6b4ba1760811b60e05187015260e05151928380926200e993565b60e05151635821efa160e01b602082015260a051602482015295869460848601906200e6f2565b848103602319016044860152906200e6f2565b90606483015203601f1981018352826200e74e565b620100e26200fa0b82846200ecec565b620101856201015f6200536b620100fa858a6200ecec565b5160e05151906201010e60e051836200e74e565b601782527f544553543a205377617070696e67202564206f66202573000000000000000000602083015260e0515193849263038fd88960e31b602085015260a051602485015260848401906200e6f2565b60448301919091526001600160a01b038e16606483015203601f1981018352826200e74e565b8460808a89620101b86201019a878c6200ecec565b5160e05151638307c65560e01b81529586948594600486016200ed6a565b03816101205160018060a01b038a165af1908115620104c05761012051916201057c575b508051806a084595161401484a0000008102046a084595161401484a000000148115171562010562576201022f6201023b916a084595161401484a00000062010226878c6200ecec565b5191026200ea32565b9160e05101516200ea51565b91620102838260e051516201025360e051826200e74e565b601d81527f544553543a20202d2045786563757465642070726963653a202020256400000060208201526201127a565b620102ca8160e051516201029a60e051826200e74e565b601d81527f544553543a20202d20507269636520617420616d6f756e743a2020256400000060208201526201127a565b620103118360e05151620102e160e051826200e74e565b601d81527f544553543a20202d20507269636520616674657220737761703a20256400000060208201526201127a565b60c05115620104cf5760a05160e051516201045294620103f4939092620103879291906201034090836200e74e565b602c82527f50726963652073686f756c642062652067726561746564207468616e2065786560208301526b31baba32b210383934b1b29760a11b60e05183015285620112a5565b60a05160e0515191906201039c90836200e74e565b603782527f45786563757465642070726963652073686f756c64206265206772656174657260208301527f207468616e20707269636520616674657220737761702e00000000000000000060e051830152836201120f565b60a05160e0515191906201040990836200e74e565b602e82527f50726963652073686f756c642062652067726561746564207468616e2070726960208301526d31b29030b33a32b91039bbb0b81760911b60e051830152896201120f565b60e0515190631135fc2960e21b82526080516004830152602082602481610120515f5160206201b1205f395f51905f525af1918215620104c0576001926201049d575b50016200ffe3565b620104b89060203d81116200136f576200136081836200e74e565b505f62010495565b60e051513d61012051823e3d90fd5b6201050190620104ef6201055c94620104e76200f704565b908d620112a5565b620104f96200f704565b908b620112a5565b60e05151906201051460a051836200e74e565b602d82527f50726963652073686f756c64206265206f7220657175616c20746f207072696360208301526c329030b33a32b91039bbb0b81760991b60e05183015289620112a5565b62010452565b634e487b7160e01b61012051526011600452602461012051fd5b62010598915060803d81116200129d576200128c81836200e74e565b5f620101dc565b50509150919392506069610100510261010051810460691461010051151715620105625760e051516348bd7dfd60e01b81526101208051600483018890526001600160a01b0387811660248501528681166044850152915160649485900497949192849291839188165af18015620104c0576201062891610120519162010b89575b506200f5d5565b1562010a1057620106958460e051516201064560a051826200e74e565b603681527f544553543a2054657374696e6720726576657274206265686176696f722061626020820152751bdd99481d1a19481cd95b1b081b1a5b5a5d0e88095960521b60e0518201526201127a565b60e05180519490620106a890866200e74e565b6001855260e051601f1901366020870137620106c4856200eccd565b5260e0515163155adc9160e31b8152610120518180620106eb8888878c600486016200eeb7565b03816101205160018060a01b0388165af19081620109f1575b506201098557600162010716620112de565b6308c379a014620108ee575b620104c057620107346080946200eccd565b51946201075960e0515196879586948594638307c65560e01b8652600486016200ed6a565b61012051919003926001600160a01b03165af19081620108cc575b506201086a57600162010786620112de565b6308c379a014620107de575b620104c0575b6200f38c60e05151620107ae60e051826200e74e565b601781527f544553543a20416c6c207465737473207061737365642e000000000000000000602082015262011248565b620107e8620112fa565b80620107f6575b5062010792565b6101205160a05160e05151919350620108639291906201081790826200e74e565b603281527f544553543a204578706563746564206572726f72207768656e207377617070696020820152716e672061626f7665206c696d69743a20257360701b60e05182015262011372565b5f620107ef565b60e0515162461bcd60e51b815260206004820152603360248201527f506f6f6c2073686f756c646e27742062652061626c6520746f20737761702061604482015272189bdd99481d1a19481cd95b1b081b1a5b5a5d606a1b6064820152608490fd5b620108e89060803d6080116200129d576200128c81836200e74e565b62010774565b620108f8620112fa565b8062010906575b5062010722565b6101205160a05160e051519193506201097e9291906201092790826200e74e565b603881527f544553543a204578706563746564206572726f72207768656e2066657463686960208201527f6e672070726963652061626f7665206c696d69743a202573000000000000000060e05182015262011372565b5f620108ff565b60e0515162461bcd60e51b815260206004820152603b60248201527f506f6f6c2073686f756c646e27742062652061626c6520746f2066657463682060448201527f7072696365732061626f7665207468652073656c6c206c696d697400000000006064820152608490fd5b62010a0a903d8061012051833e620004c281836200e74e565b62010704565b60a05160e0515162010a769186919062010a2b90826200e74e565b603181527f544553543a2054657374696e67206f7065726174696f6e732061626f766520746020820152701a19481cd95b1b081b1a5b5a5d0e880959607a1b60e0518201526201127a565b60e0518051949062010a8990866200e74e565b6001855260e051601f190136602087013762010aa5856200eccd565b5260e051519363155adc9160e31b855261012051858062010acd8488878c600486016200eeb7565b03816101205160018060a01b0388165af1908115620104c05760809562010afa9262010b6a57506200eccd565b519462010b1f60e0515196879586948594638307c65560e01b8652600486016200ed6a565b61012051919003926001600160a01b03165af18015620104c05762010b46575b5062010798565b62010b629060803d6080116200129d576200128c81836200e74e565b505f62010b3f565b62010b83903d8061012051833e620004c281836200e74e565b6200033e565b62010ba391503d8061012051833e62003ef081836200e74e565b5f62010621565b6020813d60201162010bda575b8162010bc6602093836200e74e565b810103126200111757516080525f6200ffdf565b3d915062010bb7565b545f5160206201b1205f395f51905f523b1562010cd95760e051516370ca10bb60e01b815261012051610140516001600160a01b03166004830152602482019290925260448101929092528180606481010381610120515f5160206201b1205f395f51905f525af18015620104c05762010cba575b60e0515162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b6101205162010cc9916200e74e565b6101205162010cd9578062010c58565b6101205180fd5b600502141590505f806200ff8f565b5f62010cfb916200e74e565b5f610120525f6200ff79565b60e051513d5f823e3d90fd5b9095506020813d60201162010d44575b8162010d32602093836200e74e565b8101031262001117575194816200fef7565b3d915062010d23565b62010d5981856200eb70565b6101000361010081116200ea8e5760ff81116200ea8e5760e0515163348051d760e11b81526001821b60048201525f816024815f5160206201b1205f395f51905f525afa91821562010d075762010e1e606a6020946001945f9162010e58575b5060e051519586915f5160206201b2805f395f51905f52828401525f5160206201b1005f395f51905f5260e05184015269030ba32b9103a3430b7160b51b60a0518401528051918291018484015e81015f838201520301601f1981018552846200e74e565b1b83600502101562010e3157506200fea3565b60e0515162461bcd60e51b815260206004820152908190620015f99060248301906200e6f2565b62010e6f91503d805f833e6200161481836200e74e565b5f62010db9565b62010e806201185a565b506200fe38565b62010e9f9195503d805f833e620004c281836200e74e565b935f6200f9fb565b61271061010051046200f96c565b62010ecc91503d805f833e62003ef081836200e74e565b5f6200f93f565b6200055991503d805f833e6200055081836200e74e565b3d1562010f19573d9062010efe826200eaa2565b9162010f0e60405193846200e74e565b82523d5f602084013e565b606090565b81156200ea3d570690565b5f908383116201106957828110918215806201105e575b620110565762010f5184866200ed98565b92600184018094116200ea8e576003831115806201104c575b6201103b576003198310158062011030575b6201101d578583111562010fcb5750509062010f9d8462010fa3936200ed98565b62010f1e565b90811562010fc65762010fb792506200eb70565b5f1981019081116200ea8e5790565b505090565b95949291909562010fdd575b50505050565b8394955062010f9d9062010ff293946200ed98565b90811562010fc6576201100692506200ed98565b600181018091116200ea8e57905f80808062010fd7565b505090506200ea8b92915019906200ed98565b508219841162010f7c565b50509190506200ea8b92506200eb70565b5082841162010f6a565b509250505090565b508482111562010f40565b60405162461bcd60e51b815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e00006064820152608490fd5b815162011103926001600160a01b03909216915f91829160200182855af1620110fc62010eea565b9162011792565b8051908162011110575050565b602080620111239383010191016200eb56565b156201112b57565b60405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b6200ea8b93926060928252602082015281604082015201906200e6f2565b5f5160206201b1205f395f51905f523b156200111757620111ed915f916040519384928392636cd1e26960e11b845260048401528460248401526060604484015260648301906200e6f2565b03815f5160206201b1205f395f51905f525afa80156200e4bb576200f3805750565b905f5160206201b1205f395f51905f523b1562001117575f91620111ed6040519485938493636cd1e26960e11b85526004850162011183565b62000b116200536b6200f38c9260405192839163104c13eb60e21b60208401526020602484015260448301906200e6f2565b906200536b6200f38c9262000b11604051938492632d839cb360e21b6020850152602484016200eb38565b905f5160206201b1205f395f51905f523b1562001117575f91620111ed6040519485938493630389490b60e61b85526004850162011183565b5f9060033d11620112eb57565b905060045f803e5f5160e01c90565b5f60443d106200ea8b576040513d600319016004823e8051913d60248401116001600160401b038411176201136c57828201928351916001600160401b03831162011364573d840160031901858401602001116201136457506200ea8b929101602001906200e74e565b949350505050565b92915050565b6200536b620113a99162000b116200f38c94604051948593634b5c427760e01b60208601526040602486015260648501906200e6f2565b838103602319016044850152906200e6f2565b60209291908391805192839101825e019081520190565b620113e06014546200e958565b620114ad576040519081826020600e549283815201600e5f5260205f20925f5b8181106201149357505062011418925003836200e74e565b81518060051b90808204602014901517156200ea8e5762011439816200eaa2565b906201144960405192836200e74e565b8082526201145a601f19916200eaa2565b013660208301375f5b83518110156201148e57806201147c600192866200ecec565b5160208260051b850101520162011463565b509150565b845483526001948501948794506020909301920162011400565b6040516200ea8b81620047f08160146200e993565b6007810190620114d382546200e958565b6201159f57600191500190604051808360208295549384815201905f5260205f20925f5b818110620115855750506201150f925003836200e74e565b81518060051b90808204602014901517156200ea8e5762011530816200eaa2565b906201154060405192836200e74e565b80825262011551601f19916200eaa2565b013660208301375f5b83518110156201148e578062011573600192866200ecec565b5160208260051b85010152016201155a565b8454835260019485019487945060209093019201620114f7565b506200ea8b620047f091604051928380926200e993565b5f806020600f5460e01b620116086024620115d2600d620114c2565b6040519485918183019563ffffffff60e01b1686528051918291018484015e810186838201520301601f1981018452836200e74e565b6011549151916001600160a01b03165afa906201162462010eea565b601054909290600581901b906001600160fb1b038116036200ea8e575f938051602081115f14620116b757506020905b5f925b8284106201166757505050509190565b909192956201167787836200eb70565b83518110156200e92b57830160200151600388901b91906001600160f81b031916881560088a85041417156200ea8e576001921c17960192919062011657565b9062011654565b905f806020600285015460e01b620116dc6024620115d288620114c2565b60048601549151916001600160a01b03165afa6003620116fb62010eea565b930154600581901b906001600160fb1b038116036200ea8e575f938051602081115f146201178b57506020905b5f925b8284106201173b57505050509190565b909192956201174b87836200eb70565b83518110156200e92b57830160200151600388901b91906001600160f81b031916881560088a85041417156200ea8e576001921c1796019291906201172b565b9062011728565b90620117b85750805115620117a957805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580620117eb575b620117cb575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15620117c2565b9080601f83011215620011175781516201180f816200ea1a565b926201181f60405194856200e74e565b81845260208085019260051b8201019283116200111757602001905b828210620118495750505090565b81518152602091820191016201183b565b601154600f546010546001600160a01b03909216915f9160e01b62011880600d620114c2565b90845f52600d60205260405f209063ffffffff60e01b1690815f5260205260405f206040516020810190620118bc8162000b11888886620113bc565b5190205f5260205260ff600360405f200154166201214b575f5160206201b1205f395f51905f523b15620011175760405163266cf10960e01b81525f81600481835f5160206201b1205f395f51905f525af180156200e4bb5762012133575b5062011928600d620116be565b90506040516365bc948160e01b81528660048201528581602481835f5160206201b1205f395f51905f525af190811562001338578691620120c9575b508051620119d657608460405162461bcd60e51b815260206004820152604060248201527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152fd5b855b8151811015620120c057816020620119f58362011a26956200ecec565b51604051630667f9d760e41b81526001600160a01b038c166004820152602481019190915293849081906044820190565b03815f5160206201b1205f395f51905f525afa928315620012a557889362012087575b5082156201202b575b62011a5e82826200ecec565b51601154604051630667f9d760e41b81526001600160a01b03909116600482018190526024820183905291906020816044815f5160206201b1205f395f51905f525afa90811562005b0d578b9162011ff4575b5062011abe600d620116be565b91909382155f1462011fec575f19905b5f5160206201b1205f395f51905f523b1562011fcf576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810185905260448101919091528c81606481835f5160206201b1205f395f51905f525af1801562011f4c57908d9162011fd3575b505062011b46600d620116be565b601154909491506001600160a01b03165f5160206201b1205f395f51905f523b1562011fcf576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528b81606481835f5160206201b1205f395f51905f525af1801562011fc457908c9162011fab575b50508262011f9f575b50501562011f94578793889360ff6013541662011dfc575b6001868601610100031b5f1901851b16841c810362011ded57509062011c70917f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed60808b8962000b1162011c428d604051928391602083019586620113bc565b51902062011c5186866200ecec565b51906040519283528a602084015260408301526060820152a16200ecec565b51906040519060808201928284106001600160401b038511176200e4c65760039360405282526020820193845260408201908152606082019360018552898952600d60205260408920868a5260205260408920604051602081019062011cdd8162000b118d8d86620113bc565b5190208a526020526040892092518355516001830155516002820155019051151560ff801983541691161790555b848452600d6020526040842081855260205260408420604051602081019062011d3b8162000b11888886620113bc565b519020855260205260ff6003604086200154161562011d90576040948452600d60205284842090845260205262000b1162011d84858520938651928391602083019586620113bc565b51902082526020522090565b60405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201526e3a143994903737ba103337bab7321760891b6064820152608490fd5b935091506001905b01620119d8565b945062011e4a935062011e1083836200ecec565b51601154604051630667f9d760e41b81526001600160a01b0390911660048201526024810182905290959094602090869081906044820190565b03815f5160206201b1205f395f51905f525afa94851562003a96578a9562011f5b575b5062011e7b86600d620122b2565b95909662011e8b81600d6201239b565b60115490939192906001600160a01b03165f5160206201b1205f395f51905f523b1562011f57576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528c81606481835f5160206201b1205f395f51905f525af1801562011f4c57908d9162011f2f575b50508762011f26575b50949562011be257509350915060019062011df5565b96505f62011f10565b8162011f3b916200e74e565b62011f48578b5f62011f07565b8b80fd5b6040513d8f823e3d90fd5b8e80fd5b9094506020813d821162011f8b575b8162011f79602093836200e74e565b81010312620011175751935f62011e6d565b3d915062011f6a565b915060019062011df5565b141590505f8062011bca565b8162011fb7916200e74e565b62005aca578a5f62011bc1565b6040513d8e823e3d90fd5b8d80fd5b8162011fdf916200e74e565b62011f48578b5f62011b38565b8c9062011ace565b90506020813d821162012022575b8162012011602093836200e74e565b810103126200111757515f62011ab1565b3d915062012002565b7f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a56201207e6201205c84846200ecec565b51604080516001600160a01b038e168152602081019290925290918291820190565b0390a162011a52565b9092506020813d8211620120b7575b81620120a5602093836200e74e565b81010312620011175751915f62011a49565b3d915062012096565b50505062011d0b565b90503d8087833e620120dc81836200e74e565b810160408282031262003ed15781516001600160401b03811162002461578162012108918401620117f5565b916020810151906001600160401b03821162003929576201212b929101620117f5565b505f62011964565b620121429194505f906200e74e565b5f925f6201191b565b91939092505f52600d60205260405f20905f5260205262000b116201218060405f2093604051928391602083019586620113bc565b5190205f5260205260405f2090565b6bffffffffffffffffffffffff60a01b6011541660115563ffffffff19600f5416600f55600e545f600e55806201226d575b505f60105560ff1960135416601355620121dd6014546200e958565b80620121e65750565b601f8111600114620121f957505f601455565b60145f52601f0160051c7fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec017fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ed5b8181106201226157505060145f525f602081208160145555565b5f815560010162012247565b600e5f527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd908101905b818110620122a65750620121c1565b5f815560010162012297565b91905f5b6101008110620122ca57505090505f905f90565b8060ff0360ff81116200ea8e576004850154600190911b906001600160a01b03165f5160206201b1205f395f51905f523b1562001117576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f5160206201b1205f395f51905f525af180156200e4bb5762012388575b506201235e84620116be565b816201237d575b506201237457600101620122b6565b92505060019190565b905015155f62012365565b5f62012394916200e74e565b5f62012352565b91905f5b6101008110620123b357505090505f905f90565b60048401546001821b906001600160a01b03165f5160206201b1205f395f51905f523b1562001117576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f5160206201b1205f395f51905f525af180156200e4bb576201245a575b506201243984620116be565b816201244f575b5062012374576001016201239f565b905015155f62012440565b5f62012466916200e74e565b5f6201242d565b5f80916020815191016a636f6e736f6c652e6c6f675afa5056fe610100346101b757601f6150b538819003918201601f19168301916001600160401b038311848410176101bb578084926080946040528339810103126101b75780516001600160a01b03811691908290036101b757610060602082016101cf565b6100786060610071604085016101cf565b93016101cf565b6080939093526001600160a01b031660a05260e05260c052604051614ed190816101e48239608051818181609a01528181610810015281816122cb01528181612ba00152818161327f0152818161394b0152613dc8015260a0518181816109ba01528181610b1701528181610b9201528181610e5301528181610f2e015281816110030152818161113d015281816112f201528181611656015281816118a70152818161197b01528181611dd801528181611eea0152613ebb015260c05181818161095501528181610c6601528181610ded0152818161107801528181611599015281816115ca015281816116bf015281816116f701528181611c3001528181611c6401528181613fc101528181613ff7015261432e015260e051818181610bc601528181610fa901528181611109015281816112bf01526115f90152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101b75756fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f3560e01c90816323eeca01146104c45750806348bd7dfd146104175780638307c655146103b1578063a9270fbe14610356578063aad6e488146101b75763ecbbc0331461006a575f61000f565b346101b35760203660031901126101b35760405163ca4f280360e01b81526004803560601c908201525f816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156101a8575f91610186575b508051906100f86100e283610604565b926100f060405194856105e3565b808452610604565b602083019190601f19013683375f5b8151811015610138576001906001600160a01b03610125828561065c565b5116610131828761065c565b5201610107565b505090604051918291602083019060208452518091526040830191905f5b818110610164575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610156565b6101a291503d805f833e61019a81836105e3565b8101906107bb565b5f6100d2565b6040513d5f823e3d90fd5b5f80fd5b346101b35760803660031901126101b3576004356101d3610518565b906101dc61052e565b91606435916001600160401b0383116101b357366023840112156101b35782600401359261020984610604565b9361021760405195866105e3565b8085526024602086019160051b830101913683116101b357602401905b8282106103465750505082519361024a85610604565b9461025860405196876105e3565b808652610267601f1991610604565b015f5b8181106103235750505f5b84518110156102d2578061028b6001928761065c565b51610294610670565b506102a181858888613d9d565b90604051916102af8361057e565b825260208201526102c0828961065c565b526102cb818861065c565b5001610275565b856040518091602082016020835281518091526020604084019201905f5b8181106102fe575050500390f35b82518051855260209081015181860152869550604090940193909201916001016102f0565b6020906040516103328161057e565b5f81525f8382015282828a0101520161026a565b8135815260209182019101610234565b346101b35761036d61036736610544565b916122ab565b6040518091602082016020835281518091526020604084019201905f5b818110610398575050500390f35b825184528594506020938401939092019160010161038a565b346101b35760a03660031901126101b3576103ca610518565b6103d261052e565b6064359160028310156101b3576080926103f292608435926004356106a9565b6020604080519280518452828101518385015201518051604084015201516060820152f35b346101b35761042536610544565b5050506040516104366080826105e3565b60038152602081016060368237600161044e8361061b565b52600261045a8361063c565b5260086104668361064c565b52604051906020820192602083525180935260408201905f935b80851061048d5783830384f35b9091825190600a8210156104b05760208160019382935201930194019390610480565b634e487b7160e01b5f52602160045260245ffd5b346101b35760403660031901126101b357631d04569d60e21b815260206004820181905260248201527f42616c616e636572563353776170416461707465722e676574506f6f6c4964736044820152606490fd5b602435906001600160a01b03821682036101b357565b604435906001600160a01b03821682036101b357565b60609060031901126101b357600435906024356001600160a01b03811681036101b357906044356001600160a01b03811681036101b35790565b604081019081106001600160401b0382111761059957604052565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b0382111761059957604052565b608081019081106001600160401b0382111761059957604052565b90601f801991011681019081106001600160401b0382111761059957604052565b6001600160401b0381116105995760051b60200190565b8051156106285760200190565b634e487b7160e01b5f52603260045260245ffd5b8051600110156106285760400190565b8051600210156106285760600190565b80518210156106285760209160051b010190565b6040519061067d8261057e565b5f6020838281520152565b9190820391821161069557565b634e487b7160e01b5f52601160045260245ffd5b919493929094604051956106bc876105ad565b5f87525f602088015260408701966040516106d68161057e565b5f81525f602082015288528097861561072957505061070693926106fd9286925a956107ed565b85525a90610688565b60208401528251906040519161071b8361057e565b825260208201526040830152565b9550959650505050506040519061073f8261057e565b5f8252600160208301525290565b9080601f830112156101b35781519061076582610604565b9261077360405194856105e3565b82845260208085019360051b8201019182116101b357602001915b81831061079b5750505090565b82516001600160a01b03811681036101b35781526020928301920161078e565b906020828203126101b35781516001600160401b0381116101b3576107e0920161074d565b90565b600211156104b057565b60405163ca4f280360e01b8152606082901c600482015291945f949385846024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9384156101a8575f9461228f575b506001600160a01b038716968715958615959091905f9081898961227e575b1561220a575050506001805b8180612203575b156110bf5750505060019061088e816107e3565b03610d95576001600160a01b03168015928515610d21578647955b8781610d1a575b6108b8613777565b506108c1613777565b506108ca613699565b50479015610cad575b604051936108e0856105ad565b60601c84528460208501528260408501526108f9613737565b936109038561061b565b5261090d8461061b565b506040519361091b856105c8565b8b85526020850152604084015284606084015261093661379b565b926109408461061b565b5261094a8361061b565b50858815610b7c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166109868461061b565b51525b8715610aed576109b5928891610ae5575b604051634758db2f60e11b815293849283926004840161303b565b0381887f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1908115610ada5791610a2294939188938491610ab5575b50935b15610aa9575090808080610a1d94335af1610a176130b9565b506130f7565b61061b565b5193849215610a92575082610a3981938293610688565b335af1610a446130b9565b5015610a4d5790565b60405162461bcd60e51b815260206004820152601960248201527f4661696c656420746f207472616e7366657220455448283229000000000000006044820152606490fd5b916107e09350610aa191610688565b90339061468c565b610a1d9250339061468c565b610ad191503d8086833e610ac981836105e3565b810190612e51565b9150505f6109fb565b6040513d89823e3d90fd5b86915061099a565b610b12928291610ae557604051634758db2f60e11b815293849283926004840161303b565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1908115610ada5791610a2294939188938491610b5f575b50936109fe565b610b7391503d8086833e610ac981836105e3565b9150505f610b58565b909150610c64575b610b908630338c614648565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610bc4818b614419565b7f0000000000000000000000000000000000000000000000000000000000000000610bef818c614419565b6001600160a01b0316803b15610c6057610c23918a918c836040518096819582946387517c4560e01b845260048401612dc8565b03925af18015610c5557908991610c3c575b5090610989565b81610c46916105e3565b610c5157875f610c35565b8780fd5b6040513d8b823e3d90fd5b8980fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166020610ca581610c9d8661061b565b51015161061b565b510152610b84565b506040516370a0823160e01b81523360048201529091506020816024818d5afa908115610c5557908992918391610ce5575b506108d3565b9250506020823d602011610d12575b81610d01602093836105e3565b810103126101b3578891515f610cdf565b3d9150610cf4565b50856108b0565b6040516370a0823160e01b81523360048201526020816024818c5afa908115610d8a579088918291610d55575b50956108a9565b9150506020813d602011610d82575b81610d71602093836105e3565b810103126101b3578790515f610d4e565b3d9150610d64565b6040513d8a823e3d90fd5b9596956001600160a01b031680159594909392610dc2908290849087908c90886110b7575b60601c614aaf565b505097610dcd61379b565b98610dd78a61061b565b52610de18961061b565b50868215610f965750507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610e1e8961061b565b51525b8015610eff5790610e4f978593610ef7575b60405180998194829363286f580d60e01b8452600484016131c6565b03917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af18015610eec57610eb494958391610ecf575b50925b15610eb85750808080610a1d93610ea88661061b565b51335af1610a176130b9565b5190565b610a1d9150610ec68361061b565b5190339061468c565b610ee391503d8085833e610ac981836105e3565b9150505f610e8f565b6040513d84823e3d90fd5b869250610e33565b50508290610f29968291610f8e575b60405163286f580d60e01b81529788928392600484016131c6565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af18015610eec57610eb494958391610f71575b5092610e92565b610f8591503d8085833e610ac981836105e3565b9150505f610f6a565b859150610f0e565b611076575b610fa783303384614648565b7f0000000000000000000000000000000000000000000000000000000000000000610fd384828461458c565b6001600160a01b031690813b15611072576040516387517c4560e01b8152918791839190829084908290611035907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169060048401612dc8565b03925af180156110675790869161104e575b5050610e21565b81611058916105e3565b61106357845f611047565b8480fd5b6040513d88823e3d90fd5b8680fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660206110af81610c9d8d61061b565b510152610f9b565b8b9450610dba565b819a98939695949a9792971590816121fa575b5015611564575050506110e98260601c8886613251565b95919390946110f7816107e3565b611272576111078330338a614648565b7f000000000000000000000000000000000000000000000000000000000000000061113384828a61458c565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811698911690813b15610c60578861118d928b92836040518096819582946387517c4560e01b845260048401612dc8565b03925af18015610c555791899796959493918b9361124d575b50916111bd9593916111ed9997959360601c614c68565b90604051916111cd6020846105e3565b8383528360405180968195829463286f580d60e01b845260048401613194565b03925af1918215611241579161120f91836107e09492611223575b505061061b565b5191829033906001600160a01b031661468c565b61123792503d8091833e610ac981836105e3565b9150505f80611208565b604051903d90823e3d90fd5b61126091935097809294959697986105e3565b610c515787959493929189915f6111a6565b929094879492989697506112846136b7565b92604051966370a0823160e01b88523360048901526020886024818d5afa978815610ada578798611530575b506112bd8830338d614648565b7f00000000000000000000000000000000000000000000000000000000000000006112e8818c614419565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116959116803b1561152c578886611341928e836040518096819582946387517c4560e01b845260048401612dc8565b03925af18015610c5557908991611517575b505060038110156115035791879594939160018d94145f146114a25750906113b5838361145599611388836113d19897614816565b9150506113948a61061b565b5261139e8961061b565b506001600160a01b0385811692169060601c6149e1565b9150506113c18661063c565b526113cb8561063c565b506146c8565b9150506113dd8361064c565b526113e78261064c565b506113f061379b565b91604051906113fe826105c8565b898252602082015286604082015289606082015261141b8361061b565b526114258261061b565b50604051916114356020846105e3565b83835283604051809681958294634758db2f60e11b845260048401612fc1565b03925af19182156112415761147f6107e0969593611498959383611493949261122357505061061b565b5196879333906001600160a01b031661468c565b610688565b9033903090614648565b9683926114b56114e2956114559a6146c8565b9150506114c18861061b565b526114cb8761061b565b506001600160a01b0390811692169060601c6149e1565b9150506114ee8361063c565b526114f88261063c565b506113d18988614816565b634e487b7160e01b88526021600452602488fd5b81611521916105e3565b610c5157875f611353565b8880fd5b9097506020813d60201161155c575b8161154c602093836105e3565b810103126101b35751965f6112b0565b3d915061153f565b89975061157f9060019a888760609a98999596979a1c612b73565b99909161158b816107e3565b14908694845f146121f457507f0000000000000000000000000000000000000000000000000000000000000000945b6001600160a01b0389166121ed577f0000000000000000000000000000000000000000000000000000000000000000935b8381156121e057612171575b7f000000000000000000000000000000000000000000000000000000000000000061162c83826001600160a01b038b1661458c565b6001600160a01b0316803b156101b3576040516387517c4560e01b8152905f9082908183816116887f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168f60048401612dc8565b03925af180156101a85761215c575b505b83611c0957611bee575b506060998a956001600160a01b0381161591908215611be857507f0000000000000000000000000000000000000000000000000000000000000000945b6001600160a01b0381169c8d15918215611be257507f0000000000000000000000000000000000000000000000000000000000000000945b6005811015611bce57918d93918360018e95145f14611aad5750505050505061173f6136f7565b6040516338d52e0f60e01b81529097906020816004816001600160a01b0388165afa908115611aa257918a93918d9695938791611a4a575b506117af94939261179d92909185916001600160a01b03918216918b169060601c614aaf565b9150506117a98a61061b565b52614816565b9150506117bb8761063c565b525b156119fa57506117cb61379b565b6040516370a0823160e01b815230600482015290916001600160a01b031690602081602481855afa908115610c55579089959493929186916119bd575b5061183e939495966040519261181d846105c8565b8352602083015260408201528660608201526118388261061b565b5261061b565b505b15611944576118a3926118836040519261185b6020856105e3565b84845260405163286f580d60e01b81526080600482015295869485938493608485019061313c565b5f1960248501526001604485015283810360031901606485015290612f9d565b03917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af190811561193957906118ea91849161191c575b5061061b565b519283916001600160a01b031615611908576107e09250339061468c565b50908080806107e094335af1610a176130b9565b61193091503d8086833e610ac981836105e3565b9150505f6118e4565b6040513d85823e3d90fd5b6119769250604051906119586020836105e3565b82825260405163286f580d60e01b8152938492839260048401613194565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af190811561193957906118ea91849161191c575061061b565b93949550506020833d6020116119f2575b816119db602093836105e3565b810103126101b3579151889493929061183e611808565b3d91506119ce565b939250611a0561379b565b9260405191611a13836105c8565b6001600160a01b0316825260208201526040810185905260016060820152611a3a8361061b565b52611a448261061b565b50611840565b92945050919394506020813d602011611a9a575b81611a6b602093836105e3565b81010312611a96579261179d6117af938b80948f9897611a8a90612b13565b92949596509250611777565b8b80fd5b3d9150611a5e565b6040513d8e823e3d90fd5b859897939596949650600281145f14611b13575050505090611aef8392611b0194611ad66136f7565b9b6001600160a01b0385811691908b169060601c614aaf565b915050611afb8a61061b565b52614908565b915050611b0d8761063c565b526117bd565b929b9195949350909160038103611b6357505090611b01939291611b356136f7565b9a611b408484614816565b915050611b4c8d61061b565b526001600160a01b0390811692169060601c614aaf565b6004919b9594935014611b7a575b505050506117bd565b611bb8939950611b886136f7565b99611b938389614908565b915050611b9f8c61061b565b526001600160a01b03908116919088169060601c614aaf565b915050611bc48761063c565b525f808881611b71565b634e487b7160e01b8e52602160045260248efd5b94611718565b946116e0565b611c039030336001600160a01b038916614648565b5f6116a3565b9794918897919496999a9b935047986120db575b6060936001600160a01b038b166120d4577f0000000000000000000000000000000000000000000000000000000000000000945b6001600160a01b0389161580156120cd577f0000000000000000000000000000000000000000000000000000000000000000935b60058110156120b857918f91838f959360018d96145f14611fcf5750505050505050611caf6136f7565b6040516338d52e0f60e01b815290926020826004816001600160a01b0387165afa918215611fc257908c8f928a94611f72575b50611d169492611d0a926001600160a01b0392831615928692811691908b169060601c614aaf565b9150506117a98561061b565b915050611d228261063c565b525b611d2c61379b565b6040516370a0823160e01b815230600482015290936001600160a01b031691602082602481865afa918215611f6757908d95949392918692611f30575b5060405192611d77846105c8565b835260208301526040820152856060820152611d928361061b565b52611d9c8261061b565b5015611eb357611dd49260405191611db56020846105e3565b838352604051809581948293634758db2f60e11b845260048401612fc1565b03917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1908115610d8a578894939291611e1e918691611e9f575061061b565b519788976001600160a01b031615611e865750611e459133906001600160a01b031661468c565b15611e6957506107e092611e5891610688565b9033906001600160a01b031661468c565b80809350611e7b6107e0958294610688565b335af1610a176130b9565b611e9a925080808093335af1610a176130b9565b611e45565b61193091503d8088833e610ac981836105e3565b611ee5925060405190611ec76020836105e3565b828252604051634758db2f60e11b8152938492839260048401612fc1565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1908115610d8a578894939291611e1e918691611e9f575061061b565b955090506020853d602011611f5f575b81611f4d602093836105e3565b810103126101b3578c9451905f611d69565b3d9150611f40565b6040513d8f823e3d90fd5b92505091506020813d602011611fba575b81611f90602093836105e3565b81010312611fb65791611d0a8c898094611fac611d1697612b13565b9496509250611ce2565b8d80fd5b3d9150611f83565b8e604051903d90823e3d90fd5b95969495939492936002820361203057505050505061201261201e939483611ff56136f7565b966001600160a01b039081161592858216918b169060601c614aaf565b915050611afb8561061b565b91505061202a8261063c565b52611d24565b9397929650909493926003820361206857505061201e9495506120516136f7565b9561205c8484614816565b915050611b4c8861061b565b6004929350501461207d575b50505050611d24565b6120a293945061208b6136f7565b946120968389614908565b915050611b9f8761061b565b9150506120ae8261063c565b525f808681612074565b50634e487b7160e01b8f52602160045260248ffd5b8993611c85565b8a94611c51565b6040516370a0823160e01b81523360048201526001600160a01b038b1699506020816024818d5afa8015611f675786908e90612126575b61212192509a30903390614648565b611c1d565b50506020813d602011612154575b81612141602093836105e3565b810103126101b357856121219151612112565b3d9150612134565b612169919b505f906105e3565b5f995f611697565b6040516370a0823160e01b81523360048201529091506020816024816001600160a01b038b165afa9081156101a8575f916121ae575b50906115f7565b90506020813d6020116121d8575b816121c9602093836105e3565b810103126101b357515f6121a7565b3d91506121bc565b1561169957479150611699565b88936115eb565b946115ba565b9050155f6110d2565b508061087a565b5f9b9a9794929b999693919895995b895181101561226c576001600160a01b03612234828c61065c565b51168c810361224b57509050600180915b01612219565b6001600160a01b038c1614612263575b600190612245565b60019c5061225b565b50919396999a90929598949750610873565b506001600160a01b03861615610867565b6122a49194503d805f833e61019a81836105e3565b925f610848565b60405163ca4f280360e01b8152606082811c6004830181905295949391927f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169290915f85602481875afa9485156101a8575f95612af7575b506001600160a01b038216945f908187158015612ae6575b15612a76575050506001805b8180612a6f575b156124725750505050505f604051956123516060886105e3565b6002875260403660208901376024604051809481936333f0703b60e11b835260048301525afa9283156101a8575f915f94612449575b506001600160a01b0316915f5b825181101561244257816001600160a01b036123b0838661065c565b511614612411575b836001600160a01b036123cb838661065c565b5116146123db575b600101612394565b6123e5818661065c565b519060038202918083046003149015171561069557600a600192046124098961063c565b5290506123d3565b61241b818661065c565b5160038102908082046003149015171561069557600a900461243c8861061b565b526123b8565b5050505050565b90935061246891503d805f833e61246081836105e3565b8101906137e8565b509390505f612387565b8196949695929395159081612a66575b50156124a5575050505061249b6107e094958483613251565b949192909361390d565b889550865f9893956124b99395989a612b73565b969094604051946124ca81876105e3565b60028652601f19013660208701376024604051809581936333f0703b60e11b835260048301525afa9586156101a8575f925f97612a41575b505f9460058110156104b0576001810361268e575093966001600160a01b031693505f5b825181101561261b576001600160a01b03612541828561065c565b51168681146125ea575b6040516338d52e0f60e01b81526020816004818a5afa9081156101a8575f916125b1575b506001600160a01b031614612587575b600101612526565b9650612593878761065c565b5160038102908082046003149015171561069557600a90049661257f565b90506020813d82116125e2575b816125cb602093836105e3565b810103126101b3576125dc90612b13565b5f61256f565b3d91506125be565b6125f4828961065c565b5160038102908082046003149015171561069557600a90046126158661061b565b5261254b565b509591945050602091925060246040518094819363ef8b30f760e01b835260048301525afa9081156101a8575f9161265c575b506126588261063c565b5290565b90506020813d602011612686575b81612677602093836105e3565b810103126101b357515f61264e565b3d915061266a565b9397949695949093600281036127875750505f5b825181101561273f576001600160a01b036126bd828561065c565b51168581036126fd57506126d1818761065c565b519060038202918083046003149015171561069557600a600192046126f58a61061b565b525b016126a2565b6001600160a01b03851614612715575b6001906126f7565b9550612721868661065c565b5160038102908082046003149015171561069557600a90049561270d565b5060405163266d6a8360e11b81526004810196909652959493506020925083916024915082906001600160a01b03165afa9081156101a8575f9161265c57506126588261063c565b93965090939092600381036128ab575092946001600160a01b03928316935091909116905f5b815181101561244257836001600160a01b036127c9838561065c565b5116848114612817575b146127e1575b6001016127ad565b6127eb818661065c565b519060038202918083046003149015171561069557600a6001920461280f8961063c565b5290506127d9565b9050612823828761065c565b51906003820291808304600314901517156106955760405163266d6a8360e11b8152600a9092046004830152602082602481885afa80156101a85786925f91612877575b506128718a61061b565b526127d3565b9250506020823d82116128a3575b81612892602093836105e3565b810103126101b3578591515f612867565b3d9150612885565b600491959394979650146128c1575b5050505090565b9294939290916001600160a01b0316905f5b8151811015612a31576001600160a01b036128ee828461065c565b5116838114612a00575b6040516338d52e0f60e01b81526020816004818c5afa9081156101a8575f916129c7575b506001600160a01b031614612934575b6001016128d3565b61293e818561065c565b51906003820291808304600314901517156106955760405163ef8b30f760e01b8152600a90920460048301526020826024818b5afa80156101a8575f90612995575b6001925061298d8761061b565b52905061292c565b506020823d82116129bf575b816129ae602093836105e3565b810103126101b35760019151612980565b3d91506129a1565b90506020813d82116129f8575b816129e1602093836105e3565b810103126101b3576129f290612b13565b5f61291c565b3d91506129d4565b612a0a828661065c565b5160038102908082046003149015171561069557600a9004612a2b8761063c565b526128f8565b505050509091505f8080806128ba565b909650612a599192503d805f833e61246081836105e3565b509291905091955f612502565b9050155f612482565b5080612337565b5f99959391969492999897985b8751811015612ad6576001600160a01b03612a9e828a61065c565b51168a8103612ab557509050600180915b01612a83565b6001600160a01b038a1614612acd575b600190612aaf565b60019a50612ac5565b5091939550919397969596612330565b506001600160a01b03891615612324565b612b0c9195503d805f833e61019a81836105e3565b935f61230c565b51906001600160a01b03821682036101b357565b15612b2e57565b60405162461bcd60e51b815260206004820152601760248201527f546f6b656e206e6f7420666f756e6420696e20706f6f6c0000000000000000006044820152606490fd5b60405163ca4f280360e01b81526001600160a01b0391821660048201525f949092918590849060249082907f0000000000000000000000000000000000000000000000000000000000000000165afa9283156101a8575f93612dac575b5015612cc15750612be082614320565b15612bed5750506001915b565b5f5b8151811015612cb9576001600160a01b03612c0a828461065c565b5116612c1581614320565b80612c47575b612c285750600101612bef565b93505050505b612c426001600160a01b0382161515612b27565b600291565b506040516338d52e0f60e01b8152602081600481855afa9081156101a8575f91612c80575b506001600160a01b03858116911614612c1b565b90506020813d8211612cb1575b81612c9a602093836105e3565b810103126101b357612cab90612b13565b5f612c6c565b3d9150612c8d565b505050612c2e565b9150612ccc82614320565b15612cd8575050600491565b5f5b8151811015612da4576001600160a01b03612cf5828461065c565b5116612d0081614320565b80612d32575b612d135750600101612cda565b93505050505b612d2d6001600160a01b0382161515612b27565b600391565b506040516338d52e0f60e01b8152602081600481855afa9081156101a8575f91612d6b575b506001600160a01b03858116911614612d06565b90506020813d8211612d9c575b81612d85602093836105e3565b810103126101b357612d9690612b13565b5f612d57565b3d9150612d78565b505050612d19565b612dc19193503d805f833e61019a81836105e3565b915f612bd0565b6001600160a01b0391821681529181166020830152604082015265ffffffffffff606082015260800190565b9080601f830112156101b3578151612e0b81610604565b92612e1960405194856105e3565b81845260208085019260051b8201019283116101b357602001905b828210612e415750505090565b8151815260209182019101612e34565b916060838303126101b35782516001600160401b0381116101b35782612e78918501612df4565b9260208101516001600160401b0381116101b357810183601f820112156101b357805190612ea582610604565b91612eb360405193846105e3565b80835260208084019160051b830101918683116101b357602001905b828210612ef7575050509260408201516001600160401b0381116101b3576107e09201612df4565b60208091612f0484612b13565b815201910190612ecf565b90608081019160018060a01b038151168252602081015192608060208401528351809152602060a084019401905f5b818110612f5e575050506060816040829301516040850152015191015290565b825180516001600160a01b0390811688526020828101519091168189015260409182015115159188019190915260609096019590920191600101612f3e565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9291608084019360808152825180955260a0810194602060a08260051b8401019401905f5b818110613010575050506107e09394505f1960208201525f60408201526060818403910152612f9d565b90919460208061302c600193609f19888203018c528951612f0f565b97019801910196919096612fe6565b9291926080810160808252825180915260a0820190602060a08260051b8501019401915f905b82821061308e57505050506107e092935f1960208301521515604082015260608183039101526060612f9d565b909192946020806130ab600193609f198982030186528951612f0f565b970192019201909291613061565b3d156130f2573d906001600160401b03821161059957604051916130e7601f8201601f1916602001846105e3565b82523d5f602084013e565b606090565b156130fe57565b60405162461bcd60e51b815260206004820152601660248201527508cc2d2d8cac840e8de40e8e4c2dce6cccae4408aa8960531b6044820152606490fd5b9080602083519182815201916020808360051b8301019401925f915b83831061316757505050505090565b9091929394602080613185600193601f198682030187528951612f0f565b97019301930191939290613158565b90916131ab6107e09360808452608084019061313c565b915f1960208201525f60408201526060818403910152612f9d565b6131dc6107e0939260808352608083019061313c565b5f1960208301529115156040820152808203606091820152612f9d565b1561320057565b60405162461bcd60e51b8152602060048201526024808201527f435553544f4d5f5752415028343632362d34363236293a20496e76616c696420604482015263141bdbdb60e21b6064820152608490fd5b60405163ca4f280360e01b81526001600160a01b039384166004820152925f929183918290869060249082907f0000000000000000000000000000000000000000000000000000000000000000165afa9485156101a8575f9561367d575b506132b981614320565b8061366e575b1561346c576040516338d52e0f60e01b81529190602090839060049082906001600160a01b03165afa9182156101a8575f9261342b575b506040516338d52e0f60e01b815292602090849060049082906001600160a01b03165afa9283156101a8575f936133ef575b505f5b85518110156133e5576001600160a01b03613346828861065c565b51166001600160a01b0383161515806133d3575b61339a576001600160a01b0384168114613392575b6001600160a01b0385168114613389575b5060010161332b565b94506001613380565b91508161336f565b5050935050505b6001600160a01b0382161515806133c1575b6133bc906131f9565b600292565b506001600160a01b03811615156133b3565b506001600160a01b038616151561335a565b50935050506133a1565b9092506020813d602011613423575b8161340b602093836105e3565b810103126101b35761341c90612b13565b915f613328565b3d91506133fe565b9291506020833d602011613464575b81613447602093836105e3565b810103126101b357602061345c600494612b13565b9293506132f6565b3d915061343a565b91949061347883614320565b158061365e575b15613619575f5b855181101561360e576001600160a01b036134a1828861065c565b51166134ac81614320565b6134ba575b50600101613486565b6001600160a01b0383161515806135fc575b6135c2576040516338d52e0f60e01b8152602081600481855afa9081156101a8575f91613589575b506001600160a01b03868116911614613581575b6040516338d52e0f60e01b8152602081600481855afa9081156101a8575f91613548575b506001600160a01b038981169116036134b157945060016134b1565b90506020813d8211613579575b81613562602093836105e3565b810103126101b35761357390612b13565b5f61352c565b3d9150613555565b915081613508565b90506020813d82116135ba575b816135a3602093836105e3565b810103126101b3576135b490612b13565b5f6134f4565b3d9150613596565b505093509350505b6001600160a01b0382161515806135ea575b6135e5906131f9565b600192565b506001600160a01b03811615156135dc565b506001600160a01b03861615156134cc565b5093509350506135ca565b60405162461bcd60e51b815260206004820152601b60248201527f435553544f4d5f575241503a20496e76616c696420746f6b656e7300000000006044820152606490fd5b5061366886614320565b1561347f565b5061367883614320565b6132bf565b6136929195503d805f833e61019a81836105e3565b935f6132af565b604051906136a6826105ad565b5f6040838281528260208201520152565b604051608091906136c883826105e3565b6003815291601f1901825f5b8281106136e057505050565b6020906136eb613699565b828285010152016136d4565b6040516060919061370883826105e3565b6002815291601f1901825f5b82811061372057505050565b60209061372b613699565b82828501015201613714565b6040805190919061374883826105e3565b6001815291601f1901825f5b82811061376057505050565b60209061376b613699565b82828501015201613754565b60405190613784826105c8565b5f6060838281528160208201528260408201520152565b604080519091906137ac83826105e3565b6001815291601f1901825f5b8281106137c457505050565b6020906137cf613777565b828285010152016137b8565b519081151582036101b357565b906080828203126101b35781516001600160401b0381116101b3578161380f91840161074d565b9260208301516001600160401b0381116101b357830182601f820112156101b357805161383b81610604565b9161384960405193846105e3565b818352602060608185019302820101908582116101b357602001915b8183106138ad575050509260408101516001600160401b0381116101b3578361388f918301612df4565b9260608201516001600160401b0381116101b3576107e09201612df4565b6060838703126101b357604051906138c4826105ad565b835160028110156101b35782526020840151906001600160a01b03821682036101b357826020928360609501526138fd604087016137db565b6040820152815201920191613865565b959460405161391d6060826105e3565b6002815260403660208301376040516333f0703b60e11b815260609890981c60048901529485905f896024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9586156101a8575f995f97613d78575b5060038110156104b057600114613bf55750506040516338d52e0f60e01b81526001600160a01b0392909216969190506020816004818a5afa9081156101a8575f91613bbb575b506040516338d52e0f60e01b81526001600160a01b039384169791909316926020816004818b5afa9081156101a8575f91613b81575b506001600160a01b0316925f5b8351811015613b7657816001600160a01b03613a2b838761065c565b511614613ae9575b846001600160a01b03613a46838761065c565b511614613a56575b600101613a0f565b613a60818761065c565b51906003820291808304600314901517156106955760405163ef8b30f760e01b8152600a90920460048301526020826024818d5afa80156101a8575f90613ab7575b60019250613aaf8961063c565b529050613a4e565b506020823d8211613ae1575b81613ad0602093836105e3565b810103126101b35760019151613aa2565b3d9150613ac3565b613af3818761065c565b516003810290808204600314901517156106955760405163ef8b30f760e01b8152600a9091046004820152602081602481875afa9081156101a8575f91613b45575b50613b3f8861061b565b52613a33565b90506020813d8211613b6e575b81613b5f602093836105e3565b810103126101b357515f613b35565b3d9150613b52565b509496505050505050565b90506020813d602011613bb3575b81613b9c602093836105e3565b810103126101b357613bad90612b13565b5f613a02565b3d9150613b8f565b90506020813d602011613bed575b81613bd6602093836105e3565b810103126101b357613be790612b13565b5f6139cc565b3d9150613bc9565b935094509590505f5b8151811015613d6f576001600160a01b03613c19828461065c565b516001600160a01b038516929116828103613cc25750613c39818661065c565b5160038102908082046003149015171561069557600a6024602092604051958693849263266d6a8360e11b84520460048301525afa80156101a8575f90613c90575b60019250613c888761061b565b525b01613bfe565b506020823d8211613cba575b81613ca9602093836105e3565b810103126101b35760019151613c7b565b3d9150613c9c565b6001600160a01b03891692508214613cde575b60019150613c8a565b613ce8818661065c565b5160038102908082046003149015171561069557600a6024602092604051958693849263266d6a8360e11b84520460048301525afa80156101a8575f90613d3d575b60019250613d378761063c565b52613cd5565b506020823d8211613d67575b81613d56602093836105e3565b810103126101b35760019151613d2a565b3d9150613d49565b50929450505050565b909650613d909199503d805f833e61246081836105e3565b509991905098955f613985565b909392935f9160601c6040519363ca4f280360e01b85528160048601525f8560248160018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9485156101a8575f95614304575b506001600160a01b038316801580159690959194905f9081888a6142f3575b15614283575050506001805b818061427c575b15613f1857509798613eb698505f97613e9d97613e5b97909692956001600160a01b031694509250613f0f57614aaf565b5050613e6561379b565b90613e6f8261061b565b52613e798161061b565b506040516338ed77fd60e21b8152606060048201529384928392606484019061313c565b3060248401528281036003190160448401526060612f9d565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af180156101a857610eb4915f91613efb575061061b565b61193091503d805f833e610ac981836105e3565b82159450614aaf565b9195508092999496939750159081614273575b5015613f83575050613eb69495509181613f5693613f4c83875f9896613251565b9591939094614c68565b60405190613f656020836105e3565b8282526040516338ed77fd60e21b8152938492839260048401614d9f565b613f9290868587989497612b73565b909160058310156104b05782613fab5750505050505050565b909192939495969750606094865f1461426d57507f0000000000000000000000000000000000000000000000000000000000000000945b6001600160a01b0382161591821561426757507f0000000000000000000000000000000000000000000000000000000000000000935b60018103614152575050505061402c6136f7565b6040516338d52e0f60e01b8152959094906020876004816001600160a01b0387165afa9687156101a8575f976140f9575b50613eb6965f96959493614096938593919261408a9285916001600160a01b0390811691908a1690614aaf565b9150506117a98761061b565b9150506140a28461063c565b525b6140ac61379b565b92604051926140ba846105c8565b6001600160a01b0316835260208301526040820152600160608201526140df8261061b565b526140e98161061b565b5060405190613f656020836105e3565b909594939296506020813d60201161414a575b81614119602093836105e3565b810103126101b357613eb69661408a61409693855f996141398296612b13565b9b509450509350509293949561405d565b3d915061410c565b91613eb698969594915f9893600281148a146141b257505050506141a09161419484928361417e6136f7565b986001600160a01b0385811691908a1690614aaf565b915050611afb8761061b565b9150506141ac8461063c565b526140a4565b92979194935090916003811489146142005750506141a0929184916141d56136f7565b976141e08484614816565b9150506141ec8a61061b565b526001600160a01b03908116921690614aaf565b6004919794935014614215575b5050506140a4565b61425292955083906142256136f7565b966142308388614908565b91505061423c8961061b565b526001600160a01b039081169190871690614aaf565b91505061425e8461063c565b525f808061420d565b93614018565b94613fe2565b9050155f613f2b565b5080613e2a565b5f9a9693919799959894929a5b88518110156142e3576001600160a01b036142ab828b61065c565b51168b81036142c257509050600180915b01614290565b6001600160a01b038b16146142da575b6001906142bc565b60019b506142d2565b5091939794989650919498613e23565b506001600160a01b03861615613e17565b6143199195503d805f833e61019a81836105e3565b935f613df8565b6001600160a01b03908116907f0000000000000000000000000000000000000000000000000000000000000000168114614414576040516338d52e0f60e01b8152602081600481855afa90816143dd575b5061437b57505f90565b602060249160405192838092636c82bbbf60e11b82523360048301525afa90816143ae575b506143a9575f90565b600190565b6020813d6020116143d5575b816143c7602093836105e3565b810103126101b357516143a0565b3d91506143ba565b6020813d60201161440c575b816143f6602093836105e3565b810103126101b35761440790612b13565b614371565b3d91506143e9565b505f90565b604051636eb1769f60e11b81523060048201526001600160a01b03838116602483018190529391929190821690602084604481855afa9384156101a8575f94614558575b505f1984018094116106955760405163095ea7b360e01b602082019081526001600160a01b03909216602482015260448101949094525f9081906144ae86606481015b03601f1981018852876105e3565b85519082855af1906144be6130b9565b8261451e575b5081614513575b50156144d657505050565b61450e612beb936040519063095ea7b360e01b602083015260248201525f6044820152604481526145086064826105e3565b82614dca565b614dca565b90503b15155f6144cb565b80519192508115918215614536575b5050905f6144c4565b81925090602091810103126101b357602061455191016137db565b5f8061452d565b9093506020813d602011614584575b81614574602093836105e3565b810103126101b35751925f61445d565b3d9150614567565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830181905294919390831691602085604481865afa9485156101a8575f95614614575b5084018094116106955760405163095ea7b360e01b602082019081526001600160a01b03909216602482015260448101949094525f9081906144ae86606481016144a0565b9094506020813d602011614640575b81614630602093836105e3565b810103126101b35751935f6145cf565b3d9150614623565b6040516323b872dd60e01b60208201526001600160a01b039283166024820152929091166044830152606480830193909352918152612beb9161450e6084836105e3565b60405163a9059cbb60e01b60208201526001600160a01b03929092166024830152604480830193909352918152612beb9161450e6064836105e3565b91906146d2613777565b926146db613777565b506146e4613699565b506040516338d52e0f60e01b81526001600160a01b039190911690602081600481855afa9081156101a8575f916147dc575b5060405192906001600160a01b031661472e846105ad565b82845260208401526001604084015282614746613737565b906147508261061b565b5261475a8161061b565b506040516370a0823160e01b815230600482015290602082602481875afa9182156101a8575f926147a8575b5060405193614794856105c8565b845260208401526040830152606082015291565b9091506020813d6020116147d4575b816147c4602093836105e3565b810103126101b35751905f614786565b3d91506147b7565b90506020813d60201161480e575b816147f7602093836105e3565b810103126101b35761480890612b13565b5f614716565b3d91506147ea565b9061481f613777565b50614828613777565b91614831613699565b506040516001600160a01b03919091169161484b826105ad565b828252826020830152600160408301528192614865613737565b9261486f8461061b565b526148798361061b565b506020600491604051928380926338d52e0f60e01b82525afa9081156101a8575f916148ce575b5060405192906001600160a01b03166148b8846105c8565b8352602083015260408201526001606082015292565b90506020813d602011614900575b816148e9602093836105e3565b810103126101b3576148fa90612b13565b5f6148a0565b3d91506148dc565b90614911613777565b5061491a613777565b91614923613699565b506040516338d52e0f60e01b81526001600160a01b039190911690602081600481855afa9081156101a8575f916149a7575b5060405192906001600160a01b031661496d846105ad565b82845260208401526001604084015282614985613737565b9061498f8261061b565b526149998161061b565b50604051926148b8846105c8565b90506020813d6020116149d9575b816149c2602093836105e3565b810103126101b3576149d390612b13565b5f614955565b3d91506149b5565b919093926149ed613777565b946149f6613777565b506149ff613699565b506040516370a0823160e01b81523360048201526001600160a01b039190911692602082602481875afa9182156101a8575f92614a7b575b5060405194614a45866105ad565b6001600160a01b0390811686521660208501525f604085015283614a67613737565b90614a718261061b565b526147868161061b565b9091506020813d602011614aa7575b81614a97602093836105e3565b810103126101b35751905f614a37565b3d9150614a8a565b929091614aba613777565b50614ac3613777565b94614acc613699565b5015614b43575b60405193614ae0856105ad565b6001600160a01b0390811685521660208401525f604084015282614b02613737565b90614b0c8261061b565b52614b168161061b565b5060405192614b24846105c8565b6001600160a01b03168352602083015260408201526001606082015292565b6040516370a0823160e01b81523360048201526020816024816001600160a01b0388165afa9081156101a8575f91614b7d575b5050614ad3565b90506020813d602011614ba7575b81614b98602093836105e3565b810103126101b357515f614b76565b3d9150614b8b565b919092614bba613777565b50614bc3613777565b93614bcc613699565b506040516370a0823160e01b81523360048201526001600160a01b03919091169290602081602481875afa9081156101a8575f91614c36575b505060405193614c14856105ad565b6001600160a01b0390811685521660208401525f604084015282614985613737565b90506020813d602011614c60575b81614c51602093836105e3565b810103126101b357515f614c05565b3d9150614c44565b9695909492939196614c786136b7565b9760038410156104b0578593600103614d4457508284614cc992614c9f83614ce598614816565b915050614cab8c61061b565b52614cb58b61061b565b506001600160a01b03858116921690614baf565b915050614cd58861063c565b52614cdf8761063c565b50614908565b915050614cf18561064c565b52614cfb8461064c565b50614d0461379b565b9360405192614d12846105c8565b6001600160a01b031683526020830152604082015260016060820152614d378361061b565b52614d418261061b565b50565b91614ce594614d83928592614d59848b614908565b915050614d658d61061b565b52614d6f8c61061b565b506001600160a01b03908116921690614baf565b915050614d8f8861063c565b52614d998761063c565b50614816565b9091614db66107e09360608452606084019061313c565b915f60208201526040818403910152612f9d565b5f80614df29260018060a01b03169360208151910182865af1614deb6130b9565b9083614e3d565b8051908115159182614e1a575b5050614e085750565b635274afe760e01b5f5260045260245ffd5b81925090602091810103126101b3576020614e3591016137db565b155f80614dff565b90614e615750805115614e5257805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580614e92575b614e72575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15614e6a56fea2646970667358221220e323e5fa26c6abf091be22f35678640537c279bbf3c0177d321594dfa3820d9b64736f6c634300081b003360c0806040523461036f576020816113eb803803809161001f8285610373565b83398101031261036f57516001600160a01b038116810361036f5760409081519161004a8184610373565b600b83526a5374616b6564205553444360a81b602084015280519161006f8284610373565b6005835264735553444360d81b602084015283516001600160401b03811161028057600354600181811c91168015610365575b602082101461026257601f8111610302575b50602094601f821160011461029f579481929394955f92610294575b50508160011b915f199060031b1c1916176003555b82516001600160401b03811161028057600454600181811c91168015610276575b602082101461026257601f81116101ff575b506020601f821160011461019c57819293945f92610191575b50508160011b915f199060031b1c1916176004555b61014f81610396565b9015610189575b60a05260805251610fa2908161044982396080518181816104eb015281816108880152610b81015260a0518161052e0152f35b506012610156565b015190505f80610131565b601f1982169060045f52805f20915f5b8181106101e7575095836001959697106101cf575b505050811b01600455610146565b01515f1960f88460031b161c191690555f80806101c1565b9192602060018192868b0151815501940192016101ac565b60045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c81019160208410610258575b601f0160051c01905b81811061024d5750610118565b5f8155600101610240565b9091508190610237565b634e487b7160e01b5f52602260045260245ffd5b90607f1690610106565b634e487b7160e01b5f52604160045260245ffd5b015190505f806100d0565b601f1982169560035f52805f20915f5b8881106102ea575083600195969798106102d2575b505050811b016003556100e5565b01515f1960f88460031b161c191690555f80806102c4565b919260206001819286850151815501940192016102af565b60035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c8101916020841061035b575b601f0160051c01905b81811061035057506100b4565b5f8155600101610343565b909150819061033a565b90607f16906100a2565b5f80fd5b601f909101601f19168101906001600160401b0382119082101761028057604052565b5f8091604051602081019063313ce56760e01b8252600481526103ba602482610373565b51916001600160a01b03165afa3d15610440573d906001600160401b03821161028057604051916103f5601f8201601f191660200184610373565b82523d5f602084013e5b80610434575b610411575b505f905f90565b60208180518101031261036f576020015160ff811161040a579060ff6001921690565b50602081511015610405565b6060906103ff56fe60806040526004361015610011575f80fd5b5f3560e01c806301e1d1141461074b57806306fdde031461069057806307a2d13a1461022e578063095ea7b3146105e85780630a28a477146105ca57806318160ddd146105ad57806323b872dd14610575578063313ce5671461051a57806338d52e0f146104d6578063402d267d146102335780634cdad506146104b85780636e553f651461048557806370a08231146101d357806394bf804d1461045257806395d89b411461034e578063a9059cbb1461031d578063b3d7f6b9146102ff578063b460af94146102a4578063ba08765214610238578063c63d75b614610233578063c6e6f5921461022e578063ce96cb771461020b578063d905777e146101d3578063dc0a9929146101b1578063dd62ed3e146101615763ef8b30f714610137575f80fd5b3461015d57602036600319011261015d576020610155600435610956565b604051908152f35b5f80fd5b3461015d57604036600319011261015d5761017a6107ac565b6101826107c2565b6001600160a01b039182165f908152600160209081526040808320949093168252928352819020549051908152f35b3461015d575f36600319011261015d57602060ff600554166040519015158152f35b3461015d57602036600319011261015d5760206101556101f16107ac565b6001600160a01b03165f9081526020819052604090205490565b3461015d57602036600319011261015d5760206101556102296107ac565b6108fd565b61078f565b6107d8565b3461015d57610246366107fd565b90916102628260018060a01b03165f525f60205260405f205490565b80821161028357508060209361027a61015593610ae0565b93849133610c31565b91632e52afbb60e21b5f5260018060a01b031660045260245260445260645ffd5b3461015d576102b2366107fd565b90916102bd826108fd565b8082116102de5750602092816102d561015593610928565b93849233610c31565b91633fa733bb60e21b5f5260018060a01b031660045260245260445260645ffd5b3461015d57602036600319011261015d576020610155600435610b0d565b3461015d57604036600319011261015d576103436103396107ac565b6024359033610a23565b602060405160018152f35b3461015d575f36600319011261015d576040515f6004548060011c90600181168015610448575b6020831081146104345782855290811561041057506001146103b2575b6103ae836103a281850382610837565b60405191829182610765565b0390f35b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b8082106103f6575090915081016020016103a2610392565b9192600181602092548385880101520191019092916103de565b60ff191660208086019190915291151560051b840190910191506103a29050610392565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610375565b3461015d57604036600319011261015d5760206004356101556104736107c2565b9161047d81610b0d565b809333610b3b565b3461015d57604036600319011261015d5760206004356101556104a66107c2565b6104af83610956565b92839133610b3b565b3461015d57602036600319011261015d576020610155600435610ae0565b3461015d575f36600319011261015d576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461015d575f36600319011261015d5760ff7f00000000000000000000000000000000000000000000000000000000000000001660ff811161056157602090604051908152f35b634e487b7160e01b5f52601160045260245ffd5b3461015d57606036600319011261015d576103436105916107ac565b6105996107c2565b604435916105a8833383610983565b610a23565b3461015d575f36600319011261015d576020600254604051908152f35b3461015d57602036600319011261015d576020610155600435610928565b3461015d57604036600319011261015d576106016107ac565b60243590331561067d576001600160a01b031690811561066a57335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b3461015d575f36600319011261015d576040515f6003548060011c90600181168015610741575b6020831081146104345782855290811561041057506001146106e3576103ae836103a281850382610837565b91905060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f905b808210610727575090915081016020016103a2610392565b91926001816020925483858801015201910190929161070f565b91607f16916106b7565b3461015d575f36600319011261015d57602061015561086d565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b3461015d57602036600319011261015d5760206040516004358152f35b600435906001600160a01b038216820361015d57565b602435906001600160a01b038216820361015d57565b3461015d57602036600319011261015d576107f16107ac565b5060206040515f198152f35b606090600319011261015d57600435906024356001600160a01b038116810361015d57906044356001600160a01b038116810361015d5790565b90601f8019910116810190811067ffffffffffffffff82111761085957604052565b634e487b7160e01b5f52604160045260245ffd5b6040516370a0823160e01b81523060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108f2575f916108c3575090565b90506020813d6020116108ea575b816108de60209383610837565b8101031261015d575190565b3d91506108d1565b6040513d5f823e3d90fd5b60018060a01b03165f525f60205261091860405f2054610ae0565b90565b9190820180921161056157565b60025490600182018092116105615761093f61086d565b600181018091116105615761091892600192610d44565b60025490600182018092116105615761096d61086d565b6001810180911161056157610918925f92610d44565b6001600160a01b039081165f81815260016020818152604080842095871684529490529290205493929184016109ba575b50505050565b828410610a0057801561067d576001600160a01b0382161561066a575f52600160205260405f209060018060a01b03165f5260205260405f20910390555f8080806109b4565b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b0316908115610acd576001600160a01b0316918215610aba57815f525f60205260405f2054818110610aa157817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b63ec442f0560e01b5f525f60045260245ffd5b634b637e8f60e11b5f525f60045260245ffd5b610ae861086d565b9060018201809211610561576002546001810180911161056157610918925f92610d44565b610b1561086d565b906001820180921161056157600254600181018091116105615761091892600192610d44565b6040516323b872dd60e01b60208201526001600160a01b039091166024820181905230604483015260648083018590528252929190610ba590610b7f608482610837565b7f0000000000000000000000000000000000000000000000000000000000000000610e5b565b6001600160a01b0316928315610aba577fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d79181610be660409360025461091b565b600255855f525f602052825f20818154019055855f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60208651858152a382519182526020820152a3565b6001600160a01b03808416959294908216939092918290878603610d33575b5050508415610acd57845f525f60205260405f2054818110610d1a5791816040927ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db94885f525f60205203835f205580600254036002555f877fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60208651858152a3825163a9059cbb60e01b60208201526001600160a01b03909616602487018190526044808801849052875295610d0d90610b7f606482610837565b82519182526020820152a4565b8563391434e360e21b5f5260045260245260445260645ffd5b610d3c92610983565b5f8181610c50565b9291610d51818386610db6565b926004811015610da2576001809116149182610d77575b5050610918925015159061091b565b9080925015610d8e57610918930915155f80610d68565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b91818302915f1981850993838086109503948086039514610e4d5784831115610e2e5790829109815f0382168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b82610e465760125b634e487b715f526020526024601cfd5b6011610e36565b505080925015610d8e570490565b81516001600160a01b03909116915f91829160200182855af13d15610f02573d67ffffffffffffffff811161085957610eb69160405191610ea66020601f19601f8401160184610837565b82523d5f602084013e5b83610f0e565b8051908115159182610ede575b5050610ecc5750565b635274afe760e01b5f5260045260245ffd5b819250906020918101031261015d576020015180159081150361015d575f80610ec3565b610eb690606090610eb0565b90610f325750805115610f2357805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580610f63575b610f43575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15610f3b56fea264697066735822122030e578a6ab691e6efcf0de3f1efc050cfdb95d2181c5a43a9ea8a724a0678a6f64736f6c634300081b003360c08060405234610371576020816113ed803803809161001f8285610375565b83398101031261037157516001600160a01b03811681036103715760409081519161004a8184610375565b600c83526b0a6e8c2d6cac8408e9e8aa8960a31b60208401528051916100708284610375565b60068352650e68e9e8aa8960d31b602084015283516001600160401b03811161028257600354600181811c91168015610367575b602082101461026457601f8111610304575b50602094601f82116001146102a1579481929394955f92610296575b50508160011b915f199060031b1c1916176003555b82516001600160401b03811161028257600454600181811c91168015610278575b602082101461026457601f8111610201575b506020601f821160011461019e57819293945f92610193575b50508160011b915f199060031b1c1916176004555b61015181610398565b901561018b575b60a05260805251610fa2908161044b82396080518181816104eb015281816108880152610b81015260a0518161052e0152f35b506012610158565b015190505f80610133565b601f1982169060045f52805f20915f5b8181106101e9575095836001959697106101d1575b505050811b01600455610148565b01515f1960f88460031b161c191690555f80806101c3565b9192602060018192868b0151815501940192016101ae565b60045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c8101916020841061025a575b601f0160051c01905b81811061024f575061011a565b5f8155600101610242565b9091508190610239565b634e487b7160e01b5f52602260045260245ffd5b90607f1690610108565b634e487b7160e01b5f52604160045260245ffd5b015190505f806100d2565b601f1982169560035f52805f20915f5b8881106102ec575083600195969798106102d4575b505050811b016003556100e7565b01515f1960f88460031b161c191690555f80806102c6565b919260206001819286850151815501940192016102b1565b60035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c8101916020841061035d575b601f0160051c01905b81811061035257506100b6565b5f8155600101610345565b909150819061033c565b90607f16906100a4565b5f80fd5b601f909101601f19168101906001600160401b0382119082101761028257604052565b5f8091604051602081019063313ce56760e01b8252600481526103bc602482610375565b51916001600160a01b03165afa3d15610442573d906001600160401b03821161028257604051916103f7601f8201601f191660200184610375565b82523d5f602084013e5b80610436575b610413575b505f905f90565b602081805181010312610371576020015160ff811161040c579060ff6001921690565b50602081511015610407565b60609061040156fe60806040526004361015610011575f80fd5b5f3560e01c806301e1d1141461074b57806306fdde031461069057806307a2d13a1461022e578063095ea7b3146105e85780630a28a477146105ca57806318160ddd146105ad57806323b872dd14610575578063313ce5671461051a57806338d52e0f146104d6578063402d267d146102335780634cdad506146104b85780636e553f651461048557806370a08231146101d357806394bf804d1461045257806395d89b411461034e578063a9059cbb1461031d578063b3d7f6b9146102ff578063b460af94146102a4578063ba08765214610238578063c63d75b614610233578063c6e6f5921461022e578063ce96cb771461020b578063d905777e146101d3578063dc0a9929146101b1578063dd62ed3e146101615763ef8b30f714610137575f80fd5b3461015d57602036600319011261015d576020610155600435610956565b604051908152f35b5f80fd5b3461015d57604036600319011261015d5761017a6107ac565b6101826107c2565b6001600160a01b039182165f908152600160209081526040808320949093168252928352819020549051908152f35b3461015d575f36600319011261015d57602060ff600554166040519015158152f35b3461015d57602036600319011261015d5760206101556101f16107ac565b6001600160a01b03165f9081526020819052604090205490565b3461015d57602036600319011261015d5760206101556102296107ac565b6108fd565b61078f565b6107d8565b3461015d57610246366107fd565b90916102628260018060a01b03165f525f60205260405f205490565b80821161028357508060209361027a61015593610ae0565b93849133610c31565b91632e52afbb60e21b5f5260018060a01b031660045260245260445260645ffd5b3461015d576102b2366107fd565b90916102bd826108fd565b8082116102de5750602092816102d561015593610928565b93849233610c31565b91633fa733bb60e21b5f5260018060a01b031660045260245260445260645ffd5b3461015d57602036600319011261015d576020610155600435610b0d565b3461015d57604036600319011261015d576103436103396107ac565b6024359033610a23565b602060405160018152f35b3461015d575f36600319011261015d576040515f6004548060011c90600181168015610448575b6020831081146104345782855290811561041057506001146103b2575b6103ae836103a281850382610837565b60405191829182610765565b0390f35b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b8082106103f6575090915081016020016103a2610392565b9192600181602092548385880101520191019092916103de565b60ff191660208086019190915291151560051b840190910191506103a29050610392565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610375565b3461015d57604036600319011261015d5760206004356101556104736107c2565b9161047d81610b0d565b809333610b3b565b3461015d57604036600319011261015d5760206004356101556104a66107c2565b6104af83610956565b92839133610b3b565b3461015d57602036600319011261015d576020610155600435610ae0565b3461015d575f36600319011261015d576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461015d575f36600319011261015d5760ff7f00000000000000000000000000000000000000000000000000000000000000001660ff811161056157602090604051908152f35b634e487b7160e01b5f52601160045260245ffd5b3461015d57606036600319011261015d576103436105916107ac565b6105996107c2565b604435916105a8833383610983565b610a23565b3461015d575f36600319011261015d576020600254604051908152f35b3461015d57602036600319011261015d576020610155600435610928565b3461015d57604036600319011261015d576106016107ac565b60243590331561067d576001600160a01b031690811561066a57335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b3461015d575f36600319011261015d576040515f6003548060011c90600181168015610741575b6020831081146104345782855290811561041057506001146106e3576103ae836103a281850382610837565b91905060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f905b808210610727575090915081016020016103a2610392565b91926001816020925483858801015201910190929161070f565b91607f16916106b7565b3461015d575f36600319011261015d57602061015561086d565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b3461015d57602036600319011261015d5760206040516004358152f35b600435906001600160a01b038216820361015d57565b602435906001600160a01b038216820361015d57565b3461015d57602036600319011261015d576107f16107ac565b5060206040515f198152f35b606090600319011261015d57600435906024356001600160a01b038116810361015d57906044356001600160a01b038116810361015d5790565b90601f8019910116810190811067ffffffffffffffff82111761085957604052565b634e487b7160e01b5f52604160045260245ffd5b6040516370a0823160e01b81523060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108f2575f916108c3575090565b90506020813d6020116108ea575b816108de60209383610837565b8101031261015d575190565b3d91506108d1565b6040513d5f823e3d90fd5b60018060a01b03165f525f60205261091860405f2054610ae0565b90565b9190820180921161056157565b60025490600182018092116105615761093f61086d565b600181018091116105615761091892600192610d44565b60025490600182018092116105615761096d61086d565b6001810180911161056157610918925f92610d44565b6001600160a01b039081165f81815260016020818152604080842095871684529490529290205493929184016109ba575b50505050565b828410610a0057801561067d576001600160a01b0382161561066a575f52600160205260405f209060018060a01b03165f5260205260405f20910390555f8080806109b4565b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b0316908115610acd576001600160a01b0316918215610aba57815f525f60205260405f2054818110610aa157817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b63ec442f0560e01b5f525f60045260245ffd5b634b637e8f60e11b5f525f60045260245ffd5b610ae861086d565b9060018201809211610561576002546001810180911161056157610918925f92610d44565b610b1561086d565b906001820180921161056157600254600181018091116105615761091892600192610d44565b6040516323b872dd60e01b60208201526001600160a01b039091166024820181905230604483015260648083018590528252929190610ba590610b7f608482610837565b7f0000000000000000000000000000000000000000000000000000000000000000610e5b565b6001600160a01b0316928315610aba577fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d79181610be660409360025461091b565b600255855f525f602052825f20818154019055855f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60208651858152a382519182526020820152a3565b6001600160a01b03808416959294908216939092918290878603610d33575b5050508415610acd57845f525f60205260405f2054818110610d1a5791816040927ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db94885f525f60205203835f205580600254036002555f877fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60208651858152a3825163a9059cbb60e01b60208201526001600160a01b03909616602487018190526044808801849052875295610d0d90610b7f606482610837565b82519182526020820152a4565b8563391434e360e21b5f5260045260245260445260645ffd5b610d3c92610983565b5f8181610c50565b9291610d51818386610db6565b926004811015610da2576001809116149182610d77575b5050610918925015159061091b565b9080925015610d8e57610918930915155f80610d68565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b91818302915f1981850993838086109503948086039514610e4d5784831115610e2e5790829109815f0382168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b82610e465760125b634e487b715f526020526024601cfd5b6011610e36565b505080925015610d8e570490565b81516001600160a01b03909116915f91829160200182855af13d15610f02573d67ffffffffffffffff811161085957610eb69160405191610ea66020601f19601f8401160184610837565b82523d5f602084013e5b83610f0e565b8051908115159182610ede575b5050610ecc5750565b635274afe760e01b5f5260045260245ffd5b819250906020918101031261015d576020015180159081150361015d575f80610ec3565b610eb690606090610eb0565b90610f325750805115610f2357805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580610f63575b610f43575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15610f3b56fea2646970667358221220f270e5db4714581ca643030a27a939347bb30d1896f3ece686528fa2decf041d64736f6c634300081b003360c0806040523461036f576020816113eb803803809161001f8285610373565b83398101031261036f57516001600160a01b038116810361036f5760409081519161004a8184610373565b600b83526a0a6e8c2d6cac8408aa890f60ab1b602084015280519161006f8284610373565b60058352640e68aa890f60db1b602084015283516001600160401b03811161028057600354600181811c91168015610365575b602082101461026257601f8111610302575b50602094601f821160011461029f579481929394955f92610294575b50508160011b915f199060031b1c1916176003555b82516001600160401b03811161028057600454600181811c91168015610276575b602082101461026257601f81116101ff575b506020601f821160011461019c57819293945f92610191575b50508160011b915f199060031b1c1916176004555b61014f81610396565b9015610189575b60a05260805251610fa2908161044982396080518181816104eb015281816108880152610b81015260a0518161052e0152f35b506012610156565b015190505f80610131565b601f1982169060045f52805f20915f5b8181106101e7575095836001959697106101cf575b505050811b01600455610146565b01515f1960f88460031b161c191690555f80806101c1565b9192602060018192868b0151815501940192016101ac565b60045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c81019160208410610258575b601f0160051c01905b81811061024d5750610118565b5f8155600101610240565b9091508190610237565b634e487b7160e01b5f52602260045260245ffd5b90607f1690610106565b634e487b7160e01b5f52604160045260245ffd5b015190505f806100d0565b601f1982169560035f52805f20915f5b8881106102ea575083600195969798106102d2575b505050811b016003556100e5565b01515f1960f88460031b161c191690555f80806102c4565b919260206001819286850151815501940192016102af565b60035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c8101916020841061035b575b601f0160051c01905b81811061035057506100b4565b5f8155600101610343565b909150819061033a565b90607f16906100a2565b5f80fd5b601f909101601f19168101906001600160401b0382119082101761028057604052565b5f8091604051602081019063313ce56760e01b8252600481526103ba602482610373565b51916001600160a01b03165afa3d15610440573d906001600160401b03821161028057604051916103f5601f8201601f191660200184610373565b82523d5f602084013e5b80610434575b610411575b505f905f90565b60208180518101031261036f576020015160ff811161040a579060ff6001921690565b50602081511015610405565b6060906103ff56fe60806040526004361015610011575f80fd5b5f3560e01c806301e1d1141461074b57806306fdde031461069057806307a2d13a1461022e578063095ea7b3146105e85780630a28a477146105ca57806318160ddd146105ad57806323b872dd14610575578063313ce5671461051a57806338d52e0f146104d6578063402d267d146102335780634cdad506146104b85780636e553f651461048557806370a08231146101d357806394bf804d1461045257806395d89b411461034e578063a9059cbb1461031d578063b3d7f6b9146102ff578063b460af94146102a4578063ba08765214610238578063c63d75b614610233578063c6e6f5921461022e578063ce96cb771461020b578063d905777e146101d3578063dc0a9929146101b1578063dd62ed3e146101615763ef8b30f714610137575f80fd5b3461015d57602036600319011261015d576020610155600435610956565b604051908152f35b5f80fd5b3461015d57604036600319011261015d5761017a6107ac565b6101826107c2565b6001600160a01b039182165f908152600160209081526040808320949093168252928352819020549051908152f35b3461015d575f36600319011261015d57602060ff600554166040519015158152f35b3461015d57602036600319011261015d5760206101556101f16107ac565b6001600160a01b03165f9081526020819052604090205490565b3461015d57602036600319011261015d5760206101556102296107ac565b6108fd565b61078f565b6107d8565b3461015d57610246366107fd565b90916102628260018060a01b03165f525f60205260405f205490565b80821161028357508060209361027a61015593610ae0565b93849133610c31565b91632e52afbb60e21b5f5260018060a01b031660045260245260445260645ffd5b3461015d576102b2366107fd565b90916102bd826108fd565b8082116102de5750602092816102d561015593610928565b93849233610c31565b91633fa733bb60e21b5f5260018060a01b031660045260245260445260645ffd5b3461015d57602036600319011261015d576020610155600435610b0d565b3461015d57604036600319011261015d576103436103396107ac565b6024359033610a23565b602060405160018152f35b3461015d575f36600319011261015d576040515f6004548060011c90600181168015610448575b6020831081146104345782855290811561041057506001146103b2575b6103ae836103a281850382610837565b60405191829182610765565b0390f35b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b8082106103f6575090915081016020016103a2610392565b9192600181602092548385880101520191019092916103de565b60ff191660208086019190915291151560051b840190910191506103a29050610392565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610375565b3461015d57604036600319011261015d5760206004356101556104736107c2565b9161047d81610b0d565b809333610b3b565b3461015d57604036600319011261015d5760206004356101556104a66107c2565b6104af83610956565b92839133610b3b565b3461015d57602036600319011261015d576020610155600435610ae0565b3461015d575f36600319011261015d576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461015d575f36600319011261015d5760ff7f00000000000000000000000000000000000000000000000000000000000000001660ff811161056157602090604051908152f35b634e487b7160e01b5f52601160045260245ffd5b3461015d57606036600319011261015d576103436105916107ac565b6105996107c2565b604435916105a8833383610983565b610a23565b3461015d575f36600319011261015d576020600254604051908152f35b3461015d57602036600319011261015d576020610155600435610928565b3461015d57604036600319011261015d576106016107ac565b60243590331561067d576001600160a01b031690811561066a57335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b3461015d575f36600319011261015d576040515f6003548060011c90600181168015610741575b6020831081146104345782855290811561041057506001146106e3576103ae836103a281850382610837565b91905060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f905b808210610727575090915081016020016103a2610392565b91926001816020925483858801015201910190929161070f565b91607f16916106b7565b3461015d575f36600319011261015d57602061015561086d565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b3461015d57602036600319011261015d5760206040516004358152f35b600435906001600160a01b038216820361015d57565b602435906001600160a01b038216820361015d57565b3461015d57602036600319011261015d576107f16107ac565b5060206040515f198152f35b606090600319011261015d57600435906024356001600160a01b038116810361015d57906044356001600160a01b038116810361015d5790565b90601f8019910116810190811067ffffffffffffffff82111761085957604052565b634e487b7160e01b5f52604160045260245ffd5b6040516370a0823160e01b81523060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108f2575f916108c3575090565b90506020813d6020116108ea575b816108de60209383610837565b8101031261015d575190565b3d91506108d1565b6040513d5f823e3d90fd5b60018060a01b03165f525f60205261091860405f2054610ae0565b90565b9190820180921161056157565b60025490600182018092116105615761093f61086d565b600181018091116105615761091892600192610d44565b60025490600182018092116105615761096d61086d565b6001810180911161056157610918925f92610d44565b6001600160a01b039081165f81815260016020818152604080842095871684529490529290205493929184016109ba575b50505050565b828410610a0057801561067d576001600160a01b0382161561066a575f52600160205260405f209060018060a01b03165f5260205260405f20910390555f8080806109b4565b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b0316908115610acd576001600160a01b0316918215610aba57815f525f60205260405f2054818110610aa157817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b63ec442f0560e01b5f525f60045260245ffd5b634b637e8f60e11b5f525f60045260245ffd5b610ae861086d565b9060018201809211610561576002546001810180911161056157610918925f92610d44565b610b1561086d565b906001820180921161056157600254600181018091116105615761091892600192610d44565b6040516323b872dd60e01b60208201526001600160a01b039091166024820181905230604483015260648083018590528252929190610ba590610b7f608482610837565b7f0000000000000000000000000000000000000000000000000000000000000000610e5b565b6001600160a01b0316928315610aba577fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d79181610be660409360025461091b565b600255855f525f602052825f20818154019055855f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60208651858152a382519182526020820152a3565b6001600160a01b03808416959294908216939092918290878603610d33575b5050508415610acd57845f525f60205260405f2054818110610d1a5791816040927ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db94885f525f60205203835f205580600254036002555f877fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60208651858152a3825163a9059cbb60e01b60208201526001600160a01b03909616602487018190526044808801849052875295610d0d90610b7f606482610837565b82519182526020820152a4565b8563391434e360e21b5f5260045260245260445260645ffd5b610d3c92610983565b5f8181610c50565b9291610d51818386610db6565b926004811015610da2576001809116149182610d77575b5050610918925015159061091b565b9080925015610d8e57610918930915155f80610d68565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b91818302915f1981850993838086109503948086039514610e4d5784831115610e2e5790829109815f0382168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b82610e465760125b634e487b715f526020526024601cfd5b6011610e36565b505080925015610d8e570490565b81516001600160a01b03909116915f91829160200182855af13d15610f02573d67ffffffffffffffff811161085957610eb69160405191610ea66020601f19601f8401160184610837565b82523d5f602084013e5b83610f0e565b8051908115159182610ede575b5050610ecc5750565b635274afe760e01b5f5260045260245ffd5b819250906020918101031261015d576020015180159081150361015d575f80610ec3565b610eb690606090610eb0565b90610f325750805115610f2357805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580610f63575b610f43575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15610f3b56fea2646970667358221220b086c5fd69f84195c720e651bd0c3fdfe94026eb8e5f77216c898ab4d4455cb664736f6c634300081b00336b656420736c6f742e2057652063616e2774206669742076616c7565206772650000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000440017a1b021006d556d7fc06a54c32e42eb745b4ab7ab316d43345009b2140e0580b072eec7df16000000000000000000000000000000000000000000000000775f661b0bd1739349b9a2a3ef60be277c5d2d29c4ce391d82d164c166df9c8336ddf84206b2f812000000000000000000000000000000000000000000000000a35b1b31ce002fbf2058d22f30f95d405200a15b0000000000000000000000000fe906e030a44ef24ca8c7dc7b7c53a6c4f00ce9000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000bfc9d54fc184518a81162f8fb99c2eaca081202f91c11ba4220b7a72e1dc5e92f2b48d3fdf6272600000000000000000000000073746453746f726167652066696e642853746453746f72616765293a20506163a264697066735822122042e76fa1080ae84cb7f9f10596b258c5e516e57219c6f06fae0ff1080187545064736f6c634300081b0033a03837a25210ee280c2113ff4b77ca23440b19d4866cca721c801278fd08d807","sourceMap":"632:46320:68:-:0;;;;;;;;;:::i;:::-;-1:-1:-1;632:46320:68;;;;;:::i;:::-;-1:-1:-1;632:46320:68;;3166:4:2;632:46320:68;;3166:4:2;632:46320:68;;;3166:4:2;632:46320:68;3166:4:2;632:46320:68;;1038:4:12;632:46320:68;;;1038:4:12;632:46320:68;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;632:46320:68;;;;;;;;;:::i;:::-;564:29:65;632:46320:68;;-1:-1:-1;;;632:46320:68;;;;;564:29:65;;632:46320:68;;;;:::i;:::-;;;;-1:-1:-1;;;632:46320:68;;;;;564:29:65;;632:46320:68;;;;:::i;:::-;564:29:65;632:46320:68;;-1:-1:-1;;;632:46320:68;;;;564:29:65;;;632:46320:68;;;564:29:65;632:46320:68;;;564:29:65;632:46320:68;;;-1:-1:-1;;632:46320:68;;;;;-1:-1:-1;;;;;;;;;;;632:46320:68;;564:29:65;632:46320:68;;;;-1:-1:-1;;632:46320:68;;;-1:-1:-1;;;;;;632:46320:68;;;;;1667:13:28;632:46320:68;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1667:13:28;632:46320:68;;;;-1:-1:-1;;;;;632:46320:68;;;;;1690:17:28;632:46320:68;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1690:17:28;632:46320:68;;923:56;632:46320;;-1:-1:-1;;;;;;632:46320:68;936:42;632:46320;;;;;;;;;;;;;;;;-1:-1:-1;632:46320:68;;;;;;;;;;1690:17:28;632:46320:68;;;;;;;;;;;;;;;3166:4:2;632:46320:68;;;;;;;;;;;1690:17:28;632:46320:68;;;;;;;;;;;;;;;;;;;;;;;;;;;3166:4:2;632:46320:68;;;;;;;;;;;;;;;;1690:17:28;632:46320:68;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;632:46320:68;;;;;;;;;;;564:29:65;632:46320:68;1690:17:28;632:46320:68;;;;;;;;1667:13:28;632:46320:68;;;;;;;;;;;;;;;3166:4:2;632:46320:68;;;;;;;;;;;;1667:13:28;632:46320:68;;;;;;;;;;;;;;;;;;;;;;;;;;;3166:4:2;632:46320:68;;;;;;;;;;;;;;;;1667:13:28;632:46320:68;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;632:46320:68;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;3166:4:2;632:46320:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3166:4:2;632:46320:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3166:4:2;632:46320:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;;;;;;;632:46320:68;;;;;;;;;;;;;;3166:4:2;632:46320:68;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:46320:68;;;-1:-1:-1;;;;;632:46320:68;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x61016080604052600436101562000014575f80fd5b5f905f3560e01c90816306fdde03146200e61c5750806308c41745146200e5db578063095ea7b3146200e52d5780630a9254e4146200b3585780630bdca2c1146200aa3b5780630eed78c4146200a76257806318160ddd146200a7425780631e1685c0146200a7175780631ed7831c146200a69257806323b872dd146200a5a25780632ade3880146200a41c578063313ce567146200a3fe578063325a4265146200a2595780633e5e3c23146200a1d45780633f7286f4146200a14f5780633fbb8b681462009f5157806342f331481462009cfa5780634964eb1a14620092895780634c6b2e7e146200925e5780635090a8ce1462008f8557806356733b9114620087515780636181917e1462007ccb57806366d9a9a01462007b0557806367b4dbe714620071a457806370a082311462007168578063790a2a0b1462006e8f57806385226c811462006de85780638c15484614620063bb578063916a17c6146200610f57806395d89b41146200603157806396a2fce61462005d585780639a8ebd3614620052e35780639e8518b314620048b6578063a00872f1146200483f578063a9059cbb1462004807578063b5508aa91462004758578063ba414fa6146200472f578063c102053a14620044c3578063c700ea2e14620041ea578063cf18b43d1462003f11578063d170c3cc1462003c15578063d32913cc14620031d8578063d3a14f16146200291c578063d46cbfcd14620026c5578063d7ffd44d1462001c60578063d85792281462001c35578063dd62ed3e1462001bdc578063e198fb1814620008fc578063e20c9f711462000866578063f08985501462000560578063f3869e2414620002b75763fa7626d41462000290575f80fd5b34620002b45780600319360112620002b457602060ff601e54166040519015158152f35b80fd5b5034620002b4576020366003190112620002b45760295460275460255460405163549387df60e11b81525f5160206201b2605f395f51905f526004808301919091526001600160a01b03948516602483018190529385166044830181905290359594909392859183916064918391165afa9081156200051857906200034591859162000539575b506200eccd565b5184108062000527575b5f5160206201b1205f395f51905f523b156200052357604051632631f2b160e11b8152901515600482015283816024815f5160206201b1205f395f51905f525afa80156200051857908491620004fb575b50909391604094855193620003b687866200e74e565b600185526020850190601f198801368337620003d2866200eccd565b52620003dd6200f38e565b602554875163155adc9160e31b81525f5160206201b2605f395f51905f5260048201526024810193909352604483019390935260806064830152935160848201819052909384926001600160a01b03169160a484019190855b818110620004de5750505083838281935003925af1928315620004d357508192620004aa575b50805b8251811015620004a65780620004846200047c600193866200ecec565b51516200f3e3565b6200049f60206200049683876200ecec565b5101516200f3e3565b016200045f565b5080f35b620004cb9192503d8084833e620004c281836200e74e565b8101906200eda6565b905f6200045c565b51913d9150823e3d90fd5b825184528896508795506020938401939092019160010162000436565b8162000507916200e74e565b6200051457825f620003a0565b8280fd5b6040513d86823e3d90fd5b8380fd5b5067016345785d8a000084116200034f565b6200055991503d8087833e6200055081836200e74e565b8101906200ec4a565b5f6200033e565b5034620002b4576020366003190112620002b45760255460405163549387df60e11b81525f5160206201b1c05f395f51905f526004828101919091525f5160206201b1405f395f51905f526024830152737f39c581f595b53c5cb19bd0b3f8da6c935e2ca060448301523592918290829060649082906001600160a01b03165afa9081156200081557829162000848575b5062000607620006006200f047565b916200eccd565b5183105f5160206201b1205f395f51905f523b15620005145760405190632631f2b160e11b8252600482015282816024815f5160206201b1205f395f51905f525afa80156200083d5790839162000824575b50505f5160206201b1205f395f51905f523b156200082057604051632631f2b160e11b8152908311600482015281816024815f5160206201b1205f395f51905f525afa80156200081557908291620007fc575b5050604091818351620006c085826200e74e565b600181526020810192601f198601368537620006dc826200eccd565b52620006e76200f38e565b602554855163155adc9160e31b81525f5160206201b1c05f395f51905f5260048201525f5160206201b1405f395f51905f526024820152737f39c581f595b53c5cb19bd0b3f8da6c935e2ca0604482015260806064820152915160848301819052919384926001600160a01b039092169160a484019190855b818110620007df5750505083838281935003925af1928315620004d357508192620007bf575b50805b8251811015620004a65780620007a66200047c600193866200ecec565b620007b860206200049683876200ecec565b0162000789565b620007d79192503d8084833e620004c281836200e74e565b905f62000786565b825184528896508795506020938401939092019160010162000760565b8162000808916200e74e565b620002b457805f620006ac565b6040513d84823e3d90fd5b5080fd5b8162000830916200e74e565b6200082057815f62000659565b6040513d85823e3d90fd5b6200085f91503d8084833e6200055081836200e74e565b5f620005f1565b5034620002b45780600319360112620002b45760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b818110620008dc57620008d885620008cb818703826200e74e565b604051918291826200e7bf565b0390f35b82546001600160a01b0316845260209093019260019283019201620008b0565b5034620002b4576200090e366200e79e565b60295460275460255460405163549387df60e11b81525f5160206201b2605f395f51905f5260048201526001600160a01b03938416602482018190529284166044820181905295929492938792839183916064918391165afa9081156200081557829162001bbe575b50821562001bb6576001925b15620018365762000994906200ecdb565b5183108062001824575b5f5160206201b1205f395f51905f523b156200082057604051632631f2b160e11b8152901515600482015281816024815f5160206201b1205f395f51905f525afa8015620008155762001807575b508060405160208101906370a0823160e01b82523060248201526024815262000a176044826200e74e565b5190865afa5062000a3b62000a2b62010eea565b602080825183010191016200eb28565b50601180546001600160a01b0319166001600160a01b0385161790556370a0823163ffffffff19600f541617600f55600e54600160401b811015620016565762000a9081600162000aa99301600e556200e912565b919091309083549060031b91821b915f19901b19161790565b905560018060a01b0360115416600f5460e01b6010549062000aca620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818a5260205260408920604051602081019062000b208162000b11888886620113bc565b03601f1981018352826200e74e565b5190208a5260205260ff600360408b2001541615620017f6575b6001600160a01b0384165f908152600d6020526040902090895260205262000b1162000b7660408a2093604051928391602083019586620113bc565b5190208752602052856040812091600183015492600281015462000b9b81866200eb70565b620016cf578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f5160206201b1205f395f51905f525afa9687156200133857869762001690575b506001908201610100031b5f1901811b1986165f5160206201b1205f395f51905f523b15620014a8576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528381606481835f5160206201b1205f395f51905f525af19081156200051857849162001677575b505062000c7b620115b6565b90159081156200166a575b5062001399575050505062000c9a6201218f565b848060405160208101906370a0823160e01b82523060248201526024815262000cc56044826200e74e565b5190865afa5062000cd962000a2b62010eea565b50601180546001600160a01b0319166001600160a01b0385161790556370a0823163ffffffff19600f541617600f55600e54600160401b811015620016565762000a9081600162000d2e9301600e556200e912565b905560018060a01b0360115416600f5460e01b6010549062000d4f620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818a5260205260408920604051602081019062000d968162000b11888886620113bc565b5190208a5260205260ff600360408b200154161562001645575b6001600160a01b0384165f908152600d6020526040902090895260205262000b1162000dec60408a2093604051928391602083019586620113bc565b5190208752602052856040812091600183015492600281015462000e1181866200eb70565b620014eb575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f5160206201b1205f395f51905f525afa96871562001338578697620014ac575b506001908201610100031b5f1901811b198616915f5160206201b1205f395f51905f523b15620014a8576040516370ca10bb60e01b81526001600160a01b038616600482015260248101919091529088901b9190911760448201528381606481835f5160206201b1205f395f51905f525af1908115620005185784916200148f575b50508562000ef6620115b6565b91901591821562001483575b505062001399575050505062000f176201218f565b60405163095ea7b360e01b81523060048201525f19602482015260208160448189885af18015620013385762001377575b5060255460405163095ea7b360e01b81526001600160a01b0390911660048201525f19602482015260208160448189885af18015620013385762001343575b506040516370a0823160e01b815230600482015293602085602481875afa94851562001338578695620012fe575b506040516370a0823160e01b815230600482015290602082602481845afa91821562001163578792620012c4575b50602554604051638307c65560e01b81525f5160206201b2605f395f51905f526004820152602481018790526044810183905293906001600160a01b03166002821015620012b0578460a4818b6080948660648401528a60848401525af1938415620012a55788946200126a575b506001036200116e576020602491604051928380926370a0823160e01b82523060048301525afa9081156200116357879162001124575b506024936200109f60209493620010a6936200ed98565b906200f32c565b5192604051928380926370a0823160e01b82523060048301525afa90811562000518578491620010e5575b506200109f90620010e2936200ed98565b80f35b90506020813d6020116200111b575b8162001103602093836200e74e565b81010312620011175751620010e2620010d1565b5f80fd5b3d9150620010f4565b929190506020833d6020116200115a575b8162001144602093836200e74e565b8101031262001117579151909190602462001088565b3d915062001135565b6040513d89823e3d90fd5b9394602060249296604051938480926370a0823160e01b82523060048301525afa918215620011635787926200122d575b506024936200109f60209493620011b6936200ed98565b5192604051928380926370a0823160e01b82523060048301525afa90811562000518578491620011f2575b50620010e2926200109f916200ed98565b90506020813d60201162001224575b8162001210602093836200e74e565b81010312620011175751620010e2620011e1565b3d915062001201565b9291506020833d60201162001261575b816200124c602093836200e74e565b8101031262001117579151909160246200119f565b3d91506200123d565b6001919450620012959060803d6080116200129d575b6200128c81836200e74e565b8101906200ed2c565b939062001051565b503d62001280565b6040513d8a823e3d90fd5b634e487b7160e01b89526021600452602489fd5b9091506020813d602011620012f5575b81620012e3602093836200e74e565b81010312620011175751905f62000fe3565b3d9150620012d4565b9094506020813d6020116200132f575b816200131d602093836200e74e565b81010312620011175751935f62000fb5565b3d91506200130e565b6040513d88823e3d90fd5b620013699060203d6020116200136f575b6200136081836200e74e565b8101906200eb56565b62000f87565b503d62001354565b620013939060203d6020116200136f576200136081836200e74e565b62000f48565b82945054905f5160206201b1205f395f51905f523b1562000514576040516370ca10bb60e01b81526001600160a01b039091166004820152602481019190915260448101929092528180606481015b0381835f5160206201b1205f395f51905f525af1801562000815576200146a575b60405162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b620014778280926200e74e565b620002b4578062001409565b14159050865f62000f02565b816200149b916200e74e565b6200051457825f62000ee9565b8580fd5b955095506020853d602011620014e2575b81620014cc602093836200e74e565b8101031262001117579351948a94908162000e67565b3d9150620014bd565b90919250620014fb81856200eb70565b610100036101008111620016315760ff8111620016315760405163348051d760e11b8152600190911b600482018190528a826024815f5160206201b1205f395f51905f525afa918b83156200162557602093620015c09282606a9392620015fd575b90506040519586925f5160206201b2805f395f51905f52828501525f5160206201b1005f395f51905f52604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f1981018452836200e74e565b871015620015d357509088929162000e17565b60405162461bcd60e51b815260206004820152908190620015f99060248301906200e6f2565b0390fd5b6200161d92503d8091833e6200161481836200e74e565b8101906200eabe565b5f8e6200155d565b604051903d90823e3d90fd5b634e487b7160e01b8a52601160045260248afd5b6200164f6201185a565b5062000db0565b634e487b7160e01b86526041600452602486fd5b5f19141590505f62000c86565b8162001683916200e74e565b6200051457825f62000c6f565b955095506020853d602011620016c6575b81620016b0602093836200e74e565b8101031262001117579351948a94908162000bf0565b3d9150620016a1565b620016dc8491866200eb70565b610100036101008111620017e25760ff8111620017e25760405163348051d760e11b8152600190911b600482015281816024815f5160206201b1205f395f51905f525afa9081156200081557606a60209284620017a193620015f99692620017c2575b506040519485925f5160206201b2805f395f51905f52828501525f5160206201b1005f395f51905f52604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f1981018352826200e74e565b60405162461bcd60e51b81526020600482015291829160248301906200e6f2565b620017da9192503d8084833e6200161481836200e74e565b90866200173f565b634e487b7160e01b82526011600452602482fd5b620018006201185a565b5062000b3a565b8162001813916200e74e565b6200182057845f620009ec565b8480fd5b5067016345785d8a000083116200099e565b62001841906200eccd565b5183108062001ba4575b5f5160206201b1205f395f51905f523b156200082057604051632631f2b160e11b8152901515600482015281816024815f5160206201b1205f395f51905f525afa8015620008155762001b8b575b508060405160208101906370a0823160e01b825230602482015260248152620018c46044826200e74e565b5190865afa50620018d862000a2b62010eea565b50601180546001600160a01b0319166001600160a01b0385161790556370a0823163ffffffff19600f541617600f55600e54600160401b811015620016565762000a908160016200192d9301600e556200e912565b905560018060a01b0360115416600f5460e01b601054906200194e620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818a52602052604089206040516020810190620019958162000b11888886620113bc565b5190208a5260205260ff600360408b200154161562001b7a575b6001600160a01b0384165f908152600d6020526040902090895260205262000b11620019eb60408a2093604051928391602083019586620113bc565b5190208752602052856040812091600183015492600281015462001a1081866200eb70565b620016cf578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f5160206201b1205f395f51905f525afa9687156200133857869762001b3b575b506001908201610100031b5f1901811b1986165f5160206201b1205f395f51905f523b15620014a8576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528381606481835f5160206201b1205f395f51905f525af19081156200051857849162001b22575b505062001af0620115b6565b901590811562001b15575b5062001399575050505062001b0f6201218f565b62000c9a565b5f19141590505f62001afb565b8162001b2e916200e74e565b6200051457825f62001ae4565b955095506020853d60201162001b71575b8162001b5b602093836200e74e565b8101031262001117579351948a94908162001a65565b3d915062001b4c565b62001b846201185a565b50620019af565b8162001b97916200e74e565b6200182057845f62001899565b5067016345785d8a000083116200184b565b819262000983565b62001bd591503d8084833e6200055081836200e74e565b5f62000977565b5034620002b4576040366003190112620002b457604062001bfc6200e770565b9162001c076200e787565b9260018060a01b031681526021602052209060018060a01b03165f52602052602060405f2054604051908152f35b5034620002b45780600319360112620002b4576027546040516001600160a01b039091168152602090f35b5034620002b45762001c72366200e79e565b15620026be5760015b60255460405163549387df60e11b81525f5160206201b2605f395f51905f5260048201525f5160206201b1605f395f51905f5260248201525f5160206201b2205f395f51905f526044820152908490829060649082906001600160a01b03165afa90811562000518578491620026a0575b5060028210156200268c57836001831491825f14620025f55762001d10906200ecdb565b51841080620024ef575b5f5160206201b1205f395f51905f523b156200082057604051632631f2b160e11b8152901515600482015281816024815f5160206201b1205f395f51905f525afa80156200081557620024d6575b50505b838060405160208101906370a0823160e01b82523060248201526024815262001d966044826200e74e565b51905f5160206201b1605f395f51905f525afa5062001db862000a2b62010eea565b50601180546001600160a01b0319165f5160206201b1605f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b811015620024c2579062001e1462000a90836001889501600e556200e912565b905560018060a01b0360115416600f5460e01b6010549062001e35620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b169081875260205260408620604051602081019062001e7c8162000b11888886620113bc565b519020875260205260ff60036040882001541615620024b1575b6001600160a01b0384165f908152600d6020526040902090865260205262000b1162001ed26040872093604051928391602083019586620113bc565b51902084526020526040832090600182015491600281015462001ef681856200eb70565b620024a4578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052949091906020866044815f5160206201b1205f395f51905f525afa958615620012a557889662002465575b506001908201610100031b5f1901811b1985165f5160206201b1205f395f51905f523b1562002461576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528581606481835f5160206201b1205f395f51905f525af19081156200133857869162002448575b505062001fd6620115b6565b90159081156200243b575b50620023e65750505062001ff46201218f565b60255460405163095ea7b360e01b81526001600160a01b0390911660048201525f196024820152602081604481865f5160206201b1605f395f51905f525af180156200083d57620023c4575b506040516370a0823160e01b8152306004820152936020856024815f5160206201b1605f395f51905f525afa9485156200083d57839562002387575b506040516370a0823160e01b8152306004820152916020836024815f5160206201b2205f395f51905f525afa928315620005185784936200234a575b50608060409583620020e68851620020d18a826200e74e565b60018152601f198a013660208301376200eccd565b526025548751638307c65560e01b81525f5160206201b2605f395f51905f5260048201525f5160206201b1605f395f51905f5260248201525f5160206201b2205f395f51905f5260448201526064810192909252608482018590529095869160a49183916001600160a01b03165af19384156200224657879462002324575b5015620022505783516370a0823160e01b81523060048201526020816024815f5160206201b2205f395f51905f525afa908115620022465787916200220b575b50620021b6926200109f916200ed98565b519080516370a0823160e01b81523060048201526020816024815f5160206201b1605f395f51905f525afa9182156200220257508491620010e557506200109f90620010e2936200ed98565b513d86823e3d90fd5b90506020813d6020116200223d575b8162002229602093836200e74e565b81010312620011175751620021b6620021a5565b3d91506200221a565b85513d89823e3d90fd5b83516370a0823160e01b81523060048201529194916020816024815f5160206201b1605f395f51905f525afa90811562002246578791620022e9575b506200109f906200229d936200ed98565b519080516370a0823160e01b81523060048201526020816024815f5160206201b2205f395f51905f525afa9182156200220257508491620011f25750620010e2926200109f916200ed98565b90506020813d6020116200231b575b8162002307602093836200e74e565b810103126200111757516200229d6200228c565b3d9150620022f8565b6200234291945060803d6080116200129d576200128c81836200e74e565b925f62002165565b935091506020833d6020116200237e575b816200236a602093836200e74e565b810103126200111757859251915f620020b8565b3d91506200235b565b925093506020823d602011620023bb575b81620023a7602093836200e74e565b810103126200111757849151935f6200207c565b3d915062002398565b620023e09060203d6020116200136f576200136081836200e74e565b62002040565b8492935054905f5160206201b1205f395f51905f523b1562000514576040516370ca10bb60e01b81526001600160a01b03909116600482015260248101919091526044810192909252818060648101620013e8565b5f19141590505f62001fe1565b8162002454916200e74e565b6200182057845f62001fca565b8780fd5b975094506020873d6020116200249b575b8162002485602093836200e74e565b8101031262001117579551899690948162001f4b565b3d915062002476565b620016dc8691856200eb70565b620024bb6201185a565b5062001e96565b634e487b7160e01b85526041600452602485fd5b81620024e2916200e74e565b6200052357835f62001d68565b505060405163313ce56760e01b81526020816004815f5160206201b2205f395f51905f525afa8015620025ea578590620025a6575b60ff91501680600682116200257e575b600c811162002569575b50604d811162002555578490600a0a841162001d1a565b634e487b7160e01b85526011600452602485fd5b60021981019150811162002555575f6200253e565b905f19810190811162002592579062002534565b634e487b7160e01b86526011600452602486fd5b506020813d602011620025e1575b81620025c3602093836200e74e565b8101031262001820575160ff81168103620018205760ff9062002524565b3d9150620025b4565b6040513d87823e3d90fd5b62002600906200eccd565b5184108062002679575b5f5160206201b1205f395f51905f523b156200082057604051632631f2b160e11b8152901515600482015281816024815f5160206201b1205f395f51905f525afa8015620008155762002660575b505062001d6b565b816200266c916200e74e565b6200052357835f62002658565b50620026846200f1c5565b84116200260a565b634e487b7160e01b84526021600452602484fd5b620026b791503d8086833e6200055081836200e74e565b5f62001cec565b8162001c7b565b5034620002b4576020366003190112620002b45760285460255460405163549387df60e11b81525f5160206201b1805f395f51905f5260048201526001600160a01b03928316602482018190525f5160206201b2405f395f51905f52604483015293929091839183916064918391165afa90811562000815578291620028fe575b5062002758620006006004356200f52f565b5181105f5160206201b1205f395f51905f523b15620005145760405190632631f2b160e11b8252600482015282816024815f5160206201b1205f395f51905f525afa80156200083d57908391620028e5575b50509181604093845190620027c086836200e74e565b600182526020820190601f198701368337620027dc836200eccd565b52620027e76200f38e565b602554865163155adc9160e31b81525f5160206201b1805f395f51905f52600482015260248101959095525f5160206201b2405f395f51905f5260448601526080606486015291516084850181905284926001600160a01b03169160a4840191855b818110620028c85750505083838281935003925af1928315620004d357508192620028a8575b50805b8251811015620004a657806200288f6200047c600193866200ecec565b620028a160206200049683876200ecec565b0162002872565b620028c09192503d8084833e620004c281836200e74e565b905f6200286f565b825184528896508795506020938401939092019160010162002849565b81620028f1916200e74e565b6200082057815f620027aa565b6200291591503d8084833e6200055081836200e74e565b5f62002746565b5034620002b4576200292e366200e79e565b15620031d15760015b60255460405163549387df60e11b81525f5160206201b1805f395f51905f5260048201525f5160206201b2405f395f51905f5260248201525f5160206201b1e05f395f51905f526044820152908490829060649082906001600160a01b03165afa90811562000518578491620031b3575b5060028210156200268c57836001831491825f146200311c57620029cc906200ecdb565b5184108062003109575b5f5160206201b1205f395f51905f523b156200082057604051632631f2b160e11b8152901515600482015281816024815f5160206201b1205f395f51905f525afa80156200081557620030f0575b50505b838060405160208101906370a0823160e01b82523060248201526024815262002a526044826200e74e565b51905f5160206201b2405f395f51905f525afa5062002a7462000a2b62010eea565b50601180546001600160a01b0319165f5160206201b2405f395f51905f52179055600f805463ffffffff19166370a08231179055600e54600160401b811015620024c2579062002ad062000a90836001889501600e556200e912565b905560018060a01b0360115416600f5460e01b6010549062002af1620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b169081875260205260408620604051602081019062002b388162000b11888886620113bc565b519020875260205260ff60036040882001541615620030df575b6001600160a01b0384165f908152600d6020526040902090865260205262000b1162002b8e6040872093604051928391602083019586620113bc565b51902084526020526040832090600182015491600281015462002bb281856200eb70565b620024a4578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052949091906020866044815f5160206201b1205f395f51905f525afa958615620012a5578896620030a0575b506001908201610100031b5f1901811b1985165f5160206201b1205f395f51905f523b1562002461576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528581606481835f5160206201b1205f395f51905f525af19081156200133857869162003087575b505062002c92620115b6565b90159081156200307a575b50620023e65750505062002cb06201218f565b60255460405163095ea7b360e01b81526001600160a01b0390911660048201525f196024820152602081604481865f5160206201b2405f395f51905f525af180156200083d5762003058575b506040516370a0823160e01b8152306004820152936020856024815f5160206201b2405f395f51905f525afa9485156200083d5783956200301b575b506040516370a0823160e01b8152306004820152916020836024815f5160206201b1e05f395f51905f525afa9283156200051857849362002fde575b5060806040958362002d8d8851620020d18a826200e74e565b526025548751638307c65560e01b81525f5160206201b1805f395f51905f5260048201525f5160206201b2405f395f51905f5260248201525f5160206201b1e05f395f51905f5260448201526064810192909252608482018590529095869160a49183916001600160a01b03165af19384156200224657879462002fb8575b501562002ee45783516370a0823160e01b81523060048201526020816024815f5160206201b1e05f395f51905f525afa9081156200224657879162002ea9575b5062002e5d926200109f916200ed98565b519080516370a0823160e01b81523060048201526020816024815f5160206201b2405f395f51905f525afa9182156200220257508491620010e557506200109f90620010e2936200ed98565b90506020813d60201162002edb575b8162002ec7602093836200e74e565b8101031262001117575162002e5d62002e4c565b3d915062002eb8565b83516370a0823160e01b81523060048201529194916020816024815f5160206201b2405f395f51905f525afa9081156200224657879162002f7d575b506200109f9062002f31936200ed98565b519080516370a0823160e01b81523060048201526020816024815f5160206201b1e05f395f51905f525afa9182156200220257508491620011f25750620010e2926200109f916200ed98565b90506020813d60201162002faf575b8162002f9b602093836200e74e565b8101031262001117575162002f3162002f20565b3d915062002f8c565b62002fd691945060803d6080116200129d576200128c81836200e74e565b925f62002e0c565b935091506020833d60201162003012575b8162002ffe602093836200e74e565b810103126200111757859251915f62002d74565b3d915062002fef565b925093506020823d6020116200304f575b816200303b602093836200e74e565b810103126200111757849151935f62002d38565b3d91506200302c565b620030749060203d6020116200136f576200136081836200e74e565b62002cfc565b5f19141590505f62002c9d565b8162003093916200e74e565b6200182057845f62002c86565b975094506020873d602011620030d6575b81620030c0602093836200e74e565b8101031262001117579551899690948162002c07565b3d9150620030b1565b620030e96201185a565b5062002b52565b81620030fc916200e74e565b6200052357835f62002a24565b50620031146200f21f565b8411620029d6565b62003127906200eccd565b51841080620031a0575b5f5160206201b1205f395f51905f523b156200082057604051632631f2b160e11b8152901515600482015281816024815f5160206201b1205f395f51905f525afa8015620008155762003187575b505062002a27565b8162003193916200e74e565b6200052357835f6200317f565b50620031ab6200f21f565b841162003131565b620031ca91503d8086833e6200055081836200e74e565b5f620029a8565b8162002937565b5034620002b457606490620031ed366200e79e565b1562003c0e5760015b60255460405163549387df60e11b81525f5160206201b1805f395f51905f5260048201525f5160206201b1405f395f51905f5260248201525f5160206201b1e05f395f51905f52604482015294849186919082906001600160a01b03165afa9384156200083d57839462003bee575b50600281101562003bda576001811493841562003b405762003287906200ecdb565b5182108062003b2d575b5f5160206201b1205f395f51905f523b156200052357604051632631f2b160e11b8152901515600482015283816024815f5160206201b1205f395f51905f525afa8015620005185790849162003b14575b50505b6040516318160ddd60e01b8152936020856004815f5160206201b1405f395f51905f525afa9485156200051857849562003ada575b508460011b948086046002149015171562003ac657838060405160208101906370a0823160e01b8252306024820152602481526200335a6044826200e74e565b51905f5160206201b1405f395f51905f525afa506200337c62000a2b62010eea565b50601180546001600160a01b0319165f5160206201b1405f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b811015620024c25762000a90816001620033d69301600e556200e912565b905560018060a01b0360115416600f5460e01b60105490620033f7620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908189526020526040882060405160208101906200343e8162000b11888886620113bc565b519020895260205260ff600360408a200154161562003ab5575b6001600160a01b0384165f908152600d6020526040902090885260205262000b11620034946040892093604051928391602083019586620113bc565b51902086526020526040852090600182015491600281015497620034b989856200eb70565b62003977575b8154604051630667f9d760e41b81526001600160a01b0385166004820152602481018290529899979896978a97956020876044815f5160206201b1205f395f51905f525afa9687156200396c5789976200392d575b506001908201610100031b5f1901811b198616915f5160206201b1205f395f51905f523b1562003929576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528681606481835f5160206201b1205f395f51905f525af19081156200116357879162003910575b5050620035a2620115b6565b91901591821562003904575b5050620023e657505050620035c26201218f565b60255460405163095ea7b360e01b81526001600160a01b0390911660048201525f196024820152602081604481865f5160206201b1405f395f51905f525af180156200083d57620038e2575b506040516370a0823160e01b8152306004820152936020856024815f5160206201b1405f395f51905f525afa9485156200083d578395620038a5575b506040516370a0823160e01b8152306004820152916020836024815f5160206201b1e05f395f51905f525afa9283156200051857849362003868575b506080604095836200369f8851620020d18a826200e74e565b526025548751638307c65560e01b81525f5160206201b1805f395f51905f5260048201525f5160206201b1405f395f51905f5260248201525f5160206201b1e05f395f51905f5260448201526064810192909252608482018590529095869160a49183916001600160a01b03165af19384156200224657879462003842575b5015620037f65783516370a0823160e01b81523060048201526020816024815f5160206201b1e05f395f51905f525afa90811562002246578791620037bb575b506200376f926200109f916200ed98565b519080516370a0823160e01b81523060048201526020816024815f5160206201b1405f395f51905f525afa9182156200220257508491620010e557506200109f90620010e2936200ed98565b90506020813d602011620037ed575b81620037d9602093836200e74e565b810103126200111757516200376f6200375e565b3d9150620037ca565b83516370a0823160e01b81523060048201529194916020816024815f5160206201b1405f395f51905f525afa9081156200224657879162002f7d57506200109f9062002f31936200ed98565b6200386091945060803d6080116200129d576200128c81836200e74e565b925f6200371e565b935091506020833d6020116200389c575b8162003888602093836200e74e565b810103126200111757859251915f62003686565b3d915062003879565b925093506020823d602011620038d9575b81620038c5602093836200e74e565b810103126200111757849151935f6200364a565b3d9150620038b6565b620038fe9060203d6020116200136f576200136081836200e74e565b6200360e565b141590505f80620035ae565b816200391c916200e74e565b620014a857855f62003596565b8880fd5b985095506020883d60201162003963575b816200394d602093836200e74e565b81010312620011175796518a9790958162003514565b3d91506200393e565b6040513d8b823e3d90fd5b6200398389856200eb70565b61010003610100811162003aa15760ff811162003aa1576001901b986040519963348051d760e11b8b528060048c0152898b6024815f5160206201b1205f395f51905f525afa9a8b1562003a9657606a60209c62003a45928d9162003a78575b506040519d8e915f5160206201b2805f395f51905f52828401525f5160206201b1005f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018d838201520301601f1981018d528c6200e74e565b82101562003a55579850620034bf565b60405162461bcd60e51b81526020600482015280620015f9602482018d6200e6f2565b62003a8f91503d808f833e6200161481836200e74e565b5f620039e3565b6040513d8c823e3d90fd5b634e487b7160e01b89526011600452602489fd5b62003abf6201185a565b5062003458565b634e487b7160e01b84526011600452602484fd5b9094506020813d60201162003b0b575b8162003af9602093836200e74e565b81010312620011175751935f6200331a565b3d915062003aea565b8162003b20916200e74e565b6200051457825f620032e2565b5062003b386200f279565b821162003291565b62003b4b906200eccd565b5182108062003bc7575b5f5160206201b1205f395f51905f523b156200052357604051632631f2b160e11b8152901515600482015283816024815f5160206201b1205f395f51905f525afa8015620005185790849162003bae575b5050620032e5565b8162003bba916200e74e565b6200051457825f62003ba6565b5062003bd26200f047565b821162003b55565b634e487b7160e01b83526021600452602483fd5b62003c069194503d8085833e6200055081836200e74e565b925f62003265565b81620031f6565b5034620002b4576040366003190112620002b4576004356001600160a01b038116908181036200051457602435926001600160401b038411620002b45736602385011215620002b45783600401359362003c6f856200ea1a565b9462003c7f60405196876200e74e565b8086526024602087019160051b830101913683116200052357602401905b82821062003f005750505062003cb3846200eccd565b51604051906348bd7dfd60e01b82526004820152816024820152816044820152818160648183885af190811562000815579062003cf991839162003ed9575b506200f54c565b1593815b815181101562003ed55762003d1381836200ecec565b516040519063ecbbc03360e01b825260048201528381602481838a5af19081156200051857908791859162003e07575b506001929162003e009162003d6d896001600160a01b0362003d65846200eccd565b51166200f609565b62003d8389868060a01b0362003d65846200ecdb565b62003dc38262003d9486896200ecec565b51878060a01b0362003da6856200eccd565b5116888060a01b0362003db9866200ecdb565b5116918c6200f760565b62003dcf84876200ecec565b5190858060a01b0362003de2826200ecdb565b51169062003df6878060a01b03916200eccd565b511691896200f760565b0162003cfd565b9150503d8085833e62003e1b81836200e74e565b81019060208183031262001820578051906001600160401b038211620014a857019080601f83011215620018205781519062003e57826200ea1a565b9262003e6760405194856200e74e565b82845260208085019360051b82010191821162003ed1579060208a94939201915b81831062003e9b57505050600162003d43565b825195999793959294509092916001600160a01b0381168103620005145781602092918392520193019095979391899362003e88565b8680fd5b8280f35b62003ef991503d8085833e62003ef081836200e74e565b8101906200efb9565b5f62003cf2565b813581526020918201910162003c9d565b5034620002b4576020366003190112620002b45760255460405163549387df60e11b81525f5160206201b1c05f395f51905f526004828101919091525f5160206201b1a05f395f51905f5260248301525f5160206201b1405f395f51905f5260448301523592918290829060649082906001600160a01b03165afa90811562000815578291620041cc575b5062003fab620006006200f111565b5183105f5160206201b1205f395f51905f523b15620005145760405190632631f2b160e11b8252600482015282816024815f5160206201b1205f395f51905f525afa80156200083d57908391620041b3575b50505f5160206201b1205f395f51905f523b156200082057604051632631f2b160e11b8152908311600482015281816024815f5160206201b1205f395f51905f525afa801562000815579082916200419a575b50506040918183516200406485826200e74e565b600181526020810192601f19860136853762004080826200eccd565b526200408b6200f38e565b602554855163155adc9160e31b81525f5160206201b1c05f395f51905f5260048201525f5160206201b1a05f395f51905f5260248201525f5160206201b1405f395f51905f52604482015260806064820152915160848301819052919384926001600160a01b039092169160a484019190855b8181106200417d5750505083838281935003925af1928315620004d3575081926200415d575b50805b8251811015620004a65780620041446200047c600193866200ecec565b6200415660206200049683876200ecec565b0162004127565b620041759192503d8084833e620004c281836200e74e565b905f62004124565b8251845288965087955060209384019390920191600101620040fe565b81620041a6916200e74e565b620002b457805f62004050565b81620041bf916200e74e565b6200082057815f62003ffd565b620041e391503d8084833e6200055081836200e74e565b5f62003f9c565b5034620002b4576020366003190112620002b45760255460405163549387df60e11b81525f5160206201b1c05f395f51905f526004828101919091525f5160206201b1405f395f51905f5260248301525f5160206201b1a05f395f51905f5260448301523592918290829060649082906001600160a01b03165afa90811562000815578291620044a5575b5062004284620006006200f047565b5183105f5160206201b1205f395f51905f523b15620005145760405190632631f2b160e11b8252600482015282816024815f5160206201b1205f395f51905f525afa80156200083d579083916200448c575b50505f5160206201b1205f395f51905f523b156200082057604051632631f2b160e11b8152908311600482015281816024815f5160206201b1205f395f51905f525afa8015620008155790829162004473575b50506040918183516200433d85826200e74e565b600181526020810192601f19860136853762004359826200eccd565b52620043646200f38e565b602554855163155adc9160e31b81525f5160206201b1c05f395f51905f5260048201525f5160206201b1405f395f51905f5260248201525f5160206201b1a05f395f51905f52604482015260806064820152915160848301819052919384926001600160a01b039092169160a484019190855b818110620044565750505083838281935003925af1928315620004d35750819262004436575b50805b8251811015620004a657806200441d6200047c600193866200ecec565b6200442f60206200049683876200ecec565b0162004400565b6200444e9192503d8084833e620004c281836200e74e565b905f620043fd565b8251845288965087955060209384019390920191600101620043d7565b816200447f916200e74e565b620002b457805f62004329565b8162004498916200e74e565b6200082057815f620042d6565b620044bc91503d8084833e6200055081836200e74e565b5f62004275565b5034620002b4576020366003190112620002b45760275460255460405163549387df60e11b81525f5160206201b2605f395f51905f526004828101919091526001600160a01b03938416602483018190525f5160206201b1605f395f51905f5260448401529493903592849183916064918391165afa9081156200083d5790620045559184916200471857506200eccd565b5181108062004704575b5f5160206201b1205f395f51905f523b156200051457604051632631f2b160e11b8152901515600482015282816024815f5160206201b1205f395f51905f525afa80156200083d57908391620046eb575b50509181604093845190620045c686836200e74e565b600182526020820190601f198701368337620045e2836200eccd565b52620045ed6200f38e565b602554865163155adc9160e31b81525f5160206201b2605f395f51905f52600482015260248101959095525f5160206201b1605f395f51905f5260448601526080606486015291516084850181905284926001600160a01b03169160a4840191855b818110620046ce5750505083838281935003925af1928315620004d357508192620046ae575b50805b8251811015620004a65780620046956200047c600193866200ecec565b620046a760206200049683876200ecec565b0162004678565b620046c69192503d8084833e620004c281836200e74e565b905f62004675565b82518452889650879550602093840193909201916001016200464f565b81620046f7916200e74e565b6200082057815f620045b0565b5062004710836200f2d3565b81116200455f565b6200055991503d8086833e6200055081836200e74e565b5034620002b45780600319360112620002b45760206200474e6200ef13565b6040519015158152f35b5034620002b45780600319360112620002b45760195462004779816200ea1a565b916200478960405193846200e74e565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b838310620047d65760405160208082528190620008d8908201886200e803565b600160208192604051620047f881620047f081896200e993565b03826200e74e565b815201920192019190620047b6565b5034620002b4576040366003190112620002b45762004834620048296200e770565b60243590336200f437565b602060405160018152f35b5034620002b4576020366003190112620002b457600435601f5481101562000820576200486c906200e93f565b919091620048a257604051620008d8906200488d81620047f081876200e993565b6040519182916020835260208301906200e6f2565b634e487b7160e01b81526004819052602490fd5b5034620002b457606490620048cb366200e79e565b15620052dc5760015b60255460405163549387df60e11b81525f5160206201b1805f395f51905f5260048201525f5160206201b1e05f395f51905f5260248201525f5160206201b1405f395f51905f52604482015294849186919082906001600160a01b03165afa9384156200083d578394620052bc575b50600281101562003bda5760018114938415620052225762004965906200ecdb565b518210806200520f575b5f5160206201b1205f395f51905f523b156200052357604051632631f2b160e11b8152901515600482015283816024815f5160206201b1205f395f51905f525afa80156200051857908491620051f6575b50505b6040516318160ddd60e01b8152936020856004815f5160206201b1e05f395f51905f525afa94851562000518578495620051bc575b508460011b948086046002149015171562003ac657838060405160208101906370a0823160e01b82523060248201526024815262004a386044826200e74e565b51905f5160206201b1e05f395f51905f525afa5062004a5a62000a2b62010eea565b50601180546001600160a01b0319165f5160206201b1e05f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b811015620024c25762000a9081600162004ab49301600e556200e912565b905560018060a01b0360115416600f5460e01b6010549062004ad5620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b169081895260205260408820604051602081019062004b1c8162000b11888886620113bc565b519020895260205260ff600360408a2001541615620051ab575b6001600160a01b0384165f908152600d6020526040902090885260205262000b1162004b726040892093604051928391602083019586620113bc565b5190208652602052604085209060018201549160028101549762004b9789856200eb70565b620050ce575b8154604051630667f9d760e41b81526001600160a01b0385166004820152602481018290529899979896978a97956020876044815f5160206201b1205f395f51905f525afa9687156200396c5789976200508f575b506001908201610100031b5f1901811b198616915f5160206201b1205f395f51905f523b1562003929576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528681606481835f5160206201b1205f395f51905f525af19081156200116357879162005076575b505062004c80620115b6565b9190159182156200506a575b5050620023e65750505062004ca06201218f565b60255460405163095ea7b360e01b81526001600160a01b0390911660048201525f196024820152602081604481865f5160206201b1e05f395f51905f525af180156200083d5762005048575b506040516370a0823160e01b8152306004820152936020856024815f5160206201b1e05f395f51905f525afa9485156200083d5783956200500b575b506040516370a0823160e01b8152306004820152916020836024815f5160206201b1405f395f51905f525afa9283156200051857849362004fce575b5060806040958362004d7d8851620020d18a826200e74e565b526025548751638307c65560e01b81525f5160206201b1805f395f51905f5260048201525f5160206201b1e05f395f51905f5260248201525f5160206201b1405f395f51905f5260448201526064810192909252608482018590529095869160a49183916001600160a01b03165af19384156200224657879462004fa8575b501562004ed45783516370a0823160e01b81523060048201526020816024815f5160206201b1405f395f51905f525afa9081156200224657879162004e99575b5062004e4d926200109f916200ed98565b519080516370a0823160e01b81523060048201526020816024815f5160206201b1e05f395f51905f525afa9182156200220257508491620010e557506200109f90620010e2936200ed98565b90506020813d60201162004ecb575b8162004eb7602093836200e74e565b8101031262001117575162004e4d62004e3c565b3d915062004ea8565b83516370a0823160e01b81523060048201529194916020816024815f5160206201b1e05f395f51905f525afa9081156200224657879162004f6d575b506200109f9062004f21936200ed98565b519080516370a0823160e01b81523060048201526020816024815f5160206201b1405f395f51905f525afa9182156200220257508491620011f25750620010e2926200109f916200ed98565b90506020813d60201162004f9f575b8162004f8b602093836200e74e565b8101031262001117575162004f2162004f10565b3d915062004f7c565b62004fc691945060803d6080116200129d576200128c81836200e74e565b925f62004dfc565b935091506020833d60201162005002575b8162004fee602093836200e74e565b810103126200111757859251915f62004d64565b3d915062004fdf565b925093506020823d6020116200503f575b816200502b602093836200e74e565b810103126200111757849151935f62004d28565b3d91506200501c565b620050649060203d6020116200136f576200136081836200e74e565b62004cec565b141590505f8062004c8c565b8162005082916200e74e565b620014a857855f62004c74565b985095506020883d602011620050c5575b81620050af602093836200e74e565b81010312620011175796518a9790958162004bf2565b3d9150620050a0565b620050da89856200eb70565b61010003610100811162003aa15760ff811162003aa1576001901b986040519963348051d760e11b8b528060048c0152898b6024815f5160206201b1205f395f51905f525afa9a8b1562003a9657606a60209c6200519b928d9162003a7857506040519d8e915f5160206201b2805f395f51905f52828401525f5160206201b1005f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018d838201520301601f1981018d528c6200e74e565b82101562003a5557985062004b9d565b620051b56201185a565b5062004b36565b9094506020813d602011620051ed575b81620051db602093836200e74e565b81010312620011175751935f620049f8565b3d9150620051cc565b8162005202916200e74e565b6200051457825f620049c0565b506200521a6200f047565b82116200496f565b6200522d906200eccd565b51821080620052a9575b5f5160206201b1205f395f51905f523b156200052357604051632631f2b160e11b8152901515600482015283816024815f5160206201b1205f395f51905f525afa8015620005185790849162005290575b5050620049c3565b816200529c916200e74e565b6200051457825f62005288565b50620052b46200f279565b821162005237565b620052d49194503d8085833e6200055081836200e74e565b925f62004943565b81620048d4565b5034620002b457606490620052f8366200e79e565b929080841562005d46575064174876e80062989680620053189262010f29565b62005371816200536b604051620053316040826200e74e565b600c81526b109bdd5b990814995cdd5b1d60a21b602082015262000b11604051938492632d839cb360e21b6020850152602484016200eb38565b6201246d565b6027546001600160a01b0316931562005d3e576001905b60255460405163549387df60e11b81525f5160206201b2605f395f51905f5260048201525f5160206201b1605f395f51905f5260248201526044810187905293859185919082906001600160a01b03165afa9283156200051857849362005d1e575b5060028210156200268c576001821492831562005ca0576200540c906200ecdb565b5181105f5160206201b1205f395f51905f523b15620018205760405190632631f2b160e11b8252600482015284816024815f5160206201b1205f395f51905f525afa8015620025ea5790859162005c87575b50505b6040516318160ddd60e01b8152946020866004815f5160206201b1605f395f51905f525afa958615620025ea57859662005c4d575b508560011b95808704600214901517156200255557848060405160208101906370a0823160e01b825230602482015260248152620054d66044826200e74e565b51905f5160206201b1605f395f51905f525afa50620054f862000a2b62010eea565b50601180546001600160a01b0319165f5160206201b1605f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b811015620016565762000a90816001620055529301600e556200e912565b905560018060a01b0360115416600f5460e01b6010549062005573620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818a52602052604089206040516020810190620055ba8162000b11888886620113bc565b5190208a5260205260ff600360408b200154161562005c3c575b6001600160a01b0384165f908152600d6020526040902090895260205262000b116200561060408a2093604051928391602083019586620113bc565b51902087526020526040862090600182015491600281015498620056358a856200eb70565b62005b18575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052999a98998b9990956020876044815f5160206201b1205f395f51905f525afa96871562005b0d578b9762005ace575b506001908201610100031b5f1901811b198616915f5160206201b1205f395f51905f523b1562005aca576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528881606481835f5160206201b1205f395f51905f525af19081156200396c57899162005ab1575b50506200571d620115b6565b91901591821562005aa5575b505062005a4f575050506200573d6201218f565b60255460405163095ea7b360e01b81526001600160a01b0390911660048201525f196024820152602081604481885f5160206201b1605f395f51905f525af18015620025ea5762005a2d575b506040516370a0823160e01b8152306004820152946020866024815f5160206201b1605f395f51905f525afa958615620025ea578596620059f0575b506040516370a0823160e01b815230600482015293602085602481865afa94851562001338578695620059b1575b50602554604051638307c65560e01b81525f5160206201b2605f395f51905f5260048201525f5160206201b1605f395f51905f526024820152604481018590526064810192909252608482018590529095608091879160a4918391906001600160a01b03165af1948515620011635787956200598b575b501562005936576020602491604051928380926370a0823160e01b82523060048301525afa90811562001338578691620058fb575b50620058b0926200109f916200ed98565b516040516370a0823160e01b81523060048201526020816024815f5160206201b1605f395f51905f525afa90811562000518578491620010e557506200109f90620010e2936200ed98565b90506020813d6020116200592d575b8162005919602093836200e74e565b81010312620011175751620058b06200589f565b3d91506200590a565b92909193604051906370a0823160e01b82523060048301526020826024815f5160206201b1605f395f51905f525afa918215620011635787926200122d57506024936200109f60209493620011b6936200ed98565b620059a991955060803d6080116200129d576200128c81836200e74e565b935f6200586a565b955093506020853d602011620059e7575b81620059d1602093836200e74e565b81010312620011175760808795519490620057f3565b3d9150620059c2565b945094506020843d60201162005a24575b8162005a10602093836200e74e565b810103126200111757859351945f620057c5565b3d915062005a01565b62005a499060203d6020116200136f576200136081836200e74e565b62005789565b869291839154905f5160206201b1205f395f51905f523b1562000514576040516370ca10bb60e01b81526001600160a01b03909116600482015260248101919091526044810192909252818060648101620013e8565b141590505f8062005729565b8162005abd916200e74e565b6200246157875f62005711565b8a80fd5b9a50955060208a3d60201162005b04575b8162005aee602093836200e74e565b81010312620011175798518b999095816200568f565b3d915062005adf565b6040513d8d823e3d90fd5b62005b248a856200eb70565b610100036101008111620016315760ff811162001631576001901b996040519a63348051d760e11b8c528060048d01528a8c6024815f5160206201b1205f395f51905f525afa9b8c1562005b0d578b9c62005c1c575b50604051809c602082015f5160206201b2805f395f51905f529052604082015f5160206201b1005f395f51905f5290526060820169030ba32b9103a3430b7160b51b905280516020819201606a84015e81018c606a82015203606a01601f1981018d5262005be9908d6200e74e565b82101562005bf95799506200563b565b60405162461bcd60e51b81526020600482015280620015f9602482018e6200e6f2565b62005c34919c503d808d833e6200161481836200e74e565b9a5f62005b7a565b62005c466201185a565b50620055d4565b9095506020813d60201162005c7e575b8162005c6c602093836200e74e565b81010312620011175751945f62005496565b3d915062005c5d565b8162005c93916200e74e565b6200052357835f6200545e565b62005cab906200eccd565b5181105f5160206201b1205f395f51905f523b15620018205760405190632631f2b160e11b8252600482015284816024815f5160206201b1205f395f51905f525afa8015620025ea5790859162005d05575b505062005461565b8162005d11916200e74e565b6200052357835f62005cfd565b62005d369193503d8086833e6200055081836200e74e565b915f620053ea565b829062005388565b62005d5291506200f4f7565b62005371565b5034620002b4576020366003190112620002b45760255460405163549387df60e11b81525f5160206201b1805f395f51905f526004828101919091525f5160206201b1e05f395f51905f5260248301525f5160206201b1405f395f51905f5260448301523592918290829060649082906001600160a01b03165afa9081156200081557829162006013575b5062005df2620006006200f279565b5183105f5160206201b1205f395f51905f523b15620005145760405190632631f2b160e11b8252600482015282816024815f5160206201b1205f395f51905f525afa80156200083d5790839162005ffa575b50505f5160206201b1205f395f51905f523b156200082057604051632631f2b160e11b8152908311600482015281816024815f5160206201b1205f395f51905f525afa8015620008155790829162005fe1575b505060409181835162005eab85826200e74e565b600181526020810192601f19860136853762005ec7826200eccd565b5262005ed26200f38e565b602554855163155adc9160e31b81525f5160206201b1805f395f51905f5260048201525f5160206201b1e05f395f51905f5260248201525f5160206201b1405f395f51905f52604482015260806064820152915160848301819052919384926001600160a01b039092169160a484019190855b81811062005fc45750505083838281935003925af1928315620004d35750819262005fa4575b50805b8251811015620004a6578062005f8b6200047c600193866200ecec565b62005f9d60206200049683876200ecec565b0162005f6e565b62005fbc9192503d8084833e620004c281836200e74e565b905f62005f6b565b825184528896508795506020938401939092019160010162005f45565b8162005fed916200e74e565b620002b457805f62005e97565b8162006006916200e74e565b6200082057815f62005e44565b6200602a91503d8084833e6200055081836200e74e565b5f62005de3565b5034620002b45780600319360112620002b45760405190806024549062006058826200e958565b8085529160018116908115620060e6575060011462006085575b620008d8846200488d818603826200e74e565b602481527f7cd332d19b93bcabe3cce7ca0c18a052f57e5fd03b4758a09f30f5ddc4b22ec4939250905b808210620060cb575090915081016020016200488d8262006072565b919260018160209254838588010152019101909291620060af565b60ff191660208087019190915292151560051b850190920192506200488d915083905062006072565b5034620002b45780600319360112620002b457601c5462006130816200ea1a565b906200614060405192836200e74e565b808252601c8352827f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b838310620061865760405180620008d887826200e85f565b60405162006194816200e716565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b8160078401106200631b57846001979460029794602097946200622a945491818110620062fe575b818110620062e1575b818110620062c4575b818110620062a7575b8181106200628a575b8181106200626d575b81811062006252575b106200623d575b5003826200e74e565b838201528152019201920191906200616e565b6001600160e01b031916815286015f62006221565b828a1b6001600160e01b0319168452928901928b016200621a565b604083901b6001600160e01b0319168452928901928b0162006211565b606083901b6001600160e01b0319168452928901928b0162006208565b608083901b6001600160e01b0319168452928901928b01620061ff565b60a083901b6001600160e01b0319168452928901928b01620061f6565b60c083901b6001600160e01b0319168452928901928b01620061ed565b60e083901b6001600160e01b0319168452928901928b01620061e4565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e0820152019401920191620061bc565b5034620002b457606490620063d0366200e79e565b1562006de15760015b60255460405163549387df60e11b81525f5160206201b1c05f395f51905f5260048201525f5160206201b2005f395f51905f5260248201525f5160206201b1a05f395f51905f52604482015294849186919082906001600160a01b03165afa9384156200083d57839462006dc1575b50600281101562003bda576001811493841562006d27576200646a906200ecdb565b5182108062006d14575b5f5160206201b1205f395f51905f523b156200052357604051632631f2b160e11b8152901515600482015283816024815f5160206201b1205f395f51905f525afa8015620005185790849162006cfb575b50505b6040516318160ddd60e01b8152936020856004815f5160206201b2005f395f51905f525afa9485156200051857849562006cc1575b508460011b948086046002149015171562003ac657838060405160208101906370a0823160e01b8252306024820152602481526200653d6044826200e74e565b51905f5160206201b2005f395f51905f525afa506200655f62000a2b62010eea565b50601180546001600160a01b0319165f5160206201b2005f395f51905f52179055600f805463ffffffff19166370a08231179055600e54600160401b811015620024c25762000a90816001620065b99301600e556200e912565b905560018060a01b0360115416600f5460e01b60105490620065da620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818952602052604088206040516020810190620066218162000b11888886620113bc565b519020895260205260ff600360408a200154161562006cb0575b6001600160a01b0384165f908152600d6020526040902090885260205262000b11620066776040892093604051928391602083019586620113bc565b519020865260205260408520906001820154916002810154976200669c89856200eb70565b62006bd3575b8154604051630667f9d760e41b81526001600160a01b0385166004820152602481018290529899979896978a97956020876044815f5160206201b1205f395f51905f525afa9687156200396c57899762006b94575b506001908201610100031b5f1901811b198616915f5160206201b1205f395f51905f523b1562003929576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528681606481835f5160206201b1205f395f51905f525af19081156200116357879162006b7b575b505062006785620115b6565b91901591821562006b6f575b5050620023e657505050620067a56201218f565b60255460405163095ea7b360e01b81526001600160a01b0390911660048201525f196024820152602081604481865f5160206201b2005f395f51905f525af180156200083d5762006b4d575b506040516370a0823160e01b8152306004820152936020856024815f5160206201b2005f395f51905f525afa9485156200083d57839562006b10575b506040516370a0823160e01b8152306004820152916020836024815f5160206201b1a05f395f51905f525afa9283156200051857849362006ad3575b50608060409583620068828851620020d18a826200e74e565b526025548751638307c65560e01b81525f5160206201b1c05f395f51905f5260048201525f5160206201b2005f395f51905f5260248201525f5160206201b1a05f395f51905f5260448201526064810192909252608482018590529095869160a49183916001600160a01b03165af19384156200224657879462006aad575b5015620069d95783516370a0823160e01b81523060048201526020816024815f5160206201b1a05f395f51905f525afa908115620022465787916200699e575b5062006952926200109f916200ed98565b519080516370a0823160e01b81523060048201526020816024815f5160206201b2005f395f51905f525afa9182156200220257508491620010e557506200109f90620010e2936200ed98565b90506020813d602011620069d0575b81620069bc602093836200e74e565b810103126200111757516200695262006941565b3d9150620069ad565b83516370a0823160e01b81523060048201529194916020816024815f5160206201b2005f395f51905f525afa9081156200224657879162006a72575b506200109f9062006a26936200ed98565b519080516370a0823160e01b81523060048201526020816024815f5160206201b1a05f395f51905f525afa9182156200220257508491620011f25750620010e2926200109f916200ed98565b90506020813d60201162006aa4575b8162006a90602093836200e74e565b8101031262001117575162006a2662006a15565b3d915062006a81565b62006acb91945060803d6080116200129d576200128c81836200e74e565b925f62006901565b935091506020833d60201162006b07575b8162006af3602093836200e74e565b810103126200111757859251915f62006869565b3d915062006ae4565b925093506020823d60201162006b44575b8162006b30602093836200e74e565b810103126200111757849151935f6200682d565b3d915062006b21565b62006b699060203d6020116200136f576200136081836200e74e565b620067f1565b141590505f8062006791565b8162006b87916200e74e565b620014a857855f62006779565b985095506020883d60201162006bca575b8162006bb4602093836200e74e565b81010312620011175796518a97909581620066f7565b3d915062006ba5565b62006bdf89856200eb70565b61010003610100811162003aa15760ff811162003aa1576001901b986040519963348051d760e11b8b528060048c0152898b6024815f5160206201b1205f395f51905f525afa9a8b1562003a9657606a60209c62006ca0928d9162003a7857506040519d8e915f5160206201b2805f395f51905f52828401525f5160206201b1005f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018d838201520301601f1981018d528c6200e74e565b82101562003a55579850620066a2565b62006cba6201185a565b506200663b565b9094506020813d60201162006cf2575b8162006ce0602093836200e74e565b81010312620011175751935f620064fd565b3d915062006cd1565b8162006d07916200e74e565b6200051457825f620064c5565b5062006d1f6200f111565b821162006474565b62006d32906200eccd565b5182108062006dae575b5f5160206201b1205f395f51905f523b156200052357604051632631f2b160e11b8152901515600482015283816024815f5160206201b1205f395f51905f525afa8015620005185790849162006d95575b5050620064c8565b8162006da1916200e74e565b6200051457825f62006d8d565b5062006db96200f16b565b821162006d3c565b62006dd99194503d8085833e6200055081836200e74e565b925f62006448565b81620063d9565b5034620002b45780600319360112620002b457601a5462006e09816200ea1a565b9162006e1960405193846200e74e565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b83831062006e665760405160208082528190620008d8908201886200e803565b60016020819260405162006e8081620047f081896200e993565b81520192019201919062006e46565b5034620002b4576020366003190112620002b45760255460405163549387df60e11b81525f5160206201b1805f395f51905f526004828101919091525f5160206201b1405f395f51905f5260248301525f5160206201b1e05f395f51905f5260448301523592918290829060649082906001600160a01b03165afa908115620008155782916200714a575b5062006f29620006006200f047565b5183105f5160206201b1205f395f51905f523b15620005145760405190632631f2b160e11b8252600482015282816024815f5160206201b1205f395f51905f525afa80156200083d5790839162007131575b50505f5160206201b1205f395f51905f523b156200082057604051632631f2b160e11b8152908311600482015281816024815f5160206201b1205f395f51905f525afa8015620008155790829162007118575b505060409181835162006fe285826200e74e565b600181526020810192601f19860136853762006ffe826200eccd565b52620070096200f38e565b602554855163155adc9160e31b81525f5160206201b1805f395f51905f5260048201525f5160206201b1405f395f51905f5260248201525f5160206201b1e05f395f51905f52604482015260806064820152915160848301819052919384926001600160a01b039092169160a484019190855b818110620070fb5750505083838281935003925af1928315620004d357508192620070db575b50805b8251811015620004a65780620070c26200047c600193866200ecec565b620070d460206200049683876200ecec565b01620070a5565b620070f39192503d8084833e620004c281836200e74e565b905f620070a2565b82518452889650879550602093840193909201916001016200707c565b8162007124916200e74e565b620002b457805f62006fce565b816200713d916200e74e565b6200082057815f62006f7b565b6200716191503d8084833e6200055081836200e74e565b5f62006f1a565b5034620002b4576020366003190112620002b4576020906040906001600160a01b03620071946200e770565b1681528280522054604051908152f35b5034620002b457606490620071b9366200e79e565b929080841562007af25750620071cf906200f52f565b925b6028546001600160a01b0316901562007aea576001935b60255460405163549387df60e11b81525f5160206201b1805f395f51905f526004820152602481018490525f5160206201b2405f395f51905f52604482015293859185919082906001600160a01b03165afa9283156200051857849362007aca575b5060028510156200268c576001851492831562007a4c576200726c906200ecdb565b5181105f5160206201b1205f395f51905f523b15620018205760405190632631f2b160e11b8252600482015284816024815f5160206201b1205f395f51905f525afa8015620025ea5790859162007a33575b50505b6040516318160ddd60e01b815294602086600481865afa958615620025ea578596620079f9575b508560011b95808704600214901517156200255557848060405160208101906370a0823160e01b825230602482015260248152620073286044826200e74e565b5190865afa506200733c62000a2b62010eea565b50601180546001600160a01b0319166001600160a01b0385161790556370a0823163ffffffff19600f541617600f55600e54600160401b811015620016565762000a90816001620073919301600e556200e912565b905560018060a01b0360115416600f5460e01b60105490620073b2620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818a52602052604089206040516020810190620073f98162000b11888886620113bc565b5190208a5260205260ff600360408b2001541615620079e8575b6001600160a01b0384165f908152600d6020526040902090895260205262000b116200744f60408a2093604051928391602083019586620113bc565b51902087526020526040862090600182015491600281015498620074748a856200eb70565b620078e7575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052999a9899979896978b9790956020876044815f5160206201b1205f395f51905f525afa9687156200396c578997620078a8575b506001908201610100031b5f1901811b198616915f5160206201b1205f395f51905f523b1562003929576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528681606481835f5160206201b1205f395f51905f525af1908115620011635787916200788f575b505062007560620115b6565b91901591821562007883575b5050620023e657505050620075806201218f565b60255460405163095ea7b360e01b81526001600160a01b0390911660048201525f19602482015260208160448186895af180156200083d5762007861575b506040516370a0823160e01b815230600482015294602086602481885afa9586156200083d57839662007824575b506040516370a0823160e01b8152306004820152916020836024815f5160206201b2405f395f51905f525afa92831562000518578493620077e5575b50602554604051638307c65560e01b81525f5160206201b1805f395f51905f526004820152602481018890525f5160206201b2405f395f51905f5260448201526064810192909252608482018690529093608091859160a4918391906001600160a01b03165af192831562001163578793620077bf575b5015620076f6576040516370a0823160e01b81523060048201526020816024815f5160206201b2405f395f51905f525afa908115620011635787916200112457506024936200109f60209493620010a6936200ed98565b939190926020602491604051928380926370a0823160e01b82523060048301525afa9081156200133857869162007784575b506200109f9062007739936200ed98565b516040516370a0823160e01b81523060048201526020816024815f5160206201b2405f395f51905f525afa90811562000518578491620011f25750620010e2926200109f916200ed98565b90506020813d602011620077b6575b81620077a2602093836200e74e565b810103126200111757516200773962007728565b3d915062007793565b620077dd91935060803d6080116200129d576200128c81836200e74e565b915f6200769f565b935091506020833d6020116200781b575b8162007805602093836200e74e565b8101031262001117576080879351929062007628565b3d9150620077f6565b925094506020823d60201162007858575b8162007844602093836200e74e565b810103126200111757859151945f620075ec565b3d915062007835565b6200787d9060203d6020116200136f576200136081836200e74e565b620075be565b141590505f806200756c565b816200789b916200e74e565b620014a857855f62007554565b985095506020883d602011620078de575b81620078c8602093836200e74e565b81010312620011175796518b97909581620074d2565b3d9150620078b9565b620078f38a856200eb70565b610100036101008111620016315760ff811162001631576001901b996040519a63348051d760e11b8c528060048d01528a8c6024815f5160206201b1205f395f51905f525afa9b8c1562005b0d578b9c620079c8575b50604051809c602082015f5160206201b2805f395f51905f529052604082015f5160206201b1005f395f51905f5290526060820169030ba32b9103a3430b7160b51b905280516020819201606a84015e81018c606a82015203606a01601f1981018d52620079b8908d6200e74e565b82101562005bf95799506200747a565b620079e0919c503d808d833e6200161481836200e74e565b9a5f62007949565b620079f26201185a565b5062007413565b9095506020813d60201162007a2a575b8162007a18602093836200e74e565b81010312620011175751945f620072e8565b3d915062007a09565b8162007a3f916200e74e565b6200052357835f620072be565b62007a57906200eccd565b5181105f5160206201b1205f395f51905f523b15620018205760405190632631f2b160e11b8252600482015284816024815f5160206201b1205f395f51905f525afa8015620025ea5790859162007ab1575b5050620072c1565b8162007abd916200e74e565b6200052357835f62007aa9565b62007ae29193503d8086833e6200055081836200e74e565b915f6200724a565b8293620071e8565b62007afe91506200f52f565b92620071d1565b5034620002b45780600319360112620002b457601b5462007b26816200ea1a565b9062007b3660405192836200e74e565b808252601b8352827f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1602084015b83831062007b7c5760405180620008d887826200e85f565b60405162007b8a816200e716565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b81600784011062007c2b578460019794600297946020979462007c18945491818110620062fe57818110620062e157818110620062c457818110620062a7578181106200628a578181106200626d578181106200625257106200623d575003826200e74e565b8382015281520192019201919062007b64565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e082015201940192019162007bb2565b5034620002b45760649062007ce0366200e79e565b156200874a5760015b60255460405163549387df60e11b81525f5160206201b1c05f395f51905f5260048201525f5160206201b1405f395f51905f526024820152737f39c581f595b53c5cb19bd0b3f8da6c935e2ca0604482015294849186919082906001600160a01b03165afa9384156200083d5783946200872a575b50600281101562003bda5760018114938415620086905762007d80906200ecdb565b51821080620085ba575b5f5160206201b1205f395f51905f523b156200052357604051632631f2b160e11b8152901515600482015283816024815f5160206201b1205f395f51905f525afa80156200051857908491620085a1575b50505b6040516318160ddd60e01b8152936020856004815f5160206201b1405f395f51905f525afa9485156200051857849562008567575b508460011b948086046002149015171562003ac657838060405160208101906370a0823160e01b82523060248201526024815262007e536044826200e74e565b51905f5160206201b1405f395f51905f525afa5062007e7562000a2b62010eea565b50601180546001600160a01b0319165f5160206201b1405f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b811015620024c25762000a9081600162007ecf9301600e556200e912565b905560018060a01b0360115416600f5460e01b6010549062007ef0620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b169081895260205260408820604051602081019062007f378162000b11888886620113bc565b519020895260205260ff600360408a200154161562008556575b6001600160a01b0384165f908152600d6020526040902090885260205262000b1162007f8d6040892093604051928391602083019586620113bc565b5190208652602052604085209060018201549160028101549762007fb289856200eb70565b62008479575b8154604051630667f9d760e41b81526001600160a01b0385166004820152602481018290529899979896978a97956020876044815f5160206201b1205f395f51905f525afa9687156200396c5789976200843a575b506001908201610100031b5f1901811b198616915f5160206201b1205f395f51905f523b1562003929576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528681606481835f5160206201b1205f395f51905f525af19081156200116357879162008421575b50506200809b620115b6565b91901591821562008415575b5050620023e657505050620080bb6201218f565b60255460405163095ea7b360e01b81526001600160a01b0390911660048201525f196024820152602081604481865f5160206201b1405f395f51905f525af180156200083d57620083f3575b506040516370a0823160e01b8152306004820152936020856024815f5160206201b1405f395f51905f525afa9485156200083d578395620083b6575b506040516370a0823160e01b815230600482015291602083602481737f39c581f595b53c5cb19bd0b3f8da6c935e2ca05afa9283156200051857849362008379575b506080604095836200819e8851620020d18a826200e74e565b526025548751638307c65560e01b81525f5160206201b1c05f395f51905f5260048201525f5160206201b1405f395f51905f526024820152737f39c581f595b53c5cb19bd0b3f8da6c935e2ca060448201526064810192909252608482018590529095869160a49183916001600160a01b03165af19384156200224657879462008353575b5015620082795783516370a0823160e01b8152306004820152602081602481737f39c581f595b53c5cb19bd0b3f8da6c935e2ca05afa90811562002246578791620037bb57506200376f926200109f916200ed98565b83516370a0823160e01b81523060048201529194916020816024815f5160206201b1405f395f51905f525afa9081156200224657879162008318575b506200109f90620082c6936200ed98565b519080516370a0823160e01b8152306004820152602081602481737f39c581f595b53c5cb19bd0b3f8da6c935e2ca05afa9182156200220257508491620011f25750620010e2926200109f916200ed98565b90506020813d6020116200834a575b8162008336602093836200e74e565b81010312620011175751620082c6620082b5565b3d915062008327565b6200837191945060803d6080116200129d576200128c81836200e74e565b925f62008223565b935091506020833d602011620083ad575b8162008399602093836200e74e565b810103126200111757859251915f62008185565b3d91506200838a565b925093506020823d602011620083ea575b81620083d6602093836200e74e565b810103126200111757849151935f62008143565b3d9150620083c7565b6200840f9060203d6020116200136f576200136081836200e74e565b62008107565b141590505f80620080a7565b816200842d916200e74e565b620014a857855f6200808f565b985095506020883d60201162008470575b816200845a602093836200e74e565b81010312620011175796518a979095816200800d565b3d91506200844b565b6200848589856200eb70565b61010003610100811162003aa15760ff811162003aa1576001901b986040519963348051d760e11b8b528060048c0152898b6024815f5160206201b1205f395f51905f525afa9a8b1562003a9657606a60209c62008546928d9162003a7857506040519d8e915f5160206201b2805f395f51905f52828401525f5160206201b1005f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018d838201520301601f1981018d528c6200e74e565b82101562003a5557985062007fb8565b620085606201185a565b5062007f51565b9094506020813d60201162008598575b8162008586602093836200e74e565b81010312620011175751935f62007e13565b3d915062008577565b81620085ad916200e74e565b6200051457825f62007ddb565b5060405163313ce56760e01b8152602081600481737f39c581f595b53c5cb19bd0b3f8da6c935e2ca05afa8015620005185784906200864c575b60ff915016806006821162008638575b600c811162008623575b50604d811162003ac657600a0a821162007d8a565b60021981019150811162003ac6575f6200860e565b905f19810190811162002555579062008604565b506020813d60201162008687575b8162008669602093836200e74e565b8101031262000523575160ff81168103620005235760ff90620085f4565b3d91506200865a565b6200869b906200eccd565b5182108062008717575b5f5160206201b1205f395f51905f523b156200052357604051632631f2b160e11b8152901515600482015283816024815f5160206201b1205f395f51905f525afa80156200051857908491620086fe575b505062007dde565b816200870a916200e74e565b6200051457825f620086f6565b50620087226200f047565b8211620086a5565b620087429194503d8085833e6200055081836200e74e565b925f62007d5e565b8162007ce9565b5034620002b45762008763366200e79e565b1562008f7e5760015b60255460405163549387df60e11b81525f5160206201b1c05f395f51905f5260048201525f5160206201b1a05f395f51905f5260248201525f5160206201b1405f395f51905f526044820152908490829060649082906001600160a01b03165afa9081156200051857849162008f60575b5060028210156200268c57836001831491825f1462008ec95762008801906200ecdb565b5184108062008eb6575b5f5160206201b1205f395f51905f523b156200082057604051632631f2b160e11b8152901515600482015281816024815f5160206201b1205f395f51905f525afa8015620008155762008e9d575b50505b838060405160208101906370a0823160e01b825230602482015260248152620088876044826200e74e565b51905f5160206201b1a05f395f51905f525afa50620088a962000a2b62010eea565b50601180546001600160a01b0319165f5160206201b1a05f395f51905f52179055600f805463ffffffff19166370a08231179055600e54600160401b811015620024c257906200890562000a90836001889501600e556200e912565b905560018060a01b0360115416600f5460e01b6010549062008926620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908187526020526040862060405160208101906200896d8162000b11888886620113bc565b519020875260205260ff6003604088200154161562008e8c575b6001600160a01b0384165f908152600d6020526040902090865260205262000b11620089c36040872093604051928391602083019586620113bc565b519020845260205260408320906001820154916002810154620089e781856200eb70565b620024a4578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052949091906020866044815f5160206201b1205f395f51905f525afa958615620012a557889662008e4d575b506001908201610100031b5f1901811b1985165f5160206201b1205f395f51905f523b1562002461576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528581606481835f5160206201b1205f395f51905f525af19081156200133857869162008e34575b505062008ac7620115b6565b901590811562008e27575b50620023e65750505062008ae56201218f565b60255460405163095ea7b360e01b81526001600160a01b0390911660048201525f196024820152602081604481865f5160206201b1a05f395f51905f525af180156200083d5762008e05575b506040516370a0823160e01b8152306004820152936020856024815f5160206201b1a05f395f51905f525afa9485156200083d57839562008dc8575b506040516370a0823160e01b8152306004820152916020836024815f5160206201b1405f395f51905f525afa9283156200051857849362008d8b575b5060806040958362008bc28851620020d18a826200e74e565b526025548751638307c65560e01b81525f5160206201b1c05f395f51905f5260048201525f5160206201b1a05f395f51905f5260248201525f5160206201b1405f395f51905f5260448201526064810192909252608482018590529095869160a49183916001600160a01b03165af19384156200224657879462008d65575b501562008d195783516370a0823160e01b81523060048201526020816024815f5160206201b1405f395f51905f525afa9081156200224657879162008cde575b5062008c92926200109f916200ed98565b519080516370a0823160e01b81523060048201526020816024815f5160206201b1a05f395f51905f525afa9182156200220257508491620010e557506200109f90620010e2936200ed98565b90506020813d60201162008d10575b8162008cfc602093836200e74e565b8101031262001117575162008c9262008c81565b3d915062008ced565b83516370a0823160e01b81523060048201529194916020816024815f5160206201b1a05f395f51905f525afa9081156200224657879162004f6d57506200109f9062004f21936200ed98565b62008d8391945060803d6080116200129d576200128c81836200e74e565b925f62008c41565b935091506020833d60201162008dbf575b8162008dab602093836200e74e565b810103126200111757859251915f62008ba9565b3d915062008d9c565b925093506020823d60201162008dfc575b8162008de8602093836200e74e565b810103126200111757849151935f62008b6d565b3d915062008dd9565b62008e219060203d6020116200136f576200136081836200e74e565b62008b31565b5f19141590505f62008ad2565b8162008e40916200e74e565b6200182057845f62008abb565b975094506020873d60201162008e83575b8162008e6d602093836200e74e565b8101031262001117579551899690948162008a3c565b3d915062008e5e565b62008e966201185a565b5062008987565b8162008ea9916200e74e565b6200052357835f62008859565b5062008ec16200f047565b84116200880b565b62008ed4906200eccd565b5184108062008f4d575b5f5160206201b1205f395f51905f523b156200082057604051632631f2b160e11b8152901515600482015281816024815f5160206201b1205f395f51905f525afa8015620008155762008f34575b50506200885c565b8162008f40916200e74e565b6200052357835f62008f2c565b5062008f586200f111565b841162008ede565b62008f7791503d8086833e6200055081836200e74e565b5f620087dd565b816200876c565b5034620002b4576020366003190112620002b45760255460405163549387df60e11b81525f5160206201b1805f395f51905f526004828101919091525f5160206201b2405f395f51905f5260248301525f5160206201b1e05f395f51905f5260448301523592918290829060649082906001600160a01b03165afa9081156200081557829162009240575b506200901f620006006200f21f565b5183105f5160206201b1205f395f51905f523b15620005145760405190632631f2b160e11b8252600482015282816024815f5160206201b1205f395f51905f525afa80156200083d5790839162009227575b50505f5160206201b1205f395f51905f523b156200082057604051632631f2b160e11b8152908311600482015281816024815f5160206201b1205f395f51905f525afa801562000815579082916200920e575b5050604091818351620090d885826200e74e565b600181526020810192601f198601368537620090f4826200eccd565b52620090ff6200f38e565b602554855163155adc9160e31b81525f5160206201b1805f395f51905f5260048201525f5160206201b2405f395f51905f5260248201525f5160206201b1e05f395f51905f52604482015260806064820152915160848301819052919384926001600160a01b039092169160a484019190855b818110620091f15750505083838281935003925af1928315620004d357508192620091d1575b50805b8251811015620004a65780620091b86200047c600193866200ecec565b620091ca60206200049683876200ecec565b016200919b565b620091e99192503d8084833e620004c281836200e74e565b905f62009198565b825184528896508795506020938401939092019160010162009172565b816200921a916200e74e565b620002b457805f620090c4565b8162009233916200e74e565b6200082057815f62009071565b6200925791503d8084833e6200055081836200e74e565b5f62009010565b5034620002b45780600319360112620002b4576028546040516001600160a01b039091168152602090f35b5034620002b4576064906200929e366200e79e565b6027549093916001600160a01b0390911690841562009cf2576001945b60255460405163549387df60e11b81525f5160206201b2605f395f51905f526004820152602481018590525f5160206201b1605f395f51905f52604482015294869186919082906001600160a01b03165afa938415620025ea57859462009cd2575b501562009c37576200932f836200ecdb565b5181108062009c25575b5f5160206201b1205f395f51905f523b156200182057604051632631f2b160e11b8152901515600482015284816024815f5160206201b1205f395f51905f525afa8015620025ea5790859162009c0c575b50505b60028510156200268c576001851492831562009b8e57620093ae906200ecdb565b5181105f5160206201b1205f395f51905f523b15620018205760405190632631f2b160e11b8252600482015284816024815f5160206201b1205f395f51905f525afa8015620025ea5790859162009b75575b50505b6040516318160ddd60e01b815294602086600481865afa958615620025ea57859662009b3b575b508560011b95808704600214901517156200255557848060405160208101906370a0823160e01b8252306024820152602481526200946a6044826200e74e565b5190865afa506200947e62000a2b62010eea565b50601180546001600160a01b0319166001600160a01b0385161790556370a0823163ffffffff19600f541617600f55600e54600160401b811015620016565762000a90816001620094d39301600e556200e912565b905560018060a01b0360115416600f5460e01b60105490620094f4620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818a526020526040892060405160208101906200953b8162000b11888886620113bc565b5190208a5260205260ff600360408b200154161562009b2a575b6001600160a01b0384165f908152600d6020526040902090895260205262000b116200959160408a2093604051928391602083019586620113bc565b51902087526020526040862090600182015491600281015498620095b68a856200eb70565b62009a29575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052999a9899979896978b9790956020876044815f5160206201b1205f395f51905f525afa9687156200396c578997620099ea575b506001908201610100031b5f1901811b198616915f5160206201b1205f395f51905f523b1562003929576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528681606481835f5160206201b1205f395f51905f525af190811562001163578791620099d1575b5050620096a2620115b6565b919015918215620099c5575b5050620023e657505050620096c26201218f565b60255460405163095ea7b360e01b81526001600160a01b0390911660048201525f19602482015260208160448186895af180156200083d57620099a3575b506040516370a0823160e01b815230600482015294602086602481885afa9586156200083d57839662009966575b506040516370a0823160e01b8152306004820152916020836024815f5160206201b1605f395f51905f525afa9283156200051857849362009927575b50602554604051638307c65560e01b81525f5160206201b2605f395f51905f526004820152602481018890525f5160206201b1605f395f51905f5260448201526064810192909252608482018690529093608091859160a4918391906001600160a01b03165af19283156200116357879362009901575b501562009838576040516370a0823160e01b81523060048201526020816024815f5160206201b1605f395f51905f525afa908115620011635787916200112457506024936200109f60209493620010a6936200ed98565b939190926020602491604051928380926370a0823160e01b82523060048301525afa90811562001338578691620098c6575b506200109f906200987b936200ed98565b516040516370a0823160e01b81523060048201526020816024815f5160206201b1605f395f51905f525afa90811562000518578491620011f25750620010e2926200109f916200ed98565b90506020813d602011620098f8575b81620098e4602093836200e74e565b810103126200111757516200987b6200986a565b3d9150620098d5565b6200991f91935060803d6080116200129d576200128c81836200e74e565b915f620097e1565b935091506020833d6020116200995d575b8162009947602093836200e74e565b810103126200111757608087935192906200976a565b3d915062009938565b925094506020823d6020116200999a575b8162009986602093836200e74e565b810103126200111757859151945f6200972e565b3d915062009977565b620099bf9060203d6020116200136f576200136081836200e74e565b62009700565b141590505f80620096ae565b81620099dd916200e74e565b620014a857855f62009696565b985095506020883d60201162009a20575b8162009a0a602093836200e74e565b81010312620011175796518b9790958162009614565b3d9150620099fb565b62009a358a856200eb70565b610100036101008111620016315760ff811162001631576001901b996040519a63348051d760e11b8c528060048d01528a8c6024815f5160206201b1205f395f51905f525afa9b8c1562005b0d578b9c62009b0a575b50604051809c602082015f5160206201b2805f395f51905f529052604082015f5160206201b1005f395f51905f5290526060820169030ba32b9103a3430b7160b51b905280516020819201606a84015e81018c606a82015203606a01601f1981018d5262009afa908d6200e74e565b82101562005bf9579950620095bc565b62009b22919c503d808d833e6200161481836200e74e565b9a5f62009a8b565b62009b346201185a565b5062009555565b9095506020813d60201162009b6c575b8162009b5a602093836200e74e565b81010312620011175751945f6200942a565b3d915062009b4b565b8162009b81916200e74e565b6200052357835f62009400565b62009b99906200eccd565b5181105f5160206201b1205f395f51905f523b15620018205760405190632631f2b160e11b8252600482015284816024815f5160206201b1205f395f51905f525afa8015620025ea5790859162009bf3575b505062009403565b8162009bff916200e74e565b6200052357835f62009beb565b8162009c18916200e74e565b6200052357835f6200938a565b50670de0b6b3a7640000811162009339565b62009c42836200eccd565b5181108062009cbe575b5f5160206201b1205f395f51905f523b156200182057604051632631f2b160e11b8152901515600482015284816024815f5160206201b1205f395f51905f525afa8015620025ea5790859162009ca5575b50506200938d565b8162009cb1916200e74e565b6200052357835f62009c9d565b5062009cca826200f2d3565b811162009c4c565b62009cea9194503d8087833e6200055081836200e74e565b925f6200931d565b8394620092bb565b5034620002b4576020366003190112620002b45760275460255460405163549387df60e11b81525f5160206201b2605f395f51905f5260048201525f5160206201b1605f395f51905f5260248201526001600160a01b039283166044820181905293929091839183916064918391165afa9081156200081557829162009f33575b5062009d8d620006006004356200f4f7565b5181105f5160206201b1205f395f51905f523b15620005145760405190632631f2b160e11b8252600482015282816024815f5160206201b1205f395f51905f525afa80156200083d5790839162009f1a575b5050918160409384519062009df586836200e74e565b600182526020820190601f19870136833762009e11836200eccd565b5262009e1c6200f38e565b602554865163155adc9160e31b81525f5160206201b2605f395f51905f5260048201525f5160206201b1605f395f51905f52602482015260448101959095526080606486015291516084850181905284926001600160a01b03169160a4840191855b81811062009efd5750505083838281935003925af1928315620004d35750819262009edd575b50805b8251811015620004a6578062009ec46200047c600193866200ecec565b62009ed660206200049683876200ecec565b0162009ea7565b62009ef59192503d8084833e620004c281836200e74e565b905f62009ea4565b825184528896508795506020938401939092019160010162009e7e565b8162009f26916200e74e565b6200082057815f62009ddf565b62009f4a91503d8084833e6200055081836200e74e565b5f62009d7b565b5034620002b4576020366003190112620002b45760255460405163549387df60e11b81525f5160206201b2605f395f51905f526004828101919091525f5160206201b1605f395f51905f5260248301525f5160206201b2205f395f51905f5260448301523592918290829060649082906001600160a01b03165afa90811562000815579062009fe89183916200a13857506200eccd565b518210806200a125575b5f5160206201b1205f395f51905f523b156200082057604051632631f2b160e11b8152901515600482015281816024815f5160206201b1205f395f51905f525afa801562000815579082916200a10c575b505080806200a0ae6040948551906200a05d87836200e74e565b60018252601f1987013660208401376200a077826200eccd565b526200a0826200f38e565b602554865163155adc9160e31b81529485936001600160a01b039092169284928391600483016200ee36565b03925af1928315620004d3575081926200a0ec575b50805b8251811015620004a657806200a0e5602062000496600194876200ecec565b016200a0c6565b6200a1049192503d8084833e620004c281836200e74e565b905f6200a0c3565b816200a118916200e74e565b620002b457805f6200a043565b506200a1306200f1c5565b821162009ff2565b6200055991503d8085833e6200055081836200e74e565b5034620002b45780600319360112620002b45760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b8181106200a1b457620008d885620008cb818703826200e74e565b82546001600160a01b03168452602090930192600192830192016200a199565b5034620002b45780600319360112620002b45760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b8181106200a23957620008d885620008cb818703826200e74e565b82546001600160a01b03168452602090930192600192830192016200a21e565b5034620002b4576020366003190112620002b45760255460405163549387df60e11b81525f5160206201b2605f395f51905f526004828101919091525f5160206201b1605f395f51905f5260248301525f5160206201b2205f395f51905f5260448301523592918290829060649082906001600160a01b03165afa9081156200081557906200a2f09183916200a13857506200eccd565b518210806200a3ec575b5f5160206201b1205f395f51905f523b156200082057604051632631f2b160e11b8152901515600482015281816024815f5160206201b1205f395f51905f525afa801562000815579082916200a3d3575b505080806200a3656040948551906200a05d87836200e74e565b03925af1928315620004d3575081926200a3b3575b50805b8251811015620004a657806200a39a6200047c600193866200ecec565b6200a3ac60206200049683876200ecec565b016200a37d565b6200a3cb9192503d8084833e620004c281836200e74e565b905f6200a37a565b816200a3df916200e74e565b620002b457805f6200a34b565b5067016345785d8a000082116200a2fa565b5034620002b45780600319360112620002b457602060405160128152f35b5034620002b45780600319360112620002b457601d546200a43d816200ea1a565b6200a44c60405191826200e74e565b818152601d83526020810191837f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f845b8383106200a50557868587604051928392602084019060208552518091526040840160408260051b8601019392905b8282106200a4bb57505050500390f35b919360019193955060206200a4f48192603f198a82030186526040838a51878060a01b038151168452015191818582015201906200e803565b96019201920185949391926200a4ab565b6040516200a513816200e716565b82546001600160a01b031681526001830180546200a531816200ea1a565b916200a54160405193846200e74e565b8183528a526020808b20908b9084015b8382106200a5795750505050600192826020928360029501528152019201920191906200a47c565b6001602081926040516200a59381620047f0818a6200e993565b8152019301910190916200a551565b5034620002b4576060366003190112620002b4576200a5c06200e770565b6200a5ca6200e787565b6001600160a01b038216808452602160209081526040808620335f90815292529020546044359391600182016200a60a575b50506200483493506200f437565b8482106200a6775780156200a6635733156200a64f578560409162004834975260216020522060018060a01b0333165f526020528360405f20910390555f806200a5fc565b634a1406b160e11b86526004869052602486fd5b63e602df0560e01b86526004869052602486fd5b6064868684637dc7a0d960e11b835233600452602452604452fd5b5034620002b45780600319360112620002b45760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b8181106200a6f757620008d885620008cb818703826200e74e565b82546001600160a01b03168452602090930192600192830192016200a6dc565b5034620002b45780600319360112620002b4576029546040516001600160a01b039091168152602090f35b5034620002b45780600319360112620002b4576020602254604051908152f35b5034620002b4576020366003190112620002b45760255460405163549387df60e11b81525f5160206201b1c05f395f51905f526004828101919091525f5160206201b2005f395f51905f5260248301525f5160206201b1a05f395f51905f5260448301523592918290829060649082906001600160a01b03165afa908115620008155782916200aa1d575b506200a7fc620006006200f16b565b5183105f5160206201b1205f395f51905f523b15620005145760405190632631f2b160e11b8252600482015282816024815f5160206201b1205f395f51905f525afa80156200083d579083916200aa04575b50505f5160206201b1205f395f51905f523b156200082057604051632631f2b160e11b8152908311600482015281816024815f5160206201b1205f395f51905f525afa801562000815579082916200a9eb575b50506040918183516200a8b585826200e74e565b600181526020810192601f1986013685376200a8d1826200eccd565b526200a8dc6200f38e565b602554855163155adc9160e31b81525f5160206201b1c05f395f51905f5260048201525f5160206201b2005f395f51905f5260248201525f5160206201b1a05f395f51905f52604482015260806064820152915160848301819052919384926001600160a01b039092169160a484019190855b8181106200a9ce5750505083838281935003925af1928315620004d3575081926200a9ae575b50805b8251811015620004a657806200a9956200047c600193866200ecec565b6200a9a760206200049683876200ecec565b016200a978565b6200a9c69192503d8084833e620004c281836200e74e565b905f6200a975565b82518452889650879550602093840193909201916001016200a94f565b816200a9f7916200e74e565b620002b457805f6200a8a1565b816200aa10916200e74e565b6200082057815f6200a84e565b6200aa3491503d8084833e6200055081836200e74e565b5f6200a7ed565b5034620002b4576064906200aa50366200e79e565b156200b3515760015b60255460405163549387df60e11b81525f5160206201b1c05f395f51905f5260048201525f5160206201b1405f395f51905f5260248201525f5160206201b1a05f395f51905f52604482015294849186919082906001600160a01b03165afa9384156200083d5783946200b331575b50600281101562003bda57600181149384156200b297576200aaea906200ecdb565b518210806200b284575b5f5160206201b1205f395f51905f523b156200052357604051632631f2b160e11b8152901515600482015283816024815f5160206201b1205f395f51905f525afa801562000518579084916200b26b575b50505b6040516318160ddd60e01b8152936020856004815f5160206201b1405f395f51905f525afa948515620005185784956200b231575b508460011b948086046002149015171562003ac657838060405160208101906370a0823160e01b8252306024820152602481526200abbd6044826200e74e565b51905f5160206201b1405f395f51905f525afa506200abdf62000a2b62010eea565b50601180546001600160a01b0319165f5160206201b1405f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b811015620024c25762000a908160016200ac399301600e556200e912565b905560018060a01b0360115416600f5460e01b601054906200ac5a620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908189526020526040882060405160208101906200aca18162000b11888886620113bc565b519020895260205260ff600360408a20015416156200b220575b6001600160a01b0384165f908152600d6020526040902090885260205262000b116200acf76040892093604051928391602083019586620113bc565b519020865260205260408520906001820154916002810154976200ad1c89856200eb70565b6200b143575b8154604051630667f9d760e41b81526001600160a01b0385166004820152602481018290529899979896978a97956020876044815f5160206201b1205f395f51905f525afa9687156200396c5789976200b104575b506001908201610100031b5f1901811b198616915f5160206201b1205f395f51905f523b1562003929576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528681606481835f5160206201b1205f395f51905f525af1908115620011635787916200b0eb575b50506200ae05620115b6565b9190159182156200b0df575b5050620023e6575050506200ae256201218f565b60255460405163095ea7b360e01b81526001600160a01b0390911660048201525f196024820152602081604481865f5160206201b1405f395f51905f525af180156200083d576200b0bd575b506040516370a0823160e01b8152306004820152936020856024815f5160206201b1405f395f51905f525afa9485156200083d5783956200b080575b506040516370a0823160e01b8152306004820152916020836024815f5160206201b1a05f395f51905f525afa928315620005185784936200b043575b506080604095836200af028851620020d18a826200e74e565b526025548751638307c65560e01b81525f5160206201b1c05f395f51905f5260048201525f5160206201b1405f395f51905f5260248201525f5160206201b1a05f395f51905f5260448201526064810192909252608482018590529095869160a49183916001600160a01b03165af1938415620022465787946200b01d575b50156200afd15783516370a0823160e01b81523060048201526020816024815f5160206201b1a05f395f51905f525afa90811562002246578791620037bb57506200376f926200109f916200ed98565b83516370a0823160e01b81523060048201529194916020816024815f5160206201b1405f395f51905f525afa9081156200224657879162006a7257506200109f9062006a26936200ed98565b6200b03b91945060803d6080116200129d576200128c81836200e74e565b925f6200af81565b935091506020833d6020116200b077575b816200b063602093836200e74e565b810103126200111757859251915f6200aee9565b3d91506200b054565b925093506020823d6020116200b0b4575b816200b0a0602093836200e74e565b810103126200111757849151935f6200aead565b3d91506200b091565b6200b0d99060203d6020116200136f576200136081836200e74e565b6200ae71565b141590505f806200ae11565b816200b0f7916200e74e565b620014a857855f6200adf9565b985095506020883d6020116200b13a575b816200b124602093836200e74e565b81010312620011175796518a979095816200ad77565b3d91506200b115565b6200b14f89856200eb70565b61010003610100811162003aa15760ff811162003aa1576001901b986040519963348051d760e11b8b528060048c0152898b6024815f5160206201b1205f395f51905f525afa9a8b1562003a9657606a60209c6200b210928d9162003a7857506040519d8e915f5160206201b2805f395f51905f52828401525f5160206201b1005f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018d838201520301601f1981018d528c6200e74e565b82101562003a555798506200ad22565b6200b22a6201185a565b506200acbb565b9094506020813d6020116200b262575b816200b250602093836200e74e565b81010312620011175751935f6200ab7d565b3d91506200b241565b816200b277916200e74e565b6200051457825f6200ab45565b506200b28f6200f111565b82116200aaf4565b6200b2a2906200eccd565b518210806200b31e575b5f5160206201b1205f395f51905f523b156200052357604051632631f2b160e11b8152901515600482015283816024815f5160206201b1205f395f51905f525afa801562000518579084916200b305575b50506200ab48565b816200b311916200e74e565b6200051457825f6200b2fd565b506200b3296200f047565b82116200b2ac565b6200b3499194503d8085833e6200055081836200e74e565b925f6200aac8565b816200aa59565b503462001117575f366003190112620011175760405163975a6ce960e01b81526020600482015260076024820152661b585a5b9b995d60ca1b60448201525f816064815f5160206201b1205f395f51905f525afa9081156200e4bb576200b3e8916020915f916200e50f575b50604051809381926371ee464d60e01b83526040600484015260448301906200e6f2565b630146de46602483015203815f5f5160206201b1205f395f51905f525af180156200e4bb576200e4da575b50602654604051906001600160a01b03166150b58083016001600160401b038111848210176200e4c657608092849262012488843973ba1333333333a1ba1108e8412f11850a5c319ba9825260208201526e22d473030f116ddee9f6b43ac78ba360408201525f5160206201b1405f395f51905f5260608201520301905ff080156200e4bb5760018060a01b03166bffffffffffffffffffffffff60a01b60255416176025556040516113eb808201908282106001600160401b038311176200e4c65760209183916201753d83395f5160206201b2205f395f51905f5281520301905ff080156200e4bb57602780546001600160a01b0319166001600160a01b039290921691821790555f5160206201b1205f395f51905f523b156200111757604051906318caf8e360e31b8252600482015260406024820152600d60448201526c455243343632365f735553444360981b60648201525f81608481835f5160206201b1205f395f51905f525af180156200e4bb576200e4a5575b50604051906113ed91828101928184106001600160401b038511176200e478578183946020926201892883395f5160206201b1605f395f51905f52815203019082f080156200e46b57602980546001600160a01b0319166001600160a01b039290921691821790555f5160206201b1205f395f51905f523b156200d82c57604051906318caf8e360e31b8252600482015260406024820152600e60448201526d08aa486686c646cbee68e9e8aa8960931b60648201528181608481835f5160206201b1205f395f51905f525af1801562000815576200e48c575b5050604051906113eb91828101928184106001600160401b038511176200e4785781839460209262019d1583395f5160206201b1e05f395f51905f52815203019082f080156200e46b57602880546001600160a01b0319166001600160a01b039290921691821790555f5160206201b1205f395f51905f523b156200d82c57604051906318caf8e360e31b8252600482015260406024820152600d60448201526c08aa486686c646cbee68aa890f609b1b60648201528181608481835f5160206201b1205f395f51905f525af1801562000815576200e452575b508060405160208101906370a0823160e01b8252306024820152602481526200b76d6044826200e74e565b51905f5160206201b2205f395f51905f525afa506200b78f62000a2b62010eea565b50601180546001600160a01b0319165f5160206201b2205f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b8110156200db2d5762000a908160016200b7e99301600e556200e912565b905560018060a01b0360115416600f5460e01b601054906200b80a620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908186526020526040852060405160208101906200b8518162000b11888886620113bc565b519020865260205260ff600360408720015416156200e441575b6001600160a01b0384165f908152600d6020526040902090855260205262000b116200b8a76040862093604051928391602083019586620113bc565b519020835260205281604081209160018301549260028101546200b8cc81866200eb70565b6200e33b575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f5160206201b1205f395f51905f525afa968715620013385786976200e2fc575b506001908201610100031b5f1901811b198616915f5160206201b1205f395f51905f523b15620014a8576040516370ca10bb60e01b81526001600160a01b0386166004820152602481019190915264e8d4a5100090911b9190911760448201528381606481835f5160206201b1205f395f51905f525af1908115620005185784916200e2e3575b50506200b9b5620115b6565b90159081156200e2d2575b506200d95357826200b9d16201218f565b808060405160208101906370a0823160e01b8252306024820152602481526200b9fc6044826200e74e565b51905f5160206201b1e05f395f51905f525afa506200ba1e62000a2b62010eea565b50601180546001600160a01b0319165f5160206201b1e05f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b8110156200db2d5762000a908160016200ba789301600e556200e912565b905560018060a01b0360115416600f5460e01b601054906200ba99620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908186526020526040852060405160208101906200bae08162000b11888886620113bc565b519020865260205260ff600360408720015416156200e2c1575b6001600160a01b0384165f908152600d6020526040902090855260205262000b116200bb366040862093604051928391602083019586620113bc565b519020835260205281604081209160018301549260028101546200bb5b81866200eb70565b6200e1d4575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f5160206201b1205f395f51905f525afa968715620013385786976200e195575b506001908201610100031b5f1901811b198616915f5160206201b1205f395f51905f523b15620014a8576040516370ca10bb60e01b81526001600160a01b0386166004820152602481019190915269152d02c7e14af680000090911b9190911760448201528381606481835f5160206201b1205f395f51905f525af1908115620005185784916200e17c575b50506200bc49620115b6565b90159081156200e166575b506200d95357826200bc656201218f565b808060405160208101906370a0823160e01b8252306024820152602481526200bc906044826200e74e565b51905f5160206201b1605f395f51905f525afa506200bcb262000a2b62010eea565b50601180546001600160a01b0319165f5160206201b1605f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b8110156200db2d5762000a908160016200bd0c9301600e556200e912565b905560018060a01b0360115416600f5460e01b601054906200bd2d620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908186526020526040852060405160208101906200bd748162000b11888886620113bc565b519020865260205260ff600360408720015416156200e155575b6001600160a01b0384165f908152600d6020526040902090855260205262000b116200bdca6040862093604051928391602083019586620113bc565b519020835260205281604081209160018301549260028101546200bdef81866200eb70565b6200e067575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f5160206201b1205f395f51905f525afa968715620013385786976200e028575b506001908201610100031b5f1901811b198616915f5160206201b1205f395f51905f523b15620014a8576040516370ca10bb60e01b81526001600160a01b038616600482015260248101919091526a084595161401484a00000090911b9190911760448201528381606481835f5160206201b1205f395f51905f525af1908115620005185784916200e00f575b50506200bede620115b6565b90159081156200dff8575b506200d95357826200befa6201218f565b60405163095ea7b360e01b81526e22d473030f116ddee9f6b43ac78ba360048201525f196024820152602081604481855f5160206201b1605f395f51905f525af1801562000815576200dfd6575b5060295460405163095ea7b360e01b81526e22d473030f116ddee9f6b43ac78ba360048201525f196024820152906020908290604490829086906001600160a01b03165af1801562000815576200dfb4575b5060405163095ea7b360e01b81526e22d473030f116ddee9f6b43ac78ba360048201525f196024820152602081604481855f5160206201b2205f395f51905f525af1801562000815576200df92575b5060405163095ea7b360e01b81526e22d473030f116ddee9f6b43ac78ba360048201525f196024820152602081604481855f5160206201b1e05f395f51905f525af1801562000815576200df70575b50620151804201804211620017e25765ffffffffffff8291166e22d473030f116ddee9f6b43ac78ba33b156200d82c576040516387517c4560e01b81525f5160206201b1605f395f51905f526004820152739179c06629ef7f17cb5759f501d89997fe0e7b4560248201526001600160a01b036044820152606481018290528281608481836e22d473030f116ddee9f6b43ac78ba35af19081156200083d5783916200df57575b50506029546001600160a01b03166e22d473030f116ddee9f6b43ac78ba33b156200de605782826200c1279260405193849283926387517c4560e01b8452600484016200eb7e565b0381836e22d473030f116ddee9f6b43ac78ba35af19081156200083d5783916200df3e575b50506e22d473030f116ddee9f6b43ac78ba33b156200d82c576040516387517c4560e01b81525f5160206201b2205f395f51905f526004820152739179c06629ef7f17cb5759f501d89997fe0e7b4560248201526001600160a01b036044820152606481018290528281608481836e22d473030f116ddee9f6b43ac78ba35af19081156200083d5783916200df25575b50506e22d473030f116ddee9f6b43ac78ba33b156200d82c576040516387517c4560e01b81525f5160206201b1e05f395f51905f526004820152739179c06629ef7f17cb5759f501d89997fe0e7b4560248201526001600160a01b036044820152606481018290528281608481836e22d473030f116ddee9f6b43ac78ba35af19081156200083d5783916200df0c575b5060275460405163095ea7b360e01b81526e22d473030f116ddee9f6b43ac78ba360048201525f1960248201529160209183916044918391906001600160a01b03165af180156200083d576200deea575b506027546001600160a01b03166e22d473030f116ddee9f6b43ac78ba33b156200de605782826200c3049260405193849283926387517c4560e01b8452600484016200eb7e565b0381836e22d473030f116ddee9f6b43ac78ba35af19081156200083d5783916200ded1575b5060285460405163095ea7b360e01b81526e22d473030f116ddee9f6b43ac78ba360048201525f1960248201529160209183916044918391906001600160a01b03165af180156200083d576200deaf575b506028546001600160a01b03166e22d473030f116ddee9f6b43ac78ba33b156200de605782826200c3c19260405193849283926387517c4560e01b8452600484016200eb7e565b0381836e22d473030f116ddee9f6b43ac78ba35af19081156200083d5783916200de96575b50506027546001600160a01b03166e22d473030f116ddee9f6b43ac78ba33b156200de605782826200c42e9260405193849283926387517c4560e01b8452600484016200ebc2565b0381836e22d473030f116ddee9f6b43ac78ba35af19081156200083d5783916200de7d575b50506028546001600160a01b03166e22d473030f116ddee9f6b43ac78ba33b156200de605782826200c49b9260405193849283926387517c4560e01b8452600484016200ebc2565b0381836e22d473030f116ddee9f6b43ac78ba35af19081156200083d5783916200de64575b50506029546001600160a01b03166e22d473030f116ddee9f6b43ac78ba33b156200de60576040516387517c4560e01b8152918391839182916200c5099190600484016200ebc2565b0381836e22d473030f116ddee9f6b43ac78ba35af1801562000815576200de47575b505060275460405163095ea7b360e01b81526001600160a01b0390911660048201525f196024820152602081604481855f5160206201b2205f395f51905f525af1801562000815576200de25575b5060285460405163095ea7b360e01b81526001600160a01b0390911660048201525f196024820152602081604481855f5160206201b1e05f395f51905f525af1801562000815576200de03575b5060295460405163095ea7b360e01b81526001600160a01b0390911660048201525f196024820152602081604481855f5160206201b1605f395f51905f525af1801562000815576200dde1575b50602754604051636e553f6560e01b8152633b9aca006004820152306024820152906020908290604490829086906001600160a01b03165af1801562000815576200ddac575b50602854604051636e553f6560e01b8152683635c9adc5dea000006004820152306024820152906020908290604490829086906001600160a01b03165af1801562000815576200dd77575b50602954604051636e553f6560e01b815269d3c21bcecceda10000006004820152306024820152906020908290604490829086906001600160a01b03165af1801562000815576200dd42575b506027546040516359b2d1e160e11b81526001600160a01b0390911660048201526298968060248201819052604482015262895440606482015260208160848185739179c06629ef7f17cb5759f501d89997fe0e7b455af1801562000815576200dd0d575b506028546040516359b2d1e160e11b81526001600160a01b039091166004820152678ac7230489e80000602482018190526044820152677ce66c50e2840000606482015260208160848185739179c06629ef7f17cb5759f501d89997fe0e7b455af1801562000815576200dcd8575b506029546040516359b2d1e160e11b81526001600160a01b039091166004820152678ac7230489e80000602482018190526044820152677ce66c50e2840000606482015260208160848185739179c06629ef7f17cb5759f501d89997fe0e7b455af1801562000815576200dca3575b50808060405160208101906370a0823160e01b8252306024820152602481526200c85f6044826200e74e565b51905f5160206201b2205f395f51905f525afa506200c88162000a2b62010eea565b50601180546001600160a01b0319165f5160206201b2205f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b8110156200db2d5762000a908160016200c8db9301600e556200e912565b905560018060a01b0360115416600f5460e01b601054906200c8fc620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908186526020526040852060405160208101906200c9438162000b11888886620113bc565b519020865260205260ff600360408720015416156200dc92575b6001600160a01b0384165f908152600d6020526040902090855260205262000b116200c9996040862093604051928391602083019586620113bc565b519020835260205281604081209160018301549260028101546200c9be81866200eb70565b6200dbaa575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f5160206201b1205f395f51905f525afa968715620013385786976200db6b575b506001908201610100031b5f1901811b198616915f5160206201b1205f395f51905f523b15620014a8576040516370ca10bb60e01b81526001600160a01b0386166004820152602481019190915264e8d4a5100090911b9190911760448201528381606481835f5160206201b1205f395f51905f525af1908115620005185784916200db52575b50506200caa7620115b6565b90159081156200db41575b506200d95357826200cac36201218f565b808060405160208101906370a0823160e01b8252306024820152602481526200caee6044826200e74e565b51905f5160206201b1e05f395f51905f525afa506200cb1062000a2b62010eea565b50601180546001600160a01b0319165f5160206201b1e05f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b8110156200db2d5762000a908160016200cb6a9301600e556200e912565b905560018060a01b0360115416600f5460e01b601054906200cb8b620113d3565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908186526020526040852060405160208101906200cbd28162000b11888886620113bc565b519020865260205260ff600360408720015416156200db1c575b6001600160a01b0384165f908152600d6020526040902090855260205262000b116200cc286040862093604051928391602083019586620113bc565b519020835260205281604081209160018301549260028101546200cc4d81866200eb70565b6200da11575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f5160206201b1205f395f51905f525afa968715620013385786976200d9d2575b506001908201610100031b5f1901811b198616915f5160206201b1205f395f51905f523b15620014a8576040516370ca10bb60e01b81526001600160a01b03861660048201526024810191909152683635c9adc5dea0000090911b9190911760448201528381606481835f5160206201b1205f395f51905f525af1908115620005185784916200d9b9575b50506200cd3a620115b6565b90159081156200d9a4575b506200d95357826200cd566201218f565b60275460405163095ea7b360e01b81526001600160a01b0390911660048201525f196024820152602081604481855f5160206201b2205f395f51905f525af1801562000815576200d931575b5060285460405163095ea7b360e01b81526001600160a01b0390911660048201525f196024820152602081604481855f5160206201b1e05f395f51905f525af1801562000815576200d90f575b50602754604051636e553f6560e01b815264e8d4a510006004820152306024820152906020908290604490829086906001600160a01b03165af1801562000815576200d8da575b50602854604051636e553f6560e01b8152683635c9adc5dea000006004820152306024820152906020908290604490829086906001600160a01b03165af1801562000815576200d8a5575b5060405163095ea7b360e01b815273ba1333333333a1ba1108e8412f11850a5c319ba960048201525f196024820152602081604481855f5160206201b2205f395f51905f525af1801562000815576200d883575b5060405163095ea7b360e01b815273ba1333333333a1ba1108e8412f11850a5c319ba960048201525f196024820152602081604481855f5160206201b1e05f395f51905f525af1801562000815576200d861575b505f5160206201b1205f395f51905f523b15620002b457806040516318caf8e360e31b815273ba1333333333a1ba1108e8412f11850a5c319ba9600482015260406024820152600f60448201526e10985b185b98d95c958cd5985d5b1d608a1b60648201528181608481835f5160206201b1205f395f51905f525af1801562000815576200d848575b506026546001600160a01b03165f5160206201b1205f395f51905f523b156200d82c57604051906318caf8e360e31b825260048201526040602482015260156044820152742130b630b731b2b92b19a130ba31b42937baba32b960591b60648201528181608481835f5160206201b1205f395f51905f525af1801562000815576200d82f575b506025546001600160a01b03165f5160206201b1205f395f51905f523b156200d82c57604051906318caf8e360e31b825260048201526040602482015260156044820152742130b630b731b2b92b19a9bbb0b820b230b83a32b960591b60648201528181608481835f5160206201b1205f395f51905f525af1801562000815576200d813575b50505f5160206201b1205f395f51905f523b15620002b457806040516318caf8e360e31b81525f5160206201b2405f395f51905f52600482015260406024820152601160448201527008aa486686c646cbeeec28ae8d0ae8aa89607b1b60648201528181608481835f5160206201b1205f395f51905f525af1801562000815576200d7fa575b50505f5160206201b1205f395f51905f523b15620002b457806040516318caf8e360e31b81525f5160206201b1e05f395f51905f52600482015260406024820152600a60448201526908aa4866460be8aa890f60b31b60648201528181608481835f5160206201b1205f395f51905f525af1801562000815576200d7e1575b50505f5160206201b1205f395f51905f523b15620002b457806040516318caf8e360e31b8152734ab7ab316d43345009b2140e0580b072eec7df16600482015260406024820152602560448201527f455243343632365f45524332305f455448785f7761574554485f535441424c4560648201526417d413d3d360da1b6084820152818160a481835f5160206201b1205f395f51905f525af1801562000815576200d7c8575b50505f5160206201b1205f395f51905f523b15620002b457806040516318caf8e360e31b815273f91c11ba4220b7a72e1dc5e92f2b48d3fdf62726600482015260406024820152602460448201527f45524332305f45524332305f474f4554485f555344435f57454947485445445f6064820152631413d3d360e21b6084820152818160a481835f5160206201b1205f395f51905f525af1801562000815576200d7af575b50505f5160206201b1205f395f51905f523b15620002b457806040516318caf8e360e31b81525f5160206201b1605f395f51905f52600482015260406024820152600b60448201526a08aa4866460be8e9e8aa8960ab1b60648201528181608481835f5160206201b1205f395f51905f525af1801562000815576200d796575b50505f5160206201b1205f395f51905f523b15620002b457806040516318caf8e360e31b81525f5160206201b2205f395f51905f52600482015260406024820152600a60448201526945524332305f5553444360b01b60648201528181608481835f5160206201b1205f395f51905f525af1801562000815576200d77d575b50505f5160206201b1205f395f51905f523b15620002b457806040516318caf8e360e31b815273c4ce391d82d164c166df9c8336ddf84206b2f812600482015260406024820152602760448201527f455243343632365f455243343632365f574554485f7773744554485f53544142606482015266131157d413d3d360ca1b6084820152818160a481835f5160206201b1205f395f51905f525af1801562000815576200d764575b50505f5160206201b1205f395f51905f523b15620002b457806040516318caf8e360e31b81525f5160206201b1405f395f51905f52600482015260406024820152600a60448201526908aa4866460beae8aa8960b31b60648201528181608481835f5160206201b1205f395f51905f525af1801562000815576200d74b575b50505f5160206201b1205f395f51905f523b15620002b457806040516318caf8e360e31b8152737f39c581f595b53c5cb19bd0b3f8da6c935e2ca0600482015260406024820152600c60448201526b08aa4866460beeee6e88aa8960a31b60648201528181608481835f5160206201b1205f395f51905f525af1801562000815576200d732575b50505f5160206201b1205f395f51905f523b15620002b4576040516318caf8e360e31b815281908181806200d5f3600482016200ec06565b0381835f5160206201b1205f395f51905f525af1801562000815576200d719575b50505f5160206201b1205f395f51905f523b15620002b4576040516318caf8e360e31b815281908181806200d64c600482016200ec06565b0381835f5160206201b1205f395f51905f525af1801562000815576200d700575b50505f5160206201b1205f395f51905f523b15620002b457806040516318caf8e360e31b81526e22d473030f116ddee9f6b43ac78ba360048201526040602482015260076044820152662832b936b4ba1960c91b60648201528181608481835f5160206201b1205f395f51905f525af1801562000815576200d6ec5750f35b816200d6f8916200e74e565b620002b45780f35b816200d70c916200e74e565b620002b45780826200d66d565b816200d725916200e74e565b620002b45780826200d614565b816200d73e916200e74e565b620002b45780826200d5bb565b816200d757916200e74e565b620002b45780826200d534565b816200d770916200e74e565b620002b45780826200d4b5565b816200d789916200e74e565b620002b45780826200d40d565b816200d7a2916200e74e565b620002b45780826200d38e565b816200d7bb916200e74e565b620002b45780826200d30e565b816200d7d4916200e74e565b620002b45780826200d269565b816200d7ed916200e74e565b620002b45780826200d1c3565b816200d806916200e74e565b620002b45780826200d144565b816200d81f916200e74e565b620002b45780826200d0be565b50fd5b816200d83b916200e74e565b620002b45780826200d038565b816200d854916200e74e565b620002b45780826200cfb2565b6200d87d9060203d6020116200136f576200136081836200e74e565b6200cf29565b6200d89f9060203d6020116200136f576200136081836200e74e565b6200ced5565b6020813d6020116200d8d1575b816200d8c1602093836200e74e565b810103126200111757516200ce81565b3d91506200d8b2565b6020813d6020116200d906575b816200d8f6602093836200e74e565b810103126200111757516200ce36565b3d91506200d8e7565b6200d92b9060203d6020116200136f576200136081836200e74e565b6200cdef565b6200d94d9060203d6020116200136f576200136081836200e74e565b6200cda2565b54905f5160206201b1205f395f51905f523b1562000514576040516370ca10bb60e01b81526001600160a01b03909116600482015260248101919091526044810192909252818060648101620013e8565b683635c9adc5dea0000091501415866200cd45565b816200d9c5916200e74e565b620005145782866200cd2e565b955095506020853d6020116200da08575b816200d9f2602093836200e74e565b810103126200111757935194869490816200cca3565b3d91506200d9e3565b909192506200da2181856200eb70565b610100036101008111620025925760ff8111620025925760405163348051d760e11b8152600190911b6004820181905286826024815f5160206201b1205f395f51905f525afa80156200116357606a6200dae2916020948a916200dafe575b506040519485915f5160206201b2805f395f51905f52828401525f5160206201b1005f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018a838201520301601f1981018452836200e74e565b683635c9adc5dea000001015620015d35750908492916200cc53565b6200db1591503d808c833e6200161481836200e74e565b8a6200da80565b6200db266201185a565b506200cbec565b634e487b7160e01b82526041600452602482fd5b64e8d4a5100091501415866200cab2565b816200db5e916200e74e565b620005145782866200ca9b565b955095506020853d6020116200dba1575b816200db8b602093836200e74e565b810103126200111757935194869490816200ca14565b3d91506200db7c565b909192506200dbba81856200eb70565b610100036101008111620025925760ff8111620025925760405163348051d760e11b8152600190911b6004820181905286826024815f5160206201b1205f395f51905f525afa80156200116357606a6200dc7a916020948a916200dafe57506040519485915f5160206201b2805f395f51905f52828401525f5160206201b1005f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018a838201520301601f1981018452836200e74e565b64e8d4a510001015620015d35750908492916200c9c4565b6200dc9c6201185a565b506200c95d565b6020813d6020116200dccf575b816200dcbf602093836200e74e565b810103126200111757516200c833565b3d91506200dcb0565b6020813d6020116200dd04575b816200dcf4602093836200e74e565b810103126200111757516200c7c4565b3d91506200dce5565b6020813d6020116200dd39575b816200dd29602093836200e74e565b810103126200111757516200c755565b3d91506200dd1a565b6020813d6020116200dd6e575b816200dd5e602093836200e74e565b810103126200111757516200c6f0565b3d91506200dd4f565b6020813d6020116200dda3575b816200dd93602093836200e74e565b810103126200111757516200c6a4565b3d91506200dd84565b6020813d6020116200ddd8575b816200ddc8602093836200e74e565b810103126200111757516200c659565b3d91506200ddb9565b6200ddfd9060203d6020116200136f576200136081836200e74e565b6200c613565b6200de1f9060203d6020116200136f576200136081836200e74e565b6200c5c6565b6200de419060203d6020116200136f576200136081836200e74e565b6200c579565b816200de53916200e74e565b620002b45780826200c52b565b5050fd5b816200de70916200e74e565b6200d82c5781846200c4c0565b816200de89916200e74e565b6200d82c5781846200c453565b816200dea2916200e74e565b6200d82c5781846200c3e6565b6200decb9060203d6020116200136f576200136081836200e74e565b6200c37a565b816200dedd916200e74e565b6200d82c5781846200c329565b6200df069060203d6020116200136f576200136081836200e74e565b6200c2bd565b816200df18916200e74e565b6200d82c5781846200c26c565b816200df31916200e74e565b6200d82c5781846200c1dc565b816200df4a916200e74e565b6200d82c5781846200c14c565b816200df63916200e74e565b6200d82c5781846200c0df565b6200df8c9060203d6020116200136f576200136081836200e74e565b6200c038565b6200dfae9060203d6020116200136f576200136081836200e74e565b6200bfe9565b6200dfd09060203d6020116200136f576200136081836200e74e565b6200bf9a565b6200dff29060203d6020116200136f576200136081836200e74e565b6200bf48565b6a084595161401484a00000091501415866200bee9565b816200e01b916200e74e565b620005145782866200bed2565b955095506020853d6020116200e05e575b816200e048602093836200e74e565b810103126200111757935194869490816200be45565b3d91506200e039565b909192506200e07781856200eb70565b610100036101008111620025925760ff8111620025925760405163348051d760e11b8152600190911b6004820181905286826024815f5160206201b1205f395f51905f525afa80156200116357606a6200e137916020948a916200dafe57506040519485915f5160206201b2805f395f51905f52828401525f5160206201b1005f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018a838201520301601f1981018452836200e74e565b6a084595161401484a0000001015620015d35750908492916200bdf5565b6200e15f6201185a565b506200bd8e565b69152d02c7e14af680000091501415866200bc54565b816200e188916200e74e565b620005145782866200bc3d565b955095506020853d6020116200e1cb575b816200e1b5602093836200e74e565b810103126200111757935194869490816200bbb1565b3d91506200e1a6565b909192506200e1e481856200eb70565b610100036101008111620025925760ff8111620025925760405163348051d760e11b8152600190911b6004820181905286826024815f5160206201b1205f395f51905f525afa80156200116357606a6200e2a4916020948a916200dafe57506040519485915f5160206201b2805f395f51905f52828401525f5160206201b1005f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018a838201520301601f1981018452836200e74e565b69152d02c7e14af68000001015620015d35750908492916200bb61565b6200e2cb6201185a565b506200bafa565b64e8d4a51000915014155f6200b9c0565b816200e2ef916200e74e565b6200051457825f6200b9a9565b955095506020853d6020116200e332575b816200e31c602093836200e74e565b810103126200111757935194869490816200b922565b3d91506200e30d565b909192506200e34b81856200eb70565b610100036101008111620025925760ff8111620025925760405163348051d760e11b8152600190911b6004820181905286826024815f5160206201b1205f395f51905f525afa80156200116357606a6200e40b916020948a916200e42357506040519485915f5160206201b2805f395f51905f52828401525f5160206201b1005f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018a838201520301601f1981018452836200e74e565b64e8d4a510001015620015d35750908492916200b8d2565b6200e43a91503d808c833e6200161481836200e74e565b5f6200da80565b6200e44b6201185a565b506200b86b565b816200e45e916200e74e565b620002b457805f6200b742565b50604051903d90823e3d90fd5b634e487b7160e01b83526041600452602483fd5b816200e498916200e74e565b620002b457805f6200b668565b6200e4b391505f906200e74e565b5f5f6200b58e565b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b6020813d6020116200e506575b816200e4f6602093836200e74e565b810103126200111757516200b413565b3d91506200e4e7565b6200e52691503d805f833e6200161481836200e74e565b5f6200b3c4565b346200111757604036600319011262001117576200e54a6200e770565b6024359033156200e5c8576001600160a01b03169081156200e5b557335f52602160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b3462001117576040366003190112620011175760206200e6146040516200e602816200e716565b6004358152602435838201526200ea51565b604051908152f35b3462001117575f36600319011262001117575f6023546200e63d816200e958565b80845290600181169081156200e6cc57506001146200e66a575b620008d8836200488d818503826200e74e565b60235f9081527fd57b2b5166478fd4318d2acc6cc2c704584312bdd8781b32d5d06abda57f4230939250905b8082106200e6b1575090915081016020016200488d6200e657565b9192600181602092548385880101520191019092916200e696565b60ff191660208086019190915291151560051b840190910191506200488d90506200e657565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b604081019081106001600160401b038211176200e4c657604052565b606081019081106001600160401b038211176200e4c657604052565b90601f801991011681019081106001600160401b038211176200e4c657604052565b600435906001600160a01b03821682036200111757565b602435906001600160a01b03821682036200111757565b60409060031901126200111757600435906024358015158103620011175790565b60206040818301928281528451809452019201905f5b8181106200e7e35750505090565b82516001600160a01b03168452602093840193909201916001016200e7d5565b9080602083519182815201916020808360051b8301019401925f915b8383106200e82f57505050505090565b90919293946020806200e84f600193601f1986820301875289516200e6f2565b970193019301919392906200e81f565b602081016020825282518091526040820191602060408360051b8301019401925f915b8383106200e89257505050505090565b9091929394603f1982820301835285516020606081604085019360018060a01b0381511686520151936040838201528451809452019201905f905b8082106200e8ee57505050602080600192970193019301919392906200e882565b82516001600160e01b0319168452602093840193909201916001909101906200e8cd565b600e548110156200e92b57600e5f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b601f548110156200e92b57601f5f5260205f2001905f90565b90600182811c921680156200e988575b60208310146200e97457565b634e487b7160e01b5f52602260045260245ffd5b91607f16916200e968565b5f92918154916200e9a4836200e958565b80835292600181169081156200e9fd57506001146200e9c257505050565b5f9081526020812093945091925b8383106200e9e2575060209250010190565b6001816020929493945483858701015201910191906200e9d0565b915050602093945060ff929192191683830152151560051b010190565b6001600160401b0381116200e4c65760051b60200190565b81156200ea3d570490565b634e487b7160e01b5f52601260045260245ffd5b80516a084595161401484a0000008102908082046a084595161401484a00000014901517156200ea8e5760206200ea8b920151906200ea32565b90565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b0381116200e4c657601f01601f191660200190565b60208183031262001117578051906001600160401b03821162001117570181601f8201121562001117578051906200eaf6826200eaa2565b926200eb0660405194856200e74e565b828452602083830101116200111757815f9260208093018386015e8301015290565b9081602091031262001117575190565b9291906200eb516020916040865260408601906200e6f2565b930152565b908160209103126200111757518015158103620011175790565b919082018092116200ea8e57565b6001600160a01b039182168152739179c06629ef7f17cb5759f501d89997fe0e7b456020820152604081019190915265ffffffffffff909116606082015260800190565b6001600160a01b03918216815273ba1333333333a1ba1108e8412f11850a5c319ba96020820152604081019190915265ffffffffffff909116606082015260800190565b6080905f5160206201b2005f395f51905f52815260406020820152601560408201527408aa486686c646cbeeec28ae8d098d2c8deae8aa89605b1b60608201520190565b60208183031262001117578051906001600160401b0382116200111757019080601f83011215620011175781516200ec82816200ea1a565b926200ec9260405194856200e74e565b81845260208085019260051b8201019283116200111757602001905b8282106200ecbc5750505090565b81518152602091820191016200ecae565b8051156200e92b5760200190565b8051600110156200e92b5760400190565b80518210156200e92b5760209160051b010190565b919082604091031262001117576040516200ed1c816200e716565b6020808294805184520151910152565b9060808282031262001117576200ed629060408051936200ed4d856200e732565b8051855260208101516020860152016200ed01565b604082015290565b9081526001600160a01b039182166020820152911660408201525f6060820152608081019190915260a00190565b919082039182116200ea8e57565b60208183031262001117578051906001600160401b03821162001117570181601f82011215620011175780516200eddd816200ea1a565b926200eded60405194856200e74e565b81845260208085019260061b840101928184116200111757602001915b8383106200ee19575050505090565b60206040916200ee2a84866200ed01565b8152019201916200ee0a565b602060a06080830192737c8e08dd21105bd3970ee2f49795a469fefb139360611b81525f5160206201b1605f395f51905f52838201525f5160206201b2205f395f51905f526040820152608060608201528451809452019201905f5b8181106200eea05750505090565b82518452602093840193909201916001016200ee92565b60a0919360209360808301958352600180851b031684830152600180841b03166040820152608060608201528451809452019201905f5b8181106200eefc5750505090565b82518452602093840193909201916001016200eeee565b60085460ff1680156200ef235790565b50604051630667f9d760e41b81525f5160206201b1205f395f51905f5260048201526519985a5b195960d21b60248201526020816044815f5160206201b1205f395f51905f525afa9081156200e4bb575f916200ef81575b50151590565b90506020813d6020116200efb0575b816200ef9f602093836200e74e565b810103126200111757515f6200ef7b565b3d91506200ef90565b60208183031262001117578051906001600160401b0382116200111757019080601f8301121562001117578151906200eff2826200ea1a565b926200f00260405194856200e74e565b82845260208085019360051b8201019182116200111757602001915b8183106200f02c5750505090565b8251600a81101562001117578152602092830192016200f01e565b60405163313ce56760e01b81526020816004815f5160206201b1405f395f51905f525afa80156200e4bb575f906200f0cd575b60ff91501680600682116200f0b9575b600c81116200f0a4575b50604d81116200ea8e57600a0a90565b6002198101915081116200ea8e575f6200f094565b905f1981019081116200ea8e57906200f08a565b506020813d6020116200f108575b816200f0ea602093836200e74e565b8101031262001117575160ff81168103620011175760ff906200f07a565b3d91506200f0db565b60405163313ce56760e01b81526020816004815f5160206201b1a05f395f51905f525afa80156200e4bb575f906200f0cd5760ff91501680600682116200f0b957600c81116200f0a45750604d81116200ea8e57600a0a90565b60405163313ce56760e01b81526020816004815f5160206201b2005f395f51905f525afa80156200e4bb575f906200f0cd5760ff91501680600682116200f0b957600c81116200f0a45750604d81116200ea8e57600a0a90565b60405163313ce56760e01b81526020816004815f5160206201b1605f395f51905f525afa80156200e4bb575f906200f0cd5760ff91501680600682116200f0b957600c81116200f0a45750604d81116200ea8e57600a0a90565b60405163313ce56760e01b81526020816004815f5160206201b2405f395f51905f525afa80156200e4bb575f906200f0cd5760ff91501680600682116200f0b957600c81116200f0a45750604d81116200ea8e57600a0a90565b60405163313ce56760e01b81526020816004815f5160206201b1e05f395f51905f525afa80156200e4bb575f906200f0cd5760ff91501680600682116200f0b957600c81116200f0a45750604d81116200ea8e57600a0a90565b60405163313ce56760e01b815290602090829060049082906001600160a01b03165afa80156200e4bb575f906200f0cd5760ff91501680600682116200f0b957600c81116200f0a45750604d81116200ea8e57600a0a90565b905f5160206201b1205f395f51905f523b1562001117576040519163260a5b1560e21b8352600483015260248201525f816044815f5160206201b1205f395f51905f525afa80156200e4bb576200f3805750565b5f6200f38c916200e74e565b565b5f5160206201b1205f395f51905f523b1562001117576040516323f2866760e11b81525f60048201525f60248201525f81604481835f5160206201b1205f395f51905f525af180156200e4bb576200f3805750565b5f5160206201b1205f395f51905f523b15620011175760405190636d83fe6960e11b825260048201525f60248201525f816044815f5160206201b1205f395f51905f525afa80156200e4bb576200f3805750565b6001600160a01b03169081156200f4e4576001600160a01b03169182156200f4d157815f526020805260405f20548181106200f4b857817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f528380520360405f2055845f5281805260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b63ec442f0560e01b5f525f60045260245ffd5b634b637e8f60e11b5f525f60045260245ffd5b683635c9adc5dea0000067016345785d8a00006200f5159262010f29565b906200f38c826200536b604051620053316040826200e74e565b683635c9adc5dea0000066038d7ea4c680006200f5159262010f29565b5f5b81518110156200f59b576200f56481836200ecec565b51600a8110156200f587576005146200f580576001016200f54e565b5050600190565b634e487b7160e01b5f52602160045260245ffd5b50505f90565b5f5b81518110156200f59b576200f5b981836200ecec565b51600a8110156200f587576009146200f580576001016200f5a3565b5f5b81518110156200f59b576200f5ed81836200ecec565b51600a8110156200f587576008146200f580576001016200f5d7565b60405190602082019263095ea7b360e01b845260018060a01b0316928360248401525f196044840152604483526200f6436064846200e74e565b82516001600160a01b038316915f91829182855af1906200f66362010eea565b826200f6cd575b50816200f6c1575b50156200f67e57505050565b6200f6bb6200f38c936040519063095ea7b360e01b602083015260248201525f6044820152604481526200f6b46064826200e74e565b82620110d4565b620110d4565b90503b15155f6200f672565b805191925081159182156200f6e7575b5050905f6200f66a565b6200f6fc92506020809183010191016200eb56565b5f806200f6dd565b604051906200f7156060836200e74e565b603682527536103a3790383934b1b29030b33a32b91039bbb0b81760511b6040837f45786563757465642070726963652073686f756c64206265206f72206571756160208201520152565b60c09490945260405163549387df60e11b8152600481018290526001600160a01b0380841660248301528416604482015291939290915f8180606481016101208490520381836001600160a01b0389165af180156200e4bb576200f7cc915f9162010ed357506200eccd565b5161010052606060a08190526040516200f82c916200f7ec90826200e74e565b602381527f53656c6c206c696d69742073686f756c6420626520677265617465722074686160208201526206e20360ec1b604082015261010051620111a1565b60a051506200f8ea6200f8bb6200536b6040516200f84d60a051826200e74e565b603681527f544553543a2054657374696e672070726963657320666f722070616972202573602082015275080b4f88095ccb8814d95b1b081b1a5b5a5d0e88095960521b6040820152604051928391638ef3f39960e01b60208401526080602484015260a48301906200e6f2565b6001600160a01b0389811660448401528616606483015261010051608483015203601f1981018352826200e74e565b6040516348bd7dfd60e01b8152600481018390526001600160a01b038086166024830152821660448201525f8180606481010381836001600160a01b0389165af180156200e4bb576200f946915f9162010eb5575b506200f5a1565b90604051916200f95860a0846200e74e565b6004835260803660208501371562010ea7575f5b6200f977836200eccd565b526103e861010051046200f98b836200ecdb565b528151600210156200e92b5760a05182016101005160011c90528151600310156200e92b5761010051608083015260405163155adc9160e31b8152935f85806200f9dc86868b8a600486016200eeb7565b0381836001600160a01b0386165af19485156200e4bb575f9562010e87575b506200fa126200fa0b866200eccd565b516200ea51565b85515f198101919082116200ea8e576200fa356200fa0b6200fa9293896200ecec565b60a05160405192906200fa4990846200e74e565b603083527f5072696365206174206c696d69742073686f756c6420626520736d616c6c657260208401526f0207468616e20707269636520617420360841b60408401526201120f565b6200faa16200fa0b866200eccd565b85515f198101919082116200ea8e576200536b6200fb48916200facd6200fa0b6200fb62958b6200ecec565b60a0516040519291906200fae290846200e74e565b602d83527f544553543a20507269636520617420303a2025642c207072696365206174207360208401526c195b1b081b1a5b5a5d0e880959609a1b604084015260405194859363ca47c4eb60e01b602086015260a051602486015260848501906200e6f2565b916044840152606483015203601f1981018352826200e74e565b60a0516040516200fbb7916200fb7990826200e74e565b602581527f544553543a2054657374696e67206265686176696f7220666f72207072696365602082015264020617420360dc1b604082015262011248565b6200fc0f6200fbc6866200eccd565b5151604060e0819052805191906200fbdf90836200e74e565b601882527f4e6f6d696e61746f722073686f756c646e2774206265203000000000000000006020830152620111a1565b6200fc6660206200fc20876200eccd565b51015160e051805191906200fc3690836200e74e565b601a82527f44656e6f6d696e61746f722073686f756c646e277420626520300000000000006020830152620111a1565b6200fc756200fa0b866200eccd565b9460e051506200fcb88660e051516200fc9160e051826200e74e565b6014815273151154d50e88141c9a58d948185d080c0e88095960621b60208201526201127a565b60e051516200fcc7816200e732565b5f81525f602082015260e05151906200fce0826200e716565b5f808352602083015260e051015283515f1981019081116200ea8e576200fd0890856200ecec565b5160058181020481036200ea8e575f8060e0515160208101906370a0823160e01b8252306024820152602481526200fd426044826200e74e565b51908b5afa506200fd5662000a2b62010eea565b50601180546001600160a01b0319166001600160a01b038a161790556370a0823163ffffffff19600f541617600f55600e54600160401b8110156200e4c65762000a908160016200fdab9301600e556200e912565b90556011546001600160a01b031661014052600f546010549060e01b6200fdd1620113d3565b610140516001600160a01b03165f908152600d60205260409020909163ffffffff60e01b1690815f5260205260e0515f2060e0515160208101906200fe1d8162000b11888886620113bc565b5190205f5260205260ff600360e0515f200154161562010e76575b610140516001600160a01b03165f908152600d60205260409020905f5260205262000b116200fe7960e0515f209360e05151928391602083019586620113bc565b5190205f5260205260e0515f2060018101549160028201546200fe9d81856200eb70565b62010d4d575b825460e05151630667f9d760e41b8152610140516001600160a01b0316600482015260248101829052949091906020866044815f5160206201b1205f395f51905f525afa95861562010d07575f9662010d13575b506001908201610100031b5f1901811b1985165f5160206201b1205f395f51905f523b15620011175760e051516370ca10bb60e01b8152610140516001600160a01b0316600482015260248101939093526005840290911b1760448201525f81606481835f5160206201b1205f395f51905f525af1801562010d075762010cef575b506200ff84620115b6565b901591821562010ce0575b505062010be35750506200ffa26201218f565b60e05151634b88b8ad60e11b8152602081600481610120515f5160206201b1205f395f51905f525af18015620104c0576101205160805262010baa575b5060015b84518110156201059f57620100d2620100aa6200536b62010004846200e93f565b5062010011858a6200ecec565b51620100bd620047f06201008360e05151946201003160a051876200e74e565b603086527f544553543a2054657374696e67206265686176696f7220666f7220707269636560208701526f1030ba1012b99037b3103634b6b4ba1760811b60e05187015260e05151928380926200e993565b60e05151635821efa160e01b602082015260a051602482015295869460848601906200e6f2565b848103602319016044860152906200e6f2565b90606483015203601f1981018352826200e74e565b620100e26200fa0b82846200ecec565b620101856201015f6200536b620100fa858a6200ecec565b5160e05151906201010e60e051836200e74e565b601782527f544553543a205377617070696e67202564206f66202573000000000000000000602083015260e0515193849263038fd88960e31b602085015260a051602485015260848401906200e6f2565b60448301919091526001600160a01b038e16606483015203601f1981018352826200e74e565b8460808a89620101b86201019a878c6200ecec565b5160e05151638307c65560e01b81529586948594600486016200ed6a565b03816101205160018060a01b038a165af1908115620104c05761012051916201057c575b508051806a084595161401484a0000008102046a084595161401484a000000148115171562010562576201022f6201023b916a084595161401484a00000062010226878c6200ecec565b5191026200ea32565b9160e05101516200ea51565b91620102838260e051516201025360e051826200e74e565b601d81527f544553543a20202d2045786563757465642070726963653a202020256400000060208201526201127a565b620102ca8160e051516201029a60e051826200e74e565b601d81527f544553543a20202d20507269636520617420616d6f756e743a2020256400000060208201526201127a565b620103118360e05151620102e160e051826200e74e565b601d81527f544553543a20202d20507269636520616674657220737761703a20256400000060208201526201127a565b60c05115620104cf5760a05160e051516201045294620103f4939092620103879291906201034090836200e74e565b602c82527f50726963652073686f756c642062652067726561746564207468616e2065786560208301526b31baba32b210383934b1b29760a11b60e05183015285620112a5565b60a05160e0515191906201039c90836200e74e565b603782527f45786563757465642070726963652073686f756c64206265206772656174657260208301527f207468616e20707269636520616674657220737761702e00000000000000000060e051830152836201120f565b60a05160e0515191906201040990836200e74e565b602e82527f50726963652073686f756c642062652067726561746564207468616e2070726960208301526d31b29030b33a32b91039bbb0b81760911b60e051830152896201120f565b60e0515190631135fc2960e21b82526080516004830152602082602481610120515f5160206201b1205f395f51905f525af1918215620104c0576001926201049d575b50016200ffe3565b620104b89060203d81116200136f576200136081836200e74e565b505f62010495565b60e051513d61012051823e3d90fd5b6201050190620104ef6201055c94620104e76200f704565b908d620112a5565b620104f96200f704565b908b620112a5565b60e05151906201051460a051836200e74e565b602d82527f50726963652073686f756c64206265206f7220657175616c20746f207072696360208301526c329030b33a32b91039bbb0b81760991b60e05183015289620112a5565b62010452565b634e487b7160e01b61012051526011600452602461012051fd5b62010598915060803d81116200129d576200128c81836200e74e565b5f620101dc565b50509150919392506069610100510261010051810460691461010051151715620105625760e051516348bd7dfd60e01b81526101208051600483018890526001600160a01b0387811660248501528681166044850152915160649485900497949192849291839188165af18015620104c0576201062891610120519162010b89575b506200f5d5565b1562010a1057620106958460e051516201064560a051826200e74e565b603681527f544553543a2054657374696e6720726576657274206265686176696f722061626020820152751bdd99481d1a19481cd95b1b081b1a5b5a5d0e88095960521b60e0518201526201127a565b60e05180519490620106a890866200e74e565b6001855260e051601f1901366020870137620106c4856200eccd565b5260e0515163155adc9160e31b8152610120518180620106eb8888878c600486016200eeb7565b03816101205160018060a01b0388165af19081620109f1575b506201098557600162010716620112de565b6308c379a014620108ee575b620104c057620107346080946200eccd565b51946201075960e0515196879586948594638307c65560e01b8652600486016200ed6a565b61012051919003926001600160a01b03165af19081620108cc575b506201086a57600162010786620112de565b6308c379a014620107de575b620104c0575b6200f38c60e05151620107ae60e051826200e74e565b601781527f544553543a20416c6c207465737473207061737365642e000000000000000000602082015262011248565b620107e8620112fa565b80620107f6575b5062010792565b6101205160a05160e05151919350620108639291906201081790826200e74e565b603281527f544553543a204578706563746564206572726f72207768656e207377617070696020820152716e672061626f7665206c696d69743a20257360701b60e05182015262011372565b5f620107ef565b60e0515162461bcd60e51b815260206004820152603360248201527f506f6f6c2073686f756c646e27742062652061626c6520746f20737761702061604482015272189bdd99481d1a19481cd95b1b081b1a5b5a5d606a1b6064820152608490fd5b620108e89060803d6080116200129d576200128c81836200e74e565b62010774565b620108f8620112fa565b8062010906575b5062010722565b6101205160a05160e051519193506201097e9291906201092790826200e74e565b603881527f544553543a204578706563746564206572726f72207768656e2066657463686960208201527f6e672070726963652061626f7665206c696d69743a202573000000000000000060e05182015262011372565b5f620108ff565b60e0515162461bcd60e51b815260206004820152603b60248201527f506f6f6c2073686f756c646e27742062652061626c6520746f2066657463682060448201527f7072696365732061626f7665207468652073656c6c206c696d697400000000006064820152608490fd5b62010a0a903d8061012051833e620004c281836200e74e565b62010704565b60a05160e0515162010a769186919062010a2b90826200e74e565b603181527f544553543a2054657374696e67206f7065726174696f6e732061626f766520746020820152701a19481cd95b1b081b1a5b5a5d0e880959607a1b60e0518201526201127a565b60e0518051949062010a8990866200e74e565b6001855260e051601f190136602087013762010aa5856200eccd565b5260e051519363155adc9160e31b855261012051858062010acd8488878c600486016200eeb7565b03816101205160018060a01b0388165af1908115620104c05760809562010afa9262010b6a57506200eccd565b519462010b1f60e0515196879586948594638307c65560e01b8652600486016200ed6a565b61012051919003926001600160a01b03165af18015620104c05762010b46575b5062010798565b62010b629060803d6080116200129d576200128c81836200e74e565b505f62010b3f565b62010b83903d8061012051833e620004c281836200e74e565b6200033e565b62010ba391503d8061012051833e62003ef081836200e74e565b5f62010621565b6020813d60201162010bda575b8162010bc6602093836200e74e565b810103126200111757516080525f6200ffdf565b3d915062010bb7565b545f5160206201b1205f395f51905f523b1562010cd95760e051516370ca10bb60e01b815261012051610140516001600160a01b03166004830152602482019290925260448101929092528180606481010381610120515f5160206201b1205f395f51905f525af18015620104c05762010cba575b60e0515162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b6101205162010cc9916200e74e565b6101205162010cd9578062010c58565b6101205180fd5b600502141590505f806200ff8f565b5f62010cfb916200e74e565b5f610120525f6200ff79565b60e051513d5f823e3d90fd5b9095506020813d60201162010d44575b8162010d32602093836200e74e565b8101031262001117575194816200fef7565b3d915062010d23565b62010d5981856200eb70565b6101000361010081116200ea8e5760ff81116200ea8e5760e0515163348051d760e11b81526001821b60048201525f816024815f5160206201b1205f395f51905f525afa91821562010d075762010e1e606a6020946001945f9162010e58575b5060e051519586915f5160206201b2805f395f51905f52828401525f5160206201b1005f395f51905f5260e05184015269030ba32b9103a3430b7160b51b60a0518401528051918291018484015e81015f838201520301601f1981018552846200e74e565b1b83600502101562010e3157506200fea3565b60e0515162461bcd60e51b815260206004820152908190620015f99060248301906200e6f2565b62010e6f91503d805f833e6200161481836200e74e565b5f62010db9565b62010e806201185a565b506200fe38565b62010e9f9195503d805f833e620004c281836200e74e565b935f6200f9fb565b61271061010051046200f96c565b62010ecc91503d805f833e62003ef081836200e74e565b5f6200f93f565b6200055991503d805f833e6200055081836200e74e565b3d1562010f19573d9062010efe826200eaa2565b9162010f0e60405193846200e74e565b82523d5f602084013e565b606090565b81156200ea3d570690565b5f908383116201106957828110918215806201105e575b620110565762010f5184866200ed98565b92600184018094116200ea8e576003831115806201104c575b6201103b576003198310158062011030575b6201101d578583111562010fcb5750509062010f9d8462010fa3936200ed98565b62010f1e565b90811562010fc65762010fb792506200eb70565b5f1981019081116200ea8e5790565b505090565b95949291909562010fdd575b50505050565b8394955062010f9d9062010ff293946200ed98565b90811562010fc6576201100692506200ed98565b600181018091116200ea8e57905f80808062010fd7565b505090506200ea8b92915019906200ed98565b508219841162010f7c565b50509190506200ea8b92506200eb70565b5082841162010f6a565b509250505090565b508482111562010f40565b60405162461bcd60e51b815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e00006064820152608490fd5b815162011103926001600160a01b03909216915f91829160200182855af1620110fc62010eea565b9162011792565b8051908162011110575050565b602080620111239383010191016200eb56565b156201112b57565b60405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b6200ea8b93926060928252602082015281604082015201906200e6f2565b5f5160206201b1205f395f51905f523b156200111757620111ed915f916040519384928392636cd1e26960e11b845260048401528460248401526060604484015260648301906200e6f2565b03815f5160206201b1205f395f51905f525afa80156200e4bb576200f3805750565b905f5160206201b1205f395f51905f523b1562001117575f91620111ed6040519485938493636cd1e26960e11b85526004850162011183565b62000b116200536b6200f38c9260405192839163104c13eb60e21b60208401526020602484015260448301906200e6f2565b906200536b6200f38c9262000b11604051938492632d839cb360e21b6020850152602484016200eb38565b905f5160206201b1205f395f51905f523b1562001117575f91620111ed6040519485938493630389490b60e61b85526004850162011183565b5f9060033d11620112eb57565b905060045f803e5f5160e01c90565b5f60443d106200ea8b576040513d600319016004823e8051913d60248401116001600160401b038411176201136c57828201928351916001600160401b03831162011364573d840160031901858401602001116201136457506200ea8b929101602001906200e74e565b949350505050565b92915050565b6200536b620113a99162000b116200f38c94604051948593634b5c427760e01b60208601526040602486015260648501906200e6f2565b838103602319016044850152906200e6f2565b60209291908391805192839101825e019081520190565b620113e06014546200e958565b620114ad576040519081826020600e549283815201600e5f5260205f20925f5b8181106201149357505062011418925003836200e74e565b81518060051b90808204602014901517156200ea8e5762011439816200eaa2565b906201144960405192836200e74e565b8082526201145a601f19916200eaa2565b013660208301375f5b83518110156201148e57806201147c600192866200ecec565b5160208260051b850101520162011463565b509150565b845483526001948501948794506020909301920162011400565b6040516200ea8b81620047f08160146200e993565b6007810190620114d382546200e958565b6201159f57600191500190604051808360208295549384815201905f5260205f20925f5b818110620115855750506201150f925003836200e74e565b81518060051b90808204602014901517156200ea8e5762011530816200eaa2565b906201154060405192836200e74e565b80825262011551601f19916200eaa2565b013660208301375f5b83518110156201148e578062011573600192866200ecec565b5160208260051b85010152016201155a565b8454835260019485019487945060209093019201620114f7565b506200ea8b620047f091604051928380926200e993565b5f806020600f5460e01b620116086024620115d2600d620114c2565b6040519485918183019563ffffffff60e01b1686528051918291018484015e810186838201520301601f1981018452836200e74e565b6011549151916001600160a01b03165afa906201162462010eea565b601054909290600581901b906001600160fb1b038116036200ea8e575f938051602081115f14620116b757506020905b5f925b8284106201166757505050509190565b909192956201167787836200eb70565b83518110156200e92b57830160200151600388901b91906001600160f81b031916881560088a85041417156200ea8e576001921c17960192919062011657565b9062011654565b905f806020600285015460e01b620116dc6024620115d288620114c2565b60048601549151916001600160a01b03165afa6003620116fb62010eea565b930154600581901b906001600160fb1b038116036200ea8e575f938051602081115f146201178b57506020905b5f925b8284106201173b57505050509190565b909192956201174b87836200eb70565b83518110156200e92b57830160200151600388901b91906001600160f81b031916881560088a85041417156200ea8e576001921c1796019291906201172b565b9062011728565b90620117b85750805115620117a957805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580620117eb575b620117cb575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15620117c2565b9080601f83011215620011175781516201180f816200ea1a565b926201181f60405194856200e74e565b81845260208085019260051b8201019283116200111757602001905b828210620118495750505090565b81518152602091820191016201183b565b601154600f546010546001600160a01b03909216915f9160e01b62011880600d620114c2565b90845f52600d60205260405f209063ffffffff60e01b1690815f5260205260405f206040516020810190620118bc8162000b11888886620113bc565b5190205f5260205260ff600360405f200154166201214b575f5160206201b1205f395f51905f523b15620011175760405163266cf10960e01b81525f81600481835f5160206201b1205f395f51905f525af180156200e4bb5762012133575b5062011928600d620116be565b90506040516365bc948160e01b81528660048201528581602481835f5160206201b1205f395f51905f525af190811562001338578691620120c9575b508051620119d657608460405162461bcd60e51b815260206004820152604060248201527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152fd5b855b8151811015620120c057816020620119f58362011a26956200ecec565b51604051630667f9d760e41b81526001600160a01b038c166004820152602481019190915293849081906044820190565b03815f5160206201b1205f395f51905f525afa928315620012a557889362012087575b5082156201202b575b62011a5e82826200ecec565b51601154604051630667f9d760e41b81526001600160a01b03909116600482018190526024820183905291906020816044815f5160206201b1205f395f51905f525afa90811562005b0d578b9162011ff4575b5062011abe600d620116be565b91909382155f1462011fec575f19905b5f5160206201b1205f395f51905f523b1562011fcf576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810185905260448101919091528c81606481835f5160206201b1205f395f51905f525af1801562011f4c57908d9162011fd3575b505062011b46600d620116be565b601154909491506001600160a01b03165f5160206201b1205f395f51905f523b1562011fcf576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528b81606481835f5160206201b1205f395f51905f525af1801562011fc457908c9162011fab575b50508262011f9f575b50501562011f94578793889360ff6013541662011dfc575b6001868601610100031b5f1901851b16841c810362011ded57509062011c70917f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed60808b8962000b1162011c428d604051928391602083019586620113bc565b51902062011c5186866200ecec565b51906040519283528a602084015260408301526060820152a16200ecec565b51906040519060808201928284106001600160401b038511176200e4c65760039360405282526020820193845260408201908152606082019360018552898952600d60205260408920868a5260205260408920604051602081019062011cdd8162000b118d8d86620113bc565b5190208a526020526040892092518355516001830155516002820155019051151560ff801983541691161790555b848452600d6020526040842081855260205260408420604051602081019062011d3b8162000b11888886620113bc565b519020855260205260ff6003604086200154161562011d90576040948452600d60205284842090845260205262000b1162011d84858520938651928391602083019586620113bc565b51902082526020522090565b60405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201526e3a143994903737ba103337bab7321760891b6064820152608490fd5b935091506001905b01620119d8565b945062011e4a935062011e1083836200ecec565b51601154604051630667f9d760e41b81526001600160a01b0390911660048201526024810182905290959094602090869081906044820190565b03815f5160206201b1205f395f51905f525afa94851562003a96578a9562011f5b575b5062011e7b86600d620122b2565b95909662011e8b81600d6201239b565b60115490939192906001600160a01b03165f5160206201b1205f395f51905f523b1562011f57576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528c81606481835f5160206201b1205f395f51905f525af1801562011f4c57908d9162011f2f575b50508762011f26575b50949562011be257509350915060019062011df5565b96505f62011f10565b8162011f3b916200e74e565b62011f48578b5f62011f07565b8b80fd5b6040513d8f823e3d90fd5b8e80fd5b9094506020813d821162011f8b575b8162011f79602093836200e74e565b81010312620011175751935f62011e6d565b3d915062011f6a565b915060019062011df5565b141590505f8062011bca565b8162011fb7916200e74e565b62005aca578a5f62011bc1565b6040513d8e823e3d90fd5b8d80fd5b8162011fdf916200e74e565b62011f48578b5f62011b38565b8c9062011ace565b90506020813d821162012022575b8162012011602093836200e74e565b810103126200111757515f62011ab1565b3d915062012002565b7f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a56201207e6201205c84846200ecec565b51604080516001600160a01b038e168152602081019290925290918291820190565b0390a162011a52565b9092506020813d8211620120b7575b81620120a5602093836200e74e565b81010312620011175751915f62011a49565b3d915062012096565b50505062011d0b565b90503d8087833e620120dc81836200e74e565b810160408282031262003ed15781516001600160401b03811162002461578162012108918401620117f5565b916020810151906001600160401b03821162003929576201212b929101620117f5565b505f62011964565b620121429194505f906200e74e565b5f925f6201191b565b91939092505f52600d60205260405f20905f5260205262000b116201218060405f2093604051928391602083019586620113bc565b5190205f5260205260405f2090565b6bffffffffffffffffffffffff60a01b6011541660115563ffffffff19600f5416600f55600e545f600e55806201226d575b505f60105560ff1960135416601355620121dd6014546200e958565b80620121e65750565b601f8111600114620121f957505f601455565b60145f52601f0160051c7fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec017fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ed5b8181106201226157505060145f525f602081208160145555565b5f815560010162012247565b600e5f527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd908101905b818110620122a65750620121c1565b5f815560010162012297565b91905f5b6101008110620122ca57505090505f905f90565b8060ff0360ff81116200ea8e576004850154600190911b906001600160a01b03165f5160206201b1205f395f51905f523b1562001117576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f5160206201b1205f395f51905f525af180156200e4bb5762012388575b506201235e84620116be565b816201237d575b506201237457600101620122b6565b92505060019190565b905015155f62012365565b5f62012394916200e74e565b5f62012352565b91905f5b6101008110620123b357505090505f905f90565b60048401546001821b906001600160a01b03165f5160206201b1205f395f51905f523b1562001117576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f5160206201b1205f395f51905f525af180156200e4bb576201245a575b506201243984620116be565b816201244f575b5062012374576001016201239f565b905015155f62012440565b5f62012466916200e74e565b5f6201242d565b5f80916020815191016a636f6e736f6c652e6c6f675afa5056fe610100346101b757601f6150b538819003918201601f19168301916001600160401b038311848410176101bb578084926080946040528339810103126101b75780516001600160a01b03811691908290036101b757610060602082016101cf565b6100786060610071604085016101cf565b93016101cf565b6080939093526001600160a01b031660a05260e05260c052604051614ed190816101e48239608051818181609a01528181610810015281816122cb01528181612ba00152818161327f0152818161394b0152613dc8015260a0518181816109ba01528181610b1701528181610b9201528181610e5301528181610f2e015281816110030152818161113d015281816112f201528181611656015281816118a70152818161197b01528181611dd801528181611eea0152613ebb015260c05181818161095501528181610c6601528181610ded0152818161107801528181611599015281816115ca015281816116bf015281816116f701528181611c3001528181611c6401528181613fc101528181613ff7015261432e015260e051818181610bc601528181610fa901528181611109015281816112bf01526115f90152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101b75756fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f3560e01c90816323eeca01146104c45750806348bd7dfd146104175780638307c655146103b1578063a9270fbe14610356578063aad6e488146101b75763ecbbc0331461006a575f61000f565b346101b35760203660031901126101b35760405163ca4f280360e01b81526004803560601c908201525f816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156101a8575f91610186575b508051906100f86100e283610604565b926100f060405194856105e3565b808452610604565b602083019190601f19013683375f5b8151811015610138576001906001600160a01b03610125828561065c565b5116610131828761065c565b5201610107565b505090604051918291602083019060208452518091526040830191905f5b818110610164575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610156565b6101a291503d805f833e61019a81836105e3565b8101906107bb565b5f6100d2565b6040513d5f823e3d90fd5b5f80fd5b346101b35760803660031901126101b3576004356101d3610518565b906101dc61052e565b91606435916001600160401b0383116101b357366023840112156101b35782600401359261020984610604565b9361021760405195866105e3565b8085526024602086019160051b830101913683116101b357602401905b8282106103465750505082519361024a85610604565b9461025860405196876105e3565b808652610267601f1991610604565b015f5b8181106103235750505f5b84518110156102d2578061028b6001928761065c565b51610294610670565b506102a181858888613d9d565b90604051916102af8361057e565b825260208201526102c0828961065c565b526102cb818861065c565b5001610275565b856040518091602082016020835281518091526020604084019201905f5b8181106102fe575050500390f35b82518051855260209081015181860152869550604090940193909201916001016102f0565b6020906040516103328161057e565b5f81525f8382015282828a0101520161026a565b8135815260209182019101610234565b346101b35761036d61036736610544565b916122ab565b6040518091602082016020835281518091526020604084019201905f5b818110610398575050500390f35b825184528594506020938401939092019160010161038a565b346101b35760a03660031901126101b3576103ca610518565b6103d261052e565b6064359160028310156101b3576080926103f292608435926004356106a9565b6020604080519280518452828101518385015201518051604084015201516060820152f35b346101b35761042536610544565b5050506040516104366080826105e3565b60038152602081016060368237600161044e8361061b565b52600261045a8361063c565b5260086104668361064c565b52604051906020820192602083525180935260408201905f935b80851061048d5783830384f35b9091825190600a8210156104b05760208160019382935201930194019390610480565b634e487b7160e01b5f52602160045260245ffd5b346101b35760403660031901126101b357631d04569d60e21b815260206004820181905260248201527f42616c616e636572563353776170416461707465722e676574506f6f6c4964736044820152606490fd5b602435906001600160a01b03821682036101b357565b604435906001600160a01b03821682036101b357565b60609060031901126101b357600435906024356001600160a01b03811681036101b357906044356001600160a01b03811681036101b35790565b604081019081106001600160401b0382111761059957604052565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b0382111761059957604052565b608081019081106001600160401b0382111761059957604052565b90601f801991011681019081106001600160401b0382111761059957604052565b6001600160401b0381116105995760051b60200190565b8051156106285760200190565b634e487b7160e01b5f52603260045260245ffd5b8051600110156106285760400190565b8051600210156106285760600190565b80518210156106285760209160051b010190565b6040519061067d8261057e565b5f6020838281520152565b9190820391821161069557565b634e487b7160e01b5f52601160045260245ffd5b919493929094604051956106bc876105ad565b5f87525f602088015260408701966040516106d68161057e565b5f81525f602082015288528097861561072957505061070693926106fd9286925a956107ed565b85525a90610688565b60208401528251906040519161071b8361057e565b825260208201526040830152565b9550959650505050506040519061073f8261057e565b5f8252600160208301525290565b9080601f830112156101b35781519061076582610604565b9261077360405194856105e3565b82845260208085019360051b8201019182116101b357602001915b81831061079b5750505090565b82516001600160a01b03811681036101b35781526020928301920161078e565b906020828203126101b35781516001600160401b0381116101b3576107e0920161074d565b90565b600211156104b057565b60405163ca4f280360e01b8152606082901c600482015291945f949385846024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9384156101a8575f9461228f575b506001600160a01b038716968715958615959091905f9081898961227e575b1561220a575050506001805b8180612203575b156110bf5750505060019061088e816107e3565b03610d95576001600160a01b03168015928515610d21578647955b8781610d1a575b6108b8613777565b506108c1613777565b506108ca613699565b50479015610cad575b604051936108e0856105ad565b60601c84528460208501528260408501526108f9613737565b936109038561061b565b5261090d8461061b565b506040519361091b856105c8565b8b85526020850152604084015284606084015261093661379b565b926109408461061b565b5261094a8361061b565b50858815610b7c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166109868461061b565b51525b8715610aed576109b5928891610ae5575b604051634758db2f60e11b815293849283926004840161303b565b0381887f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1908115610ada5791610a2294939188938491610ab5575b50935b15610aa9575090808080610a1d94335af1610a176130b9565b506130f7565b61061b565b5193849215610a92575082610a3981938293610688565b335af1610a446130b9565b5015610a4d5790565b60405162461bcd60e51b815260206004820152601960248201527f4661696c656420746f207472616e7366657220455448283229000000000000006044820152606490fd5b916107e09350610aa191610688565b90339061468c565b610a1d9250339061468c565b610ad191503d8086833e610ac981836105e3565b810190612e51565b9150505f6109fb565b6040513d89823e3d90fd5b86915061099a565b610b12928291610ae557604051634758db2f60e11b815293849283926004840161303b565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1908115610ada5791610a2294939188938491610b5f575b50936109fe565b610b7391503d8086833e610ac981836105e3565b9150505f610b58565b909150610c64575b610b908630338c614648565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610bc4818b614419565b7f0000000000000000000000000000000000000000000000000000000000000000610bef818c614419565b6001600160a01b0316803b15610c6057610c23918a918c836040518096819582946387517c4560e01b845260048401612dc8565b03925af18015610c5557908991610c3c575b5090610989565b81610c46916105e3565b610c5157875f610c35565b8780fd5b6040513d8b823e3d90fd5b8980fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166020610ca581610c9d8661061b565b51015161061b565b510152610b84565b506040516370a0823160e01b81523360048201529091506020816024818d5afa908115610c5557908992918391610ce5575b506108d3565b9250506020823d602011610d12575b81610d01602093836105e3565b810103126101b3578891515f610cdf565b3d9150610cf4565b50856108b0565b6040516370a0823160e01b81523360048201526020816024818c5afa908115610d8a579088918291610d55575b50956108a9565b9150506020813d602011610d82575b81610d71602093836105e3565b810103126101b3578790515f610d4e565b3d9150610d64565b6040513d8a823e3d90fd5b9596956001600160a01b031680159594909392610dc2908290849087908c90886110b7575b60601c614aaf565b505097610dcd61379b565b98610dd78a61061b565b52610de18961061b565b50868215610f965750507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610e1e8961061b565b51525b8015610eff5790610e4f978593610ef7575b60405180998194829363286f580d60e01b8452600484016131c6565b03917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af18015610eec57610eb494958391610ecf575b50925b15610eb85750808080610a1d93610ea88661061b565b51335af1610a176130b9565b5190565b610a1d9150610ec68361061b565b5190339061468c565b610ee391503d8085833e610ac981836105e3565b9150505f610e8f565b6040513d84823e3d90fd5b869250610e33565b50508290610f29968291610f8e575b60405163286f580d60e01b81529788928392600484016131c6565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af18015610eec57610eb494958391610f71575b5092610e92565b610f8591503d8085833e610ac981836105e3565b9150505f610f6a565b859150610f0e565b611076575b610fa783303384614648565b7f0000000000000000000000000000000000000000000000000000000000000000610fd384828461458c565b6001600160a01b031690813b15611072576040516387517c4560e01b8152918791839190829084908290611035907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169060048401612dc8565b03925af180156110675790869161104e575b5050610e21565b81611058916105e3565b61106357845f611047565b8480fd5b6040513d88823e3d90fd5b8680fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660206110af81610c9d8d61061b565b510152610f9b565b8b9450610dba565b819a98939695949a9792971590816121fa575b5015611564575050506110e98260601c8886613251565b95919390946110f7816107e3565b611272576111078330338a614648565b7f000000000000000000000000000000000000000000000000000000000000000061113384828a61458c565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811698911690813b15610c60578861118d928b92836040518096819582946387517c4560e01b845260048401612dc8565b03925af18015610c555791899796959493918b9361124d575b50916111bd9593916111ed9997959360601c614c68565b90604051916111cd6020846105e3565b8383528360405180968195829463286f580d60e01b845260048401613194565b03925af1918215611241579161120f91836107e09492611223575b505061061b565b5191829033906001600160a01b031661468c565b61123792503d8091833e610ac981836105e3565b9150505f80611208565b604051903d90823e3d90fd5b61126091935097809294959697986105e3565b610c515787959493929189915f6111a6565b929094879492989697506112846136b7565b92604051966370a0823160e01b88523360048901526020886024818d5afa978815610ada578798611530575b506112bd8830338d614648565b7f00000000000000000000000000000000000000000000000000000000000000006112e8818c614419565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116959116803b1561152c578886611341928e836040518096819582946387517c4560e01b845260048401612dc8565b03925af18015610c5557908991611517575b505060038110156115035791879594939160018d94145f146114a25750906113b5838361145599611388836113d19897614816565b9150506113948a61061b565b5261139e8961061b565b506001600160a01b0385811692169060601c6149e1565b9150506113c18661063c565b526113cb8561063c565b506146c8565b9150506113dd8361064c565b526113e78261064c565b506113f061379b565b91604051906113fe826105c8565b898252602082015286604082015289606082015261141b8361061b565b526114258261061b565b50604051916114356020846105e3565b83835283604051809681958294634758db2f60e11b845260048401612fc1565b03925af19182156112415761147f6107e0969593611498959383611493949261122357505061061b565b5196879333906001600160a01b031661468c565b610688565b9033903090614648565b9683926114b56114e2956114559a6146c8565b9150506114c18861061b565b526114cb8761061b565b506001600160a01b0390811692169060601c6149e1565b9150506114ee8361063c565b526114f88261063c565b506113d18988614816565b634e487b7160e01b88526021600452602488fd5b81611521916105e3565b610c5157875f611353565b8880fd5b9097506020813d60201161155c575b8161154c602093836105e3565b810103126101b35751965f6112b0565b3d915061153f565b89975061157f9060019a888760609a98999596979a1c612b73565b99909161158b816107e3565b14908694845f146121f457507f0000000000000000000000000000000000000000000000000000000000000000945b6001600160a01b0389166121ed577f0000000000000000000000000000000000000000000000000000000000000000935b8381156121e057612171575b7f000000000000000000000000000000000000000000000000000000000000000061162c83826001600160a01b038b1661458c565b6001600160a01b0316803b156101b3576040516387517c4560e01b8152905f9082908183816116887f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168f60048401612dc8565b03925af180156101a85761215c575b505b83611c0957611bee575b506060998a956001600160a01b0381161591908215611be857507f0000000000000000000000000000000000000000000000000000000000000000945b6001600160a01b0381169c8d15918215611be257507f0000000000000000000000000000000000000000000000000000000000000000945b6005811015611bce57918d93918360018e95145f14611aad5750505050505061173f6136f7565b6040516338d52e0f60e01b81529097906020816004816001600160a01b0388165afa908115611aa257918a93918d9695938791611a4a575b506117af94939261179d92909185916001600160a01b03918216918b169060601c614aaf565b9150506117a98a61061b565b52614816565b9150506117bb8761063c565b525b156119fa57506117cb61379b565b6040516370a0823160e01b815230600482015290916001600160a01b031690602081602481855afa908115610c55579089959493929186916119bd575b5061183e939495966040519261181d846105c8565b8352602083015260408201528660608201526118388261061b565b5261061b565b505b15611944576118a3926118836040519261185b6020856105e3565b84845260405163286f580d60e01b81526080600482015295869485938493608485019061313c565b5f1960248501526001604485015283810360031901606485015290612f9d565b03917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af190811561193957906118ea91849161191c575b5061061b565b519283916001600160a01b031615611908576107e09250339061468c565b50908080806107e094335af1610a176130b9565b61193091503d8086833e610ac981836105e3565b9150505f6118e4565b6040513d85823e3d90fd5b6119769250604051906119586020836105e3565b82825260405163286f580d60e01b8152938492839260048401613194565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af190811561193957906118ea91849161191c575061061b565b93949550506020833d6020116119f2575b816119db602093836105e3565b810103126101b3579151889493929061183e611808565b3d91506119ce565b939250611a0561379b565b9260405191611a13836105c8565b6001600160a01b0316825260208201526040810185905260016060820152611a3a8361061b565b52611a448261061b565b50611840565b92945050919394506020813d602011611a9a575b81611a6b602093836105e3565b81010312611a96579261179d6117af938b80948f9897611a8a90612b13565b92949596509250611777565b8b80fd5b3d9150611a5e565b6040513d8e823e3d90fd5b859897939596949650600281145f14611b13575050505090611aef8392611b0194611ad66136f7565b9b6001600160a01b0385811691908b169060601c614aaf565b915050611afb8a61061b565b52614908565b915050611b0d8761063c565b526117bd565b929b9195949350909160038103611b6357505090611b01939291611b356136f7565b9a611b408484614816565b915050611b4c8d61061b565b526001600160a01b0390811692169060601c614aaf565b6004919b9594935014611b7a575b505050506117bd565b611bb8939950611b886136f7565b99611b938389614908565b915050611b9f8c61061b565b526001600160a01b03908116919088169060601c614aaf565b915050611bc48761063c565b525f808881611b71565b634e487b7160e01b8e52602160045260248efd5b94611718565b946116e0565b611c039030336001600160a01b038916614648565b5f6116a3565b9794918897919496999a9b935047986120db575b6060936001600160a01b038b166120d4577f0000000000000000000000000000000000000000000000000000000000000000945b6001600160a01b0389161580156120cd577f0000000000000000000000000000000000000000000000000000000000000000935b60058110156120b857918f91838f959360018d96145f14611fcf5750505050505050611caf6136f7565b6040516338d52e0f60e01b815290926020826004816001600160a01b0387165afa918215611fc257908c8f928a94611f72575b50611d169492611d0a926001600160a01b0392831615928692811691908b169060601c614aaf565b9150506117a98561061b565b915050611d228261063c565b525b611d2c61379b565b6040516370a0823160e01b815230600482015290936001600160a01b031691602082602481865afa918215611f6757908d95949392918692611f30575b5060405192611d77846105c8565b835260208301526040820152856060820152611d928361061b565b52611d9c8261061b565b5015611eb357611dd49260405191611db56020846105e3565b838352604051809581948293634758db2f60e11b845260048401612fc1565b03917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1908115610d8a578894939291611e1e918691611e9f575061061b565b519788976001600160a01b031615611e865750611e459133906001600160a01b031661468c565b15611e6957506107e092611e5891610688565b9033906001600160a01b031661468c565b80809350611e7b6107e0958294610688565b335af1610a176130b9565b611e9a925080808093335af1610a176130b9565b611e45565b61193091503d8088833e610ac981836105e3565b611ee5925060405190611ec76020836105e3565b828252604051634758db2f60e11b8152938492839260048401612fc1565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1908115610d8a578894939291611e1e918691611e9f575061061b565b955090506020853d602011611f5f575b81611f4d602093836105e3565b810103126101b3578c9451905f611d69565b3d9150611f40565b6040513d8f823e3d90fd5b92505091506020813d602011611fba575b81611f90602093836105e3565b81010312611fb65791611d0a8c898094611fac611d1697612b13565b9496509250611ce2565b8d80fd5b3d9150611f83565b8e604051903d90823e3d90fd5b95969495939492936002820361203057505050505061201261201e939483611ff56136f7565b966001600160a01b039081161592858216918b169060601c614aaf565b915050611afb8561061b565b91505061202a8261063c565b52611d24565b9397929650909493926003820361206857505061201e9495506120516136f7565b9561205c8484614816565b915050611b4c8861061b565b6004929350501461207d575b50505050611d24565b6120a293945061208b6136f7565b946120968389614908565b915050611b9f8761061b565b9150506120ae8261063c565b525f808681612074565b50634e487b7160e01b8f52602160045260248ffd5b8993611c85565b8a94611c51565b6040516370a0823160e01b81523360048201526001600160a01b038b1699506020816024818d5afa8015611f675786908e90612126575b61212192509a30903390614648565b611c1d565b50506020813d602011612154575b81612141602093836105e3565b810103126101b357856121219151612112565b3d9150612134565b612169919b505f906105e3565b5f995f611697565b6040516370a0823160e01b81523360048201529091506020816024816001600160a01b038b165afa9081156101a8575f916121ae575b50906115f7565b90506020813d6020116121d8575b816121c9602093836105e3565b810103126101b357515f6121a7565b3d91506121bc565b1561169957479150611699565b88936115eb565b946115ba565b9050155f6110d2565b508061087a565b5f9b9a9794929b999693919895995b895181101561226c576001600160a01b03612234828c61065c565b51168c810361224b57509050600180915b01612219565b6001600160a01b038c1614612263575b600190612245565b60019c5061225b565b50919396999a90929598949750610873565b506001600160a01b03861615610867565b6122a49194503d805f833e61019a81836105e3565b925f610848565b60405163ca4f280360e01b8152606082811c6004830181905295949391927f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169290915f85602481875afa9485156101a8575f95612af7575b506001600160a01b038216945f908187158015612ae6575b15612a76575050506001805b8180612a6f575b156124725750505050505f604051956123516060886105e3565b6002875260403660208901376024604051809481936333f0703b60e11b835260048301525afa9283156101a8575f915f94612449575b506001600160a01b0316915f5b825181101561244257816001600160a01b036123b0838661065c565b511614612411575b836001600160a01b036123cb838661065c565b5116146123db575b600101612394565b6123e5818661065c565b519060038202918083046003149015171561069557600a600192046124098961063c565b5290506123d3565b61241b818661065c565b5160038102908082046003149015171561069557600a900461243c8861061b565b526123b8565b5050505050565b90935061246891503d805f833e61246081836105e3565b8101906137e8565b509390505f612387565b8196949695929395159081612a66575b50156124a5575050505061249b6107e094958483613251565b949192909361390d565b889550865f9893956124b99395989a612b73565b969094604051946124ca81876105e3565b60028652601f19013660208701376024604051809581936333f0703b60e11b835260048301525afa9586156101a8575f925f97612a41575b505f9460058110156104b0576001810361268e575093966001600160a01b031693505f5b825181101561261b576001600160a01b03612541828561065c565b51168681146125ea575b6040516338d52e0f60e01b81526020816004818a5afa9081156101a8575f916125b1575b506001600160a01b031614612587575b600101612526565b9650612593878761065c565b5160038102908082046003149015171561069557600a90049661257f565b90506020813d82116125e2575b816125cb602093836105e3565b810103126101b3576125dc90612b13565b5f61256f565b3d91506125be565b6125f4828961065c565b5160038102908082046003149015171561069557600a90046126158661061b565b5261254b565b509591945050602091925060246040518094819363ef8b30f760e01b835260048301525afa9081156101a8575f9161265c575b506126588261063c565b5290565b90506020813d602011612686575b81612677602093836105e3565b810103126101b357515f61264e565b3d915061266a565b9397949695949093600281036127875750505f5b825181101561273f576001600160a01b036126bd828561065c565b51168581036126fd57506126d1818761065c565b519060038202918083046003149015171561069557600a600192046126f58a61061b565b525b016126a2565b6001600160a01b03851614612715575b6001906126f7565b9550612721868661065c565b5160038102908082046003149015171561069557600a90049561270d565b5060405163266d6a8360e11b81526004810196909652959493506020925083916024915082906001600160a01b03165afa9081156101a8575f9161265c57506126588261063c565b93965090939092600381036128ab575092946001600160a01b03928316935091909116905f5b815181101561244257836001600160a01b036127c9838561065c565b5116848114612817575b146127e1575b6001016127ad565b6127eb818661065c565b519060038202918083046003149015171561069557600a6001920461280f8961063c565b5290506127d9565b9050612823828761065c565b51906003820291808304600314901517156106955760405163266d6a8360e11b8152600a9092046004830152602082602481885afa80156101a85786925f91612877575b506128718a61061b565b526127d3565b9250506020823d82116128a3575b81612892602093836105e3565b810103126101b3578591515f612867565b3d9150612885565b600491959394979650146128c1575b5050505090565b9294939290916001600160a01b0316905f5b8151811015612a31576001600160a01b036128ee828461065c565b5116838114612a00575b6040516338d52e0f60e01b81526020816004818c5afa9081156101a8575f916129c7575b506001600160a01b031614612934575b6001016128d3565b61293e818561065c565b51906003820291808304600314901517156106955760405163ef8b30f760e01b8152600a90920460048301526020826024818b5afa80156101a8575f90612995575b6001925061298d8761061b565b52905061292c565b506020823d82116129bf575b816129ae602093836105e3565b810103126101b35760019151612980565b3d91506129a1565b90506020813d82116129f8575b816129e1602093836105e3565b810103126101b3576129f290612b13565b5f61291c565b3d91506129d4565b612a0a828661065c565b5160038102908082046003149015171561069557600a9004612a2b8761063c565b526128f8565b505050509091505f8080806128ba565b909650612a599192503d805f833e61246081836105e3565b509291905091955f612502565b9050155f612482565b5080612337565b5f99959391969492999897985b8751811015612ad6576001600160a01b03612a9e828a61065c565b51168a8103612ab557509050600180915b01612a83565b6001600160a01b038a1614612acd575b600190612aaf565b60019a50612ac5565b5091939550919397969596612330565b506001600160a01b03891615612324565b612b0c9195503d805f833e61019a81836105e3565b935f61230c565b51906001600160a01b03821682036101b357565b15612b2e57565b60405162461bcd60e51b815260206004820152601760248201527f546f6b656e206e6f7420666f756e6420696e20706f6f6c0000000000000000006044820152606490fd5b60405163ca4f280360e01b81526001600160a01b0391821660048201525f949092918590849060249082907f0000000000000000000000000000000000000000000000000000000000000000165afa9283156101a8575f93612dac575b5015612cc15750612be082614320565b15612bed5750506001915b565b5f5b8151811015612cb9576001600160a01b03612c0a828461065c565b5116612c1581614320565b80612c47575b612c285750600101612bef565b93505050505b612c426001600160a01b0382161515612b27565b600291565b506040516338d52e0f60e01b8152602081600481855afa9081156101a8575f91612c80575b506001600160a01b03858116911614612c1b565b90506020813d8211612cb1575b81612c9a602093836105e3565b810103126101b357612cab90612b13565b5f612c6c565b3d9150612c8d565b505050612c2e565b9150612ccc82614320565b15612cd8575050600491565b5f5b8151811015612da4576001600160a01b03612cf5828461065c565b5116612d0081614320565b80612d32575b612d135750600101612cda565b93505050505b612d2d6001600160a01b0382161515612b27565b600391565b506040516338d52e0f60e01b8152602081600481855afa9081156101a8575f91612d6b575b506001600160a01b03858116911614612d06565b90506020813d8211612d9c575b81612d85602093836105e3565b810103126101b357612d9690612b13565b5f612d57565b3d9150612d78565b505050612d19565b612dc19193503d805f833e61019a81836105e3565b915f612bd0565b6001600160a01b0391821681529181166020830152604082015265ffffffffffff606082015260800190565b9080601f830112156101b3578151612e0b81610604565b92612e1960405194856105e3565b81845260208085019260051b8201019283116101b357602001905b828210612e415750505090565b8151815260209182019101612e34565b916060838303126101b35782516001600160401b0381116101b35782612e78918501612df4565b9260208101516001600160401b0381116101b357810183601f820112156101b357805190612ea582610604565b91612eb360405193846105e3565b80835260208084019160051b830101918683116101b357602001905b828210612ef7575050509260408201516001600160401b0381116101b3576107e09201612df4565b60208091612f0484612b13565b815201910190612ecf565b90608081019160018060a01b038151168252602081015192608060208401528351809152602060a084019401905f5b818110612f5e575050506060816040829301516040850152015191015290565b825180516001600160a01b0390811688526020828101519091168189015260409182015115159188019190915260609096019590920191600101612f3e565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9291608084019360808152825180955260a0810194602060a08260051b8401019401905f5b818110613010575050506107e09394505f1960208201525f60408201526060818403910152612f9d565b90919460208061302c600193609f19888203018c528951612f0f565b97019801910196919096612fe6565b9291926080810160808252825180915260a0820190602060a08260051b8501019401915f905b82821061308e57505050506107e092935f1960208301521515604082015260608183039101526060612f9d565b909192946020806130ab600193609f198982030186528951612f0f565b970192019201909291613061565b3d156130f2573d906001600160401b03821161059957604051916130e7601f8201601f1916602001846105e3565b82523d5f602084013e565b606090565b156130fe57565b60405162461bcd60e51b815260206004820152601660248201527508cc2d2d8cac840e8de40e8e4c2dce6cccae4408aa8960531b6044820152606490fd5b9080602083519182815201916020808360051b8301019401925f915b83831061316757505050505090565b9091929394602080613185600193601f198682030187528951612f0f565b97019301930191939290613158565b90916131ab6107e09360808452608084019061313c565b915f1960208201525f60408201526060818403910152612f9d565b6131dc6107e0939260808352608083019061313c565b5f1960208301529115156040820152808203606091820152612f9d565b1561320057565b60405162461bcd60e51b8152602060048201526024808201527f435553544f4d5f5752415028343632362d34363236293a20496e76616c696420604482015263141bdbdb60e21b6064820152608490fd5b60405163ca4f280360e01b81526001600160a01b039384166004820152925f929183918290869060249082907f0000000000000000000000000000000000000000000000000000000000000000165afa9485156101a8575f9561367d575b506132b981614320565b8061366e575b1561346c576040516338d52e0f60e01b81529190602090839060049082906001600160a01b03165afa9182156101a8575f9261342b575b506040516338d52e0f60e01b815292602090849060049082906001600160a01b03165afa9283156101a8575f936133ef575b505f5b85518110156133e5576001600160a01b03613346828861065c565b51166001600160a01b0383161515806133d3575b61339a576001600160a01b0384168114613392575b6001600160a01b0385168114613389575b5060010161332b565b94506001613380565b91508161336f565b5050935050505b6001600160a01b0382161515806133c1575b6133bc906131f9565b600292565b506001600160a01b03811615156133b3565b506001600160a01b038616151561335a565b50935050506133a1565b9092506020813d602011613423575b8161340b602093836105e3565b810103126101b35761341c90612b13565b915f613328565b3d91506133fe565b9291506020833d602011613464575b81613447602093836105e3565b810103126101b357602061345c600494612b13565b9293506132f6565b3d915061343a565b91949061347883614320565b158061365e575b15613619575f5b855181101561360e576001600160a01b036134a1828861065c565b51166134ac81614320565b6134ba575b50600101613486565b6001600160a01b0383161515806135fc575b6135c2576040516338d52e0f60e01b8152602081600481855afa9081156101a8575f91613589575b506001600160a01b03868116911614613581575b6040516338d52e0f60e01b8152602081600481855afa9081156101a8575f91613548575b506001600160a01b038981169116036134b157945060016134b1565b90506020813d8211613579575b81613562602093836105e3565b810103126101b35761357390612b13565b5f61352c565b3d9150613555565b915081613508565b90506020813d82116135ba575b816135a3602093836105e3565b810103126101b3576135b490612b13565b5f6134f4565b3d9150613596565b505093509350505b6001600160a01b0382161515806135ea575b6135e5906131f9565b600192565b506001600160a01b03811615156135dc565b506001600160a01b03861615156134cc565b5093509350506135ca565b60405162461bcd60e51b815260206004820152601b60248201527f435553544f4d5f575241503a20496e76616c696420746f6b656e7300000000006044820152606490fd5b5061366886614320565b1561347f565b5061367883614320565b6132bf565b6136929195503d805f833e61019a81836105e3565b935f6132af565b604051906136a6826105ad565b5f6040838281528260208201520152565b604051608091906136c883826105e3565b6003815291601f1901825f5b8281106136e057505050565b6020906136eb613699565b828285010152016136d4565b6040516060919061370883826105e3565b6002815291601f1901825f5b82811061372057505050565b60209061372b613699565b82828501015201613714565b6040805190919061374883826105e3565b6001815291601f1901825f5b82811061376057505050565b60209061376b613699565b82828501015201613754565b60405190613784826105c8565b5f6060838281528160208201528260408201520152565b604080519091906137ac83826105e3565b6001815291601f1901825f5b8281106137c457505050565b6020906137cf613777565b828285010152016137b8565b519081151582036101b357565b906080828203126101b35781516001600160401b0381116101b3578161380f91840161074d565b9260208301516001600160401b0381116101b357830182601f820112156101b357805161383b81610604565b9161384960405193846105e3565b818352602060608185019302820101908582116101b357602001915b8183106138ad575050509260408101516001600160401b0381116101b3578361388f918301612df4565b9260608201516001600160401b0381116101b3576107e09201612df4565b6060838703126101b357604051906138c4826105ad565b835160028110156101b35782526020840151906001600160a01b03821682036101b357826020928360609501526138fd604087016137db565b6040820152815201920191613865565b959460405161391d6060826105e3565b6002815260403660208301376040516333f0703b60e11b815260609890981c60048901529485905f896024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9586156101a8575f995f97613d78575b5060038110156104b057600114613bf55750506040516338d52e0f60e01b81526001600160a01b0392909216969190506020816004818a5afa9081156101a8575f91613bbb575b506040516338d52e0f60e01b81526001600160a01b039384169791909316926020816004818b5afa9081156101a8575f91613b81575b506001600160a01b0316925f5b8351811015613b7657816001600160a01b03613a2b838761065c565b511614613ae9575b846001600160a01b03613a46838761065c565b511614613a56575b600101613a0f565b613a60818761065c565b51906003820291808304600314901517156106955760405163ef8b30f760e01b8152600a90920460048301526020826024818d5afa80156101a8575f90613ab7575b60019250613aaf8961063c565b529050613a4e565b506020823d8211613ae1575b81613ad0602093836105e3565b810103126101b35760019151613aa2565b3d9150613ac3565b613af3818761065c565b516003810290808204600314901517156106955760405163ef8b30f760e01b8152600a9091046004820152602081602481875afa9081156101a8575f91613b45575b50613b3f8861061b565b52613a33565b90506020813d8211613b6e575b81613b5f602093836105e3565b810103126101b357515f613b35565b3d9150613b52565b509496505050505050565b90506020813d602011613bb3575b81613b9c602093836105e3565b810103126101b357613bad90612b13565b5f613a02565b3d9150613b8f565b90506020813d602011613bed575b81613bd6602093836105e3565b810103126101b357613be790612b13565b5f6139cc565b3d9150613bc9565b935094509590505f5b8151811015613d6f576001600160a01b03613c19828461065c565b516001600160a01b038516929116828103613cc25750613c39818661065c565b5160038102908082046003149015171561069557600a6024602092604051958693849263266d6a8360e11b84520460048301525afa80156101a8575f90613c90575b60019250613c888761061b565b525b01613bfe565b506020823d8211613cba575b81613ca9602093836105e3565b810103126101b35760019151613c7b565b3d9150613c9c565b6001600160a01b03891692508214613cde575b60019150613c8a565b613ce8818661065c565b5160038102908082046003149015171561069557600a6024602092604051958693849263266d6a8360e11b84520460048301525afa80156101a8575f90613d3d575b60019250613d378761063c565b52613cd5565b506020823d8211613d67575b81613d56602093836105e3565b810103126101b35760019151613d2a565b3d9150613d49565b50929450505050565b909650613d909199503d805f833e61246081836105e3565b509991905098955f613985565b909392935f9160601c6040519363ca4f280360e01b85528160048601525f8560248160018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9485156101a8575f95614304575b506001600160a01b038316801580159690959194905f9081888a6142f3575b15614283575050506001805b818061427c575b15613f1857509798613eb698505f97613e9d97613e5b97909692956001600160a01b031694509250613f0f57614aaf565b5050613e6561379b565b90613e6f8261061b565b52613e798161061b565b506040516338ed77fd60e21b8152606060048201529384928392606484019061313c565b3060248401528281036003190160448401526060612f9d565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af180156101a857610eb4915f91613efb575061061b565b61193091503d805f833e610ac981836105e3565b82159450614aaf565b9195508092999496939750159081614273575b5015613f83575050613eb69495509181613f5693613f4c83875f9896613251565b9591939094614c68565b60405190613f656020836105e3565b8282526040516338ed77fd60e21b8152938492839260048401614d9f565b613f9290868587989497612b73565b909160058310156104b05782613fab5750505050505050565b909192939495969750606094865f1461426d57507f0000000000000000000000000000000000000000000000000000000000000000945b6001600160a01b0382161591821561426757507f0000000000000000000000000000000000000000000000000000000000000000935b60018103614152575050505061402c6136f7565b6040516338d52e0f60e01b8152959094906020876004816001600160a01b0387165afa9687156101a8575f976140f9575b50613eb6965f96959493614096938593919261408a9285916001600160a01b0390811691908a1690614aaf565b9150506117a98761061b565b9150506140a28461063c565b525b6140ac61379b565b92604051926140ba846105c8565b6001600160a01b0316835260208301526040820152600160608201526140df8261061b565b526140e98161061b565b5060405190613f656020836105e3565b909594939296506020813d60201161414a575b81614119602093836105e3565b810103126101b357613eb69661408a61409693855f996141398296612b13565b9b509450509350509293949561405d565b3d915061410c565b91613eb698969594915f9893600281148a146141b257505050506141a09161419484928361417e6136f7565b986001600160a01b0385811691908a1690614aaf565b915050611afb8761061b565b9150506141ac8461063c565b526140a4565b92979194935090916003811489146142005750506141a0929184916141d56136f7565b976141e08484614816565b9150506141ec8a61061b565b526001600160a01b03908116921690614aaf565b6004919794935014614215575b5050506140a4565b61425292955083906142256136f7565b966142308388614908565b91505061423c8961061b565b526001600160a01b039081169190871690614aaf565b91505061425e8461063c565b525f808061420d565b93614018565b94613fe2565b9050155f613f2b565b5080613e2a565b5f9a9693919799959894929a5b88518110156142e3576001600160a01b036142ab828b61065c565b51168b81036142c257509050600180915b01614290565b6001600160a01b038b16146142da575b6001906142bc565b60019b506142d2565b5091939794989650919498613e23565b506001600160a01b03861615613e17565b6143199195503d805f833e61019a81836105e3565b935f613df8565b6001600160a01b03908116907f0000000000000000000000000000000000000000000000000000000000000000168114614414576040516338d52e0f60e01b8152602081600481855afa90816143dd575b5061437b57505f90565b602060249160405192838092636c82bbbf60e11b82523360048301525afa90816143ae575b506143a9575f90565b600190565b6020813d6020116143d5575b816143c7602093836105e3565b810103126101b357516143a0565b3d91506143ba565b6020813d60201161440c575b816143f6602093836105e3565b810103126101b35761440790612b13565b614371565b3d91506143e9565b505f90565b604051636eb1769f60e11b81523060048201526001600160a01b03838116602483018190529391929190821690602084604481855afa9384156101a8575f94614558575b505f1984018094116106955760405163095ea7b360e01b602082019081526001600160a01b03909216602482015260448101949094525f9081906144ae86606481015b03601f1981018852876105e3565b85519082855af1906144be6130b9565b8261451e575b5081614513575b50156144d657505050565b61450e612beb936040519063095ea7b360e01b602083015260248201525f6044820152604481526145086064826105e3565b82614dca565b614dca565b90503b15155f6144cb565b80519192508115918215614536575b5050905f6144c4565b81925090602091810103126101b357602061455191016137db565b5f8061452d565b9093506020813d602011614584575b81614574602093836105e3565b810103126101b35751925f61445d565b3d9150614567565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830181905294919390831691602085604481865afa9485156101a8575f95614614575b5084018094116106955760405163095ea7b360e01b602082019081526001600160a01b03909216602482015260448101949094525f9081906144ae86606481016144a0565b9094506020813d602011614640575b81614630602093836105e3565b810103126101b35751935f6145cf565b3d9150614623565b6040516323b872dd60e01b60208201526001600160a01b039283166024820152929091166044830152606480830193909352918152612beb9161450e6084836105e3565b60405163a9059cbb60e01b60208201526001600160a01b03929092166024830152604480830193909352918152612beb9161450e6064836105e3565b91906146d2613777565b926146db613777565b506146e4613699565b506040516338d52e0f60e01b81526001600160a01b039190911690602081600481855afa9081156101a8575f916147dc575b5060405192906001600160a01b031661472e846105ad565b82845260208401526001604084015282614746613737565b906147508261061b565b5261475a8161061b565b506040516370a0823160e01b815230600482015290602082602481875afa9182156101a8575f926147a8575b5060405193614794856105c8565b845260208401526040830152606082015291565b9091506020813d6020116147d4575b816147c4602093836105e3565b810103126101b35751905f614786565b3d91506147b7565b90506020813d60201161480e575b816147f7602093836105e3565b810103126101b35761480890612b13565b5f614716565b3d91506147ea565b9061481f613777565b50614828613777565b91614831613699565b506040516001600160a01b03919091169161484b826105ad565b828252826020830152600160408301528192614865613737565b9261486f8461061b565b526148798361061b565b506020600491604051928380926338d52e0f60e01b82525afa9081156101a8575f916148ce575b5060405192906001600160a01b03166148b8846105c8565b8352602083015260408201526001606082015292565b90506020813d602011614900575b816148e9602093836105e3565b810103126101b3576148fa90612b13565b5f6148a0565b3d91506148dc565b90614911613777565b5061491a613777565b91614923613699565b506040516338d52e0f60e01b81526001600160a01b039190911690602081600481855afa9081156101a8575f916149a7575b5060405192906001600160a01b031661496d846105ad565b82845260208401526001604084015282614985613737565b9061498f8261061b565b526149998161061b565b50604051926148b8846105c8565b90506020813d6020116149d9575b816149c2602093836105e3565b810103126101b3576149d390612b13565b5f614955565b3d91506149b5565b919093926149ed613777565b946149f6613777565b506149ff613699565b506040516370a0823160e01b81523360048201526001600160a01b039190911692602082602481875afa9182156101a8575f92614a7b575b5060405194614a45866105ad565b6001600160a01b0390811686521660208501525f604085015283614a67613737565b90614a718261061b565b526147868161061b565b9091506020813d602011614aa7575b81614a97602093836105e3565b810103126101b35751905f614a37565b3d9150614a8a565b929091614aba613777565b50614ac3613777565b94614acc613699565b5015614b43575b60405193614ae0856105ad565b6001600160a01b0390811685521660208401525f604084015282614b02613737565b90614b0c8261061b565b52614b168161061b565b5060405192614b24846105c8565b6001600160a01b03168352602083015260408201526001606082015292565b6040516370a0823160e01b81523360048201526020816024816001600160a01b0388165afa9081156101a8575f91614b7d575b5050614ad3565b90506020813d602011614ba7575b81614b98602093836105e3565b810103126101b357515f614b76565b3d9150614b8b565b919092614bba613777565b50614bc3613777565b93614bcc613699565b506040516370a0823160e01b81523360048201526001600160a01b03919091169290602081602481875afa9081156101a8575f91614c36575b505060405193614c14856105ad565b6001600160a01b0390811685521660208401525f604084015282614985613737565b90506020813d602011614c60575b81614c51602093836105e3565b810103126101b357515f614c05565b3d9150614c44565b9695909492939196614c786136b7565b9760038410156104b0578593600103614d4457508284614cc992614c9f83614ce598614816565b915050614cab8c61061b565b52614cb58b61061b565b506001600160a01b03858116921690614baf565b915050614cd58861063c565b52614cdf8761063c565b50614908565b915050614cf18561064c565b52614cfb8461064c565b50614d0461379b565b9360405192614d12846105c8565b6001600160a01b031683526020830152604082015260016060820152614d378361061b565b52614d418261061b565b50565b91614ce594614d83928592614d59848b614908565b915050614d658d61061b565b52614d6f8c61061b565b506001600160a01b03908116921690614baf565b915050614d8f8861063c565b52614d998761063c565b50614816565b9091614db66107e09360608452606084019061313c565b915f60208201526040818403910152612f9d565b5f80614df29260018060a01b03169360208151910182865af1614deb6130b9565b9083614e3d565b8051908115159182614e1a575b5050614e085750565b635274afe760e01b5f5260045260245ffd5b81925090602091810103126101b3576020614e3591016137db565b155f80614dff565b90614e615750805115614e5257805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580614e92575b614e72575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15614e6a56fea2646970667358221220e323e5fa26c6abf091be22f35678640537c279bbf3c0177d321594dfa3820d9b64736f6c634300081b003360c0806040523461036f576020816113eb803803809161001f8285610373565b83398101031261036f57516001600160a01b038116810361036f5760409081519161004a8184610373565b600b83526a5374616b6564205553444360a81b602084015280519161006f8284610373565b6005835264735553444360d81b602084015283516001600160401b03811161028057600354600181811c91168015610365575b602082101461026257601f8111610302575b50602094601f821160011461029f579481929394955f92610294575b50508160011b915f199060031b1c1916176003555b82516001600160401b03811161028057600454600181811c91168015610276575b602082101461026257601f81116101ff575b506020601f821160011461019c57819293945f92610191575b50508160011b915f199060031b1c1916176004555b61014f81610396565b9015610189575b60a05260805251610fa2908161044982396080518181816104eb015281816108880152610b81015260a0518161052e0152f35b506012610156565b015190505f80610131565b601f1982169060045f52805f20915f5b8181106101e7575095836001959697106101cf575b505050811b01600455610146565b01515f1960f88460031b161c191690555f80806101c1565b9192602060018192868b0151815501940192016101ac565b60045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c81019160208410610258575b601f0160051c01905b81811061024d5750610118565b5f8155600101610240565b9091508190610237565b634e487b7160e01b5f52602260045260245ffd5b90607f1690610106565b634e487b7160e01b5f52604160045260245ffd5b015190505f806100d0565b601f1982169560035f52805f20915f5b8881106102ea575083600195969798106102d2575b505050811b016003556100e5565b01515f1960f88460031b161c191690555f80806102c4565b919260206001819286850151815501940192016102af565b60035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c8101916020841061035b575b601f0160051c01905b81811061035057506100b4565b5f8155600101610343565b909150819061033a565b90607f16906100a2565b5f80fd5b601f909101601f19168101906001600160401b0382119082101761028057604052565b5f8091604051602081019063313ce56760e01b8252600481526103ba602482610373565b51916001600160a01b03165afa3d15610440573d906001600160401b03821161028057604051916103f5601f8201601f191660200184610373565b82523d5f602084013e5b80610434575b610411575b505f905f90565b60208180518101031261036f576020015160ff811161040a579060ff6001921690565b50602081511015610405565b6060906103ff56fe60806040526004361015610011575f80fd5b5f3560e01c806301e1d1141461074b57806306fdde031461069057806307a2d13a1461022e578063095ea7b3146105e85780630a28a477146105ca57806318160ddd146105ad57806323b872dd14610575578063313ce5671461051a57806338d52e0f146104d6578063402d267d146102335780634cdad506146104b85780636e553f651461048557806370a08231146101d357806394bf804d1461045257806395d89b411461034e578063a9059cbb1461031d578063b3d7f6b9146102ff578063b460af94146102a4578063ba08765214610238578063c63d75b614610233578063c6e6f5921461022e578063ce96cb771461020b578063d905777e146101d3578063dc0a9929146101b1578063dd62ed3e146101615763ef8b30f714610137575f80fd5b3461015d57602036600319011261015d576020610155600435610956565b604051908152f35b5f80fd5b3461015d57604036600319011261015d5761017a6107ac565b6101826107c2565b6001600160a01b039182165f908152600160209081526040808320949093168252928352819020549051908152f35b3461015d575f36600319011261015d57602060ff600554166040519015158152f35b3461015d57602036600319011261015d5760206101556101f16107ac565b6001600160a01b03165f9081526020819052604090205490565b3461015d57602036600319011261015d5760206101556102296107ac565b6108fd565b61078f565b6107d8565b3461015d57610246366107fd565b90916102628260018060a01b03165f525f60205260405f205490565b80821161028357508060209361027a61015593610ae0565b93849133610c31565b91632e52afbb60e21b5f5260018060a01b031660045260245260445260645ffd5b3461015d576102b2366107fd565b90916102bd826108fd565b8082116102de5750602092816102d561015593610928565b93849233610c31565b91633fa733bb60e21b5f5260018060a01b031660045260245260445260645ffd5b3461015d57602036600319011261015d576020610155600435610b0d565b3461015d57604036600319011261015d576103436103396107ac565b6024359033610a23565b602060405160018152f35b3461015d575f36600319011261015d576040515f6004548060011c90600181168015610448575b6020831081146104345782855290811561041057506001146103b2575b6103ae836103a281850382610837565b60405191829182610765565b0390f35b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b8082106103f6575090915081016020016103a2610392565b9192600181602092548385880101520191019092916103de565b60ff191660208086019190915291151560051b840190910191506103a29050610392565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610375565b3461015d57604036600319011261015d5760206004356101556104736107c2565b9161047d81610b0d565b809333610b3b565b3461015d57604036600319011261015d5760206004356101556104a66107c2565b6104af83610956565b92839133610b3b565b3461015d57602036600319011261015d576020610155600435610ae0565b3461015d575f36600319011261015d576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461015d575f36600319011261015d5760ff7f00000000000000000000000000000000000000000000000000000000000000001660ff811161056157602090604051908152f35b634e487b7160e01b5f52601160045260245ffd5b3461015d57606036600319011261015d576103436105916107ac565b6105996107c2565b604435916105a8833383610983565b610a23565b3461015d575f36600319011261015d576020600254604051908152f35b3461015d57602036600319011261015d576020610155600435610928565b3461015d57604036600319011261015d576106016107ac565b60243590331561067d576001600160a01b031690811561066a57335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b3461015d575f36600319011261015d576040515f6003548060011c90600181168015610741575b6020831081146104345782855290811561041057506001146106e3576103ae836103a281850382610837565b91905060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f905b808210610727575090915081016020016103a2610392565b91926001816020925483858801015201910190929161070f565b91607f16916106b7565b3461015d575f36600319011261015d57602061015561086d565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b3461015d57602036600319011261015d5760206040516004358152f35b600435906001600160a01b038216820361015d57565b602435906001600160a01b038216820361015d57565b3461015d57602036600319011261015d576107f16107ac565b5060206040515f198152f35b606090600319011261015d57600435906024356001600160a01b038116810361015d57906044356001600160a01b038116810361015d5790565b90601f8019910116810190811067ffffffffffffffff82111761085957604052565b634e487b7160e01b5f52604160045260245ffd5b6040516370a0823160e01b81523060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108f2575f916108c3575090565b90506020813d6020116108ea575b816108de60209383610837565b8101031261015d575190565b3d91506108d1565b6040513d5f823e3d90fd5b60018060a01b03165f525f60205261091860405f2054610ae0565b90565b9190820180921161056157565b60025490600182018092116105615761093f61086d565b600181018091116105615761091892600192610d44565b60025490600182018092116105615761096d61086d565b6001810180911161056157610918925f92610d44565b6001600160a01b039081165f81815260016020818152604080842095871684529490529290205493929184016109ba575b50505050565b828410610a0057801561067d576001600160a01b0382161561066a575f52600160205260405f209060018060a01b03165f5260205260405f20910390555f8080806109b4565b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b0316908115610acd576001600160a01b0316918215610aba57815f525f60205260405f2054818110610aa157817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b63ec442f0560e01b5f525f60045260245ffd5b634b637e8f60e11b5f525f60045260245ffd5b610ae861086d565b9060018201809211610561576002546001810180911161056157610918925f92610d44565b610b1561086d565b906001820180921161056157600254600181018091116105615761091892600192610d44565b6040516323b872dd60e01b60208201526001600160a01b039091166024820181905230604483015260648083018590528252929190610ba590610b7f608482610837565b7f0000000000000000000000000000000000000000000000000000000000000000610e5b565b6001600160a01b0316928315610aba577fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d79181610be660409360025461091b565b600255855f525f602052825f20818154019055855f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60208651858152a382519182526020820152a3565b6001600160a01b03808416959294908216939092918290878603610d33575b5050508415610acd57845f525f60205260405f2054818110610d1a5791816040927ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db94885f525f60205203835f205580600254036002555f877fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60208651858152a3825163a9059cbb60e01b60208201526001600160a01b03909616602487018190526044808801849052875295610d0d90610b7f606482610837565b82519182526020820152a4565b8563391434e360e21b5f5260045260245260445260645ffd5b610d3c92610983565b5f8181610c50565b9291610d51818386610db6565b926004811015610da2576001809116149182610d77575b5050610918925015159061091b565b9080925015610d8e57610918930915155f80610d68565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b91818302915f1981850993838086109503948086039514610e4d5784831115610e2e5790829109815f0382168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b82610e465760125b634e487b715f526020526024601cfd5b6011610e36565b505080925015610d8e570490565b81516001600160a01b03909116915f91829160200182855af13d15610f02573d67ffffffffffffffff811161085957610eb69160405191610ea66020601f19601f8401160184610837565b82523d5f602084013e5b83610f0e565b8051908115159182610ede575b5050610ecc5750565b635274afe760e01b5f5260045260245ffd5b819250906020918101031261015d576020015180159081150361015d575f80610ec3565b610eb690606090610eb0565b90610f325750805115610f2357805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580610f63575b610f43575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15610f3b56fea264697066735822122030e578a6ab691e6efcf0de3f1efc050cfdb95d2181c5a43a9ea8a724a0678a6f64736f6c634300081b003360c08060405234610371576020816113ed803803809161001f8285610375565b83398101031261037157516001600160a01b03811681036103715760409081519161004a8184610375565b600c83526b0a6e8c2d6cac8408e9e8aa8960a31b60208401528051916100708284610375565b60068352650e68e9e8aa8960d31b602084015283516001600160401b03811161028257600354600181811c91168015610367575b602082101461026457601f8111610304575b50602094601f82116001146102a1579481929394955f92610296575b50508160011b915f199060031b1c1916176003555b82516001600160401b03811161028257600454600181811c91168015610278575b602082101461026457601f8111610201575b506020601f821160011461019e57819293945f92610193575b50508160011b915f199060031b1c1916176004555b61015181610398565b901561018b575b60a05260805251610fa2908161044b82396080518181816104eb015281816108880152610b81015260a0518161052e0152f35b506012610158565b015190505f80610133565b601f1982169060045f52805f20915f5b8181106101e9575095836001959697106101d1575b505050811b01600455610148565b01515f1960f88460031b161c191690555f80806101c3565b9192602060018192868b0151815501940192016101ae565b60045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c8101916020841061025a575b601f0160051c01905b81811061024f575061011a565b5f8155600101610242565b9091508190610239565b634e487b7160e01b5f52602260045260245ffd5b90607f1690610108565b634e487b7160e01b5f52604160045260245ffd5b015190505f806100d2565b601f1982169560035f52805f20915f5b8881106102ec575083600195969798106102d4575b505050811b016003556100e7565b01515f1960f88460031b161c191690555f80806102c6565b919260206001819286850151815501940192016102b1565b60035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c8101916020841061035d575b601f0160051c01905b81811061035257506100b6565b5f8155600101610345565b909150819061033c565b90607f16906100a4565b5f80fd5b601f909101601f19168101906001600160401b0382119082101761028257604052565b5f8091604051602081019063313ce56760e01b8252600481526103bc602482610375565b51916001600160a01b03165afa3d15610442573d906001600160401b03821161028257604051916103f7601f8201601f191660200184610375565b82523d5f602084013e5b80610436575b610413575b505f905f90565b602081805181010312610371576020015160ff811161040c579060ff6001921690565b50602081511015610407565b60609061040156fe60806040526004361015610011575f80fd5b5f3560e01c806301e1d1141461074b57806306fdde031461069057806307a2d13a1461022e578063095ea7b3146105e85780630a28a477146105ca57806318160ddd146105ad57806323b872dd14610575578063313ce5671461051a57806338d52e0f146104d6578063402d267d146102335780634cdad506146104b85780636e553f651461048557806370a08231146101d357806394bf804d1461045257806395d89b411461034e578063a9059cbb1461031d578063b3d7f6b9146102ff578063b460af94146102a4578063ba08765214610238578063c63d75b614610233578063c6e6f5921461022e578063ce96cb771461020b578063d905777e146101d3578063dc0a9929146101b1578063dd62ed3e146101615763ef8b30f714610137575f80fd5b3461015d57602036600319011261015d576020610155600435610956565b604051908152f35b5f80fd5b3461015d57604036600319011261015d5761017a6107ac565b6101826107c2565b6001600160a01b039182165f908152600160209081526040808320949093168252928352819020549051908152f35b3461015d575f36600319011261015d57602060ff600554166040519015158152f35b3461015d57602036600319011261015d5760206101556101f16107ac565b6001600160a01b03165f9081526020819052604090205490565b3461015d57602036600319011261015d5760206101556102296107ac565b6108fd565b61078f565b6107d8565b3461015d57610246366107fd565b90916102628260018060a01b03165f525f60205260405f205490565b80821161028357508060209361027a61015593610ae0565b93849133610c31565b91632e52afbb60e21b5f5260018060a01b031660045260245260445260645ffd5b3461015d576102b2366107fd565b90916102bd826108fd565b8082116102de5750602092816102d561015593610928565b93849233610c31565b91633fa733bb60e21b5f5260018060a01b031660045260245260445260645ffd5b3461015d57602036600319011261015d576020610155600435610b0d565b3461015d57604036600319011261015d576103436103396107ac565b6024359033610a23565b602060405160018152f35b3461015d575f36600319011261015d576040515f6004548060011c90600181168015610448575b6020831081146104345782855290811561041057506001146103b2575b6103ae836103a281850382610837565b60405191829182610765565b0390f35b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b8082106103f6575090915081016020016103a2610392565b9192600181602092548385880101520191019092916103de565b60ff191660208086019190915291151560051b840190910191506103a29050610392565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610375565b3461015d57604036600319011261015d5760206004356101556104736107c2565b9161047d81610b0d565b809333610b3b565b3461015d57604036600319011261015d5760206004356101556104a66107c2565b6104af83610956565b92839133610b3b565b3461015d57602036600319011261015d576020610155600435610ae0565b3461015d575f36600319011261015d576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461015d575f36600319011261015d5760ff7f00000000000000000000000000000000000000000000000000000000000000001660ff811161056157602090604051908152f35b634e487b7160e01b5f52601160045260245ffd5b3461015d57606036600319011261015d576103436105916107ac565b6105996107c2565b604435916105a8833383610983565b610a23565b3461015d575f36600319011261015d576020600254604051908152f35b3461015d57602036600319011261015d576020610155600435610928565b3461015d57604036600319011261015d576106016107ac565b60243590331561067d576001600160a01b031690811561066a57335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b3461015d575f36600319011261015d576040515f6003548060011c90600181168015610741575b6020831081146104345782855290811561041057506001146106e3576103ae836103a281850382610837565b91905060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f905b808210610727575090915081016020016103a2610392565b91926001816020925483858801015201910190929161070f565b91607f16916106b7565b3461015d575f36600319011261015d57602061015561086d565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b3461015d57602036600319011261015d5760206040516004358152f35b600435906001600160a01b038216820361015d57565b602435906001600160a01b038216820361015d57565b3461015d57602036600319011261015d576107f16107ac565b5060206040515f198152f35b606090600319011261015d57600435906024356001600160a01b038116810361015d57906044356001600160a01b038116810361015d5790565b90601f8019910116810190811067ffffffffffffffff82111761085957604052565b634e487b7160e01b5f52604160045260245ffd5b6040516370a0823160e01b81523060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108f2575f916108c3575090565b90506020813d6020116108ea575b816108de60209383610837565b8101031261015d575190565b3d91506108d1565b6040513d5f823e3d90fd5b60018060a01b03165f525f60205261091860405f2054610ae0565b90565b9190820180921161056157565b60025490600182018092116105615761093f61086d565b600181018091116105615761091892600192610d44565b60025490600182018092116105615761096d61086d565b6001810180911161056157610918925f92610d44565b6001600160a01b039081165f81815260016020818152604080842095871684529490529290205493929184016109ba575b50505050565b828410610a0057801561067d576001600160a01b0382161561066a575f52600160205260405f209060018060a01b03165f5260205260405f20910390555f8080806109b4565b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b0316908115610acd576001600160a01b0316918215610aba57815f525f60205260405f2054818110610aa157817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b63ec442f0560e01b5f525f60045260245ffd5b634b637e8f60e11b5f525f60045260245ffd5b610ae861086d565b9060018201809211610561576002546001810180911161056157610918925f92610d44565b610b1561086d565b906001820180921161056157600254600181018091116105615761091892600192610d44565b6040516323b872dd60e01b60208201526001600160a01b039091166024820181905230604483015260648083018590528252929190610ba590610b7f608482610837565b7f0000000000000000000000000000000000000000000000000000000000000000610e5b565b6001600160a01b0316928315610aba577fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d79181610be660409360025461091b565b600255855f525f602052825f20818154019055855f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60208651858152a382519182526020820152a3565b6001600160a01b03808416959294908216939092918290878603610d33575b5050508415610acd57845f525f60205260405f2054818110610d1a5791816040927ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db94885f525f60205203835f205580600254036002555f877fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60208651858152a3825163a9059cbb60e01b60208201526001600160a01b03909616602487018190526044808801849052875295610d0d90610b7f606482610837565b82519182526020820152a4565b8563391434e360e21b5f5260045260245260445260645ffd5b610d3c92610983565b5f8181610c50565b9291610d51818386610db6565b926004811015610da2576001809116149182610d77575b5050610918925015159061091b565b9080925015610d8e57610918930915155f80610d68565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b91818302915f1981850993838086109503948086039514610e4d5784831115610e2e5790829109815f0382168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b82610e465760125b634e487b715f526020526024601cfd5b6011610e36565b505080925015610d8e570490565b81516001600160a01b03909116915f91829160200182855af13d15610f02573d67ffffffffffffffff811161085957610eb69160405191610ea66020601f19601f8401160184610837565b82523d5f602084013e5b83610f0e565b8051908115159182610ede575b5050610ecc5750565b635274afe760e01b5f5260045260245ffd5b819250906020918101031261015d576020015180159081150361015d575f80610ec3565b610eb690606090610eb0565b90610f325750805115610f2357805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580610f63575b610f43575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15610f3b56fea2646970667358221220f270e5db4714581ca643030a27a939347bb30d1896f3ece686528fa2decf041d64736f6c634300081b003360c0806040523461036f576020816113eb803803809161001f8285610373565b83398101031261036f57516001600160a01b038116810361036f5760409081519161004a8184610373565b600b83526a0a6e8c2d6cac8408aa890f60ab1b602084015280519161006f8284610373565b60058352640e68aa890f60db1b602084015283516001600160401b03811161028057600354600181811c91168015610365575b602082101461026257601f8111610302575b50602094601f821160011461029f579481929394955f92610294575b50508160011b915f199060031b1c1916176003555b82516001600160401b03811161028057600454600181811c91168015610276575b602082101461026257601f81116101ff575b506020601f821160011461019c57819293945f92610191575b50508160011b915f199060031b1c1916176004555b61014f81610396565b9015610189575b60a05260805251610fa2908161044982396080518181816104eb015281816108880152610b81015260a0518161052e0152f35b506012610156565b015190505f80610131565b601f1982169060045f52805f20915f5b8181106101e7575095836001959697106101cf575b505050811b01600455610146565b01515f1960f88460031b161c191690555f80806101c1565b9192602060018192868b0151815501940192016101ac565b60045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c81019160208410610258575b601f0160051c01905b81811061024d5750610118565b5f8155600101610240565b9091508190610237565b634e487b7160e01b5f52602260045260245ffd5b90607f1690610106565b634e487b7160e01b5f52604160045260245ffd5b015190505f806100d0565b601f1982169560035f52805f20915f5b8881106102ea575083600195969798106102d2575b505050811b016003556100e5565b01515f1960f88460031b161c191690555f80806102c4565b919260206001819286850151815501940192016102af565b60035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c8101916020841061035b575b601f0160051c01905b81811061035057506100b4565b5f8155600101610343565b909150819061033a565b90607f16906100a2565b5f80fd5b601f909101601f19168101906001600160401b0382119082101761028057604052565b5f8091604051602081019063313ce56760e01b8252600481526103ba602482610373565b51916001600160a01b03165afa3d15610440573d906001600160401b03821161028057604051916103f5601f8201601f191660200184610373565b82523d5f602084013e5b80610434575b610411575b505f905f90565b60208180518101031261036f576020015160ff811161040a579060ff6001921690565b50602081511015610405565b6060906103ff56fe60806040526004361015610011575f80fd5b5f3560e01c806301e1d1141461074b57806306fdde031461069057806307a2d13a1461022e578063095ea7b3146105e85780630a28a477146105ca57806318160ddd146105ad57806323b872dd14610575578063313ce5671461051a57806338d52e0f146104d6578063402d267d146102335780634cdad506146104b85780636e553f651461048557806370a08231146101d357806394bf804d1461045257806395d89b411461034e578063a9059cbb1461031d578063b3d7f6b9146102ff578063b460af94146102a4578063ba08765214610238578063c63d75b614610233578063c6e6f5921461022e578063ce96cb771461020b578063d905777e146101d3578063dc0a9929146101b1578063dd62ed3e146101615763ef8b30f714610137575f80fd5b3461015d57602036600319011261015d576020610155600435610956565b604051908152f35b5f80fd5b3461015d57604036600319011261015d5761017a6107ac565b6101826107c2565b6001600160a01b039182165f908152600160209081526040808320949093168252928352819020549051908152f35b3461015d575f36600319011261015d57602060ff600554166040519015158152f35b3461015d57602036600319011261015d5760206101556101f16107ac565b6001600160a01b03165f9081526020819052604090205490565b3461015d57602036600319011261015d5760206101556102296107ac565b6108fd565b61078f565b6107d8565b3461015d57610246366107fd565b90916102628260018060a01b03165f525f60205260405f205490565b80821161028357508060209361027a61015593610ae0565b93849133610c31565b91632e52afbb60e21b5f5260018060a01b031660045260245260445260645ffd5b3461015d576102b2366107fd565b90916102bd826108fd565b8082116102de5750602092816102d561015593610928565b93849233610c31565b91633fa733bb60e21b5f5260018060a01b031660045260245260445260645ffd5b3461015d57602036600319011261015d576020610155600435610b0d565b3461015d57604036600319011261015d576103436103396107ac565b6024359033610a23565b602060405160018152f35b3461015d575f36600319011261015d576040515f6004548060011c90600181168015610448575b6020831081146104345782855290811561041057506001146103b2575b6103ae836103a281850382610837565b60405191829182610765565b0390f35b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b8082106103f6575090915081016020016103a2610392565b9192600181602092548385880101520191019092916103de565b60ff191660208086019190915291151560051b840190910191506103a29050610392565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610375565b3461015d57604036600319011261015d5760206004356101556104736107c2565b9161047d81610b0d565b809333610b3b565b3461015d57604036600319011261015d5760206004356101556104a66107c2565b6104af83610956565b92839133610b3b565b3461015d57602036600319011261015d576020610155600435610ae0565b3461015d575f36600319011261015d576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461015d575f36600319011261015d5760ff7f00000000000000000000000000000000000000000000000000000000000000001660ff811161056157602090604051908152f35b634e487b7160e01b5f52601160045260245ffd5b3461015d57606036600319011261015d576103436105916107ac565b6105996107c2565b604435916105a8833383610983565b610a23565b3461015d575f36600319011261015d576020600254604051908152f35b3461015d57602036600319011261015d576020610155600435610928565b3461015d57604036600319011261015d576106016107ac565b60243590331561067d576001600160a01b031690811561066a57335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b3461015d575f36600319011261015d576040515f6003548060011c90600181168015610741575b6020831081146104345782855290811561041057506001146106e3576103ae836103a281850382610837565b91905060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f905b808210610727575090915081016020016103a2610392565b91926001816020925483858801015201910190929161070f565b91607f16916106b7565b3461015d575f36600319011261015d57602061015561086d565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b3461015d57602036600319011261015d5760206040516004358152f35b600435906001600160a01b038216820361015d57565b602435906001600160a01b038216820361015d57565b3461015d57602036600319011261015d576107f16107ac565b5060206040515f198152f35b606090600319011261015d57600435906024356001600160a01b038116810361015d57906044356001600160a01b038116810361015d5790565b90601f8019910116810190811067ffffffffffffffff82111761085957604052565b634e487b7160e01b5f52604160045260245ffd5b6040516370a0823160e01b81523060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108f2575f916108c3575090565b90506020813d6020116108ea575b816108de60209383610837565b8101031261015d575190565b3d91506108d1565b6040513d5f823e3d90fd5b60018060a01b03165f525f60205261091860405f2054610ae0565b90565b9190820180921161056157565b60025490600182018092116105615761093f61086d565b600181018091116105615761091892600192610d44565b60025490600182018092116105615761096d61086d565b6001810180911161056157610918925f92610d44565b6001600160a01b039081165f81815260016020818152604080842095871684529490529290205493929184016109ba575b50505050565b828410610a0057801561067d576001600160a01b0382161561066a575f52600160205260405f209060018060a01b03165f5260205260405f20910390555f8080806109b4565b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b0316908115610acd576001600160a01b0316918215610aba57815f525f60205260405f2054818110610aa157817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b63ec442f0560e01b5f525f60045260245ffd5b634b637e8f60e11b5f525f60045260245ffd5b610ae861086d565b9060018201809211610561576002546001810180911161056157610918925f92610d44565b610b1561086d565b906001820180921161056157600254600181018091116105615761091892600192610d44565b6040516323b872dd60e01b60208201526001600160a01b039091166024820181905230604483015260648083018590528252929190610ba590610b7f608482610837565b7f0000000000000000000000000000000000000000000000000000000000000000610e5b565b6001600160a01b0316928315610aba577fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d79181610be660409360025461091b565b600255855f525f602052825f20818154019055855f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60208651858152a382519182526020820152a3565b6001600160a01b03808416959294908216939092918290878603610d33575b5050508415610acd57845f525f60205260405f2054818110610d1a5791816040927ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db94885f525f60205203835f205580600254036002555f877fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60208651858152a3825163a9059cbb60e01b60208201526001600160a01b03909616602487018190526044808801849052875295610d0d90610b7f606482610837565b82519182526020820152a4565b8563391434e360e21b5f5260045260245260445260645ffd5b610d3c92610983565b5f8181610c50565b9291610d51818386610db6565b926004811015610da2576001809116149182610d77575b5050610918925015159061091b565b9080925015610d8e57610918930915155f80610d68565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b91818302915f1981850993838086109503948086039514610e4d5784831115610e2e5790829109815f0382168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b82610e465760125b634e487b715f526020526024601cfd5b6011610e36565b505080925015610d8e570490565b81516001600160a01b03909116915f91829160200182855af13d15610f02573d67ffffffffffffffff811161085957610eb69160405191610ea66020601f19601f8401160184610837565b82523d5f602084013e5b83610f0e565b8051908115159182610ede575b5050610ecc5750565b635274afe760e01b5f5260045260245ffd5b819250906020918101031261015d576020015180159081150361015d575f80610ec3565b610eb690606090610eb0565b90610f325750805115610f2357805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580610f63575b610f43575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15610f3b56fea2646970667358221220b086c5fd69f84195c720e651bd0c3fdfe94026eb8e5f77216c898ab4d4455cb664736f6c634300081b00336b656420736c6f742e2057652063616e2774206669742076616c7565206772650000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000440017a1b021006d556d7fc06a54c32e42eb745b4ab7ab316d43345009b2140e0580b072eec7df16000000000000000000000000000000000000000000000000775f661b0bd1739349b9a2a3ef60be277c5d2d29c4ce391d82d164c166df9c8336ddf84206b2f812000000000000000000000000000000000000000000000000a35b1b31ce002fbf2058d22f30f95d405200a15b0000000000000000000000000fe906e030a44ef24ca8c7dc7b7c53a6c4f00ce9000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000bfc9d54fc184518a81162f8fb99c2eaca081202f91c11ba4220b7a72e1dc5e92f2b48d3fdf6272600000000000000000000000073746453746f726167652066696e642853746453746f72616765293a20506163a264697066735822122042e76fa1080ae84cb7f9f10596b258c5e516e57219c6f06fae0ff1080187545064736f6c634300081b0033","sourceMap":"632:46320:68:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1016:26:12;632:46320:68;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:46320:68;;;;42771:14;1669:42;42821:13;1747:42;42951:7;1049:42;632:46320;;-1:-1:-1;;;42951:39:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;42951:39;;;632:46320;;;;-1:-1:-1;;;;;632:46320:68;;;2260:42;;;632:46320;;;;;;2260:42;;;632:46320;;;;;;;;;;;;;;2260:42;;632:46320;;;42951:39;;;;;;;;43021:9;42951:39;;;;;632:46320;43021:9;;:::i;:::-;632:46320;43011:19;;:37;;;632:46320;-1:-1:-1;;;;;;;;;;;43001:48:68;;;;632:46320;;-1:-1:-1;;;43001:48:68;;632:46320;;;;43001:48;;632:46320;43001:48;632:46320;43001:48;632:46320;-1:-1:-1;;;;;;;;;;;43001:48:68;;;;;;;;;;;632:46320;2260:42;;;;632:46320;;;;;;;;;:::i;:::-;;2260:42;;632:46320;2260:42;;;-1:-1:-1;;2260:42:68;;632:46320;2260:42;;43113:20;;;:::i;:::-;2260:42;43113:20;;:::i;:::-;42951:7;1049:42;632:46320;;-1:-1:-1;;;43200:44:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;43200:44;;632:46320;43001:48;632:46320;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:46320:68;;;;;;;;;;;;;;;;;;;;;;43200:44;;;;;;;;;;;;;;;632:46320;43260:13;;43294:3;632:46320;;43275:17;;;;;43322:9;43313:32;43322:9;632:46320;43322:9;;;:::i;:::-;;632:46320;43313:32;:::i;:::-;43359:34;632:46320;43368:9;;;;:::i;:::-;;:21;632:46320;43359:34;:::i;:::-;632:46320;43260:13;;43275:17;;632:46320;;43200:44;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;632:46320;;1590:14:0;;-1:-1:-1;632:46320:68;1590:14:0;;;;632:46320:68;;;;;;;-1:-1:-1;632:46320:68;;-1:-1:-1;632:46320:68;;;;;;;;;;;;;43001:48;;;;;:::i;:::-;632:46320;;43001:48;;;;632:46320;;;;43001:48;632:46320;;1590:14:0;632:46320:68;;1590:14:0;;;;43001:48:68;632:46320;;;43011:37;43034:14;43044:4;43034:14;;43011:37;;42951:39;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;632:46320;;;;;;;-1:-1:-1;;632:46320:68;;;;36981:7;1049:42;632:46320;;-1:-1:-1;;;36981:39:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;36981:39;;;632:46320;;;;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;2064:42;2260;;;632:46320;;;;;;;;36981:39;;632:46320;;-1:-1:-1;;;;;632:46320:68;36981:39;;;;;;;;;;;632:46320;37056:25;37112:9;37056:25;;:::i;:::-;37112:9;;:::i;:::-;632:46320;37102:19;;-1:-1:-1;;;;;;;;;;;37092:30:68;;;;632:46320;;1590:14:0;;;;37092:30:68;;632:46320;37092:30;;632:46320;37092:30;;2260:42;37092:30;-1:-1:-1;;;;;;;;;;;37092:30:68;;;;;;;;;;;632:46320;37132:35;;-1:-1:-1;;;;;;;;;;;37132:35:68;;;;632:46320;;-1:-1:-1;;;37132:35:68;;37142:24;;;632:46320;37132:35;;632:46320;37132:35;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;37132:35:68;;;;;;;;;;;632:46320;2260:42;;632:46320;;;;;;;;;:::i;:::-;;2260:42;;632:46320;2260:42;;;-1:-1:-1;;2260:42:68;;632:46320;2260:42;;37231:20;;;:::i;:::-;2260:42;37231:20;;:::i;:::-;36981:7;1049:42;632:46320;;-1:-1:-1;;;37318:44:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;37318:44;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;632:46320;;;2064:42;2260;632:46320;;;;36981:39;632:46320;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:46320:68;;;;;;;;;;;;;;;;;;;;;;;;37318:44;;;;;;;;;;;;;;;632:46320;37378:13;;37412:3;632:46320;;37393:17;;;;;37440:9;37431:32;37440:9;632:46320;37440:9;;;:::i;37431:32::-;37477:34;632:46320;37486:9;;;;:::i;37477:34::-;632:46320;37378:13;;37318:44;;;;;;;;;;;;;;:::i;:::-;;;;;632:46320;;;;;;;-1:-1:-1;632:46320:68;;-1:-1:-1;632:46320:68;;;;;;;;;;;;;37132:35;;;;;:::i;:::-;632:46320;;37132:35;;;;;632:46320;;1590:14:0;632:46320:68;;1590:14:0;;;;37132:35:68;632:46320;;;37092:30;;;;;:::i;:::-;632:46320;;37092:30;;;;;632:46320;;1590:14:0;632:46320:68;;1590:14:0;;;;36981:39:68;;;;;;;;;;;;;:::i;:::-;;;;632:46320;;;;;;;;;;;;;;;;;;2421:18:5;632:46320:68;;;;;;;2421:18:5;632:46320:68;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;632:46320:68;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43594:14;1669:42;43644:13;1747:42;43774:7;1049:42;632:46320;;-1:-1:-1;;;43774:39:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;43774:39;;632:46320;-1:-1:-1;;;;;632:46320:68;;;2260:42;;;632:46320;;;;;;2260:42;;;632:46320;;;;;;;;;;;;;;2260:42;;632:46320;;;43774:39;;;;;;;;;;;632:46320;-1:-1:-1;43840:38:68;;;;43848:13;43840:38;;43889:315;;;43942:9;;;:::i;:::-;632:46320;43924:27;;:53;;;43889:315;-1:-1:-1;;;;;;;;;;;43914:64:68;;;;632:46320;;-1:-1:-1;;;43914:64:68;;632:46320;;;;43914:64;;632:46320;43914:64;632:46320;43914:64;632:46320;-1:-1:-1;;;;;;;;;;;43914:64:68;;;;;;;;43889:315;632:46320;;;;;27501:38:3;;1590:14:0;;;;27501:38:3;;44013:4:68;43914:64;27501:38:3;;632:46320:68;43914:64;27501:38:3;;;;;;:::i;:::-;27484:56;;;;;;27568:30;27484:56;;:::i;:::-;632:46320:68;;;;27568:30:3;;;;;;:::i;:::-;-1:-1:-1;6854:12:8;1984:42:68;;-1:-1:-1;;;;;;1984:42:68;-1:-1:-1;;;;;632:46320:68;;1984:42;;;27524:10:3;632:46320:68;;7009:9:8;632:46320:68;;;7009:9:8;632:46320:68;7505:10:8;632:46320:68;-1:-1:-1;;;632:46320:68;;;;;;;43949:1;632:46320;;;7505:10:8;632:46320:68;;:::i;:::-;44013:4;;;;632:46320;;;;;;;;;3663:17;;;632:46320;;;;;;;;;;;;;;;6854:12:8;632:46320:68;;7009:9:8;632:46320:68;;1590:14:0;15610:11:8;632:46320:68;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;15703:15:8;;632:46320:68;;;;;;;;;;;;;;;;15735:37:8;;;;;;;;;;:::i;:::-;;27501:38:3;;15735:37:8;;;;;;:::i;:::-;632:46320:68;15725:48:8;;632:46320:68;;;;;15610:11:8;632:46320:68;;;15703:77:8;632:46320:68;;15702:78:8;15698:126;;43889:315:68;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;;;;;;15889:37:8;;632:46320:68;;;;;;15889:37:8;;;632:46320:68;15889:37:8;;;;;:::i;:::-;632:46320:68;15879:48:8;;632:46320:68;;;;;;;;15943:15:8;43949:1:68;15943:15:8;;632:46320:68;15961:16:8;7009:9;15961:16;;632:46320:68;15943:34:8;;;;:::i;:::-;15938:460;;632:46320:68;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;632:46320:68;;;16424:32:8;;632:46320:68;1442:42;;;632:46320;;;;;;;;;1442:42;632:46320;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;43889:315:68;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;632:46320:68;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;632:46320:68;;;16587:43:8;;632:46320:68;12810:59:8;;;632:46320:68;;;;-1:-1:-1;;632:46320:68;;;12656:92:8;12810:59;;;632:46320:68;;;12810:59:8;632:46320:68;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;43889:315:68;16678:31:8;;;;:::i;:::-;16724:8;;632:46320:68;;;16724:29:8;;43889:315:68;16720:176:8;;;14785:4;;;;;;:::i;:::-;632:46320:68;;;;27501:38:3;;;1590:14:0;;;;27501:38:3;;44235:4:68;27501:38:3;;;632:46320:68;27501:38:3;;;;;;;:::i;:::-;27484:56;;;;;;27568:30;27484:56;;:::i;27568:30::-;-1:-1:-1;6854:12:8;1984:42:68;;-1:-1:-1;;;;;;1984:42:68;-1:-1:-1;;;;;632:46320:68;;1984:42;;;27524:10:3;632:46320:68;;7009:9:8;632:46320:68;;;7009:9:8;632:46320:68;7505:10:8;632:46320:68;-1:-1:-1;;;632:46320:68;;;;;;;7505:10:8;632:46320:68;;;7505:10:8;632:46320:68;;:::i;:::-;;;;;;;;6854:12:8;632:46320:68;;7009:9:8;632:46320:68;;1590:14:0;15610:11:8;632:46320:68;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;15703:15:8;;632:46320:68;;;;;;;;27501:38:3;632:46320:68;;;;;;27501:38:3;15735:37:8;;;;;;;;;;:::i;:::-;632:46320:68;15725:48:8;;632:46320:68;;27501:38:3;632:46320:68;;15610:11:8;632:46320:68;;;15703:77:8;632:46320:68;;15702:78:8;15698:126;;43889:315:68;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;;;;27501:38:3;632:46320:68;15889:37:8;;632:46320:68;;;;;;15889:37:8;;;27501:38:3;15889:37:8;;;;;:::i;:::-;632:46320:68;15879:48:8;;632:46320:68;;27501:38:3;632:46320:68;;;;;15943:15:8;7505:10;15943:15;;632:46320:68;15961:16:8;7009:9;15961:16;;632:46320:68;15943:34:8;;;;:::i;:::-;15938:460;;43889:315:68;632:46320;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;632:46320:68;;;16424:32:8;;632:46320:68;1442:42;;;632:46320;;;;;;;27501:38:3;632:46320:68;1442:42;632:46320;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;43889:315:68;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;632:46320:68;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;632:46320:68;;;16587:43:8;;632:46320:68;12810:59:8;;;632:46320:68;;;;;;;;12656:92:8;;;;12810:59;;;632:46320:68;;;12810:59:8;632:46320:68;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;43889:315:68;16678:31:8;;;;;:::i;:::-;16724:8;;;632:46320:68;;;16724:29:8;;43889:315:68;16720:176:8;;;;14785:4;;;;;;:::i;:::-;632:46320:68;;-1:-1:-1;;;44269:58:68;;44235:4;632:46320;44269:58;;632:46320;-1:-1:-1;;27501:38:3;1442:42:68;;632:46320;27501:38:3;632:46320:68;27501:38:3;632:46320:68;44269:58;;;;;;;;;;43889:315;-1:-1:-1;43774:7:68;1049:42;632:46320;;-1:-1:-1;;;44337:61:68;;-1:-1:-1;;;;;632:46320:68;;;;44337:61;;632:46320;-1:-1:-1;;27501:38:3;1442:42:68;;632:46320;27501:38:3;632:46320:68;27501:38:3;632:46320:68;44337:61;;;;;;;;;;43889:315;-1:-1:-1;632:46320:68;;-1:-1:-1;;;44424:41:68;;44235:4;632:46320;44424:41;;632:46320;;27501:38:3;632:46320:68;27501:38:3;632:46320:68;44424:41;;;;;;;;;;;;43889:315;-1:-1:-1;632:46320:68;;-1:-1:-1;;;44490:41:68;;44235:4;632:46320;44490:41;;632:46320;;27501:38:3;632:46320:68;27501:38:3;632:46320:68;1590:14:0;44490:41:68;;;;;;;;;;;43889:315;-1:-1:-1;43774:7:68;1049:42;632:46320;;-1:-1:-1;;;44575:57:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;44575:57;;632:46320;27501:38:3;2260:42:68;;632:46320;;;27501:38:3;2260:42:68;;632:46320;;;;;-1:-1:-1;;;;;632:46320:68;7009:9:8;2260:42:68;;;;;;44575:57;2260:42;;;;;;;;;;;;;632:46320;44575:57;;;;;;;;;;;43889:315;-1:-1:-1;7505:10:8;44647:21:68;7505:10:8;;27501:38:3;;632:46320:68;;;1590:14:0;;;;;;;44743:41:68;;44235:4;632:46320;44743:41;;632:46320;44743:41;;;;;;;;;;;44643:609;44743:48;27501:38:3;44743:48:68;;27501:38:3;44743:48:68;;;;;:::i;:::-;;;:::i;:::-;632:46320;;;;1590:14:0;;;;;;;44892:41:68;;44235:4;632:46320;44892:41;;632:46320;44892:41;;;;;;;;;;;44643:609;44885:48;;;;;;:::i;:::-;632:46320;;44892:41;;;27501:38:3;44892:41:68;;27501:38:3;44892:41:68;;;;;;1590:14:0;44892:41:68;;;:::i;:::-;;;1590:14:0;;;;;44885:48:68;44892:41;;1590:14:0;-1:-1:-1;632:46320:68;;44892:41;;;-1:-1:-1;44892:41:68;;44743;;;;;27501:38:3;44743:41:68;;27501:38:3;44743:41:68;;;;;;1590:14:0;44743:41:68;;;:::i;:::-;;;1590:14:0;;;;;;44743:41:68;;1590:14:0;27501:38:3;44743:41:68;;;;;-1:-1:-1;44743:41:68;;;632:46320;;1590:14:0;632:46320:68;;1590:14:0;;;;44643:609:68;632:46320;;27501:38:3;;632:46320:68;;;;1590:14:0;;;;;;;45044:41:68;;44235:4;632:46320;45044:41;;632:46320;45044:41;;;;;;;;;;;44643:609;45037:48;27501:38:3;45037:48:68;;27501:38:3;45037:48:68;;;;;:::i;:::-;632:46320;;;;1590:14:0;;;;;;;45179:41:68;;44235:4;632:46320;45179:41;;632:46320;45179:41;;;;;;;;;;;44643:609;45179:48;;;;;;:::i;:41::-;;;27501:38:3;45179:41:68;;27501:38:3;45179:41:68;;;;;;1590:14:0;45179:41:68;;;:::i;:::-;;;1590:14:0;;;;;45179:48:68;:41;;;;;-1:-1:-1;45179:41:68;;45044;;;;27501:38:3;45044:41:68;;27501:38:3;45044:41:68;;;;;;1590:14:0;45044:41:68;;;:::i;:::-;;;1590:14:0;;;;;;45044:41:68;;27501:38:3;45044:41:68;;;;;-1:-1:-1;45044:41:68;;44575:57;7505:10:8;44575:57:68;;;;;2260:42;44575:57;2260:42;44575:57;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;632:46320;;1590:14:0;632:46320:68;;1590:14:0;;;;2260:42:68;-1:-1:-1;;;2260:42:68;;;632:46320;2260:42;27501:38:3;632:46320:68;2260:42;44490:41;;;;27501:38:3;44490:41:68;;27501:38:3;44490:41:68;;;;;;1590:14:0;44490:41:68;;;:::i;:::-;;;1590:14:0;;;;;44490:41:68;;;;;;;-1:-1:-1;44490:41:68;;44424;;;;27501:38:3;44424:41:68;;27501:38:3;44424:41:68;;;;;;1590:14:0;44424:41:68;;;:::i;:::-;;;1590:14:0;;;;;44424:41:68;;;;;;;-1:-1:-1;44424:41:68;;;632:46320;;1590:14:0;632:46320:68;;1590:14:0;;;;44337:61:68;;;27501:38:3;44337:61:68;27501:38:3;44337:61:68;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;44269:58;;;27501:38:3;44269:58:68;27501:38:3;44269:58:68;;;;;;;:::i;:::-;;;16720:176:8;632:46320:68;;;;16769:41:8;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;632:46320:68;;-1:-1:-1;;;16769:41:8;;-1:-1:-1;;;;;632:46320:68;;;;16769:41:8;;632:46320:68;12810:59:8;;;632:46320:68;;;;12810:59:8;;;632:46320:68;;;;;;12810:59:8;;;16769:41;;;;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;;;;;16720:176;632:46320:68;;-1:-1:-1;;;16824:61:8;;27501:38:3;632:46320:68;16824:61:8;;12810:59;;27501:38:3;12810:59:8;;632:46320:68;12810:59:8;27501:38:3;632:46320:68;;12810:59:8;-1:-1:-1;;;12810:59:8;;;;16824:61;;;16769:41;;;;;;:::i;:::-;632:46320:68;;16769:41:8;;;16724:29;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;632:46320:68;;16587:43:8;;;;;632:46320:68;;;16424:32:8;;;;;27501:38:3;16424:32:8;;27501:38:3;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;;;;:::i;:::-;16021:3;2260:42:68;16021:3:8;2260:42:68;;;;632:46320;;;;;;;-1:-1:-1;;;16314:19:8;;7505:10;632:46320:68;;;;16314:19:8;;632:46320:68;;;16314:19:8;632:46320:68;27501:38:3;632:46320:68;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;;27501:38:3;16314:19:8;16170:185;16314:19;;12810:59;16314:19;;;;15938:460;632:46320:68;;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;632:46320:68;12810:59:8;;;-1:-1:-1;;;2260:42:68;12810:59:8;;;632:46320:68;;;;;;12810:59:8;;;632:46320:68;;;;;;;;16170:185:8;;27501:38:3;;16170:185:8;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;;;;;12810:59;632:46320:68;;-1:-1:-1;;;12810:59:8;;27501:38:3;632:46320:68;12810:59:8;;632:46320:68;;;;;;27501:38:3;632:46320:68;;;;:::i;:::-;12810:59:8;;;16314:19;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;632:46320:68;;1590:14:0;;;;;;;;632:46320:68;-1:-1:-1;;;523:5:65;;6854:12:8;632:46320:68;523:5:65;27501:38:3;632:46320:68;523:5:65;15698:126:8;13208:33;;:::i;:::-;;15698:126;;632:46320:68;-1:-1:-1;;;632:46320:68;;;;;27501:38:3;632:46320:68;;16724:29:8;-1:-1:-1;;16736:17:8;;;-1:-1:-1;3663:17:68;16724:29:8;;16587:43;;;;;:::i;:::-;632:46320:68;;16587:43:8;;;;16424:32;;;;;632:46320:68;16424:32:8;;632:46320:68;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;:::i;:::-;16021:3;2260:42:68;16021:3:8;2260:42:68;;;;632:46320;;;;;;;-1:-1:-1;;;16314:19:8;;43949:1:68;632:46320;;;;16314:19:8;;632:46320:68;16314:19:8;632:46320:68;43914:64;632:46320;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;12810:59;632:46320:68;16314:19:8;;16170:185;16314:19;632:46320:68;16314:19:8;;;;15938:460;632:46320:68;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;632:46320:68;12810:59:8;;;-1:-1:-1;;;2260:42:68;12810:59:8;;;632:46320:68;;;;;;12810:59:8;;;632:46320:68;;;;;;;;16170:185:8;;27501:38:3;;16170:185:8;;;;;;:::i;:::-;632:46320:68;;-1:-1:-1;;;12810:59:8;;632:46320:68;;12810:59:8;;632:46320:68;;;;43914:64;632:46320;;;;:::i;16314:19:8:-;;;;;;;;;;;;;;:::i;:::-;;;;;632:46320:68;-1:-1:-1;;;523:5:65;;6854:12:8;632:46320:68;523:5:65;43914:64:68;632:46320;523:5:65;15698:126:8;13208:33;;:::i;:::-;;15698:126;;43914:64:68;;;;;:::i;:::-;632:46320;;43914:64;;;;632:46320;;;;43924:53;43955:22;43973:4;43955:22;;43924:53;;43889:315;44097:9;;;:::i;:::-;632:46320;44079:27;;:53;;;43889:315;-1:-1:-1;;;;;;;;;;;44069:64:68;;;;632:46320;;-1:-1:-1;;;44069:64:68;;632:46320;;;;44069:64;;632:46320;44069:64;632:46320;44069:64;632:46320;-1:-1:-1;;;;;;;;;;;44069:64:68;;;;;;;;43889:315;632:46320;;;;;27501:38:3;;1590:14:0;;;;27501:38:3;;44168:4:68;44069:64;27501:38:3;;632:46320:68;44069:64;27501:38:3;;;;;;:::i;:::-;27484:56;;;;;;27568:30;27484:56;;:::i;27568:30::-;-1:-1:-1;6854:12:8;1984:42:68;;-1:-1:-1;;;;;;1984:42:68;-1:-1:-1;;;;;632:46320:68;;1984:42;;;27524:10:3;632:46320:68;;7009:9:8;632:46320:68;;;7009:9:8;632:46320:68;7505:10:8;632:46320:68;-1:-1:-1;;;632:46320:68;;;;;;;7505:10:8;632:46320:68;;;7505:10:8;632:46320:68;;:::i;:::-;;;;;;;;6854:12:8;632:46320:68;;7009:9:8;632:46320:68;;1590:14:0;15610:11:8;632:46320:68;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;15703:15:8;;632:46320:68;;;;;;;;;;;;;;;;15735:37:8;;;;;;;;;;:::i;:::-;632:46320:68;15725:48:8;;632:46320:68;;;;;15610:11:8;632:46320:68;;;15703:77:8;632:46320:68;;15702:78:8;15698:126;;43889:315:68;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;;;;;;15889:37:8;;632:46320:68;;;;;;15889:37:8;;;632:46320:68;15889:37:8;;;;;:::i;:::-;632:46320:68;15879:48:8;;632:46320:68;;;;;;;;15943:15:8;7505:10;15943:15;;632:46320:68;15961:16:8;7009:9;15961:16;;632:46320:68;15943:34:8;;;;:::i;:::-;15938:460;;632:46320:68;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;632:46320:68;;;16424:32:8;;632:46320:68;1442:42;;;632:46320;;;;;;;;;1442:42;632:46320;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;43889:315:68;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;632:46320:68;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;632:46320:68;;;16587:43:8;;632:46320:68;12810:59:8;;;632:46320:68;;;;-1:-1:-1;;632:46320:68;;;12656:92:8;12810:59;;;632:46320:68;;;12810:59:8;632:46320:68;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;43889:315:68;16678:31:8;;;;:::i;:::-;16724:8;;632:46320:68;;;16724:29:8;;43889:315:68;16720:176:8;;;14785:4;;;;;;:::i;:::-;43889:315:68;;16724:29:8;-1:-1:-1;;16736:17:8;;;-1:-1:-1;3663:17:68;16724:29:8;;16587:43;;;;;:::i;:::-;632:46320:68;;16587:43:8;;;;16424:32;;;;;632:46320:68;16424:32:8;;632:46320:68;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15698:126;13208:33;;:::i;:::-;;15698:126;;44069:64:68;;;;;:::i;:::-;632:46320;;44069:64;;;;44079:53;44110:22;44128:4;44110:22;;44079:53;;43840:38;;;;;43774:39;;;;;;;;;;;;;:::i;:::-;;;;632:46320;;;;;;;-1:-1:-1;;632:46320:68;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;3657:11:28;632:46320:68;;;3657:27:28;632:46320:68;;;;;;-1:-1:-1;632:46320:68;;;;;-1:-1:-1;632:46320:68;;;;;;;;;;;;;;;;;;;;;2393:30;632:46320;;;-1:-1:-1;;;;;632:46320:68;;;;;;;;;;;;;;;;:::i;:::-;14180:38;;;14188:13;14180:38;14333:7;1049:42;632:46320;;-1:-1:-1;;;14333:39:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;14333:39;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;;;;;;14333:39;;632:46320;;-1:-1:-1;;;;;632:46320:68;14333:39;;;;;;;;;;;14180:38;2260:42;;;;;;;14387:21;14395:13;14387:21;;14383:353;;;14387:21;;;14469:9;;;:::i;:::-;632:46320;14451:27;;:94;;;14383:353;-1:-1:-1;;;;;;;;;;;14424:135:68;;;;632:46320;;-1:-1:-1;;;14424:135:68;;632:46320;;;;14424:135;;632:46320;14424:135;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;14424:135:68;;;;;;;;14383:353;;;;632:46320;;;;2260:42;27501:38:3;;1590:14:0;;;;27501:38:3;;14767:4:68;2260:42;27501:38:3;;632:46320:68;2260:42;27501:38:3;;;2260:42:68;27501:38:3;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;-1:-1:-1;6854:12:8;1984:42:68;;-1:-1:-1;;;;;;1984:42:68;-1:-1:-1;;;;;;;;;;;1984:42:68;;;27524:10:3;632:46320:68;;7009:9:8;632:46320:68;;;7009:9:8;632:46320:68;7505:10:8;632:46320:68;-1:-1:-1;;;632:46320:68;;;;;;;;;14395:13;632:46320;;;7505:10:8;632:46320:68;;:::i;:::-;;;;;;;;6854:12:8;632:46320:68;;7009:9:8;632:46320:68;;1590:14:0;15610:11:8;632:46320:68;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;15703:15:8;;632:46320:68;;;;;;;;2260:42;632:46320;;;;;;2260:42;15735:37:8;;;;;;;;;;:::i;:::-;632:46320:68;15725:48:8;;632:46320:68;;2260:42;632:46320;;15610:11:8;632:46320:68;;;15703:77:8;632:46320:68;;15702:78:8;15698:126;;14383:353:68;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;;;;2260:42;632:46320;15889:37:8;;632:46320:68;;;;;;15889:37:8;;;2260:42:68;15889:37:8;;;;;:::i;:::-;632:46320:68;15879:48:8;;632:46320:68;;2260:42;632:46320;;;;15943:15:8;14395:13:68;15943:15:8;;632:46320:68;15961:16:8;2260:42:68;15961:16:8;;632:46320:68;15943:34:8;;;;:::i;:::-;15938:460;;632:46320:68;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;632:46320:68;;;16424:32:8;;632:46320:68;1442:42;;;632:46320;;;;;;;2260:42;632:46320;1442:42;632:46320;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;14383:353:68;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;632:46320:68;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;632:46320:68;;;16587:43:8;;632:46320:68;12810:59:8;;;632:46320:68;;;;-1:-1:-1;;632:46320:68;;;12656:92:8;12810:59;;;632:46320:68;;;12810:59:8;632:46320:68;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;14383:353:68;16678:31:8;;;;:::i;:::-;16724:8;;632:46320:68;;;16724:29:8;;14383:353:68;16720:176:8;;;14785:4;;;;;:::i;:::-;14333:7:68;1049:42;632:46320;;-1:-1:-1;;;14802:59:68;;-1:-1:-1;;;;;632:46320:68;;;;14802:59;;632:46320;-1:-1:-1;;2260:42:68;1442;;632:46320;2260:42;632:46320;2260:42;632:46320;14802:59;-1:-1:-1;;;;;;;;;;;14802:59:68;;;;;;;;14383:353;-1:-1:-1;632:46320:68;;-1:-1:-1;;;14887:39:68;;14767:4;632:46320;14887:39;;632:46320;;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;14887:39:68;;;;;;;;;;;14383:353;-1:-1:-1;632:46320:68;;-1:-1:-1;;;14951:39:68;;14767:4;632:46320;14951:39;;632:46320;;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;14951:39:68;;;;;;;;;;;14383:353;2260:42;;632:46320;;;15054:28;632:46320;;;;;;:::i;:::-;14395:13;2260:42;;-1:-1:-1;;2260:42:68;;632:46320;2260:42;;;;15054:28;:::i;:::-;2260:42;14333:7;1049:42;632:46320;;-1:-1:-1;;;15125:57:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;15125:57;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;14333:39;2260:42;;;;;;;;;632:46320;;;;;;;15125:57;;632:46320;;-1:-1:-1;;;;;632:46320:68;15125:57;;;;;;;;;;;14383:353;-1:-1:-1;15197:21:68;;;632:46320;;-1:-1:-1;;;15277:39:68;;14767:4;632:46320;15277:39;;632:46320;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;15277:39:68;;;;;;;;;;;15193:569;15277:46;;;;;;:::i;:::-;632:46320;;;;1590:14:0;;;15424:39:68;;14767:4;632:46320;15424:39;;632:46320;2260:42;15424:39;2260:42;15424:39;-1:-1:-1;;;;;;;;;;;15424:39:68;;;;;;;;;;;;15417:46;;;;;;:::i;15424:39::-;632:46320;1590:14:0;632:46320:68;;1590:14:0;;;;15277:39:68;;;2260:42;15277:39;;2260:42;15277:39;;;;;;1590:14:0;15277:39:68;;;:::i;:::-;;;1590:14:0;;;;;15277:46:68;:39;;;;;-1:-1:-1;15277:39:68;;;632:46320;;1590:14:0;632:46320:68;;1590:14:0;;;;15193:569:68;632:46320;;-1:-1:-1;;;15558:39:68;;14767:4;632:46320;15558:39;;632:46320;;;;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;15558:39:68;;;;;;;;;;;15193:569;15551:46;;;;;;:::i;:::-;632:46320;;;;1590:14:0;;;15691:39:68;;14767:4;632:46320;15691:39;;632:46320;2260:42;15691:39;2260:42;15691:39;-1:-1:-1;;;;;;;;;;;15691:39:68;;;;;;;;;;;;:46;;;;;;:::i;15558:39::-;;;2260:42;15558:39;;2260:42;15558:39;;;;;;1590:14:0;15558:39:68;;;:::i;:::-;;;1590:14:0;;;;;15551:46:68;15558:39;;;;;-1:-1:-1;15558:39:68;;15125:57;;;;;2260:42;15125:57;2260:42;15125:57;;;;;;;:::i;:::-;;;;;14951:39;;;;;2260:42;14951:39;;2260:42;14951:39;;;;;;1590:14:0;14951:39:68;;;:::i;:::-;;;1590:14:0;;;;;;;14951:39:68;;;;;;;-1:-1:-1;14951:39:68;;14887;;;;;2260:42;14887:39;;2260:42;14887:39;;;;;;1590:14:0;14887:39:68;;;:::i;:::-;;;1590:14:0;;;;;;;14887:39:68;;;;;;;-1:-1:-1;14887:39:68;;14802:59;;;2260:42;14802:59;2260:42;14802:59;;;;;;;:::i;:::-;;;16720:176:8;632:46320:68;;;;;16769:41:8;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;632:46320:68;;-1:-1:-1;;;16769:41:8;;-1:-1:-1;;;;;632:46320:68;;;;16769:41:8;;632:46320:68;12810:59:8;;;632:46320:68;;;;12810:59:8;;;632:46320:68;;;;;;12810:59:8;;;16769:41;12810:59;16724:29;-1:-1:-1;;16736:17:8;;;-1:-1:-1;3663:17:68;16724:29:8;;16587:43;;;;;:::i;:::-;632:46320:68;;16587:43:8;;;;;632:46320:68;;;16424:32:8;;;;;2260:42:68;16424:32:8;;2260:42:68;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;:::i;15698:126::-;13208:33;;:::i;:::-;;15698:126;;632:46320:68;-1:-1:-1;;;632:46320:68;;;;;2260:42;632:46320;;14424:135;;;;;:::i;:::-;632:46320;;14424:135;;;;14451:94;-1:-1:-1;;632:46320:68;;-1:-1:-1;;;46578:23:68;;2260:42;632:46320;;;-1:-1:-1;;;;;;;;;;;46578:23:68;;;;;;;;;;14451:94;632:46320;;;;46559:42;46691:1;46680:12;;46676:78;;14451:94;46778:2;46767:13;;46763:94;;14451;632:46320;;;;;;;;;;14502:43;;14451:94;;632:46320;-1:-1:-1;;;523:5:65;;;632:46320:68;523:5:65;2260:42:68;632:46320;523:5:65;46763:94:68;-1:-1:-1;;2260:42:68;;;-1:-1:-1;2260:42:68;;;;46763:94;;;46676:78;3663:17;-1:-1:-1;;2260:42:68;;;;;;;46676:78;;;2260:42;-1:-1:-1;;;523:5:65;;;632:46320:68;523:5:65;2260:42:68;632:46320;523:5:65;46578:23:68;;2260:42;46578:23;;2260:42;46578:23;;;;;;2260:42;46578:23;;;:::i;:::-;;;632:46320;;;;;;;;;;;;;46578:23;;;;;;-1:-1:-1;46578:23:68;;;632:46320;;1590:14:0;632:46320:68;;1590:14:0;;;;14383:353:68;14635:9;;;:::i;:::-;632:46320;14617:27;;:94;;;14383:353;-1:-1:-1;;;;;;;;;;;14590:135:68;;;;632:46320;;-1:-1:-1;;;14590:135:68;;632:46320;;;;14590:135;;632:46320;14590:135;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;14590:135:68;;;;;;;;14383:353;;;;;14590:135;;;;;:::i;:::-;632:46320;;14590:135;;;;14617:94;14686:25;;;:::i;:::-;14668:43;;14617:94;;2260:42;-1:-1:-1;;;2260:42:68;;;632:46320;2260:42;;632:46320;2260:42;14333:39;;;;;;;;;;;;;:::i;:::-;;;;14180:38;;;;632:46320;;;;;;;-1:-1:-1;;632:46320:68;;;;39729:13;1442:42;39905:7;1049:42;632:46320;;-1:-1:-1;;;39905:39:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;39905:39;;632:46320;-1:-1:-1;;;;;632:46320:68;;;2260:42;;;632:46320;;;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;;;;;;;;;39905:39;;632:46320;;;39905:39;;;;;;;;;;;632:46320;;40076:9;40005:41;632:46320;;40005:41;:::i;40076:9::-;632:46320;40066:19;;-1:-1:-1;;;;;;;;;;;40056:30:68;;;;632:46320;;1590:14:0;;;;40056:30:68;;632:46320;40056:30;;632:46320;40056:30;;2260:42;40056:30;-1:-1:-1;;;;;;;;;;;40056:30:68;;;;;;;;;;;632:46320;2260:42;;;632:46320;;;;;;;;;;:::i;:::-;;2260:42;;632:46320;2260:42;;;-1:-1:-1;;2260:42:68;;632:46320;2260:42;;40150:20;;;:::i;:::-;2260:42;40150:20;;:::i;:::-;39905:7;1049:42;632:46320;;-1:-1:-1;;;40237:44:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;40237:44;;632:46320;2260:42;632:46320;;;;;;-1:-1:-1;;;;;;;;;;;2260:42:68;632:46320;;;;39905:39;632:46320;;;;;;;;;;;;;-1:-1:-1;;;;;632:46320:68;;;;;;;;;;;;;;;;;;;;;40237:44;;;;;;;;;;;;;;;632:46320;40297:13;;40331:3;632:46320;;40312:17;;;;;40359:9;40350:32;40359:9;632:46320;40359:9;;;:::i;40350:32::-;40396:34;632:46320;40405:9;;;;:::i;40396:34::-;632:46320;40297:13;;40237:44;;;;;;;;;;;;;;:::i;:::-;;;;;632:46320;;;;;;;-1:-1:-1;632:46320:68;;-1:-1:-1;632:46320:68;;;;;;;;;;;;;40056:30;;;;;:::i;:::-;632:46320;;40056:30;;;;39905:39;;;;;;;;;;;;;:::i;:::-;;;;632:46320;;;;;;;;:::i;:::-;11388:38;;;11396:13;11388:38;11542:7;1049:42;632:46320;;-1:-1:-1;;;11542:39:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;11542:39;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;;;;;;11542:39;;632:46320;;-1:-1:-1;;;;;632:46320:68;11542:39;;;;;;;;;;;11388:38;2260:42;;;;;;;11596:21;11604:13;11596:21;;11592:353;;;11596:21;;;11678:9;;;:::i;:::-;632:46320;11660:27;;:94;;;11592:353;-1:-1:-1;;;;;;;;;;;11633:135:68;;;;632:46320;;-1:-1:-1;;;11633:135:68;;632:46320;;;;11633:135;;632:46320;11633:135;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;11633:135:68;;;;;;;;11592:353;;;;632:46320;;;;2260:42;27501:38:3;;1590:14:0;;;;27501:38:3;;11976:4:68;2260:42;27501:38:3;;632:46320:68;2260:42;27501:38:3;;;2260:42:68;27501:38:3;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;-1:-1:-1;6854:12:8;1984:42:68;;-1:-1:-1;;;;;;1984:42:68;-1:-1:-1;;;;;;;;;;;1984:42:68;;;7009:9:8;632:46320:68;;-1:-1:-1;;632:46320:68;27524:10:3;632:46320:68;;;7505:10:8;632:46320:68;-1:-1:-1;;;632:46320:68;;;;;;;;;11604:13;632:46320;;;7505:10:8;632:46320:68;;:::i;:::-;;;;;;;;6854:12:8;632:46320:68;;7009:9:8;632:46320:68;;1590:14:0;15610:11:8;632:46320:68;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;15703:15:8;;632:46320:68;;;;;;;;2260:42;632:46320;;;;;;2260:42;15735:37:8;;;;;;;;;;:::i;:::-;632:46320:68;15725:48:8;;632:46320:68;;2260:42;632:46320;;15610:11:8;632:46320:68;;;15703:77:8;632:46320:68;;15702:78:8;15698:126;;11592:353:68;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;;;;2260:42;632:46320;15889:37:8;;632:46320:68;;;;;;15889:37:8;;;2260:42:68;15889:37:8;;;;;:::i;:::-;632:46320:68;15879:48:8;;632:46320:68;;2260:42;632:46320;;;;15943:15:8;11604:13:68;15943:15:8;;632:46320:68;15961:16:8;2260:42:68;15961:16:8;;632:46320:68;15943:34:8;;;;:::i;:::-;15938:460;;632:46320:68;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;632:46320:68;;;16424:32:8;;632:46320:68;1442:42;;;632:46320;;;;;;;2260:42;632:46320;1442:42;632:46320;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;11592:353:68;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;632:46320:68;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;632:46320:68;;;16587:43:8;;632:46320:68;12810:59:8;;;632:46320:68;;;;-1:-1:-1;;632:46320:68;;;12656:92:8;12810:59;;;632:46320:68;;;12810:59:8;632:46320:68;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;11592:353:68;16678:31:8;;;;:::i;:::-;16724:8;;632:46320:68;;;16724:29:8;;11592:353:68;16720:176:8;;;14785:4;;;;;:::i;:::-;11542:7:68;1049:42;632:46320;;-1:-1:-1;;;12011:61:68;;-1:-1:-1;;;;;632:46320:68;;;;12011:61;;632:46320;-1:-1:-1;;2260:42:68;1442;;632:46320;2260:42;632:46320;2260:42;632:46320;12011:61;-1:-1:-1;;;;;;;;;;;12011:61:68;;;;;;;;11592:353;-1:-1:-1;632:46320:68;;-1:-1:-1;;;12098:41:68;;11976:4;632:46320;12098:41;;632:46320;;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;12098:41:68;;;;;;;;;;;11592:353;-1:-1:-1;632:46320:68;;-1:-1:-1;;;12164:39:68;;11976:4;632:46320;12164:39;;632:46320;;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;12164:39:68;;;;;;;;;;;11592:353;2260:42;;632:46320;;;12267:28;632:46320;;;;;;:::i;12267:28::-;2260:42;11542:7;1049:42;632:46320;;-1:-1:-1;;;12338:57:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;12338:57;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;11542:39;2260:42;;;;;;;;;632:46320;;;;;;;12338:57;;632:46320;;-1:-1:-1;;;;;632:46320:68;12338:57;;;;;;;;;;;11592:353;-1:-1:-1;12410:21:68;;;632:46320;;-1:-1:-1;;;12490:39:68;;11976:4;632:46320;12490:39;;632:46320;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;12490:39:68;;;;;;;;;;;12406:589;12490:46;;;;;;:::i;:::-;632:46320;;;;1590:14:0;;;12637:41:68;;11976:4;632:46320;12637:41;;632:46320;2260:42;12637:41;2260:42;12637:41;-1:-1:-1;;;;;;;;;;;12637:41:68;;;;;;;;;;;;12630:48;;;;;;:::i;12490:39::-;;;2260:42;12490:39;;2260:42;12490:39;;;;;;1590:14:0;12490:39:68;;;:::i;:::-;;;1590:14:0;;;;;12490:46:68;:39;;;;;-1:-1:-1;12490:39:68;;12406:589;632:46320;;-1:-1:-1;;;12789:41:68;;11976:4;632:46320;12789:41;;632:46320;;;;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;12789:41:68;;;;;;;;;;;12406:589;12782:48;;;;;;:::i;:::-;632:46320;;;;1590:14:0;;;12924:39:68;;11976:4;632:46320;12924:39;;632:46320;2260:42;12924:39;2260:42;12924:39;-1:-1:-1;;;;;;;;;;;12924:39:68;;;;;;;;;;;;:46;;;;;;:::i;12789:41::-;;;2260:42;12789:41;;2260:42;12789:41;;;;;;1590:14:0;12789:41:68;;;:::i;:::-;;;1590:14:0;;;;;12782:48:68;12789:41;;;;;-1:-1:-1;12789:41:68;;12338:57;;;;;2260:42;12338:57;2260:42;12338:57;;;;;;;:::i;:::-;;;;;12164:39;;;;;2260:42;12164:39;;2260:42;12164:39;;;;;;1590:14:0;12164:39:68;;;:::i;:::-;;;1590:14:0;;;;;;;12164:39:68;;;;;;;-1:-1:-1;12164:39:68;;12098:41;;;;;2260:42;12098:41;;2260:42;12098:41;;;;;;1590:14:0;12098:41:68;;;:::i;:::-;;;1590:14:0;;;;;;;12098:41:68;;;;;;;-1:-1:-1;12098:41:68;;12011:61;;;2260:42;12011:61;2260:42;12011:61;;;;;;;:::i;:::-;;;16724:29:8;-1:-1:-1;;16736:17:8;;;-1:-1:-1;3663:17:68;16724:29:8;;16587:43;;;;;:::i;:::-;632:46320:68;;16587:43:8;;;;16424:32;;;;;2260:42:68;16424:32:8;;2260:42:68;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15698:126;13208:33;;:::i;:::-;;15698:126;;11633:135:68;;;;;:::i;:::-;632:46320;;11633:135;;;;11660:94;11729:25;;;:::i;:::-;11711:43;;11660:94;;11592:353;11844:9;;;:::i;:::-;632:46320;11826:27;;:94;;;11592:353;-1:-1:-1;;;;;;;;;;;11799:135:68;;;;632:46320;;-1:-1:-1;;;11799:135:68;;632:46320;;;;11799:135;;632:46320;11799:135;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;11799:135:68;;;;;;;;11592:353;;;;;11799:135;;;;;:::i;:::-;632:46320;;11799:135;;;;11826:94;11895:25;;;:::i;:::-;11877:43;;11826:94;;11542:39;;;;;;;;;;;;;:::i;:::-;;;;11388:38;;;;632:46320;;;;;35030:39;632:46320;;;;:::i;:::-;34876:38;;;34884:13;34876:38;35030:7;1049:42;632:46320;;-1:-1:-1;;;35030:39:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;35030:39;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;;;;;;1590:14:0;632:46320:68;;-1:-1:-1;;;;;632:46320:68;35030:39;;;;;;;;;;;34876:38;2260:42;;;;;;;35092:13;35084:21;;;;;;;35166:9;;;:::i;:::-;632:46320;35148:27;;:94;;;35080:353;-1:-1:-1;;;;;;;;;;;35121:135:68;;;;632:46320;;-1:-1:-1;;;35121:135:68;;632:46320;;;;35121:135;;632:46320;35121:135;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;35121:135:68;;;;;;;;;;;35080:353;;;;632:46320;;-1:-1:-1;;;35471:28:68;;632:46320;2260:42;632:46320;;;-1:-1:-1;;;;;;;;;;;35471:28:68;;;;;;;;;;;35080:353;523:5:65;;35092:13:68;523:5:65;;;;;2260:42:68;523:5:65;;;;;;;632:46320:68;;;;2260:42;27501:38:3;;1590:14:0;;;;27501:38:3;;35464:4:68;2260:42;27501:38:3;;632:46320:68;2260:42;27501:38:3;;;2260:42:68;27501:38:3;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;-1:-1:-1;6854:12:8;1984:42:68;;-1:-1:-1;;;;;;1984:42:68;-1:-1:-1;;;;;;;;;;;1984:42:68;;;27524:10:3;632:46320:68;;7009:9:8;632:46320:68;;;7009:9:8;632:46320:68;7505:10:8;632:46320:68;-1:-1:-1;;;632:46320:68;;;;;;;35092:13;632:46320;;;7505:10:8;632:46320:68;;:::i;:::-;;;;;;;;6854:12:8;632:46320:68;;7009:9:8;632:46320:68;;1590:14:0;15610:11:8;632:46320:68;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;15703:15:8;;632:46320:68;;;;;;;;2260:42;632:46320;;;;;;2260:42;15735:37:8;;;;;;;;;;:::i;:::-;632:46320:68;15725:48:8;;632:46320:68;;2260:42;632:46320;;15610:11:8;632:46320:68;;;15703:77:8;632:46320:68;;15702:78:8;15698:126;;35080:353:68;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;;;;2260:42;632:46320;15889:37:8;;632:46320:68;;;;;;15889:37:8;;;2260:42:68;15889:37:8;;;;;:::i;:::-;632:46320:68;15879:48:8;;632:46320:68;;2260:42;632:46320;;;;15943:15:8;35092:13:68;15943:15:8;;632:46320:68;15961:16:8;2260:42:68;15961:16:8;;632:46320:68;15943:34:8;;;;;:::i;:::-;15938:460;;35080:353:68;632:46320;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;632:46320:68;;;16424:32:8;;632:46320:68;1442:42;;;632:46320;;;;;;;;;;;;2260:42;632:46320;1442:42;632:46320;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;35080:353:68;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;632:46320:68;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;632:46320:68;;;16587:43:8;;632:46320:68;12810:59:8;;;632:46320:68;;;;;;;;12656:92:8;;;;12810:59;;;632:46320:68;;;12810:59:8;632:46320:68;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;35080:353:68;16678:31:8;;;;:::i;:::-;16724:8;;;632:46320:68;;;16724:29:8;;35080:353:68;16720:176:8;;;;14785:4;;;;;:::i;:::-;35030:7:68;1049:42;632:46320;;-1:-1:-1;;;35514:59:68;;-1:-1:-1;;;;;632:46320:68;;;;35514:59;;632:46320;-1:-1:-1;;2260:42:68;1442;;632:46320;2260:42;632:46320;2260:42;632:46320;35514:59;-1:-1:-1;;;;;;;;;;;35514:59:68;;;;;;;;35080:353;-1:-1:-1;632:46320:68;;-1:-1:-1;;;35599:39:68;;35464:4;632:46320;35599:39;;632:46320;;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;35599:39:68;;;;;;;;;;;35080:353;-1:-1:-1;632:46320:68;;-1:-1:-1;;;35663:39:68;;35464:4;632:46320;35663:39;;632:46320;;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;35663:39:68;;;;;;;;;;;35080:353;2260:42;;632:46320;;;35766:28;632:46320;;;;;;:::i;35766:28::-;2260:42;35030:7;1049:42;632:46320;;-1:-1:-1;;;35837:57:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;35837:57;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;35030:39;2260:42;;;;;;;;;632:46320;;;;;;;35837:57;;632:46320;;-1:-1:-1;;;;;632:46320:68;35837:57;;;;;;;;;;;35080:353;-1:-1:-1;35909:21:68;;;632:46320;;-1:-1:-1;;;35989:39:68;;35464:4;632:46320;35989:39;;632:46320;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;35989:39:68;;;;;;;;;;;35905:569;35989:46;;;;;;:::i;:::-;632:46320;;;;1590:14:0;;;36136:39:68;;35464:4;632:46320;36136:39;;632:46320;2260:42;36136:39;2260:42;36136:39;-1:-1:-1;;;;;;;;;;;36136:39:68;;;;;;;;;;;;36129:46;;;;;;:::i;35989:39::-;;;2260:42;35989:39;;2260:42;35989:39;;;;;;1590:14:0;35989:39:68;;;:::i;:::-;;;1590:14:0;;;;;35989:46:68;:39;;;;;-1:-1:-1;35989:39:68;;35905:569;632:46320;;-1:-1:-1;;;36270:39:68;;35464:4;632:46320;36270:39;;632:46320;;;;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;36270:39:68;;;;;;;;;;;36263:46;;;;;;:::i;35837:57::-;;;;;2260:42;35837:57;2260:42;35837:57;;;;;;;:::i;:::-;;;;;35663:39;;;;;2260:42;35663:39;;2260:42;35663:39;;;;;;1590:14:0;35663:39:68;;;:::i;:::-;;;1590:14:0;;;;;;;35663:39:68;;;;;;;-1:-1:-1;35663:39:68;;35599;;;;;2260:42;35599:39;;2260:42;35599:39;;;;;;1590:14:0;35599:39:68;;;:::i;:::-;;;1590:14:0;;;;;;;35599:39:68;;;;;;;-1:-1:-1;35599:39:68;;35514:59;;;2260:42;35514:59;2260:42;35514:59;;;;;;;:::i;:::-;;;16724:29:8;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;632:46320:68;;16587:43:8;;;;;632:46320:68;;;16424:32:8;;;;;2260:42:68;16424:32:8;;2260:42:68;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;;632:46320:68;;1590:14:0;632:46320:68;;1590:14:0;;;;15938:460:8;16028:34;;;;:::i;:::-;16021:3;2260:42:68;16021:3:8;2260:42:68;;;;632:46320;;;;;35092:13;632:46320;;;;;1590:14:0;;;;16314:19:8;;;632:46320:68;16314:19:8;;632:46320:68;16314:19:8;;2260:42:68;16314:19:8;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;12810:59;2260:42:68;16314:19:8;16170:185;16314:19;;;;;15938:460;632:46320:68;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;632:46320:68;12810:59:8;;;-1:-1:-1;;;2260:42:68;12810:59:8;;;632:46320:68;;;;;;12810:59:8;;;632:46320:68;;;;;;;;16170:185:8;;27501:38:3;;16170:185:8;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;;12810:59;632:46320:68;;-1:-1:-1;;;12810:59:8;;2260:42:68;632:46320;12810:59:8;;632:46320:68;;;2260:42;632:46320;;;;:::i;16314:19:8:-;;;-1:-1:-1;16314:19:8;;;;;;;;;:::i;:::-;;;;;632:46320:68;;1590:14:0;632:46320:68;;1590:14:0;;;;632:46320:68;-1:-1:-1;;;523:5:65;;6854:12:8;632:46320:68;523:5:65;2260:42:68;632:46320;523:5:65;15698:126:8;13208:33;;:::i;:::-;;15698:126;;523:5:65;-1:-1:-1;;;523:5:65;;;632:46320:68;523:5:65;2260:42:68;632:46320;523:5:65;35471:28:68;;;;2260:42;35471:28;;2260:42;35471:28;;;;;;1590:14:0;35471:28:68;;;:::i;:::-;;;1590:14:0;;;;;35471:28:68;;;;;;;-1:-1:-1;35471:28:68;;35121:135;;;;;:::i;:::-;632:46320;;35121:135;;;;35148:94;35217:25;;;:::i;:::-;35199:43;;35148:94;;35080:353;35332:9;;;:::i;:::-;632:46320;35314:27;;:94;;;35080:353;-1:-1:-1;;;;;;;;;;;35287:135:68;;;;632:46320;;-1:-1:-1;;;35287:135:68;;632:46320;;;;35287:135;;632:46320;35287:135;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;35287:135:68;;;;;;;;;;;35080:353;;;;;35287:135;;;;;:::i;:::-;632:46320;;35287:135;;;;35314:94;35383:25;;;:::i;:::-;35365:43;;35314:94;;2260:42;-1:-1:-1;;;2260:42:68;;;632:46320;2260:42;;632:46320;2260:42;35030:39;;;;;;;;;;;;;;:::i;:::-;;;;;34876:38;;;;632:46320;;;;;;;-1:-1:-1;;632:46320:68;;;;;;-1:-1:-1;;;;;632:46320:68;;;;;;;;;;;-1:-1:-1;;;;;632:46320:68;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1126:10:65;;;;;;:::i;:::-;632:46320:68;;;1590:14:0;;;;1102:59:65;;632:46320:68;1102:59:65;;632:46320:68;2260:42;632:46320;2260:42;;632:46320;2260:42;;;;632:46320;1102:59:65;;;;;;;;;;;;;;1075:134;1102:59;;;;;632:46320:68;1075:134:65;;:::i;:::-;1074:135;1224:13;;1259:3;632:46320:68;;1239:18:65;;;;;1322:10;;;;:::i;:::-;632:46320:68;;;1590:14:0;;;;1304:29:65;;632:46320:68;1304:29:65;;632:46320:68;1304:29:65;;632:46320:68;1304:29:65;;;;;;;;;;;;;;;;;1259:3;-1:-1:-1;1442:1:65;;632:46320:68;1708:14:65;;1396:17;632:46320:68;-1:-1:-1;;;;;1354:9:65;632:46320:68;1354:9:65;:::i;:::-;632:46320:68;;1396:17:65;:::i;:::-;1477;632:46320:68;;;;;;1435:9:65;;;:::i;1477:17::-;1588:14;1554:10;;;;;:::i;:::-;632:46320:68;;;;;;1566:9:65;;;:::i;:::-;632:46320:68;;;;;;;1577:9:65;;;:::i;:::-;632:46320:68;;1588:14:65;;;:::i;:::-;1674:10;;;;:::i;:::-;632:46320:68;;;;;;;1686:9:65;;;:::i;:::-;632:46320:68;;;1697:9:65;632:46320:68;;;;;1697:9:65;;:::i;:::-;632:46320:68;;1708:14:65;;;:::i;:::-;632:46320:68;1224:13:65;;1304:29;;;;;;;;;;;;;:::i;:::-;;;632:46320:68;;;;;;;;;;;-1:-1:-1;;;;;632:46320:68;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1304:29:65;;;1442:1;1304:29;;632:46320:68;;;;;;;;;;-1:-1:-1;632:46320:68;;;-1:-1:-1;;;;;632:46320:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1239:18:65;;632:46320:68;;1102:59:65;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;632:46320:68;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:46320:68;;;;28255:7;1049:42;632:46320;;-1:-1:-1;;;28255:39:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;28255:39;;;632:46320;;;;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;;;;;;;;28255:39;;632:46320;;-1:-1:-1;;;;;632:46320:68;28255:39;;;;;;;;;;;632:46320;28330:25;28386:9;28330:25;;:::i;28386:9::-;632:46320;28376:19;;-1:-1:-1;;;;;;;;;;;28366:30:68;;;;632:46320;;1590:14:0;;;;28366:30:68;;632:46320;28366:30;;632:46320;28366:30;;2260:42;28366:30;-1:-1:-1;;;;;;;;;;;28366:30:68;;;;;;;;;;;632:46320;28406:35;;-1:-1:-1;;;;;;;;;;;28406:35:68;;;;632:46320;;-1:-1:-1;;;28406:35:68;;28416:24;;;632:46320;28406:35;;632:46320;28406:35;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;28406:35:68;;;;;;;;;;;632:46320;2260:42;;632:46320;;;;;;;;;:::i;:::-;;2260:42;;632:46320;2260:42;;;-1:-1:-1;;2260:42:68;;632:46320;2260:42;;28505:20;;;:::i;:::-;2260:42;28505:20;;:::i;:::-;28255:7;1049:42;632:46320;;-1:-1:-1;;;28592:44:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;28592:44;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;632:46320;;;-1:-1:-1;;;;;;;;;;;2260:42:68;632:46320;;;;28255:39;632:46320;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:46320:68;;;;;;;;;;;;;;;;;;;;;;;;28592:44;;;;;;;;;;;;;;;632:46320;28652:13;;28686:3;632:46320;;28667:17;;;;;28714:9;28705:32;28714:9;632:46320;28714:9;;;:::i;28705:32::-;28751:34;632:46320;28760:9;;;;:::i;28751:34::-;632:46320;28652:13;;28592:44;;;;;;;;;;;;;;:::i;:::-;;;;;632:46320;;;;;;;-1:-1:-1;632:46320:68;;-1:-1:-1;632:46320:68;;;;;;;;;;;;;28406:35;;;;;:::i;:::-;632:46320;;28406:35;;;;28366:30;;;;;:::i;:::-;632:46320;;28366:30;;;;28255:39;;;;;;;;;;;;;:::i;:::-;;;;632:46320;;;;;;;-1:-1:-1;;632:46320:68;;;;25297:7;1049:42;632:46320;;-1:-1:-1;;;25297:39:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;25297:39;;;632:46320;;;;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;;;;;;;;25297:39;;632:46320;;-1:-1:-1;;;;;632:46320:68;25297:39;;;;;;;;;;;632:46320;25372:25;25428:9;25372:25;;:::i;25428:9::-;632:46320;25418:19;;-1:-1:-1;;;;;;;;;;;25408:30:68;;;;632:46320;;1590:14:0;;;;25408:30:68;;632:46320;25408:30;;632:46320;25408:30;;2260:42;25408:30;-1:-1:-1;;;;;;;;;;;25408:30:68;;;;;;;;;;;632:46320;25448:35;;-1:-1:-1;;;;;;;;;;;25448:35:68;;;;632:46320;;-1:-1:-1;;;25448:35:68;;25458:24;;;632:46320;25448:35;;632:46320;25448:35;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;25448:35:68;;;;;;;;;;;632:46320;2260:42;;632:46320;;;;;;;;;:::i;:::-;;2260:42;;632:46320;2260:42;;;-1:-1:-1;;2260:42:68;;632:46320;2260:42;;25547:20;;;:::i;:::-;2260:42;25547:20;;:::i;:::-;25297:7;1049:42;632:46320;;-1:-1:-1;;;25634:44:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;25634:44;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;632:46320;;;-1:-1:-1;;;;;;;;;;;2260:42:68;632:46320;;;;25297:39;632:46320;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:46320:68;;;;;;;;;;;;;;;;;;;;;;;;25634:44;;;;;;;;;;;;;;;632:46320;25694:13;;25728:3;632:46320;;25709:17;;;;;25756:9;25747:32;25756:9;632:46320;25756:9;;;:::i;25747:32::-;25793:34;632:46320;25802:9;;;;:::i;25793:34::-;632:46320;25694:13;;25634:44;;;;;;;;;;;;;;:::i;:::-;;;;;632:46320;;;;;;;-1:-1:-1;632:46320:68;;-1:-1:-1;632:46320:68;;;;;;;;;;;;;25448:35;;;;;:::i;:::-;632:46320;;25448:35;;;;25408:30;;;;;:::i;:::-;632:46320;;25408:30;;;;25297:39;;;;;;;;;;;;;:::i;:::-;;;;632:46320;;;;;;;-1:-1:-1;;632:46320:68;;;;19182:13;1747:42;19350:7;1049:42;632:46320;;-1:-1:-1;;;19350:39:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;19350:39;;;632:46320;;;;-1:-1:-1;;;;;632:46320:68;;;2260:42;;;632:46320;;;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;;;;;;;;;;19350:39;;632:46320;;;19350:39;;;;;;;;19420:9;19350:39;;;;;19420:9;;:::i;:::-;632:46320;19410:19;;:58;;;632:46320;-1:-1:-1;;;;;;;;;;;19400:69:68;;;;632:46320;;-1:-1:-1;;;19400:69:68;;632:46320;;;;19400:69;;632:46320;19400:69;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;19400:69:68;;;;;;;;;;;632:46320;2260:42;;;632:46320;;;;;;;;;;:::i;:::-;;2260:42;;632:46320;2260:42;;;-1:-1:-1;;2260:42:68;;632:46320;2260:42;;19533:20;;;:::i;:::-;2260:42;19533:20;;:::i;:::-;19350:7;1049:42;632:46320;;-1:-1:-1;;;19620:44:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;19620:44;;632:46320;2260:42;632:46320;;;;;;-1:-1:-1;;;;;;;;;;;2260:42:68;632:46320;;;;19350:39;632:46320;;;;;;;;;;;;;-1:-1:-1;;;;;632:46320:68;;;;;;;;;;;;;;;;;;;;;19620:44;;;;;;;;;;;;;;;632:46320;19680:13;;19714:3;632:46320;;19695:17;;;;;19742:9;19733:32;19742:9;632:46320;19742:9;;;:::i;19733:32::-;19779:34;632:46320;19788:9;;;;:::i;19779:34::-;632:46320;19680:13;;19620:44;;;;;;;;;;;;;;:::i;:::-;;;;;632:46320;;;;;;;-1:-1:-1;632:46320:68;;-1:-1:-1;632:46320:68;;;;;;;;;;;;;19400:69;;;;;:::i;:::-;632:46320;;19400:69;;;;19410:58;19443:25;;;;:::i;:::-;19433:35;;19410:58;;19350:39;;;;;;;;;;;;;:::i;632:46320::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;2273:18:5;632:46320:68;2260:42;;;:::i;:::-;632:46320;;;;;;;:::i;:::-;2260:42;;;2273:18:5;632:46320:68;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:46320:68;;;;3459:5:28;632:46320:68;;:::i;:::-;;;735:10:34;;3459:5:28;:::i;:::-;632:46320:68;;;;;;;;;;;;;;-1:-1:-1;;632:46320:68;;;;;;534:59:65;632:46320:68;534:59:65;;;;;;;;:::i;:::-;632:46320:68;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;632:46320:68;;;;;;;;;;;;;;32104:39;632:46320;;;;:::i;:::-;31950:38;;;31958:13;31950:38;32104:7;1049:42;632:46320;;-1:-1:-1;;;32104:39:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;32104:39;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;;;;;;1590:14:0;632:46320:68;;-1:-1:-1;;;;;632:46320:68;32104:39;;;;;;;;;;;31950:38;2260:42;;;;;;;32166:13;32158:21;;;;;;;32240:9;;;:::i;:::-;632:46320;32222:27;;:94;;;32154:353;-1:-1:-1;;;;;;;;;;;32195:135:68;;;;632:46320;;-1:-1:-1;;;32195:135:68;;632:46320;;;;32195:135;;632:46320;32195:135;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;32195:135:68;;;;;;;;;;;32154:353;;;;632:46320;;-1:-1:-1;;;32545:28:68;;632:46320;2260:42;632:46320;;;-1:-1:-1;;;;;;;;;;;32545:28:68;;;;;;;;;;;32154:353;523:5:65;;32166:13:68;523:5:65;;;;;2260:42:68;523:5:65;;;;;;;632:46320:68;;;;2260:42;27501:38:3;;1590:14:0;;;;27501:38:3;;32538:4:68;2260:42;27501:38:3;;632:46320:68;2260:42;27501:38:3;;;2260:42:68;27501:38:3;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;-1:-1:-1;6854:12:8;1984:42:68;;-1:-1:-1;;;;;;1984:42:68;-1:-1:-1;;;;;;;;;;;1984:42:68;;;27524:10:3;632:46320:68;;7009:9:8;632:46320:68;;;7009:9:8;632:46320:68;7505:10:8;632:46320:68;-1:-1:-1;;;632:46320:68;;;;;;;32166:13;632:46320;;;7505:10:8;632:46320:68;;:::i;:::-;;;;;;;;6854:12:8;632:46320:68;;7009:9:8;632:46320:68;;1590:14:0;15610:11:8;632:46320:68;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;15703:15:8;;632:46320:68;;;;;;;;2260:42;632:46320;;;;;;2260:42;15735:37:8;;;;;;;;;;:::i;:::-;632:46320:68;15725:48:8;;632:46320:68;;2260:42;632:46320;;15610:11:8;632:46320:68;;;15703:77:8;632:46320:68;;15702:78:8;15698:126;;32154:353:68;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;;;;2260:42;632:46320;15889:37:8;;632:46320:68;;;;;;15889:37:8;;;2260:42:68;15889:37:8;;;;;:::i;:::-;632:46320:68;15879:48:8;;632:46320:68;;2260:42;632:46320;;;;15943:15:8;32166:13:68;15943:15:8;;632:46320:68;15961:16:8;2260:42:68;15961:16:8;;632:46320:68;15943:34:8;;;;;:::i;:::-;15938:460;;32154:353:68;632:46320;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;632:46320:68;;;16424:32:8;;632:46320:68;1442:42;;;632:46320;;;;;;;;;;;;2260:42;632:46320;1442:42;632:46320;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;32154:353:68;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;632:46320:68;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;632:46320:68;;;16587:43:8;;632:46320:68;12810:59:8;;;632:46320:68;;;;;;;;12656:92:8;;;;12810:59;;;632:46320:68;;;12810:59:8;632:46320:68;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;32154:353:68;16678:31:8;;;;:::i;:::-;16724:8;;;632:46320:68;;;16724:29:8;;32154:353:68;16720:176:8;;;;14785:4;;;;;:::i;:::-;32104:7:68;1049:42;632:46320;;-1:-1:-1;;;32588:59:68;;-1:-1:-1;;;;;632:46320:68;;;;32588:59;;632:46320;-1:-1:-1;;2260:42:68;1442;;632:46320;2260:42;632:46320;2260:42;632:46320;32588:59;-1:-1:-1;;;;;;;;;;;32588:59:68;;;;;;;;32154:353;-1:-1:-1;632:46320:68;;-1:-1:-1;;;32673:39:68;;32538:4;632:46320;32673:39;;632:46320;;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;32673:39:68;;;;;;;;;;;32154:353;-1:-1:-1;632:46320:68;;-1:-1:-1;;;32737:39:68;;32538:4;632:46320;32737:39;;632:46320;;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;32737:39:68;;;;;;;;;;;32154:353;2260:42;;632:46320;;;32840:28;632:46320;;;;;;:::i;32840:28::-;2260:42;32104:7;1049:42;632:46320;;-1:-1:-1;;;32911:57:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;32911:57;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;32104:39;2260:42;;;;;;;;;632:46320;;;;;;;32911:57;;632:46320;;-1:-1:-1;;;;;632:46320:68;32911:57;;;;;;;;;;;32154:353;-1:-1:-1;32983:21:68;;;632:46320;;-1:-1:-1;;;33063:39:68;;32538:4;632:46320;33063:39;;632:46320;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;33063:39:68;;;;;;;;;;;32979:569;33063:46;;;;;;:::i;:::-;632:46320;;;;1590:14:0;;;33210:39:68;;32538:4;632:46320;33210:39;;632:46320;2260:42;33210:39;2260:42;33210:39;-1:-1:-1;;;;;;;;;;;33210:39:68;;;;;;;;;;;;33203:46;;;;;;:::i;33063:39::-;;;2260:42;33063:39;;2260:42;33063:39;;;;;;1590:14:0;33063:39:68;;;:::i;:::-;;;1590:14:0;;;;;33063:46:68;:39;;;;;-1:-1:-1;33063:39:68;;32979:569;632:46320;;-1:-1:-1;;;33344:39:68;;32538:4;632:46320;33344:39;;632:46320;;;;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;33344:39:68;;;;;;;;;;;32979:569;33337:46;;;;;;:::i;:::-;632:46320;;;;1590:14:0;;;33477:39:68;;32538:4;632:46320;33477:39;;632:46320;2260:42;33477:39;2260:42;33477:39;-1:-1:-1;;;;;;;;;;;33477:39:68;;;;;;;;;;;;:46;;;;;;:::i;33344:39::-;;;2260:42;33344:39;;2260:42;33344:39;;;;;;1590:14:0;33344:39:68;;;:::i;:::-;;;1590:14:0;;;;;33337:46:68;33344:39;;;;;-1:-1:-1;33344:39:68;;32911:57;;;;;2260:42;32911:57;2260:42;32911:57;;;;;;;:::i;:::-;;;;;32737:39;;;;;2260:42;32737:39;;2260:42;32737:39;;;;;;1590:14:0;32737:39:68;;;:::i;:::-;;;1590:14:0;;;;;;;32737:39:68;;;;;;;-1:-1:-1;32737:39:68;;32673;;;;;2260:42;32673:39;;2260:42;32673:39;;;;;;1590:14:0;32673:39:68;;;:::i;:::-;;;1590:14:0;;;;;;;32673:39:68;;;;;;;-1:-1:-1;32673:39:68;;32588:59;;;2260:42;32588:59;2260:42;32588:59;;;;;;;:::i;:::-;;;16724:29:8;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;632:46320:68;;16587:43:8;;;;16424:32;;;;;2260:42:68;16424:32:8;;2260:42:68;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;:::i;:::-;16021:3;2260:42:68;16021:3:8;2260:42:68;;;;632:46320;;;;;32166:13;632:46320;;;;;1590:14:0;;;;16314:19:8;;;632:46320:68;16314:19:8;;632:46320:68;16314:19:8;;2260:42:68;16314:19:8;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;12810:59;2260:42:68;16314:19:8;16170:185;16314:19;;;;;632:46320:68;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;632:46320:68;12810:59:8;;;-1:-1:-1;;;2260:42:68;12810:59:8;;;632:46320:68;;;;;;12810:59:8;;;632:46320:68;;;;;;;;16170:185:8;;27501:38:3;;16170:185:8;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;32545:28:68;;;;2260:42;32545:28;;2260:42;32545:28;;;;;;1590:14:0;32545:28:68;;;:::i;:::-;;;1590:14:0;;;;;32545:28:68;;;;;;;-1:-1:-1;32545:28:68;;32195:135;;;;;:::i;:::-;632:46320;;32195:135;;;;32222:94;32291:25;;;:::i;:::-;32273:43;;32222:94;;32154:353;32406:9;;;:::i;:::-;632:46320;32388:27;;:94;;;32154:353;-1:-1:-1;;;;;;;;;;;32361:135:68;;;;632:46320;;-1:-1:-1;;;32361:135:68;;632:46320;;;;32361:135;;632:46320;32361:135;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;32361:135:68;;;;;;;;;;;32154:353;;;;;32361:135;;;;;:::i;:::-;632:46320;;32361:135;;;;32388:94;32457:25;;;:::i;:::-;32439:43;;32388:94;;32104:39;;;;;;;;;;;;;;:::i;:::-;;;;;31950:38;;;;632:46320;;;;;17536:39;632:46320;;;;:::i;:::-;;;;17046:222;;;;17105:54;17142:16;17128:12;3033:19:11;17105:54:68;3033:19:11;:::i;:::-;9766:7;632:46320:68;10418:54:11;632:46320:68;;;;;;:::i;:::-;;;;-1:-1:-1;;;632:46320:68;;;;10418:54:11;632:46320:68;;10418:54:11;;;;;;632:46320:68;10418:54:11;;;;;;;:::i;:::-;9766:7;:::i;:::-;17341:13:68;1747:42;-1:-1:-1;;;;;632:46320:68;;17383:38;;;17391:13;17383:38;;17536:7;1049:42;632:46320;;-1:-1:-1;;;17536:39:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;17536:39;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;2260:42;;;632:46320;;;;;;;;1590:14:0;632:46320:68;;-1:-1:-1;;;;;632:46320:68;17536:39;;;;;;;;;;;17383:38;2260:42;;;;;;;17598:13;17590:21;;;;;;;17655:9;;;:::i;:::-;632:46320;17637:27;;-1:-1:-1;;;;;;;;;;;17627:38:68;;;;632:46320;;1590:14:0;;;;17627:38:68;;632:46320;17627:38;;632:46320;17627:38;;2260:42;17627:38;-1:-1:-1;;;;;;;;;;;17627:38:68;;;;;;;;;;;17586:159;;;;632:46320;;-1:-1:-1;;;17783:28:68;;632:46320;2260:42;632:46320;;;-1:-1:-1;;;;;;;;;;;17783:28:68;;;;;;;;;;;17586:159;523:5:65;;17598:13:68;523:5:65;;;;;2260:42:68;523:5:65;;;;;;;632:46320:68;;;;2260:42;27501:38:3;;1590:14:0;;;;27501:38:3;;17776:4:68;2260:42;27501:38:3;;632:46320:68;2260:42;27501:38:3;;;2260:42:68;27501:38:3;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;-1:-1:-1;6854:12:8;1984:42:68;;-1:-1:-1;;;;;;1984:42:68;-1:-1:-1;;;;;;;;;;;1984:42:68;;;27524:10:3;632:46320:68;;7009:9:8;632:46320:68;;;7009:9:8;632:46320:68;7505:10:8;632:46320:68;-1:-1:-1;;;632:46320:68;;;;;;;17598:13;632:46320;;;7505:10:8;632:46320:68;;:::i;:::-;;;;;;;;6854:12:8;632:46320:68;;7009:9:8;632:46320:68;;1590:14:0;15610:11:8;632:46320:68;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;15703:15:8;;632:46320:68;;;;;;;;2260:42;632:46320;;;;;;2260:42;15735:37:8;;;;;;;;;;:::i;:::-;632:46320:68;15725:48:8;;632:46320:68;;2260:42;632:46320;;15610:11:8;632:46320:68;;;15703:77:8;632:46320:68;;15702:78:8;15698:126;;17586:159:68;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;;;;2260:42;632:46320;15889:37:8;;632:46320:68;;;;;;15889:37:8;;;2260:42:68;15889:37:8;;;;;:::i;:::-;632:46320:68;15879:48:8;;632:46320:68;;2260:42;632:46320;;;;15943:15:8;17598:13:68;15943:15:8;;632:46320:68;15961:16:8;2260:42:68;15961:16:8;;632:46320:68;15943:34:8;;;;;:::i;:::-;15938:460;;17586:159:68;632:46320;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;632:46320:68;;;16424:32:8;;632:46320:68;1442:42;;;632:46320;;;;;;;;;;;2260:42;632:46320;1442:42;632:46320;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;17586:159:68;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;632:46320:68;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;632:46320:68;;;16587:43:8;;632:46320:68;12810:59:8;;;632:46320:68;;;;;;;;12656:92:8;;;;12810:59;;;632:46320:68;;;12810:59:8;632:46320:68;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;17586:159:68;16678:31:8;;;;:::i;:::-;16724:8;;;632:46320:68;;;16724:29:8;;17586:159:68;16720:176:8;;;;14785:4;;;;;:::i;:::-;17536:7:68;1049:42;632:46320;;-1:-1:-1;;;17826:59:68;;-1:-1:-1;;;;;632:46320:68;;;;17826:59;;632:46320;-1:-1:-1;;2260:42:68;1442;;632:46320;2260:42;632:46320;2260:42;632:46320;17826:59;-1:-1:-1;;;;;;;;;;;17826:59:68;;;;;;;;17586:159;-1:-1:-1;632:46320:68;;-1:-1:-1;;;17911:39:68;;17776:4;632:46320;17911:39;;632:46320;;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;17911:39:68;;;;;;;;;;;17586:159;-1:-1:-1;632:46320:68;;-1:-1:-1;;;17975:41:68;;17776:4;632:46320;17975:41;;632:46320;;2260:42;632:46320;2260:42;632:46320;17975:41;;;;;;;;;;;;17586:159;-1:-1:-1;17536:7:68;1049:42;632:46320;;-1:-1:-1;;;18060:57:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;18060:57;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;2260:42;;;632:46320;;;17536:39;2260:42;;;;;;;;;632:46320;;;;;2260:42;;632:46320;;18060:57;;632:46320;;1590:14:0;-1:-1:-1;;;;;632:46320:68;18060:57;;;;;;;;;;;17586:159;-1:-1:-1;18132:21:68;;;2260:42;;632:46320;;;1590:14:0;;;;;;;18228:41:68;;17776:4;632:46320;18228:41;;632:46320;18228:41;;;;;;;;;;;18128:589;18228:48;;;;;;:::i;:::-;632:46320;;;-1:-1:-1;;;18377:39:68;;17776:4;632:46320;18377:39;;632:46320;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;18377:39:68;;;;;;;;;;;18370:46;;;;;;:::i;18228:41::-;;;2260:42;18228:41;;2260:42;18228:41;;;;;;1590:14:0;18228:41:68;;;:::i;:::-;;;1590:14:0;;;;;18228:48:68;:41;;;;;-1:-1:-1;18228:41:68;;18128:589;632:46320;;;;;;1590:14:0;;;;18511:39:68;;17776:4;632:46320;18511:39;;632:46320;2260:42;18511:39;2260:42;18511:39;-1:-1:-1;;;;;;;;;;;18511:39:68;;;;;;;;;;;18504:46;2260:42;18504:46;;2260:42;18504:46;;;;;:::i;18060:57::-;;;;;2260:42;18060:57;2260:42;18060:57;;;;;;;:::i;:::-;;;;;17975:41;;;;;2260:42;17975:41;;2260:42;17975:41;;;;;;1590:14:0;17975:41:68;;;:::i;:::-;;;1590:14:0;;;;2260:42:68;1590:14:0;;;17975:41:68;;;;;;;-1:-1:-1;17975:41:68;;17911:39;;;;;2260:42;17911:39;;2260:42;17911:39;;;;;;1590:14:0;17911:39:68;;;:::i;:::-;;;1590:14:0;;;;;;;17911:39:68;;;;;;;-1:-1:-1;17911:39:68;;17826:59;;;2260:42;17826:59;2260:42;17826:59;;;;;;;:::i;:::-;;;16720:176:8;632:46320:68;;;;;;16769:41:8;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;632:46320:68;;-1:-1:-1;;;16769:41:8;;-1:-1:-1;;;;;632:46320:68;;;;16769:41:8;;632:46320:68;12810:59:8;;;632:46320:68;;;;12810:59:8;;;632:46320:68;;;;;;12810:59:8;;;16769:41;12810:59;16724:29;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;632:46320:68;;16587:43:8;;;;;632:46320:68;;;16424:32:8;;;;;2260:42:68;16424:32:8;;2260:42:68;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;;632:46320:68;;1590:14:0;632:46320:68;;1590:14:0;;;;15938:460:8;16028:34;;;;:::i;:::-;16021:3;2260:42:68;16021:3:8;2260:42:68;;;;632:46320;;;;;17598:13;632:46320;;;;;1590:14:0;;;;16314:19:8;;;632:46320:68;16314:19:8;;632:46320:68;16314:19:8;;2260:42:68;16314:19:8;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;;;;;15938:460;632:46320:68;;;16170:185:8;;2260:42:68;16170:185:8;;-1:-1:-1;;;;;;;;;;;12810:59:8;;632:46320:68;12810:59:8;;-1:-1:-1;;;;;;;;;;;12810:59:8;;2260:42:68;12810:59:8;;-1:-1:-1;;;12810:59:8;;632:46320:68;;2260:42;632:46320;;;12810:59:8;;;632:46320:68;;;;12810:59:8;632:46320:68;;;16170:185:8;12810:59;16170:185;27501:38:3;;16170:185:8;;;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;;12810:59;632:46320:68;;-1:-1:-1;;;12810:59:8;;2260:42:68;632:46320;12810:59:8;;632:46320:68;;;2260:42;632:46320;;;;:::i;16314:19:8:-;;;;;;;;;;;;;;:::i;:::-;;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;17783:28:68;;;;2260:42;17783:28;;2260:42;17783:28;;;;;;1590:14:0;17783:28:68;;;:::i;:::-;;;1590:14:0;;;;;17783:28:68;;;;;;;-1:-1:-1;17783:28:68;;17627:38;;;;;:::i;:::-;632:46320;;17627:38;;;;17586:159;17724:9;;;:::i;:::-;632:46320;17706:27;;-1:-1:-1;;;;;;;;;;;17696:38:68;;;;632:46320;;1590:14:0;;;;17696:38:68;;632:46320;17696:38;;632:46320;17696:38;;2260:42;17696:38;-1:-1:-1;;;;;;;;;;;17696:38:68;;;;;;;;;;;17586:159;;;;;17696:38;;;;;:::i;:::-;632:46320;;17696:38;;;;17536:39;;;;;;;;;;;;;;:::i;:::-;;;;;17383:38;;;;;17046:222;17208:49;;;;:::i;:::-;17046:222;;632:46320;;;;;;;-1:-1:-1;;632:46320:68;;;;31165:7;1049:42;632:46320;;-1:-1:-1;;;31165:39:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;31165:39;;;632:46320;;;;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;;;;;;;;31165:39;;632:46320;;-1:-1:-1;;;;;632:46320:68;31165:39;;;;;;;;;;;632:46320;31240:25;31296:9;31240:25;;:::i;31296:9::-;632:46320;31286:19;;-1:-1:-1;;;;;;;;;;;31276:30:68;;;;632:46320;;1590:14:0;;;;31276:30:68;;632:46320;31276:30;;632:46320;31276:30;;2260:42;31276:30;-1:-1:-1;;;;;;;;;;;31276:30:68;;;;;;;;;;;632:46320;31316:35;;-1:-1:-1;;;;;;;;;;;31316:35:68;;;;632:46320;;-1:-1:-1;;;31316:35:68;;31326:24;;;632:46320;31316:35;;632:46320;31316:35;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;31316:35:68;;;;;;;;;;;632:46320;2260:42;;632:46320;;;;;;;;;:::i;:::-;;2260:42;;632:46320;2260:42;;;-1:-1:-1;;2260:42:68;;632:46320;2260:42;;31415:20;;;:::i;:::-;2260:42;31415:20;;:::i;:::-;31165:7;1049:42;632:46320;;-1:-1:-1;;;31502:44:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;31502:44;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;632:46320;;;-1:-1:-1;;;;;;;;;;;2260:42:68;632:46320;;;;31165:39;632:46320;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:46320:68;;;;;;;;;;;;;;;;;;;;;;;;31502:44;;;;;;;;;;;;;;;632:46320;31562:13;;31596:3;632:46320;;31577:17;;;;;31624:9;31615:32;31624:9;632:46320;31624:9;;;:::i;31615:32::-;31661:34;632:46320;31670:9;;;;:::i;31661:34::-;632:46320;31562:13;;31502:44;;;;;;;;;;;;;;:::i;:::-;;;;;632:46320;;;;;;;-1:-1:-1;632:46320:68;;-1:-1:-1;632:46320:68;;;;;;;;;;;;;31316:35;;;;;:::i;:::-;632:46320;;31316:35;;;;31276:30;;;;;:::i;:::-;632:46320;;31276:30;;;;31165:39;;;;;;;;;;;;;:::i;:::-;;;;632:46320;;;;;;;;;;;;;;;;;2060:7:28;632:46320:68;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2060:7:28;632:46320:68;;;;;-1:-1:-1;632:46320:68;;;;;;;-1:-1:-1;632:46320:68;;-1:-1:-1;632:46320:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:46320:68;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:46320:68;;-1:-1:-1;632:46320:68;;-1:-1:-1;632:46320:68;;;;;;;;;;;;;;;3190:18:5;632:46320:68;2260:42;;;:::i;:::-;632:46320;;;;;;;:::i;:::-;2260:42;;;3190:18:5;632:46320:68;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;-1:-1:-1;;;;;632:46320:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;2260:42;632:46320;;;;;;;;;;;;-1:-1:-1;;;;;;1590:14:0;632:46320:68;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;632:46320:68;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;632:46320:68;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;632:46320:68;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;632:46320:68;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;632:46320:68;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;632:46320:68;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;632:46320:68;;;;;;;;;;;;;;;;;;;;;;1590:14:0;632:46320:68;1590:14:0;632:46320:68;;;;;;1590:14:0;632:46320:68;1590:14:0;;632:46320:68;;;;;;;1590:14:0;632:46320:68;1590:14:0;;632:46320:68;;;;;;;1590:14:0;632:46320:68;1590:14:0;;632:46320:68;;;;;;;1590:14:0;632:46320:68;1590:14:0;;632:46320:68;;;;;;;1590:14:0;632:46320:68;1590:14:0;;632:46320:68;;;;;;;1590:14:0;632:46320:68;1590:14:0;;632:46320:68;;;;;;;1590:14:0;632:46320:68;;;;;;;;;;;;;;;;;23270:39;632:46320;;;;:::i;:::-;23114:38;;;23122:13;23114:38;23270:7;1049:42;632:46320;;-1:-1:-1;;;23270:39:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;23270:39;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;;;;;;1590:14:0;632:46320:68;;-1:-1:-1;;;;;632:46320:68;23270:39;;;;;;;;;;;23114:38;2260:42;;;;;;;23332:13;23324:21;;;;;;;23406:9;;;:::i;:::-;632:46320;23388:27;;:94;;;23320:353;-1:-1:-1;;;;;;;;;;;23361:135:68;;;;632:46320;;-1:-1:-1;;;23361:135:68;;632:46320;;;;23361:135;;632:46320;23361:135;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;23361:135:68;;;;;;;;;;;23320:353;;;;632:46320;;-1:-1:-1;;;23711:30:68;;632:46320;2260:42;632:46320;;;-1:-1:-1;;;;;;;;;;;23711:30:68;;;;;;;;;;;23320:353;523:5:65;;23332:13:68;523:5:65;;;;;2260:42:68;523:5:65;;;;;;;632:46320:68;;;;2260:42;27501:38:3;;1590:14:0;;;;27501:38:3;;23704:4:68;2260:42;27501:38:3;;632:46320:68;2260:42;27501:38:3;;;2260:42:68;27501:38:3;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;-1:-1:-1;6854:12:8;1984:42:68;;-1:-1:-1;;;;;;1984:42:68;-1:-1:-1;;;;;;;;;;;1984:42:68;;;7009:9:8;632:46320:68;;-1:-1:-1;;632:46320:68;27524:10:3;632:46320:68;;;7505:10:8;632:46320:68;-1:-1:-1;;;632:46320:68;;;;;;;23332:13;632:46320;;;7505:10:8;632:46320:68;;:::i;:::-;;;;;;;;6854:12:8;632:46320:68;;7009:9:8;632:46320:68;;1590:14:0;15610:11:8;632:46320:68;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;15703:15:8;;632:46320:68;;;;;;;;2260:42;632:46320;;;;;;2260:42;15735:37:8;;;;;;;;;;:::i;:::-;632:46320:68;15725:48:8;;632:46320:68;;2260:42;632:46320;;15610:11:8;632:46320:68;;;15703:77:8;632:46320:68;;15702:78:8;15698:126;;23320:353:68;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;;;;2260:42;632:46320;15889:37:8;;632:46320:68;;;;;;15889:37:8;;;2260:42:68;15889:37:8;;;;;:::i;:::-;632:46320:68;15879:48:8;;632:46320:68;;2260:42;632:46320;;;;15943:15:8;23332:13:68;15943:15:8;;632:46320:68;15961:16:8;2260:42:68;15961:16:8;;632:46320:68;15943:34:8;;;;;:::i;:::-;15938:460;;23320:353:68;632:46320;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;632:46320:68;;;16424:32:8;;632:46320:68;1442:42;;;632:46320;;;;;;;;;;;;2260:42;632:46320;1442:42;632:46320;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;23320:353:68;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;632:46320:68;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;632:46320:68;;;16587:43:8;;632:46320:68;12810:59:8;;;632:46320:68;;;;;;;;12656:92:8;;;;12810:59;;;632:46320:68;;;12810:59:8;632:46320:68;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;23320:353:68;16678:31:8;;;;:::i;:::-;16724:8;;;632:46320:68;;;16724:29:8;;23320:353:68;16720:176:8;;;;14785:4;;;;;:::i;:::-;23270:7:68;1049:42;632:46320;;-1:-1:-1;;;23756:61:68;;-1:-1:-1;;;;;632:46320:68;;;;23756:61;;632:46320;-1:-1:-1;;2260:42:68;1442;;632:46320;2260:42;632:46320;2260:42;632:46320;23756:61;-1:-1:-1;;;;;;;;;;;23756:61:68;;;;;;;;23320:353;-1:-1:-1;632:46320:68;;-1:-1:-1;;;23843:41:68;;23704:4;632:46320;23843:41;;632:46320;;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;23843:41:68;;;;;;;;;;;23320:353;-1:-1:-1;632:46320:68;;-1:-1:-1;;;23909:41:68;;23704:4;632:46320;23909:41;;632:46320;;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;23909:41:68;;;;;;;;;;;23320:353;2260:42;;632:46320;;;24014:28;632:46320;;;;;;:::i;24014:28::-;2260:42;23270:7;1049:42;632:46320;;-1:-1:-1;;;24085:57:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;24085:57;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;23270:39;2260:42;;;;;;;;;632:46320;;;;;;;24085:57;;632:46320;;-1:-1:-1;;;;;632:46320:68;24085:57;;;;;;;;;;;23320:353;-1:-1:-1;24157:21:68;;;632:46320;;-1:-1:-1;;;24253:41:68;;23704:4;632:46320;24253:41;;632:46320;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;24253:41:68;;;;;;;;;;;24153:609;24253:48;;;;;;:::i;:::-;632:46320;;;;1590:14:0;;;24402:41:68;;23704:4;632:46320;24402:41;;632:46320;2260:42;24402:41;2260:42;24402:41;-1:-1:-1;;;;;;;;;;;24402:41:68;;;;;;;;;;;;24395:48;;;;;;:::i;24253:41::-;;;2260:42;24253:41;;2260:42;24253:41;;;;;;1590:14:0;24253:41:68;;;:::i;:::-;;;1590:14:0;;;;;24253:48:68;:41;;;;;-1:-1:-1;24253:41:68;;24153:609;632:46320;;-1:-1:-1;;;24554:41:68;;23704:4;632:46320;24554:41;;632:46320;;;;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;24554:41:68;;;;;;;;;;;24153:609;24547:48;;;;;;:::i;:::-;632:46320;;;;1590:14:0;;;24689:41:68;;23704:4;632:46320;24689:41;;632:46320;2260:42;24689:41;2260:42;24689:41;-1:-1:-1;;;;;;;;;;;24689:41:68;;;;;;;;;;;;:48;;;;;;:::i;24554:41::-;;;2260:42;24554:41;;2260:42;24554:41;;;;;;1590:14:0;24554:41:68;;;:::i;:::-;;;1590:14:0;;;;;24547:48:68;24554:41;;;;;-1:-1:-1;24554:41:68;;24085:57;;;;;2260:42;24085:57;2260:42;24085:57;;;;;;;:::i;:::-;;;;;23909:41;;;;;2260:42;23909:41;;2260:42;23909:41;;;;;;1590:14:0;23909:41:68;;;:::i;:::-;;;1590:14:0;;;;;;;23909:41:68;;;;;;;-1:-1:-1;23909:41:68;;23843;;;;;2260:42;23843:41;;2260:42;23843:41;;;;;;1590:14:0;23843:41:68;;;:::i;:::-;;;1590:14:0;;;;;;;23843:41:68;;;;;;;-1:-1:-1;23843:41:68;;23756:61;;;2260:42;23756:61;2260:42;23756:61;;;;;;;:::i;:::-;;;16724:29:8;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;632:46320:68;;16587:43:8;;;;16424:32;;;;;2260:42:68;16424:32:8;;2260:42:68;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;:::i;:::-;16021:3;2260:42:68;16021:3:8;2260:42:68;;;;632:46320;;;;;23332:13;632:46320;;;;;1590:14:0;;;;16314:19:8;;;632:46320:68;16314:19:8;;632:46320:68;16314:19:8;;2260:42:68;16314:19:8;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;12810:59;2260:42:68;16314:19:8;16170:185;16314:19;;;;;632:46320:68;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;632:46320:68;12810:59:8;;;-1:-1:-1;;;2260:42:68;12810:59:8;;;632:46320:68;;;;;;12810:59:8;;;632:46320:68;;;;;;;;16170:185:8;;27501:38:3;;16170:185:8;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;23711:30:68;;;;2260:42;23711:30;;2260:42;23711:30;;;;;;1590:14:0;23711:30:68;;;:::i;:::-;;;1590:14:0;;;;;23711:30:68;;;;;;;-1:-1:-1;23711:30:68;;23361:135;;;;;:::i;:::-;632:46320;;23361:135;;;;23388:94;23457:25;;;:::i;:::-;23439:43;;23388:94;;23320:353;23572:9;;;:::i;:::-;632:46320;23554:27;;:94;;;23320:353;-1:-1:-1;;;;;;;;;;;23527:135:68;;;;632:46320;;-1:-1:-1;;;23527:135:68;;632:46320;;;;23527:135;;632:46320;23527:135;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;23527:135:68;;;;;;;;;;;23320:353;;;;;23527:135;;;;;:::i;:::-;632:46320;;23527:135;;;;23554:94;23623:25;;;:::i;:::-;23605:43;;23554:94;;23270:39;;;;;;;;;;;;;;:::i;:::-;;;;;23114:38;;;;632:46320;;;;;;;;;;;;;2707:18:5;632:46320:68;2260:42;;;:::i;:::-;632:46320;;;;;;;:::i;:::-;2260:42;;;2707:18:5;632:46320:68;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:46320:68;;;;34079:7;1049:42;632:46320;;-1:-1:-1;;;34079:39:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;34079:39;;;632:46320;;;;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;;;;;;;;34079:39;;632:46320;;-1:-1:-1;;;;;632:46320:68;34079:39;;;;;;;;;;;632:46320;34154:25;34210:9;34154:25;;:::i;34210:9::-;632:46320;34200:19;;-1:-1:-1;;;;;;;;;;;34190:30:68;;;;632:46320;;1590:14:0;;;;34190:30:68;;632:46320;34190:30;;632:46320;34190:30;;2260:42;34190:30;-1:-1:-1;;;;;;;;;;;34190:30:68;;;;;;;;;;;632:46320;34230:35;;-1:-1:-1;;;;;;;;;;;34230:35:68;;;;632:46320;;-1:-1:-1;;;34230:35:68;;34240:24;;;632:46320;34230:35;;632:46320;34230:35;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;34230:35:68;;;;;;;;;;;632:46320;2260:42;;632:46320;;;;;;;;;:::i;:::-;;2260:42;;632:46320;2260:42;;;-1:-1:-1;;2260:42:68;;632:46320;2260:42;;34329:20;;;:::i;:::-;2260:42;34329:20;;:::i;:::-;34079:7;1049:42;632:46320;;-1:-1:-1;;;34416:44:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;34416:44;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;632:46320;;;-1:-1:-1;;;;;;;;;;;2260:42:68;632:46320;;;;34079:39;632:46320;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:46320:68;;;;;;;;;;;;;;;;;;;;;;;;34416:44;;;;;;;;;;;;;;;632:46320;34476:13;;34510:3;632:46320;;34491:17;;;;;34538:9;34529:32;34538:9;632:46320;34538:9;;;:::i;34529:32::-;34575:34;632:46320;34584:9;;;;:::i;34575:34::-;632:46320;34476:13;;34416:44;;;;;;;;;;;;;;:::i;:::-;;;;;632:46320;;;;;;;-1:-1:-1;632:46320:68;;-1:-1:-1;632:46320:68;;;;;;;;;;;;;34230:35;;;;;:::i;:::-;632:46320;;34230:35;;;;34190:30;;;;;:::i;:::-;632:46320;;34190:30;;;;34079:39;;;;;;;;;;;;;:::i;:::-;;;;632:46320;;;;;;;-1:-1:-1;;632:46320:68;;;;;;;;-1:-1:-1;;;;;632:46320:68;;:::i;:::-;;;;;;;;;;;;;;;;;;;;41137:39;632:46320;;;;:::i;:::-;;;;40661:201;;;;40704:49;;;;:::i;:::-;40661:201;;40897:13;1442:42;-1:-1:-1;;;;;632:46320:68;;40983:38;;;40991:13;40983:38;;41137:7;1049:42;632:46320;;-1:-1:-1;;;41137:39:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;41137:39;;632:46320;2260:42;;;632:46320;;;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;;;;;;1590:14:0;632:46320:68;;-1:-1:-1;;;;;632:46320:68;41137:39;;;;;;;;;;;40983:38;2260:42;;;;;;;41199:13;41191:21;;;;;;;41256:9;;;:::i;:::-;632:46320;41238:27;;-1:-1:-1;;;;;;;;;;;41228:38:68;;;;632:46320;;1590:14:0;;;;41228:38:68;;632:46320;41228:38;;632:46320;41228:38;;2260:42;41228:38;-1:-1:-1;;;;;;;;;;;41228:38:68;;;;;;;;;;;41187:159;;;;632:46320;;-1:-1:-1;;;41424:30:68;;632:46320;2260:42;632:46320;;;41424:30;;;;;;;;;;;;41187:159;523:5:65;;41199:13:68;523:5:65;;;;;2260:42:68;523:5:65;;;;;;;632:46320:68;;;;2260:42;27501:38:3;;1590:14:0;;;;27501:38:3;;41417:4:68;2260:42;27501:38:3;;632:46320:68;2260:42;27501:38:3;;;2260:42:68;27501:38:3;;:::i;:::-;27484:56;;;;;;27568:30;27484:56;;:::i;27568:30::-;-1:-1:-1;6854:12:8;1984:42:68;;-1:-1:-1;;;;;;1984:42:68;-1:-1:-1;;;;;632:46320:68;;1984:42;;;27524:10:3;632:46320:68;;7009:9:8;632:46320:68;;;7009:9:8;632:46320:68;7505:10:8;632:46320:68;-1:-1:-1;;;632:46320:68;;;;;;;41199:13;632:46320;;;7505:10:8;632:46320:68;;:::i;:::-;;;;;;;;6854:12:8;632:46320:68;;7009:9:8;632:46320:68;;1590:14:0;15610:11:8;632:46320:68;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;15703:15:8;;632:46320:68;;;;;;;;2260:42;632:46320;;;;;;2260:42;15735:37:8;;;;;;;;;;:::i;:::-;632:46320:68;15725:48:8;;632:46320:68;;2260:42;632:46320;;15610:11:8;632:46320:68;;;15703:77:8;632:46320:68;;15702:78:8;15698:126;;41187:159:68;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;;;;2260:42;632:46320;15889:37:8;;632:46320:68;;;;;;15889:37:8;;;2260:42:68;15889:37:8;;;;;:::i;:::-;632:46320:68;15879:48:8;;632:46320:68;;2260:42;632:46320;;;;15943:15:8;41199:13:68;15943:15:8;;632:46320:68;15961:16:8;2260:42:68;15961:16:8;;632:46320:68;15943:34:8;;;;;:::i;:::-;15938:460;;41187:159:68;632:46320;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;632:46320:68;;;16424:32:8;;632:46320:68;1442:42;;;632:46320;;;;;;;;;;;;;;;2260:42;632:46320;1442:42;632:46320;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;41187:159:68;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;632:46320:68;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;632:46320:68;;;16587:43:8;;632:46320:68;12810:59:8;;;632:46320:68;;;;;;;;12656:92:8;;;;12810:59;;;632:46320:68;;;12810:59:8;632:46320:68;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;41187:159:68;16678:31:8;;;;:::i;:::-;16724:8;;;632:46320:68;;;16724:29:8;;41187:159:68;16720:176:8;;;;14785:4;;;;;:::i;:::-;41137:7:68;1049:42;632:46320;;-1:-1:-1;;;41469:61:68;;-1:-1:-1;;;;;632:46320:68;;;;41469:61;;632:46320;-1:-1:-1;;2260:42:68;1442;;632:46320;2260:42;632:46320;2260:42;632:46320;41469:61;;;;;;;;;;41187:159;-1:-1:-1;632:46320:68;;-1:-1:-1;;;41556:41:68;;41417:4;632:46320;41556:41;;632:46320;;2260:42;632:46320;2260:42;632:46320;41556:41;;;;;;;;;;;;41187:159;-1:-1:-1;632:46320:68;;-1:-1:-1;;;41622:41:68;;41417:4;632:46320;41622:41;;632:46320;;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;41622:41:68;;;;;;;;;;;41187:159;-1:-1:-1;41137:7:68;1049:42;632:46320;;-1:-1:-1;;;41707:57:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;41707:57;;632:46320;2260:42;;;632:46320;;;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;41137:39;2260:42;;;;;;;;;632:46320;;;;;2260:42;;632:46320;;41707:57;;632:46320;;1590:14:0;-1:-1:-1;;;;;632:46320:68;41707:57;;;;;;;;;;;41187:159;-1:-1:-1;41779:21:68;;;632:46320;;-1:-1:-1;;;41875:41:68;;41417:4;632:46320;41875:41;;632:46320;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;41875:41:68;;;;;;;;;;;:48;2260:42;41875:48;;2260:42;41875:48;;;;;:::i;41775:609::-;632:46320;;;;2260:42;;632:46320;;;1590:14:0;;;;;;;42176:41:68;;41417:4;632:46320;42176:41;;632:46320;42176:41;;;;;;;;;;;41775:609;42169:48;;;;;;:::i;:::-;632:46320;;;-1:-1:-1;;;42311:41:68;;41417:4;632:46320;42311:41;;632:46320;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;42311:41:68;;;;;;;;;;;:48;;;;;;:::i;42176:41::-;;;2260:42;42176:41;;2260:42;42176:41;;;;;;1590:14:0;42176:41:68;;;:::i;:::-;;;1590:14:0;;;;;42169:48:68;42176:41;;;;;-1:-1:-1;42176:41:68;;41707:57;;;;;2260:42;41707:57;2260:42;41707:57;;;;;;;:::i;:::-;;;;;41622:41;;;;;2260:42;41622:41;;2260:42;41622:41;;;;;;1590:14:0;41622:41:68;;;:::i;:::-;;;1590:14:0;;;;2260:42:68;1590:14:0;;;41622:41:68;;;;;;;-1:-1:-1;41622:41:68;;41556;;;;;2260:42;41556:41;;2260:42;41556:41;;;;;;1590:14:0;41556:41:68;;;:::i;:::-;;;1590:14:0;;;;;;;41556:41:68;;;;;;;-1:-1:-1;41556:41:68;;41469:61;;;2260:42;41469:61;2260:42;41469:61;;;;;;;:::i;:::-;;;16724:29:8;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;632:46320:68;;16587:43:8;;;;16424:32;;;;;2260:42:68;16424:32:8;;2260:42:68;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;:::i;:::-;16021:3;2260:42:68;16021:3:8;2260:42:68;;;;632:46320;;;;;41199:13;632:46320;;;;;1590:14:0;;;;16314:19:8;;;632:46320:68;16314:19:8;;632:46320:68;16314:19:8;;2260:42:68;16314:19:8;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;;;;;15938:460;632:46320:68;;;16170:185:8;;2260:42:68;16170:185:8;;-1:-1:-1;;;;;;;;;;;12810:59:8;;632:46320:68;12810:59:8;;-1:-1:-1;;;;;;;;;;;12810:59:8;;2260:42:68;12810:59:8;;-1:-1:-1;;;12810:59:8;;632:46320:68;;2260:42;632:46320;;;12810:59:8;;;632:46320:68;;;;12810:59:8;632:46320:68;;;16170:185:8;12810:59;16170:185;27501:38:3;;16170:185:8;;;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;;16314:19;;;;;;;;;;;;;;:::i;:::-;;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;41424:30:68;;;;2260:42;41424:30;;2260:42;41424:30;;;;;;1590:14:0;41424:30:68;;;:::i;:::-;;;1590:14:0;;;;;41424:30:68;;;;;;;-1:-1:-1;41424:30:68;;41228:38;;;;;:::i;:::-;632:46320;;41228:38;;;;41187:159;41325:9;;;:::i;:::-;632:46320;41307:27;;-1:-1:-1;;;;;;;;;;;41297:38:68;;;;632:46320;;1590:14:0;;;;41297:38:68;;632:46320;41297:38;;632:46320;41297:38;;2260:42;41297:38;-1:-1:-1;;;;;;;;;;;41297:38:68;;;;;;;;;;;41187:159;;;;;41297:38;;;;;:::i;:::-;632:46320;;41297:38;;;;41137:39;;;;;;;;;;;;;;:::i;:::-;;;;;40983:38;;;;;40661:201;40802:49;;;;:::i;:::-;40661:201;;;632:46320;;;;;;;;;;;;;2883:26:5;632:46320:68;2260:42;;;:::i;:::-;632:46320;;;;;;;:::i;:::-;2260:42;;;2883:26:5;632:46320:68;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;-1:-1:-1;;;;;632:46320:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;2260:42;632:46320;;;;;;;;;;;;;;;;;;;;;;1590:14:0;632:46320:68;1590:14:0;632:46320:68;;;;;;1590:14:0;632:46320:68;1590:14:0;;632:46320:68;;;;;;;1590:14:0;632:46320:68;1590:14:0;;632:46320:68;;;;;;;1590:14:0;632:46320:68;1590:14:0;;632:46320:68;;;;;;;1590:14:0;632:46320:68;1590:14:0;;632:46320:68;;;;;;;1590:14:0;632:46320:68;1590:14:0;;632:46320:68;;;;;;;1590:14:0;632:46320:68;1590:14:0;;632:46320:68;;;;;;;1590:14:0;632:46320:68;;;;;;;;;;;;;;;;;37922:39;632:46320;;;;:::i;:::-;37766:38;;;37774:13;37766:38;37922:7;1049:42;632:46320;;-1:-1:-1;;;37922:39:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;37922:39;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;2064:42;2260;;;632:46320;;;;;;1590:14:0;632:46320:68;;-1:-1:-1;;;;;632:46320:68;37922:39;;;;;;;;;;;37766:38;2260:42;;;;;;;37984:13;37976:21;;;;;;;38058:9;;;:::i;:::-;632:46320;38040:27;;:94;;;37972:353;-1:-1:-1;;;;;;;;;;;38013:135:68;;;;632:46320;;-1:-1:-1;;;38013:135:68;;632:46320;;;;38013:135;;632:46320;38013:135;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;38013:135:68;;;;;;;;;;;37972:353;;;;632:46320;;-1:-1:-1;;;38363:28:68;;632:46320;2260:42;632:46320;;;-1:-1:-1;;;;;;;;;;;38363:28:68;;;;;;;;;;;37972:353;523:5:65;;37984:13:68;523:5:65;;;;;2260:42:68;523:5:65;;;;;;;632:46320:68;;;;2260:42;27501:38:3;;1590:14:0;;;;27501:38:3;;38356:4:68;2260:42;27501:38:3;;632:46320:68;2260:42;27501:38:3;;;2260:42:68;27501:38:3;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;-1:-1:-1;6854:12:8;1984:42:68;;-1:-1:-1;;;;;;1984:42:68;-1:-1:-1;;;;;;;;;;;1984:42:68;;;27524:10:3;632:46320:68;;7009:9:8;632:46320:68;;;7009:9:8;632:46320:68;7505:10:8;632:46320:68;-1:-1:-1;;;632:46320:68;;;;;;;37984:13;632:46320;;;7505:10:8;632:46320:68;;:::i;:::-;;;;;;;;6854:12:8;632:46320:68;;7009:9:8;632:46320:68;;1590:14:0;15610:11:8;632:46320:68;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;15703:15:8;;632:46320:68;;;;;;;;2260:42;632:46320;;;;;;2260:42;15735:37:8;;;;;;;;;;:::i;:::-;632:46320:68;15725:48:8;;632:46320:68;;2260:42;632:46320;;15610:11:8;632:46320:68;;;15703:77:8;632:46320:68;;15702:78:8;15698:126;;37972:353:68;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;;;;2260:42;632:46320;15889:37:8;;632:46320:68;;;;;;15889:37:8;;;2260:42:68;15889:37:8;;;;;:::i;:::-;632:46320:68;15879:48:8;;632:46320:68;;2260:42;632:46320;;;;15943:15:8;37984:13:68;15943:15:8;;632:46320:68;15961:16:8;2260:42:68;15961:16:8;;632:46320:68;15943:34:8;;;;;:::i;:::-;15938:460;;37972:353:68;632:46320;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;632:46320:68;;;16424:32:8;;632:46320:68;1442:42;;;632:46320;;;;;;;;;;;;2260:42;632:46320;1442:42;632:46320;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;37972:353:68;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;632:46320:68;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;632:46320:68;;;16587:43:8;;632:46320:68;12810:59:8;;;632:46320:68;;;;;;;;12656:92:8;;;;12810:59;;;632:46320:68;;;12810:59:8;632:46320:68;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;37972:353:68;16678:31:8;;;;:::i;:::-;16724:8;;;632:46320:68;;;16724:29:8;;37972:353:68;16720:176:8;;;;14785:4;;;;;:::i;:::-;37922:7:68;1049:42;632:46320;;-1:-1:-1;;;38406:59:68;;-1:-1:-1;;;;;632:46320:68;;;;38406:59;;632:46320;-1:-1:-1;;2260:42:68;1442;;632:46320;2260:42;632:46320;2260:42;632:46320;38406:59;-1:-1:-1;;;;;;;;;;;38406:59:68;;;;;;;;37972:353;-1:-1:-1;632:46320:68;;-1:-1:-1;;;38491:39:68;;38356:4;632:46320;38491:39;;632:46320;;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;38491:39:68;;;;;;;;;;;37972:353;-1:-1:-1;632:46320:68;;-1:-1:-1;;;38555:39:68;;38356:4;632:46320;38555:39;;632:46320;;2260:42;632:46320;2260:42;632:46320;2064:42;38555:39;;;;;;;;;;;37972:353;2260:42;;632:46320;;;38658:28;632:46320;;;;;;:::i;38658:28::-;2260:42;37922:7;1049:42;632:46320;;-1:-1:-1;;;38729:57:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;38729:57;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;2064:42;2260;;;632:46320;37922:39;2260:42;;;;;;;;;632:46320;;;;;;;38729:57;;632:46320;;-1:-1:-1;;;;;632:46320:68;38729:57;;;;;;;;;;;37972:353;-1:-1:-1;38801:21:68;;;632:46320;;-1:-1:-1;;;38881:39:68;;38356:4;632:46320;38881:39;;632:46320;2260:42;632:46320;2260:42;632:46320;2064:42;38881:39;;;;;;;;;;;:46;;;;;;:::i;38797:569::-;632:46320;;-1:-1:-1;;;39162:39:68;;38356:4;632:46320;39162:39;;632:46320;;;;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;39162:39:68;;;;;;;;;;;38797:569;39155:46;;;;;;:::i;:::-;632:46320;;;;1590:14:0;;;39295:39:68;;38356:4;632:46320;39295:39;;632:46320;2260:42;39295:39;2260:42;39295:39;2064:42;39295:39;;;;;;;;;;;;:46;;;;;;:::i;39162:39::-;;;2260:42;39162:39;;2260:42;39162:39;;;;;;1590:14:0;39162:39:68;;;:::i;:::-;;;1590:14:0;;;;;39155:46:68;39162:39;;;;;-1:-1:-1;39162:39:68;;38729:57;;;;;2260:42;38729:57;2260:42;38729:57;;;;;;;:::i;:::-;;;;;38555:39;;;;;2260:42;38555:39;;2260:42;38555:39;;;;;;1590:14:0;38555:39:68;;;:::i;:::-;;;1590:14:0;;;;;;;38555:39:68;;;;;;;-1:-1:-1;38555:39:68;;38491;;;;;2260:42;38491:39;;2260:42;38491:39;;;;;;1590:14:0;38491:39:68;;;:::i;:::-;;;1590:14:0;;;;;;;38491:39:68;;;;;;;-1:-1:-1;38491:39:68;;38406:59;;;2260:42;38406:59;2260:42;38406:59;;;;;;;:::i;:::-;;;16724:29:8;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;632:46320:68;;16587:43:8;;;;16424:32;;;;;2260:42:68;16424:32:8;;2260:42:68;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;:::i;:::-;16021:3;2260:42:68;16021:3:8;2260:42:68;;;;632:46320;;;;;37984:13;632:46320;;;;;1590:14:0;;;;16314:19:8;;;632:46320:68;16314:19:8;;632:46320:68;16314:19:8;;2260:42:68;16314:19:8;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;12810:59;2260:42:68;16314:19:8;16170:185;16314:19;;;;;632:46320:68;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;632:46320:68;12810:59:8;;;-1:-1:-1;;;2260:42:68;12810:59:8;;;632:46320:68;;;;;;12810:59:8;;;632:46320:68;;;;;;;;16170:185:8;;27501:38:3;;16170:185:8;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;38363:28:68;;;;2260:42;38363:28;;2260:42;38363:28;;;;;;1590:14:0;38363:28:68;;;:::i;:::-;;;1590:14:0;;;;;38363:28:68;;;;;;;-1:-1:-1;38363:28:68;;38013:135;;;;;:::i;:::-;632:46320;;38013:135;;;;38040:94;-1:-1:-1;632:46320:68;;-1:-1:-1;;;46578:23:68;;2260:42;632:46320;;;2064:42;46578:23;;;;;;;;;;38040:94;632:46320;;;;46559:42;46691:1;46680:12;;46676:78;;38040:94;46778:2;46767:13;;46763:94;;38040;632:46320;;;;;;;;38091:43;;38040:94;;46763;-1:-1:-1;;2260:42:68;;;-1:-1:-1;2260:42:68;;;;46763:94;;;46676:78;3663:17;-1:-1:-1;;2260:42:68;;;;;;;46676:78;;;46578:23;;2260:42;46578:23;;2260:42;46578:23;;;;;;2260:42;46578:23;;;:::i;:::-;;;632:46320;;;;;;;;;;;;;46578:23;;;;;;-1:-1:-1;46578:23:68;;37972:353;38224:9;;;:::i;:::-;632:46320;38206:27;;:94;;;37972:353;-1:-1:-1;;;;;;;;;;;38179:135:68;;;;632:46320;;-1:-1:-1;;;38179:135:68;;632:46320;;;;38179:135;;632:46320;38179:135;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;38179:135:68;;;;;;;;;;;37972:353;;;;;38179:135;;;;;:::i;:::-;632:46320;;38179:135;;;;38206:94;38275:25;;;:::i;:::-;38257:43;;38206:94;;37922:39;;;;;;;;;;;;;;:::i;:::-;;;;;37766:38;;;;632:46320;;;;;;;;:::i;:::-;29055:38;;;29063:13;29055:38;29211:7;1049:42;632:46320;;-1:-1:-1;;;29211:39:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;29211:39;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;;;;;;29211:39;;632:46320;;-1:-1:-1;;;;;632:46320:68;29211:39;;;;;;;;;;;29055:38;2260:42;;;;;;;29265:21;29273:13;29265:21;;29261:353;;;29265:21;;;29347:9;;;:::i;:::-;632:46320;29329:27;;:94;;;29261:353;-1:-1:-1;;;;;;;;;;;29302:135:68;;;;632:46320;;-1:-1:-1;;;29302:135:68;;632:46320;;;;29302:135;;632:46320;29302:135;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;29302:135:68;;;;;;;;29261:353;;;;632:46320;;;;2260:42;27501:38:3;;1590:14:0;;;;27501:38:3;;29645:4:68;2260:42;27501:38:3;;632:46320:68;2260:42;27501:38:3;;;2260:42:68;27501:38:3;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;-1:-1:-1;6854:12:8;1984:42:68;;-1:-1:-1;;;;;;1984:42:68;-1:-1:-1;;;;;;;;;;;1984:42:68;;;7009:9:8;632:46320:68;;-1:-1:-1;;632:46320:68;27524:10:3;632:46320:68;;;7505:10:8;632:46320:68;-1:-1:-1;;;632:46320:68;;;;;;;;;29273:13;632:46320;;;7505:10:8;632:46320:68;;:::i;:::-;;;;;;;;6854:12:8;632:46320:68;;7009:9:8;632:46320:68;;1590:14:0;15610:11:8;632:46320:68;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;15703:15:8;;632:46320:68;;;;;;;;2260:42;632:46320;;;;;;2260:42;15735:37:8;;;;;;;;;;:::i;:::-;632:46320:68;15725:48:8;;632:46320:68;;2260:42;632:46320;;15610:11:8;632:46320:68;;;15703:77:8;632:46320:68;;15702:78:8;15698:126;;29261:353:68;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;;;;2260:42;632:46320;15889:37:8;;632:46320:68;;;;;;15889:37:8;;;2260:42:68;15889:37:8;;;;;:::i;:::-;632:46320:68;15879:48:8;;632:46320:68;;2260:42;632:46320;;;;15943:15:8;29273:13:68;15943:15:8;;632:46320:68;15961:16:8;2260:42:68;15961:16:8;;632:46320:68;15943:34:8;;;;:::i;:::-;15938:460;;632:46320:68;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;632:46320:68;;;16424:32:8;;632:46320:68;1442:42;;;632:46320;;;;;;;2260:42;632:46320;1442:42;632:46320;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;29261:353:68;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;632:46320:68;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;632:46320:68;;;16587:43:8;;632:46320:68;12810:59:8;;;632:46320:68;;;;-1:-1:-1;;632:46320:68;;;12656:92:8;12810:59;;;632:46320:68;;;12810:59:8;632:46320:68;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;29261:353:68;16678:31:8;;;;:::i;:::-;16724:8;;632:46320:68;;;16724:29:8;;29261:353:68;16720:176:8;;;14785:4;;;;;:::i;:::-;29211:7:68;1049:42;632:46320;;-1:-1:-1;;;29680:61:68;;-1:-1:-1;;;;;632:46320:68;;;;29680:61;;632:46320;-1:-1:-1;;2260:42:68;1442;;632:46320;2260:42;632:46320;2260:42;632:46320;29680:61;-1:-1:-1;;;;;;;;;;;29680:61:68;;;;;;;;29261:353;-1:-1:-1;632:46320:68;;-1:-1:-1;;;29767:41:68;;29645:4;632:46320;29767:41;;632:46320;;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;29767:41:68;;;;;;;;;;;29261:353;-1:-1:-1;632:46320:68;;-1:-1:-1;;;29833:39:68;;29645:4;632:46320;29833:39;;632:46320;;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;29833:39:68;;;;;;;;;;;29261:353;2260:42;;632:46320;;;29936:28;632:46320;;;;;;:::i;29936:28::-;2260:42;29211:7;1049:42;632:46320;;-1:-1:-1;;;30007:57:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;30007:57;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;29211:39;2260:42;;;;;;;;;632:46320;;;;;;;30007:57;;632:46320;;-1:-1:-1;;;;;632:46320:68;30007:57;;;;;;;;;;;29261:353;-1:-1:-1;30079:21:68;;;632:46320;;-1:-1:-1;;;30159:39:68;;29645:4;632:46320;30159:39;;632:46320;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;30159:39:68;;;;;;;;;;;30075:571;30159:46;;;;;;:::i;:::-;632:46320;;;;1590:14:0;;;30306:41:68;;29645:4;632:46320;30306:41;;632:46320;2260:42;30306:41;2260:42;30306:41;-1:-1:-1;;;;;;;;;;;30306:41:68;;;;;;;;;;;;30299:48;;;;;;:::i;30159:39::-;;;2260:42;30159:39;;2260:42;30159:39;;;;;;1590:14:0;30159:39:68;;;:::i;:::-;;;1590:14:0;;;;;30159:46:68;:39;;;;;-1:-1:-1;30159:39:68;;30075:571;632:46320;;-1:-1:-1;;;30442:39:68;;29645:4;632:46320;30442:39;;632:46320;;;;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;30442:39:68;;;;;;;;;;;30435:46;;;;;;:::i;30007:57::-;;;;;2260:42;30007:57;2260:42;30007:57;;;;;;;:::i;:::-;;;;;29833:39;;;;;2260:42;29833:39;;2260:42;29833:39;;;;;;1590:14:0;29833:39:68;;;:::i;:::-;;;1590:14:0;;;;;;;29833:39:68;;;;;;;-1:-1:-1;29833:39:68;;29767:41;;;;;2260:42;29767:41;;2260:42;29767:41;;;;;;1590:14:0;29767:41:68;;;:::i;:::-;;;1590:14:0;;;;;;;29767:41:68;;;;;;;-1:-1:-1;29767:41:68;;29680:61;;;2260:42;29680:61;2260:42;29680:61;;;;;;;:::i;:::-;;;16724:29:8;-1:-1:-1;;16736:17:8;;;-1:-1:-1;3663:17:68;16724:29:8;;16587:43;;;;;:::i;:::-;632:46320:68;;16587:43:8;;;;16424:32;;;;;2260:42:68;16424:32:8;;2260:42:68;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15698:126;13208:33;;:::i;:::-;;15698:126;;29302:135:68;;;;;:::i;:::-;632:46320;;29302:135;;;;29329:94;29398:25;;;:::i;:::-;29380:43;;29329:94;;29261:353;29513:9;;;:::i;:::-;632:46320;29495:27;;:94;;;29261:353;-1:-1:-1;;;;;;;;;;;29468:135:68;;;;632:46320;;-1:-1:-1;;;29468:135:68;;632:46320;;;;29468:135;;632:46320;29468:135;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;29468:135:68;;;;;;;;29261:353;;;;;29468:135;;;;;:::i;:::-;632:46320;;29468:135;;;;29495:94;29564:25;;;:::i;:::-;29546:43;;29495:94;;29211:39;;;;;;;;;;;;;:::i;:::-;;;;29055:38;;;;632:46320;;;;;;;-1:-1:-1;;632:46320:68;;;;10608:7;1049:42;632:46320;;-1:-1:-1;;;10608:39:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;10608:39;;;632:46320;;;;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;;;;;;;;10608:39;;632:46320;;-1:-1:-1;;;;;632:46320:68;10608:39;;;;;;;;;;;632:46320;10682:25;10738:9;10682:25;;:::i;10738:9::-;632:46320;10728:19;;-1:-1:-1;;;;;;;;;;;10718:30:68;;;;632:46320;;1590:14:0;;;;10718:30:68;;632:46320;10718:30;;632:46320;10718:30;;2260:42;10718:30;-1:-1:-1;;;;;;;;;;;10718:30:68;;;;;;;;;;;632:46320;10758:35;;-1:-1:-1;;;;;;;;;;;10758:35:68;;;;632:46320;;-1:-1:-1;;;10758:35:68;;10768:24;;;632:46320;10758:35;;632:46320;10758:35;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;10758:35:68;;;;;;;;;;;632:46320;2260:42;;632:46320;;;;;;;;;:::i;:::-;;2260:42;;632:46320;2260:42;;;-1:-1:-1;;2260:42:68;;632:46320;2260:42;;10857:20;;;:::i;:::-;2260:42;10857:20;;:::i;:::-;10608:7;1049:42;632:46320;;-1:-1:-1;;;10944:44:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;10944:44;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;632:46320;;;-1:-1:-1;;;;;;;;;;;2260:42:68;632:46320;;;;10608:39;632:46320;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:46320:68;;;;;;;;;;;;;;;;;;;;;;;;10944:44;;;;;;;;;;;;;;;632:46320;11004:13;;11038:3;632:46320;;11019:17;;;;;11066:9;11057:32;11066:9;632:46320;11066:9;;;:::i;11057:32::-;11103:34;632:46320;11112:9;;;;:::i;11103:34::-;632:46320;11004:13;;10944:44;;;;;;;;;;;;;;:::i;:::-;;;;;632:46320;;;;;;;-1:-1:-1;632:46320:68;;-1:-1:-1;632:46320:68;;;;;;;;;;;;;10758:35;;;;;:::i;:::-;632:46320;;10758:35;;;;10718:30;;;;;:::i;:::-;632:46320;;10718:30;;;;10608:39;;;;;;;;;;;;;:::i;:::-;;;;632:46320;;;;;;;;;;;;;2429:30;632:46320;;;-1:-1:-1;;;;;632:46320:68;;;;;;;;;;;;;20235:39;632:46320;;;;:::i;:::-;20001:13;1747:42;632:46320;;;-1:-1:-1;;;;;632:46320:68;;;;20081:38;;;;20089:13;20081:38;;20235:7;1049:42;632:46320;;-1:-1:-1;;;20235:39:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;20235:39;;632:46320;2260:42;;;632:46320;;;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;;;;;;1590:14:0;632:46320:68;;-1:-1:-1;;;;;632:46320:68;20235:39;;;;;;;;;;;20081:38;-1:-1:-1;20284:376:68;;;20354:9;;;:::i;:::-;632:46320;20336:27;;:57;;;20284:376;-1:-1:-1;;;;;;;;;;;20309:174:68;;;;632:46320;;-1:-1:-1;;;20309:174:68;;632:46320;;;;20309:174;;632:46320;20309:174;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;20309:174:68;;;;;;;;;;;20284:376;;;;2260:42;;;;;;20682:13;20674:21;;;;;;;20739:9;;;:::i;:::-;632:46320;20721:27;;-1:-1:-1;;;;;;;;;;;20711:38:68;;;;632:46320;;1590:14:0;;;;20711:38:68;;632:46320;20711:38;;632:46320;20711:38;;2260:42;20711:38;-1:-1:-1;;;;;;;;;;;20711:38:68;;;;;;;;;;;20670:159;;;;632:46320;;-1:-1:-1;;;20867:28:68;;632:46320;2260:42;632:46320;;;20867:28;;;;;;;;;;;;20670:159;523:5:65;;20682:13:68;523:5:65;;;;;2260:42:68;523:5:65;;;;;;;632:46320:68;;;;2260:42;27501:38:3;;1590:14:0;;;;27501:38:3;;20860:4:68;2260:42;27501:38:3;;632:46320:68;2260:42;27501:38:3;;;2260:42:68;27501:38:3;;:::i;:::-;27484:56;;;;;;27568:30;27484:56;;:::i;27568:30::-;-1:-1:-1;6854:12:8;1984:42:68;;-1:-1:-1;;;;;;1984:42:68;-1:-1:-1;;;;;632:46320:68;;1984:42;;;27524:10:3;632:46320:68;;7009:9:8;632:46320:68;;;7009:9:8;632:46320:68;7505:10:8;632:46320:68;-1:-1:-1;;;632:46320:68;;;;;;;20682:13;632:46320;;;7505:10:8;632:46320:68;;:::i;:::-;;;;;;;;6854:12:8;632:46320:68;;7009:9:8;632:46320:68;;1590:14:0;15610:11:8;632:46320:68;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;15703:15:8;;632:46320:68;;;;;;;;2260:42;632:46320;;;;;;2260:42;15735:37:8;;;;;;;;;;:::i;:::-;632:46320:68;15725:48:8;;632:46320:68;;2260:42;632:46320;;15610:11:8;632:46320:68;;;15703:77:8;632:46320:68;;15702:78:8;15698:126;;20670:159:68;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;;;;2260:42;632:46320;15889:37:8;;632:46320:68;;;;;;15889:37:8;;;2260:42:68;15889:37:8;;;;;:::i;:::-;632:46320:68;15879:48:8;;632:46320:68;;2260:42;632:46320;;;;15943:15:8;20682:13:68;15943:15:8;;632:46320:68;15961:16:8;2260:42:68;15961:16:8;;632:46320:68;15943:34:8;;;;;:::i;:::-;15938:460;;20670:159:68;632:46320;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;632:46320:68;;;16424:32:8;;632:46320:68;1442:42;;;632:46320;;;;;;;;;;;;;;;2260:42;632:46320;1442:42;632:46320;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;20670:159:68;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;632:46320:68;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;632:46320:68;;;16587:43:8;;632:46320:68;12810:59:8;;;632:46320:68;;;;;;;;12656:92:8;;;;12810:59;;;632:46320:68;;;12810:59:8;632:46320:68;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;20670:159:68;16678:31:8;;;;:::i;:::-;16724:8;;;632:46320:68;;;16724:29:8;;20670:159:68;16720:176:8;;;;14785:4;;;;;:::i;:::-;20235:7:68;1049:42;632:46320;;-1:-1:-1;;;20910:61:68;;-1:-1:-1;;;;;632:46320:68;;;;20910:61;;632:46320;-1:-1:-1;;2260:42:68;1442;;632:46320;2260:42;632:46320;2260:42;632:46320;20910:61;;;;;;;;;;20670:159;-1:-1:-1;632:46320:68;;-1:-1:-1;;;20997:41:68;;20860:4;632:46320;20997:41;;632:46320;;2260:42;632:46320;2260:42;632:46320;20997:41;;;;;;;;;;;;20670:159;-1:-1:-1;632:46320:68;;-1:-1:-1;;;21063:39:68;;20860:4;632:46320;21063:39;;632:46320;;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;21063:39:68;;;;;;;;;;;20670:159;-1:-1:-1;20235:7:68;1049:42;632:46320;;-1:-1:-1;;;21146:57:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;21146:57;;632:46320;2260:42;;;632:46320;;;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;20235:39;2260:42;;;;;;;;;632:46320;;;;;2260:42;;632:46320;;21146:57;;632:46320;;1590:14:0;-1:-1:-1;;;;;632:46320:68;21146:57;;;;;;;;;;;20670:159;-1:-1:-1;21218:21:68;;;632:46320;;-1:-1:-1;;;21298:39:68;;20860:4;632:46320;21298:39;;632:46320;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;21298:39:68;;;;;;;;;;;:46;2260:42;21298:46;;2260:42;21298:46;;;;;:::i;21214:589::-;632:46320;;;;2260:42;;632:46320;;;1590:14:0;;;;;;;21597:41:68;;20860:4;632:46320;21597:41;;632:46320;21597:41;;;;;;;;;;;21214:589;21590:48;;;;;;:::i;:::-;632:46320;;;-1:-1:-1;;;21732:39:68;;20860:4;632:46320;21732:39;;632:46320;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;21732:39:68;;;;;;;;;;;:46;;;;;;:::i;21597:41::-;;;2260:42;21597:41;;2260:42;21597:41;;;;;;1590:14:0;21597:41:68;;;:::i;:::-;;;1590:14:0;;;;;21590:48:68;21597:41;;;;;-1:-1:-1;21597:41:68;;21146:57;;;;;2260:42;21146:57;2260:42;21146:57;;;;;;;:::i;:::-;;;;;21063:39;;;;;2260:42;21063:39;;2260:42;21063:39;;;;;;1590:14:0;21063:39:68;;;:::i;:::-;;;1590:14:0;;;;2260:42:68;1590:14:0;;;21063:39:68;;;;;;;-1:-1:-1;21063:39:68;;20997:41;;;;;2260:42;20997:41;;2260:42;20997:41;;;;;;1590:14:0;20997:41:68;;;:::i;:::-;;;1590:14:0;;;;;;;20997:41:68;;;;;;;-1:-1:-1;20997:41:68;;20910:61;;;2260:42;20910:61;2260:42;20910:61;;;;;;;:::i;:::-;;;16724:29:8;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;632:46320:68;;16587:43:8;;;;16424:32;;;;;2260:42:68;16424:32:8;;2260:42:68;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;:::i;:::-;16021:3;2260:42:68;16021:3:8;2260:42:68;;;;632:46320;;;;;20682:13;632:46320;;;;;1590:14:0;;;;16314:19:8;;;632:46320:68;16314:19:8;;632:46320:68;16314:19:8;;2260:42:68;16314:19:8;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;;;;;15938:460;632:46320:68;;;16170:185:8;;2260:42:68;16170:185:8;;-1:-1:-1;;;;;;;;;;;12810:59:8;;632:46320:68;12810:59:8;;-1:-1:-1;;;;;;;;;;;12810:59:8;;2260:42:68;12810:59:8;;-1:-1:-1;;;12810:59:8;;632:46320:68;;2260:42;632:46320;;;12810:59:8;;;632:46320:68;;;;12810:59:8;632:46320:68;;;16170:185:8;12810:59;16170:185;27501:38:3;;16170:185:8;;;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;;16314:19;;;;;;;;;;;;;;:::i;:::-;;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;20867:28:68;;;;2260:42;20867:28;;2260:42;20867:28;;;;;;1590:14:0;20867:28:68;;;:::i;:::-;;;1590:14:0;;;;;20867:28:68;;;;;;;-1:-1:-1;20867:28:68;;20711:38;;;;;:::i;:::-;632:46320;;20711:38;;;;20670:159;20808:9;;;:::i;:::-;632:46320;20790:27;;-1:-1:-1;;;;;;;;;;;20780:38:68;;;;632:46320;;1590:14:0;;;;20780:38:68;;632:46320;20780:38;;632:46320;20780:38;;2260:42;20780:38;-1:-1:-1;;;;;;;;;;;20780:38:68;;;;;;;;;;;20670:159;;;;;20780:38;;;;;:::i;:::-;632:46320;;20780:38;;;;20309:174;;;;;:::i;:::-;632:46320;;20309:174;;;;20336:57;20367:26;20385:8;20367:26;;20336:57;;20284:376;20559:9;;;:::i;:::-;632:46320;20541:27;;:94;;;20284:376;-1:-1:-1;;;;;;;;;;;20514:135:68;;;;632:46320;;-1:-1:-1;;;20514:135:68;;632:46320;;;;20514:135;;632:46320;20514:135;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;20514:135:68;;;;;;;;;;;20284:376;;;;;20514:135;;;;;:::i;:::-;632:46320;;20514:135;;;;20541:94;20610:25;;;;:::i;:::-;20592:43;;20541:94;;20235:39;;;;;;;;;;;;;;:::i;:::-;;;;;20081:38;;;;;632:46320;;;;;;;-1:-1:-1;;632:46320:68;;;;16148:13;1747:42;16278:7;1049:42;632:46320;;-1:-1:-1;;;16278:39:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;16278:39;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;-1:-1:-1;;;;;632:46320:68;;;2260:42;;;632:46320;;;;;;;;;;;16278:39;;632:46320;;;16278:39;;;;;;;;;;;632:46320;;16465:9;16394:41;632:46320;;16394:41;:::i;16465:9::-;632:46320;16455:19;;-1:-1:-1;;;;;;;;;;;16445:30:68;;;;632:46320;;1590:14:0;;;;16445:30:68;;632:46320;16445:30;;632:46320;16445:30;;2260:42;16445:30;-1:-1:-1;;;;;;;;;;;16445:30:68;;;;;;;;;;;632:46320;2260:42;;;632:46320;;;;;;;;;;:::i;:::-;;2260:42;;632:46320;2260:42;;;-1:-1:-1;;2260:42:68;;632:46320;2260:42;;16539:20;;;:::i;:::-;2260:42;16539:20;;:::i;:::-;16278:7;1049:42;632:46320;;-1:-1:-1;;;16626:44:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;16626:44;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;632:46320;;;2260:42;632:46320;;;;;;;16278:39;632:46320;;;;;;;;;;;;;-1:-1:-1;;;;;632:46320:68;;;;;;;;;;;;;;;;;;;;;16626:44;;;;;;;;;;;;;;;632:46320;16686:13;;16720:3;632:46320;;16701:17;;;;;16748:9;16739:32;16748:9;632:46320;16748:9;;;:::i;16739:32::-;16785:34;632:46320;16794:9;;;;:::i;16785:34::-;632:46320;16686:13;;16626:44;;;;;;;;;;;;;;:::i;:::-;;;;;632:46320;;;;;;;-1:-1:-1;632:46320:68;;-1:-1:-1;632:46320:68;;;;;;;;;;;;;16445:30;;;;;:::i;:::-;632:46320;;16445:30;;;;16278:39;;;;;;;;;;;;;:::i;:::-;;;;632:46320;;;;;;;-1:-1:-1;;632:46320:68;;;;13471:7;1049:42;632:46320;;-1:-1:-1;;;13471:39:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;13471:39;;;632:46320;;;;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;;;;;;;;13471:39;;632:46320;;-1:-1:-1;;;;;632:46320:68;13471:39;;;;;;;;13541:9;13471:39;;;;;13541:9;;:::i;:::-;632:46320;13531:19;;:58;;;632:46320;-1:-1:-1;;;;;;;;;;;13521:69:68;;;;632:46320;;-1:-1:-1;;;13521:69:68;;632:46320;;;;13521:69;;632:46320;13521:69;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;13521:69:68;;;;;;;;;;;632:46320;2260:42;;632:46320;;13741:44;632:46320;;;;;;;;;:::i;:::-;;2260:42;;-1:-1:-1;;2260:42:68;;632:46320;;2260:42;;;13654:20;;;:::i;:::-;2260:42;13654:20;;:::i;:::-;13471:7;1049:42;632:46320;;-1:-1:-1;;;13741:44:68;;632:46320;;;-1:-1:-1;;;;;632:46320:68;;;;;;;;;13741:44;;;:::i;:::-;;;;;;;;;;;;;;;632:46320;13801:13;;13835:3;632:46320;;13816:17;;;;;13912:9;13903:34;632:46320;13912:9;632:46320;13912:9;;;:::i;13903:34::-;632:46320;13801:13;;13741:44;;;;;;;;;;;;;;:::i;:::-;;;;;13521:69;;;;;:::i;:::-;632:46320;;13521:69;;;;13531:58;13564:25;;;:::i;:::-;13554:35;;13531:58;;13471:39;;;;;;;;;;;;;:::i;632:46320::-;;;;;;;;;;;;;;;;;;3038:18:5;632:46320:68;;;;;;;3038:18:5;632:46320:68;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;632:46320:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3331:16:5;632:46320:68;;;;;;;3331:16:5;632:46320:68;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;632:46320:68;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:46320:68;;;;45812:7;1049:42;632:46320;;-1:-1:-1;;;45812:39:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;45812:39;;;632:46320;;;;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;;;;;;;;45812:39;;632:46320;;-1:-1:-1;;;;;632:46320:68;45812:39;;;;;;;;45882:9;45812:39;;;;;45882:9;;:::i;:::-;632:46320;45872:19;;:37;;;632:46320;-1:-1:-1;;;;;;;;;;;45862:48:68;;;;632:46320;;-1:-1:-1;;;45862:48:68;;632:46320;;;;45862:48;;632:46320;45862:48;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;45862:48:68;;;;;;;;;;;632:46320;2260:42;;632:46320;;46061:44;632:46320;;;;;;;;;:::i;46061:44::-;;;;;;;;;;;;;;;632:46320;46121:13;;46155:3;632:46320;;46136:17;;;;;46183:9;46174:32;46183:9;632:46320;46183:9;;;:::i;46174:32::-;46220:34;632:46320;46229:9;;;;:::i;46220:34::-;632:46320;46121:13;;46061:44;;;;;;;;;;;;;;:::i;:::-;;;;;45862:48;;;;;:::i;:::-;632:46320;;45862:48;;;;45872:37;45895:14;45905:4;45895:14;;45872:37;;632:46320;;;;;;;;;;;;;;;;2780:2:28;632:46320:68;;;;;;;;;;;;;;;;3485:19:5;632:46320:68;2260:42;;;:::i;:::-;632:46320;;;;;;:::i;:::-;2260:42;;;3485:19:5;632:46320:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;632:46320:68;;;;;;;;2260:42;632:46320;2260:42;:::i;:::-;632:46320;;;;;;;:::i;:::-;2260:42;;;632:46320;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2260:42;632:46320;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:46320:68;;;;;;:::i;:::-;;;:::i;:::-;-1:-1:-1;;;;;632:46320:68;;;;;3657:11:28;632:46320:68;;;;;;;;735:10:34;-1:-1:-1;632:46320:68;;;;;;;;;;;;;10580:37:28;;10576:310;;632:46320:68;4986:5:28;;;;;;:::i;10576:310::-;10637:24;;;10633:130;;9813:19;;9809:89;;735:10:34;9911:21:28;9907:90;;632:46320:68;;;4986:5:28;632:46320:68;;3657:11:28;632:46320:68;;;;;;;;735:10:34;632:46320:68;-1:-1:-1;632:46320:68;;;;;-1:-1:-1;632:46320:68;;;;;10576:310:28;;;;9907:90;-1:-1:-1;;;9955:31:28;;632:46320:68;;;;;9955:31:28;;9809:89;-1:-1:-1;;;9855:32:28;;632:46320:68;;;;;9855:32:28;;10633:130;632:46320:68;10688:60:28;;;;;;;;735:10:34;632:46320:68;;;;;;10688:60:28;632:46320:68;;;;;;;;;;;;;;;;;;2563:16:5;632:46320:68;;;;;;;2563:16:5;632:46320:68;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;632:46320:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2465:32;632:46320;;;-1:-1:-1;;;;;632:46320:68;;;;;;;;;;;;;;;;;;;;;;2927:12:28;632:46320:68;;;;;;;;;;;;;;-1:-1:-1;;632:46320:68;;;;22314:7;1049:42;632:46320;;-1:-1:-1;;;22314:39:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;22314:39;;;632:46320;;;;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;;;;;;;;22314:39;;632:46320;;-1:-1:-1;;;;;632:46320:68;22314:39;;;;;;;;;;;632:46320;22389:25;22445:9;22389:25;;:::i;22445:9::-;632:46320;22435:19;;-1:-1:-1;;;;;;;;;;;22425:30:68;;;;632:46320;;1590:14:0;;;;22425:30:68;;632:46320;22425:30;;632:46320;22425:30;;2260:42;22425:30;-1:-1:-1;;;;;;;;;;;22425:30:68;;;;;;;;;;;632:46320;22465:35;;-1:-1:-1;;;;;;;;;;;22465:35:68;;;;632:46320;;-1:-1:-1;;;22465:35:68;;22475:24;;;632:46320;22465:35;;632:46320;22465:35;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;22465:35:68;;;;;;;;;;;632:46320;2260:42;;632:46320;;;;;;;;;:::i;:::-;;2260:42;;632:46320;2260:42;;;-1:-1:-1;;2260:42:68;;632:46320;2260:42;;22564:20;;;:::i;:::-;2260:42;22564:20;;:::i;:::-;22314:7;1049:42;632:46320;;-1:-1:-1;;;22651:44:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;22651:44;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;632:46320;;;-1:-1:-1;;;;;;;;;;;2260:42:68;632:46320;;;;22314:39;632:46320;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:46320:68;;;;;;;;;;;;;;;;;;;;;;;;22651:44;;;;;;;;;;;;;;;632:46320;22711:13;;22745:3;632:46320;;22726:17;;;;;22773:9;22764:32;22773:9;632:46320;22773:9;;;:::i;22764:32::-;22810:34;632:46320;22819:9;;;;:::i;22810:34::-;632:46320;22711:13;;22651:44;;;;;;;;;;;;;;:::i;:::-;;;;;632:46320;;;;;;;-1:-1:-1;632:46320:68;;-1:-1:-1;632:46320:68;;;;;;;;;;;;;22465:35;;;;;:::i;:::-;632:46320;;22465:35;;;;22425:30;;;;;:::i;:::-;632:46320;;22425:30;;;;22314:39;;;;;;;;;;;;;:::i;:::-;;;;632:46320;;;;;26251:39;632:46320;;;;:::i;:::-;26095:38;;;26103:13;26095:38;26251:7;1049:42;632:46320;;-1:-1:-1;;;26251:39:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;26251:39;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;;;;;;1590:14:0;632:46320:68;;-1:-1:-1;;;;;632:46320:68;26251:39;;;;;;;;;;;26095:38;2260:42;;;;;;;26313:13;26305:21;;;;;;;26387:9;;;:::i;:::-;632:46320;26369:27;;:94;;;26301:353;-1:-1:-1;;;;;;;;;;;26342:135:68;;;;632:46320;;-1:-1:-1;;;26342:135:68;;632:46320;;;;26342:135;;632:46320;26342:135;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;26342:135:68;;;;;;;;;;;26301:353;;;;632:46320;;-1:-1:-1;;;26692:28:68;;632:46320;2260:42;632:46320;;;-1:-1:-1;;;;;;;;;;;26692:28:68;;;;;;;;;;;26301:353;523:5:65;;26313:13:68;523:5:65;;;;;2260:42:68;523:5:65;;;;;;;632:46320:68;;;;2260:42;27501:38:3;;1590:14:0;;;;27501:38:3;;26685:4:68;2260:42;27501:38:3;;632:46320:68;2260:42;27501:38:3;;;2260:42:68;27501:38:3;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;-1:-1:-1;6854:12:8;1984:42:68;;-1:-1:-1;;;;;;1984:42:68;-1:-1:-1;;;;;;;;;;;1984:42:68;;;27524:10:3;632:46320:68;;7009:9:8;632:46320:68;;;7009:9:8;632:46320:68;7505:10:8;632:46320:68;-1:-1:-1;;;632:46320:68;;;;;;;26313:13;632:46320;;;7505:10:8;632:46320:68;;:::i;:::-;;;;;;;;6854:12:8;632:46320:68;;7009:9:8;632:46320:68;;1590:14:0;15610:11:8;632:46320:68;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;15703:15:8;;632:46320:68;;;;;;;;2260:42;632:46320;;;;;;2260:42;15735:37:8;;;;;;;;;;:::i;:::-;632:46320:68;15725:48:8;;632:46320:68;;2260:42;632:46320;;15610:11:8;632:46320:68;;;15703:77:8;632:46320:68;;15702:78:8;15698:126;;26301:353:68;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;;;;2260:42;632:46320;15889:37:8;;632:46320:68;;;;;;15889:37:8;;;2260:42:68;15889:37:8;;;;;:::i;:::-;632:46320:68;15879:48:8;;632:46320:68;;2260:42;632:46320;;;;15943:15:8;26313:13:68;15943:15:8;;632:46320:68;15961:16:8;2260:42:68;15961:16:8;;632:46320:68;15943:34:8;;;;;:::i;:::-;15938:460;;26301:353:68;632:46320;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;632:46320:68;;;16424:32:8;;632:46320:68;1442:42;;;632:46320;;;;;;;;;;;;2260:42;632:46320;1442:42;632:46320;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;26301:353:68;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;632:46320:68;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;632:46320:68;;;16587:43:8;;632:46320:68;12810:59:8;;;632:46320:68;;;;;;;;12656:92:8;;;;12810:59;;;632:46320:68;;;12810:59:8;632:46320:68;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;26301:353:68;16678:31:8;;;;:::i;:::-;16724:8;;;632:46320:68;;;16724:29:8;;26301:353:68;16720:176:8;;;;14785:4;;;;;:::i;:::-;26251:7:68;1049:42;632:46320;;-1:-1:-1;;;26735:59:68;;-1:-1:-1;;;;;632:46320:68;;;;26735:59;;632:46320;-1:-1:-1;;2260:42:68;1442;;632:46320;2260:42;632:46320;2260:42;632:46320;26735:59;-1:-1:-1;;;;;;;;;;;26735:59:68;;;;;;;;26301:353;-1:-1:-1;632:46320:68;;-1:-1:-1;;;26820:39:68;;26685:4;632:46320;26820:39;;632:46320;;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;26820:39:68;;;;;;;;;;;26301:353;-1:-1:-1;632:46320:68;;-1:-1:-1;;;26884:41:68;;26685:4;632:46320;26884:41;;632:46320;;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;26884:41:68;;;;;;;;;;;26301:353;2260:42;;632:46320;;;26989:28;632:46320;;;;;;:::i;26989:28::-;2260:42;26251:7;1049:42;632:46320;;-1:-1:-1;;;27060:57:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;27060:57;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;-1:-1:-1;;;;;;;;;;;2260:42:68;;;632:46320;26251:39;2260:42;;;;;;;;;632:46320;;;;;;;27060:57;;632:46320;;-1:-1:-1;;;;;632:46320:68;27060:57;;;;;;;;;;;26301:353;-1:-1:-1;27132:21:68;;;632:46320;;-1:-1:-1;;;27228:41:68;;26685:4;632:46320;27228:41;;632:46320;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;27228:41:68;;;;;;;;;;;:48;;;;;;:::i;27128:589::-;632:46320;;-1:-1:-1;;;27511:39:68;;26685:4;632:46320;27511:39;;632:46320;;;;2260:42;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;27511:39:68;;;;;;;;;;;27504:46;;;;;;:::i;27060:57::-;;;;;2260:42;27060:57;2260:42;27060:57;;;;;;;:::i;:::-;;;;;26884:41;;;;;2260:42;26884:41;;2260:42;26884:41;;;;;;1590:14:0;26884:41:68;;;:::i;:::-;;;1590:14:0;;;;;;;26884:41:68;;;;;;;-1:-1:-1;26884:41:68;;26820:39;;;;;2260:42;26820:39;;2260:42;26820:39;;;;;;1590:14:0;26820:39:68;;;:::i;:::-;;;1590:14:0;;;;;;;26820:39:68;;;;;;;-1:-1:-1;26820:39:68;;26735:59;;;2260:42;26735:59;2260:42;26735:59;;;;;;;:::i;:::-;;;16724:29:8;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;632:46320:68;;16587:43:8;;;;16424:32;;;;;2260:42:68;16424:32:8;;2260:42:68;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;:::i;:::-;16021:3;2260:42:68;16021:3:8;2260:42:68;;;;632:46320;;;;;26313:13;632:46320;;;;;1590:14:0;;;;16314:19:8;;;632:46320:68;16314:19:8;;632:46320:68;16314:19:8;;2260:42:68;16314:19:8;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;12810:59;2260:42:68;16314:19:8;16170:185;16314:19;;;;;632:46320:68;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;632:46320:68;12810:59:8;;;-1:-1:-1;;;2260:42:68;12810:59:8;;;632:46320:68;;;;;;12810:59:8;;;632:46320:68;;;;;;;;16170:185:8;;27501:38:3;;16170:185:8;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;26692:28:68;;;;2260:42;26692:28;;2260:42;26692:28;;;;;;1590:14:0;26692:28:68;;;:::i;:::-;;;1590:14:0;;;;;26692:28:68;;;;;;;-1:-1:-1;26692:28:68;;26342:135;;;;;:::i;:::-;632:46320;;26342:135;;;;26369:94;26438:25;;;:::i;:::-;26420:43;;26369:94;;26301:353;26553:9;;;:::i;:::-;632:46320;26535:27;;:94;;;26301:353;-1:-1:-1;;;;;;;;;;;26508:135:68;;;;632:46320;;-1:-1:-1;;;26508:135:68;;632:46320;;;;26508:135;;632:46320;26508:135;632:46320;2260:42;632:46320;-1:-1:-1;;;;;;;;;;;26508:135:68;;;;;;;;;;;26301:353;;;;;26508:135;;;;;:::i;:::-;632:46320;;26508:135;;;;26535:94;26604:25;;;:::i;:::-;26586:43;;26535:94;;26251:39;;;;;;;;;;;;;;:::i;:::-;;;;;26095:38;;;;632:46320;;;;;;;-1:-1:-1;;632:46320:68;;;;;;-1:-1:-1;;;2632:20:68;;1590:14:0;632:46320:68;2632:20;;1590:14:0;;;;;632:46320:68;-1:-1:-1;;;632:46320:68;;;1590:14:0;-1:-1:-1;632:46320:68;2632:20;632:46320;-1:-1:-1;;;;;;;;;;;2632:20:68;;;;;;;1590:14:0;2632:20:68;1590:14:0;2632:20:68;632:46320;2632:20;;;632:46320;;;;1590:14:0;;;;;;;2612:52:68;;632:46320;;2612:52;;1590:14:0;632:46320:68;1590:14:0;;;;:::i;:::-;2594:8:68;1590:14:0;;;632:46320:68;2612:52;;632:46320;-1:-1:-1;;;;;;;;;;;2612:52:68;;;;;;;;632:46320;-1:-1:-1;2779:6:68;793:59;632:46320;;;-1:-1:-1;;;;;632:46320:68;2685:156;;;;-1:-1:-1;;;;;2685:156:68;;;;;;;;1984:42;2685:156;;;;;;808:42;632:46320;;1590:14:0;1984:42:68;;632:46320;1124:42;632:46320;1984:42;;632:46320;-1:-1:-1;;;;;;;;;;;1984:42:68;;;632:46320;2685:156;;;632:46320;2685:156;;;;;632:46320;;;;;;1984:42;;;2675:166;1984:42;;;2675:166;1984:42;632:46320;;2906:33;;;;;;;;-1:-1:-1;;;;;2906:33:68;;;;;1590:14:0;2906:33:68;;;;;;-1:-1:-1;;;;;;;;;;;632:46320:68;;2906:33;;;632:46320;2906:33;;;;;2890:49;1984:42;;-1:-1:-1;;;;;;1984:42:68;-1:-1:-1;;;;;632:46320:68;;;;1984:42;;;;;-1:-1:-1;;;;;;;;;;;2949:49:68;;;;632:46320;;1590:14:0;;;;2949:49:68;;632:46320;2949:49;;632:46320;;1590:14:0;1747:42:68;;;;632:46320;1747:42;;632:46320;-1:-1:-1;;;2632:20:68;632:46320;;1747:42;632:46320;2949:49;;;;-1:-1:-1;;;;;;;;;;;2949:49:68;;;;;;;;632:46320;;;;3051:35;;;;;;;;;;-1:-1:-1;;;;;3051:35:68;;;;;;;;1590:14:0;3051:35:68;;;;-1:-1:-1;;;;;;;;;;;632:46320:68;;3051:35;;;;;;;;;3034:52;1984:42;;-1:-1:-1;;;;;;1984:42:68;-1:-1:-1;;;;;632:46320:68;;;;1984:42;;;;;-1:-1:-1;;;;;;;;;;;3096:51:68;;;;632:46320;;1590:14:0;;;;3096:51:68;;632:46320;3096:51;;632:46320;;1590:14:0;1669:42:68;;;;632:46320;1669:42;;632:46320;-1:-1:-1;;;2632:20:68;632:46320;;1669:42;3096:51;;2949:49;3096:51;;-1:-1:-1;;;;;;;;;;;3096:51:68;;;;;;;;632:46320;;;;;3204:33;;;;;;;;;;-1:-1:-1;;;;;3204:33:68;;;;;;;;1590:14:0;3204:33:68;;;;-1:-1:-1;;;;;;;;;;;632:46320:68;;3204:33;;;;;;;;;3188:49;1984:42;;-1:-1:-1;;;;;;1984:42:68;-1:-1:-1;;;;;632:46320:68;;;;1984:42;;;;;-1:-1:-1;;;;;;;;;;;3247:49:68;;;;632:46320;;1590:14:0;;;;3247:49:68;;632:46320;3247:49;;632:46320;;1590:14:0;1442:42:68;;;1747;632:46320;1442:42;;632:46320;-1:-1:-1;;;2632:20:68;632:46320;;1442:42;3247:49;;2949;3247;;-1:-1:-1;;;;;;;;;;;3247:49:68;;;;;;;;632:46320;;;;;1590:14:0;27501:38:3;;1590:14:0;;;;27501:38:3;;3402:4:68;1590:14:0;27501:38:3;;632:46320:68;1590:14:0;27501:38:3;;;632:46320:68;27501:38:3;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;-1:-1:-1;6854:12:8;1984:42:68;;-1:-1:-1;;;;;;1984:42:68;-1:-1:-1;;;;;;;;;;;1984:42:68;;;27524:10:3;632:46320:68;;7009:9:8;632:46320:68;;;7009:9:8;632:46320:68;1669:42;632:46320;-1:-1:-1;;;632:46320:68;;;;;;;7505:10:8;632:46320:68;;;1669:42;632:46320;;:::i;:::-;;;;;;;;6854:12:8;632:46320:68;;7009:9:8;632:46320:68;;1590:14:0;15610:11:8;632:46320:68;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;15703:15:8;;632:46320:68;;;;;;;;1590:14:0;632:46320:68;;;;;;1590:14:0;15735:37:8;;;;;;;;;;:::i;:::-;632:46320:68;15725:48:8;;632:46320:68;;1590:14:0;632:46320:68;;15610:11:8;632:46320:68;;;15703:77:8;632:46320:68;;15702:78:8;15698:126;;632:46320:68;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;;;;1590:14:0;632:46320:68;15889:37:8;;632:46320:68;;;;;;15889:37:8;;;1590:14:0;15889:37:8;;;;;:::i;:::-;632:46320:68;15879:48:8;;632:46320:68;;1590:14:0;632:46320:68;;;;;15943:15:8;7505:10;15943:15;;632:46320:68;15961:16:8;7009:9;15961:16;;632:46320:68;15943:34:8;;;;:::i;:::-;15938:460;;632:46320:68;;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;632:46320:68;;;16424:32:8;;632:46320:68;1442:42;;;632:46320;;;;;;;1590:14:0;632:46320:68;1442:42;632:46320;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;632:46320:68;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;632:46320:68;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;632:46320:68;;;16587:43:8;;632:46320:68;12810:59:8;;;632:46320:68;;;;3409:17;632:46320;;;12656:92:8;;;;12810:59;;;632:46320:68;;;12810:59:8;632:46320:68;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;632:46320:68;16678:31:8;;;;:::i;:::-;16724:8;;632:46320:68;;;16724:29:8;;632:46320:68;16720:176:8;;;14785:4;;;:::i;:::-;632:46320:68;;;;1590:14:0;27501:38:3;;1590:14:0;;;;27501:38:3;;3402:4:68;1590:14:0;27501:38:3;;632:46320:68;1590:14:0;27501:38:3;;;632:46320:68;27501:38:3;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;-1:-1:-1;6854:12:8;1984:42:68;;-1:-1:-1;;;;;;1984:42:68;-1:-1:-1;;;;;;;;;;;1984:42:68;;;27524:10:3;632:46320:68;;7009:9:8;632:46320:68;;;7009:9:8;632:46320:68;1669:42;632:46320;-1:-1:-1;;;632:46320:68;;;;;;;7505:10:8;632:46320:68;;;1669:42;632:46320;;:::i;:::-;;;;;;;;6854:12:8;632:46320:68;;7009:9:8;632:46320:68;;1590:14:0;15610:11:8;632:46320:68;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;15703:15:8;;632:46320:68;;;;;;;;1590:14:0;632:46320:68;;;;;;1590:14:0;15735:37:8;;;;;;;;;;:::i;:::-;632:46320:68;15725:48:8;;632:46320:68;;1590:14:0;632:46320:68;;15610:11:8;632:46320:68;;;15703:77:8;632:46320:68;;15702:78:8;15698:126;;632:46320:68;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;;;;1590:14:0;632:46320:68;15889:37:8;;632:46320:68;;;;;;15889:37:8;;;1590:14:0;15889:37:8;;;;;:::i;:::-;632:46320:68;15879:48:8;;632:46320:68;;1590:14:0;632:46320:68;;;;;15943:15:8;7505:10;15943:15;;632:46320:68;15961:16:8;7009:9;15961:16;;632:46320:68;15943:34:8;;;;:::i;:::-;15938:460;;632:46320:68;;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;632:46320:68;;;16424:32:8;;632:46320:68;1442:42;;;632:46320;;;;;;;1590:14:0;632:46320:68;1442:42;632:46320;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;632:46320:68;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;632:46320:68;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;632:46320:68;;;16587:43:8;;632:46320:68;12810:59:8;;;632:46320:68;;;;3533:17;632:46320;;;12656:92:8;;;;12810:59;;;632:46320:68;;;12810:59:8;632:46320:68;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;632:46320:68;16678:31:8;;;;:::i;:::-;16724:8;;632:46320:68;;;16724:29:8;;632:46320:68;16720:176:8;;;14785:4;;;:::i;:::-;632:46320:68;;;;1590:14:0;27501:38:3;;1590:14:0;;;;27501:38:3;;3402:4:68;1590:14:0;27501:38:3;;632:46320:68;1590:14:0;27501:38:3;;;632:46320:68;27501:38:3;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;-1:-1:-1;6854:12:8;1984:42:68;;-1:-1:-1;;;;;;1984:42:68;-1:-1:-1;;;;;;;;;;;1984:42:68;;;27524:10:3;632:46320:68;;7009:9:8;632:46320:68;;;7009:9:8;632:46320:68;1669:42;632:46320;-1:-1:-1;;;632:46320:68;;;;;;;7505:10:8;632:46320:68;;;1669:42;632:46320;;:::i;:::-;;;;;;;;6854:12:8;632:46320:68;;7009:9:8;632:46320:68;;1590:14:0;15610:11:8;632:46320:68;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;15703:15:8;;632:46320:68;;;;;;;;1590:14:0;632:46320:68;;;;;;1590:14:0;15735:37:8;;;;;;;;;;:::i;:::-;632:46320:68;15725:48:8;;632:46320:68;;1590:14:0;632:46320:68;;15610:11:8;632:46320:68;;;15703:77:8;632:46320:68;;15702:78:8;15698:126;;632:46320:68;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;;;;1590:14:0;632:46320:68;15889:37:8;;632:46320:68;;;;;;15889:37:8;;;1590:14:0;15889:37:8;;;;;:::i;:::-;632:46320:68;15879:48:8;;632:46320:68;;1590:14:0;632:46320:68;;;;;15943:15:8;7505:10;15943:15;;632:46320:68;15961:16:8;7009:9;15961:16;;632:46320:68;15943:34:8;;;;:::i;:::-;15938:460;;632:46320:68;;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;632:46320:68;;;16424:32:8;;632:46320:68;1442:42;;;632:46320;;;;;;;1590:14:0;632:46320:68;1442:42;632:46320;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;632:46320:68;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;632:46320:68;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;632:46320:68;;;16587:43:8;;632:46320:68;12810:59:8;;;632:46320:68;;;;3594:21;632:46320;;;12656:92:8;;;;12810:59;;;632:46320:68;;;12810:59:8;632:46320:68;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;632:46320:68;16678:31:8;;;;:::i;:::-;16724:8;;632:46320:68;;;16724:29:8;;632:46320:68;16720:176:8;;;14785:4;;;:::i;:::-;632:46320:68;;-1:-1:-1;;;3626:55:68;;1124:42;632:46320;3626:55;;632:46320;-1:-1:-1;;1590:14:0;1442:42:68;;632:46320;1590:14:0;632:46320:68;;;3626:55;-1:-1:-1;;;;;;;;;;;3626:55:68;;;;;;;;632:46320;-1:-1:-1;3034:52:68;1669:42;632:46320;;-1:-1:-1;;;3691:58:68;;1124:42;632:46320;3691:58;;632:46320;-1:-1:-1;;1590:14:0;1442:42:68;;632:46320;;1590:14:0;;632:46320:68;;;;;;;;-1:-1:-1;;;;;632:46320:68;3691:58;;;;;;;;632:46320;-1:-1:-1;632:46320:68;;-1:-1:-1;;;3815:54:68;;1124:42;632:46320;3815:54;;632:46320;-1:-1:-1;;1590:14:0;1442:42:68;;632:46320;1590:14:0;632:46320:68;;;3815:54;-1:-1:-1;;;;;;;;;;;3815:54:68;;;;;;;;632:46320;-1:-1:-1;632:46320:68;;-1:-1:-1;;;3928:54:68;;1124:42;632:46320;3928:54;;632:46320;-1:-1:-1;;1590:14:0;1442:42:68;;632:46320;1590:14:0;632:46320:68;;;3928:54;-1:-1:-1;;;;;;;;;;;3928:54:68;;;;;;;;632:46320;4147:15;4165:6;4147:15;1049:42;4147:15;;1049:42;;;;;;;1124;3993:189;;;;632:46320;;-1:-1:-1;;;3993:189:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;3993:189;;632:46320;1049:42;1590:14:0;1049:42:68;;632:46320;-1:-1:-1;;;;;632:46320:68;1049:42;;632:46320;2632:20;1049:42;;;;;3993:189;632:46320;2949:49;632:46320;3993:189;1124:42;3993:189;;;;;;;;;;;632:46320;-1:-1:-1;;3034:52:68;1669:42;-1:-1:-1;;;;;632:46320:68;1124:42;4193:201;;;;632:46320;;4193:201;632:46320;;;1590:14:0;;;;;;;;4193:201:68;;632:46320;4193:201;;;:::i;:::-;;;;1124:42;4193:201;;;;;;;;;;;632:46320;1049:42;4470:224;1124:42;4470:224;;;;632:46320;;-1:-1:-1;;;4470:224:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;4470:224;;632:46320;1049:42;1590:14:0;1049:42:68;;632:46320;-1:-1:-1;;;;;632:46320:68;1049:42;;632:46320;2632:20;1049:42;;;;;4470:224;632:46320;2949:49;632:46320;4470:224;1124:42;4470:224;;;;;;;;;;;632:46320;1049:42;4705:224;1124:42;4705:224;;;;632:46320;;-1:-1:-1;;;4705:224:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;4705:224;;632:46320;1049:42;1590:14:0;1049:42:68;;632:46320;-1:-1:-1;;;;;632:46320:68;1049:42;;632:46320;2632:20;1049:42;;;;;4705:224;632:46320;2949:49;632:46320;4705:224;1124:42;4705:224;;;;;;;;;;;632:46320;-1:-1:-1;2890:49:68;1747:42;632:46320;;-1:-1:-1;;;4996:66:68;;1124:42;632:46320;4996:66;;632:46320;-1:-1:-1;;1590:14:0;1442:42:68;;632:46320;;1590:14:0;;632:46320:68;;;;;;1590:14:0;-1:-1:-1;;;;;632:46320:68;4996:66;;;;;;;;632:46320;-1:-1:-1;2890:49:68;1747:42;-1:-1:-1;;;;;632:46320:68;1124:42;5072:236;;;;632:46320;;5072:236;632:46320;;;1590:14:0;;;;;;;;5072:236:68;;632:46320;5072:236;;;:::i;:::-;;;;1124:42;5072:236;;;;;;;;;;;632:46320;-1:-1:-1;3188:49:68;1442:42;632:46320;;-1:-1:-1;;;5367:66:68;;1124:42;632:46320;5367:66;;632:46320;-1:-1:-1;;1590:14:0;1442:42:68;;632:46320;;1590:14:0;;632:46320:68;;;;;;1590:14:0;-1:-1:-1;;;;;632:46320:68;5367:66;;;;;;;;632:46320;-1:-1:-1;3188:49:68;1442:42;-1:-1:-1;;;;;632:46320:68;1124:42;5443:236;;;;632:46320;;5443:236;632:46320;;;1590:14:0;;;;;;;;5443:236:68;;632:46320;5443:236;;;:::i;:::-;;;;1124:42;5443:236;;;;;;;;;;;632:46320;-1:-1:-1;;2890:49:68;1747:42;-1:-1:-1;;;;;632:46320:68;1124:42;5755:195;;;;632:46320;;5755:195;632:46320;;;1590:14:0;;;;;;;;5755:195:68;;632:46320;5755:195;;;:::i;:::-;;;;1124:42;5755:195;;;;;;;;;;;632:46320;-1:-1:-1;;3188:49:68;1442:42;-1:-1:-1;;;;;632:46320:68;1124:42;6026:195;;;;632:46320;;6026:195;632:46320;;;1590:14:0;;;;;;;;6026:195:68;;632:46320;6026:195;;;:::i;:::-;;;;1124:42;6026:195;;;;;;;;;;;632:46320;-1:-1:-1;;3034:52:68;1669:42;-1:-1:-1;;;;;632:46320:68;1124:42;6297:196;;;;632:46320;;-1:-1:-1;;;6297:196:68;;632:46320;;;;;;;6297:196;;632:46320;;6297:196;;;:::i;:::-;;;;1124:42;6297:196;;;;;;;;632:46320;-1:-1:-1;;2890:49:68;1747:42;632:46320;;-1:-1:-1;;;6673:69:68;;-1:-1:-1;;;;;632:46320:68;;;;6673:69;;632:46320;-1:-1:-1;;1590:14:0;1442:42:68;;632:46320;1590:14:0;632:46320:68;;;6673:69;-1:-1:-1;;;;;;;;;;;6673:69:68;;;;;;;;632:46320;-1:-1:-1;3188:49:68;1442:42;632:46320;;-1:-1:-1;;;6753:69:68;;-1:-1:-1;;;;;632:46320:68;;;;6753:69;;632:46320;-1:-1:-1;;1590:14:0;1442:42:68;;632:46320;1590:14:0;632:46320:68;;;6753:69;-1:-1:-1;;;;;;;;;;;6753:69:68;;;;;;;;632:46320;-1:-1:-1;3034:52:68;1669:42;632:46320;;-1:-1:-1;;;6833:71:68;;-1:-1:-1;;;;;632:46320:68;;;;6833:71;;632:46320;-1:-1:-1;;1590:14:0;1442:42:68;;632:46320;1590:14:0;632:46320:68;;;6833:71;-1:-1:-1;;;;;;;;;;;6833:71:68;;;;;;;;632:46320;-1:-1:-1;2890:49:68;1747:42;632:46320;;-1:-1:-1;;;6956:52:68;;6978:14;632:46320;6956:52;;632:46320;3402:4;1590:14:0;1049:42:68;;632:46320;;1590:14:0;;632:46320:68;;;;;;;;-1:-1:-1;;;;;632:46320:68;6956:52;;;;;;;;632:46320;-1:-1:-1;3188:49:68;1442:42;632:46320;;-1:-1:-1;;;7052:53:68;;7074:15;632:46320;7052:53;;632:46320;3402:4;1590:14:0;1049:42:68;;632:46320;;1590:14:0;;632:46320:68;;;;;;;;-1:-1:-1;;;;;632:46320:68;7052:53;;;;;;;;632:46320;-1:-1:-1;3034:52:68;1669:42;632:46320;;-1:-1:-1;;;7150:59:68;;7173:20;632:46320;7150:59;;632:46320;3402:4;1590:14:0;1049:42:68;;632:46320;;1590:14:0;;632:46320:68;;;;;;;;-1:-1:-1;;;;;632:46320:68;7150:59;;;;;;;;632:46320;-1:-1:-1;2890:49:68;1747:42;632:46320;;-1:-1:-1;;;7301:309:68;;-1:-1:-1;;;;;632:46320:68;;;;7301:309;;632:46320;7407:12;1590:14:0;1049:42:68;;632:46320;;;;1049:42;;632:46320;7545:11;2632:20;1049:42;;632:46320;1590:14:0;632:46320:68;2949:49;632:46320;7301:309;1049:42;7301:309;;;;;;;;632:46320;-1:-1:-1;3188:49:68;1442:42;632:46320;;-1:-1:-1;;;7621:298:68;;-1:-1:-1;;;;;632:46320:68;;;;7621:298;;632:46320;7727:13;1590:14:0;1049:42:68;;632:46320;;;;1049:42;;632:46320;7853:12;2632:20;1049:42;;632:46320;1590:14:0;632:46320:68;2949:49;632:46320;7621:298;1049:42;7621:298;;;;;;;;632:46320;-1:-1:-1;3034:52:68;1669:42;632:46320;;-1:-1:-1;;;7930:299:68;;-1:-1:-1;;;;;632:46320:68;;;;7930:299;;632:46320;7727:13;1590:14:0;1049:42:68;;632:46320;;;;1049:42;;632:46320;7853:12;2632:20;1049:42;;632:46320;1590:14:0;632:46320:68;2949:49;632:46320;7930:299;1049:42;7930:299;;;;;;;;632:46320;;;;;;1590:14:0;27501:38:3;;1590:14:0;;;;27501:38:3;;3402:4:68;1590:14:0;27501:38:3;;632:46320:68;1590:14:0;27501:38:3;;;632:46320:68;27501:38:3;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;-1:-1:-1;6854:12:8;1984:42:68;;-1:-1:-1;;;;;;1984:42:68;-1:-1:-1;;;;;;;;;;;1984:42:68;;;27524:10:3;632:46320:68;;7009:9:8;632:46320:68;;;7009:9:8;632:46320:68;1669:42;632:46320;-1:-1:-1;;;632:46320:68;;;;;;;7505:10:8;632:46320:68;;;1669:42;632:46320;;:::i;:::-;;;;;;;;6854:12:8;632:46320:68;;7009:9:8;632:46320:68;;1590:14:0;15610:11:8;632:46320:68;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;15703:15:8;;632:46320:68;;;;;;;;1590:14:0;632:46320:68;;;;;;1590:14:0;15735:37:8;;;;;;;;;;:::i;:::-;632:46320:68;15725:48:8;;632:46320:68;;1590:14:0;632:46320:68;;15610:11:8;632:46320:68;;;15703:77:8;632:46320:68;;15702:78:8;15698:126;;632:46320:68;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;;;;1590:14:0;632:46320:68;15889:37:8;;632:46320:68;;;;;;15889:37:8;;;1590:14:0;15889:37:8;;;;;:::i;:::-;632:46320:68;15879:48:8;;632:46320:68;;1590:14:0;632:46320:68;;;;;15943:15:8;7505:10;15943:15;;632:46320:68;15961:16:8;7009:9;15961:16;;632:46320:68;15943:34:8;;;;:::i;:::-;15938:460;;632:46320:68;;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;632:46320:68;;;16424:32:8;;632:46320:68;1442:42;;;632:46320;;;;;;;1590:14:0;632:46320:68;1442:42;632:46320;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;632:46320:68;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;632:46320:68;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;632:46320:68;;;16587:43:8;;632:46320:68;12810:59:8;;;632:46320:68;;;;3409:17;632:46320;;;12656:92:8;;;;12810:59;;;632:46320:68;;;12810:59:8;632:46320:68;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;632:46320:68;16678:31:8;;;;:::i;:::-;16724:8;;632:46320:68;;;16724:29:8;;632:46320:68;16720:176:8;;;14785:4;;;:::i;:::-;632:46320:68;;;;1590:14:0;27501:38:3;;1590:14:0;;;;27501:38:3;;3402:4:68;1590:14:0;27501:38:3;;632:46320:68;1590:14:0;27501:38:3;;;632:46320:68;27501:38:3;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;-1:-1:-1;6854:12:8;1984:42:68;;-1:-1:-1;;;;;;1984:42:68;-1:-1:-1;;;;;;;;;;;1984:42:68;;;27524:10:3;632:46320:68;;7009:9:8;632:46320:68;;;7009:9:8;632:46320:68;1669:42;632:46320;-1:-1:-1;;;632:46320:68;;;;;;;7505:10:8;632:46320:68;;;1669:42;632:46320;;:::i;:::-;;;;;;;;6854:12:8;632:46320:68;;7009:9:8;632:46320:68;;1590:14:0;15610:11:8;632:46320:68;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;15703:15:8;;632:46320:68;;;;;;;;1590:14:0;632:46320:68;;;;;;1590:14:0;15735:37:8;;;;;;;;;;:::i;:::-;632:46320:68;15725:48:8;;632:46320:68;;1590:14:0;632:46320:68;;15610:11:8;632:46320:68;;;15703:77:8;632:46320:68;;15702:78:8;15698:126;;632:46320:68;-1:-1:-1;;;;;632:46320:68;;;;;;1747:42;632:46320;;;;;;;;1590:14:0;632:46320:68;15889:37:8;;632:46320:68;;;;;;15889:37:8;;;1590:14:0;15889:37:8;;;;;:::i;:::-;632:46320:68;15879:48:8;;632:46320:68;;1590:14:0;632:46320:68;;;;;15943:15:8;7505:10;15943:15;;632:46320:68;15961:16:8;7009:9;15961:16;;632:46320:68;15943:34:8;;;;:::i;:::-;15938:460;;632:46320:68;;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;632:46320:68;;;16424:32:8;;632:46320:68;1442:42;;;632:46320;;;;;;;1590:14:0;632:46320:68;1442:42;632:46320;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;632:46320:68;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;632:46320:68;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;632:46320:68;;;16587:43:8;;632:46320:68;12810:59:8;;;632:46320:68;;;;7074:15;632:46320;;;12656:92:8;;;;12810:59;;;632:46320:68;;;12810:59:8;632:46320:68;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;632:46320:68;16678:31:8;;;;:::i;:::-;16724:8;;632:46320:68;;;16724:29:8;;632:46320:68;16720:176:8;;;14785:4;;;:::i;:::-;2890:49:68;1747:42;632:46320;;-1:-1:-1;;;8504:69:68;;-1:-1:-1;;;;;632:46320:68;;;;8504:69;;632:46320;-1:-1:-1;;1590:14:0;1442:42:68;;632:46320;1590:14:0;632:46320:68;;;8504:69;-1:-1:-1;;;;;;;;;;;8504:69:68;;;;;;;;632:46320;-1:-1:-1;3188:49:68;1442:42;632:46320;;-1:-1:-1;;;8632:69:68;;-1:-1:-1;;;;;632:46320:68;;;;8632:69;;632:46320;-1:-1:-1;;1590:14:0;1442:42:68;;632:46320;1590:14:0;632:46320:68;;;8632:69;-1:-1:-1;;;;;;;;;;;8632:69:68;;;;;;;;632:46320;-1:-1:-1;2890:49:68;1747:42;632:46320;;-1:-1:-1;;;8763:55:68;;3409:17;632:46320;8763:55;;632:46320;3402:4;1590:14:0;1049:42:68;;632:46320;;1590:14:0;;632:46320:68;;;;;;;;-1:-1:-1;;;;;632:46320:68;8763:55;;;;;;;;632:46320;-1:-1:-1;3188:49:68;1442:42;632:46320;;-1:-1:-1;;;8866:53:68;;7074:15;632:46320;8866:53;;632:46320;3402:4;1590:14:0;1049:42:68;;632:46320;;1590:14:0;;632:46320:68;;;;;;;;-1:-1:-1;;;;;632:46320:68;8866:53;;;;;;;;632:46320;-1:-1:-1;632:46320:68;;-1:-1:-1;;;8930:71:68;;808:42;632:46320;8930:71;;632:46320;-1:-1:-1;;1590:14:0;1442:42:68;;632:46320;1590:14:0;632:46320:68;;;8930:71;-1:-1:-1;;;;;;;;;;;8930:71:68;;;;;;;;632:46320;-1:-1:-1;632:46320:68;;-1:-1:-1;;;9012:71:68;;808:42;632:46320;9012:71;;632:46320;-1:-1:-1;;1590:14:0;1442:42:68;;632:46320;1590:14:0;632:46320:68;;;9012:71;-1:-1:-1;;;;;;;;;;;9012:71:68;;;;;;;;632:46320;9094:53;-1:-1:-1;;;;;;;;;;;9094:53:68;;;;632:46320;;;1590:14:0;;;9094:53:68;;808:42;632:46320;9094:53;;632:46320;;1590:14:0;1049:42:68;;;7009:9:8;632:46320:68;1049:42;;632:46320;-1:-1:-1;;;2632:20:68;632:46320;;1049:42;9094:53;;2949:49;9094:53;;-1:-1:-1;;;;;;;;;;;9094:53:68;;;;;;;;632:46320;-1:-1:-1;2779:6:68;793:59;-1:-1:-1;;;;;632:46320:68;-1:-1:-1;;;;;;;;;;;9157:50:68;;;;632:46320;;1590:14:0;;;;9157:50:68;;632:46320;9157:50;;632:46320;;1590:14:0;1049:42:68;;;;632:46320;1049:42;;632:46320;-1:-1:-1;;;2632:20:68;632:46320;;1049:42;9157:50;;2949:49;9157:50;;-1:-1:-1;;;;;;;;;;;9157:50:68;;;;;;;;632:46320;-1:-1:-1;2675:166:68;1049:42;-1:-1:-1;;;;;632:46320:68;-1:-1:-1;;;;;;;;;;;9217:51:68;;;;632:46320;;1590:14:0;;;;9217:51:68;;632:46320;9217:51;;632:46320;;1590:14:0;1049:42:68;;;;632:46320;1049:42;;632:46320;-1:-1:-1;;;2632:20:68;632:46320;;1049:42;9217:51;;2949:49;9217:51;;-1:-1:-1;;;;;;;;;;;9217:51:68;;;;;;;;632:46320;9278:48;;-1:-1:-1;;;;;;;;;;;9278:48:68;;;;632:46320;;;1590:14:0;;;9278:48:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;9278:48;;632:46320;;1590:14:0;1364:42:68;;;6854:12:8;632:46320:68;1364:42;;632:46320;-1:-1:-1;;;2632:20:68;632:46320;;1364:42;9278:48;;2949:49;9278:48;;-1:-1:-1;;;;;;;;;;;9278:48:68;;;;;;;;632:46320;9336:34;;-1:-1:-1;;;;;;;;;;;9336:34:68;;;;632:46320;;;1590:14:0;;;9336:34:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;9336:34;;632:46320;;1590:14:0;1364:42:68;;;;632:46320;1364:42;;632:46320;-1:-1:-1;;;2632:20:68;632:46320;;1364:42;9336:34;;2949:49;9336:34;;-1:-1:-1;;;;;;;;;;;9336:34:68;;;;;;;;632:46320;9380:122;;-1:-1:-1;;;;;;;;;;;9380:122:68;;;;632:46320;;;1590:14:0;;;9380:122:68;;1271:42;632:46320;9380:122;;632:46320;;1590:14:0;1271:42:68;;;2675:166;632:46320;1271:42;;632:46320;1271:42;2632:20;632:46320;;1271:42;-1:-1:-1;;;2949:49:68;1271:42;;;9380:122;;;;;-1:-1:-1;;;;;;;;;;;9380:122:68;;;;;;;;632:46320;9512:120;;-1:-1:-1;;;;;;;;;;;9512:120:68;;;;632:46320;;;1590:14:0;;;9512:120:68;;1590:42;632:46320;9512:120;;632:46320;;1590:14:0;:42:68;;;:14:0;632:46320:68;1590:42;;632:46320;1590:42;2632:20;632:46320;;1590:42;-1:-1:-1;;;2949:49:68;1590:42;;;9512:120;;9380:122;9512:120;;-1:-1:-1;;;;;;;;;;;9512:120:68;;;;;;;;632:46320;9642:36;;-1:-1:-1;;;;;;;;;;;9642:36:68;;;;632:46320;;;1590:14:0;;;9642:36:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;9642:36;;632:46320;;1590:14:0;:42:68;;;;632:46320;1590:42;;632:46320;-1:-1:-1;;;2632:20:68;632:46320;;1590:42;9642:36;;2949:49;9642:36;;-1:-1:-1;;;;;;;;;;;9642:36:68;;;;;;;;632:46320;9688:34;;-1:-1:-1;;;;;;;;;;;9688:34:68;;;;632:46320;;;1590:14:0;;;9688:34:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;9688:34;;632:46320;;1590:14:0;:42:68;;;1364;632:46320;1590:42;;632:46320;-1:-1:-1;;;2632:20:68;632:46320;;1590:42;9688:34;;2949:49;9688:34;;-1:-1:-1;;;;;;;;;;;9688:34:68;;;;;;;;632:46320;9732:126;;-1:-1:-1;;;;;;;;;;;9732:126:68;;;;632:46320;;;1590:14:0;;;9732:126:68;;1906:42;632:46320;9732:126;;632:46320;;1590:14:0;1906:42:68;;;2890:49;632:46320;1906:42;;632:46320;1906:42;2632:20;632:46320;;1906:42;-1:-1:-1;;;2949:49:68;1906:42;;;9732:126;;9380:122;9732:126;;-1:-1:-1;;;;;;;;;;;9732:126:68;;;;;;;;632:46320;9868:34;;-1:-1:-1;;;;;;;;;;;9868:34:68;;;;632:46320;;;1590:14:0;;;9868:34:68;;-1:-1:-1;;;;;;;;;;;632:46320:68;9868:34;;632:46320;;1590:14:0;1906:42:68;;;1364;632:46320;1906:42;;632:46320;-1:-1:-1;;;2632:20:68;632:46320;;1906:42;9868:34;;2949:49;9868:34;;-1:-1:-1;;;;;;;;;;;9868:34:68;;;;;;;;632:46320;9912:38;;-1:-1:-1;;;;;;;;;;;9912:38:68;;;;632:46320;;;1590:14:0;;;9912:38:68;;2064:42;632:46320;9912:38;;632:46320;;1590:14:0;2064:42:68;;;;632:46320;2064:42;;632:46320;-1:-1:-1;;;2632:20:68;632:46320;;2064:42;9912:38;;2949:49;9912:38;;-1:-1:-1;;;;;;;;;;;9912:38:68;;;;;;;;632:46320;9960:56;;-1:-1:-1;;;;;;;;;;;9960:56:68;;;;632:46320;;-1:-1:-1;;;9960:56:68;;632:46320;;;;;9960:56;632:46320;9960:56;;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;;;9960:56:68;;;;;;;;632:46320;10026:56;;-1:-1:-1;;;;;;;;;;;10026:56:68;;;;632:46320;;-1:-1:-1;;;10026:56:68;;632:46320;;;;;10026:56;632:46320;10026:56;;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;;;10026:56:68;;;;;;;;632:46320;10092:28;;-1:-1:-1;;;;;;;;;;;10092:28:68;;;;632:46320;;;1590:14:0;;;10092:28:68;;1124:42;632:46320;10092:28;;632:46320;;1590:14:0;2161:42:68;;;1590:14:0;632:46320:68;2161:42;;632:46320;-1:-1:-1;;;2632:20:68;632:46320;;2161:42;10092:28;;2949:49;10092:28;;-1:-1:-1;;;;;;;;;;;10092:28:68;;;;;;;;632:46320;;10092:28;;;;;:::i;:::-;632:46320;;10092:28;632:46320;10026:56;;;;;:::i;:::-;632:46320;;10026:56;;;;9960;;;;;:::i;:::-;632:46320;;9960:56;;;;9912:38;;;;;:::i;:::-;632:46320;;9912:38;;;;9868:34;;;;;:::i;:::-;632:46320;;9868:34;;;;9732:126;;;;;:::i;:::-;632:46320;;9732:126;;;;9688:34;;;;;:::i;:::-;632:46320;;9688:34;;;;9642:36;;;;;:::i;:::-;632:46320;;9642:36;;;;9512:120;;;;;:::i;:::-;632:46320;;9512:120;;;;9380:122;;;;;:::i;:::-;632:46320;;9380:122;;;;9336:34;;;;;:::i;:::-;632:46320;;9336:34;;;;9278:48;;;;;:::i;:::-;632:46320;;9278:48;;;;9217:51;;;;;:::i;:::-;632:46320;;9217:51;;;;;632:46320;;9157:50;;;;;:::i;:::-;632:46320;;9157:50;;;;9094:53;;;;;:::i;:::-;632:46320;;9094:53;;;;9012:71;;;1590:14:0;9012:71:68;1590:14:0;9012:71:68;;;;;;;:::i;:::-;;;8930;;;1590:14:0;8930:71:68;1590:14:0;8930:71:68;;;;;;;:::i;:::-;;;8866:53;1590:14:0;8866:53:68;;1590:14:0;8866:53:68;;;;;;1590:14:0;8866:53:68;;;:::i;:::-;;;1590:14:0;;;;;8866:53:68;;;;;-1:-1:-1;8866:53:68;;8763:55;1590:14:0;8763:55:68;;1590:14:0;8763:55:68;;;;;;1590:14:0;8763:55:68;;;:::i;:::-;;;1590:14:0;;;;;8763:55:68;;;;;-1:-1:-1;8763:55:68;;8632:69;;;1590:14:0;8632:69:68;1590:14:0;8632:69:68;;;;;;;:::i;:::-;;;8504;;;1590:14:0;8504:69:68;1590:14:0;8504:69:68;;;;;;;:::i;:::-;;;16720:176:8;632:46320:68;16769:41:8;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;632:46320:68;;-1:-1:-1;;;16769:41:8;;-1:-1:-1;;;;;632:46320:68;;;;16769:41:8;;632:46320:68;12810:59:8;;;632:46320:68;;;;12810:59:8;;;632:46320:68;;;;;;12810:59:8;;;16769:41;12810:59;16724:29;7074:15:68;16736:17:8;;;;16724:29;;;16587:43;;;;;:::i;:::-;632:46320:68;;16587:43:8;;;;16424:32;;;;;1590:14:0;16424:32:8;;1590:14:0;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;;;;:::i;:::-;16021:3;2260:42:68;16021:3:8;2260:42:68;;;;632:46320;;;;;;;-1:-1:-1;;;16314:19:8;;7505:10;632:46320:68;;;;16314:19:8;;632:46320:68;;;16314:19:8;632:46320:68;1590:14:0;632:46320:68;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;12810:59;16170:185;16314:19;1590:14:0;16314:19:8;;;;;15938:460;632:46320:68;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;632:46320:68;12810:59:8;;;-1:-1:-1;;;1984:42:68;12810:59:8;;;632:46320:68;;;;;;12810:59:8;;;632:46320:68;;;;;;;;16170:185:8;;27501:38:3;;16170:185:8;;;;;;:::i;:::-;7074:15:68;16103:21:8;12810:59;;;15938:460;;;;;;;16314:19;;;;;;;;;;;;;:::i;:::-;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;632:46320:68;-1:-1:-1;;;632:46320:68;;;;;1590:14:0;632:46320:68;;16724:29:8;3409:17:68;16736::8;;;;16724:29;;;16587:43;;;;;:::i;:::-;632:46320:68;;16587:43:8;;;;16424:32;;;;;1590:14:0;16424:32:8;;1590:14:0;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;;;;:::i;:::-;16021:3;2260:42:68;16021:3:8;2260:42:68;;;;632:46320;;;;;;;-1:-1:-1;;;16314:19:8;;7505:10;632:46320:68;;;;16314:19:8;;632:46320:68;;;16314:19:8;632:46320:68;1590:14:0;632:46320:68;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;12810:59;16170:185;16314:19;1590:14:0;16314:19:8;;;;;632:46320:68;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;632:46320:68;12810:59:8;;;-1:-1:-1;;;1984:42:68;12810:59:8;;;632:46320:68;;;;;;12810:59:8;;;632:46320:68;;;;;;;;16170:185:8;;27501:38:3;;16170:185:8;;;;;;:::i;:::-;3409:17:68;16103:21:8;12810:59;;;15938:460;;;;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;7930:299:68;1590:14:0;7930:299:68;;1590:14:0;7930:299:68;;;;;;1590:14:0;7930:299:68;;;:::i;:::-;;;1590:14:0;;;;;7930:299:68;;;;;-1:-1:-1;7930:299:68;;7621:298;1590:14:0;7621:298:68;;1590:14:0;7621:298:68;;;;;;1590:14:0;7621:298:68;;;:::i;:::-;;;1590:14:0;;;;;7621:298:68;;;;;-1:-1:-1;7621:298:68;;7301:309;1590:14:0;7301:309:68;;1590:14:0;7301:309:68;;;;;;1590:14:0;7301:309:68;;;:::i;:::-;;;1590:14:0;;;;;7301:309:68;;;;;-1:-1:-1;7301:309:68;;7150:59;1590:14:0;7150:59:68;;1590:14:0;7150:59:68;;;;;;1590:14:0;7150:59:68;;;:::i;:::-;;;1590:14:0;;;;;7150:59:68;;;;;-1:-1:-1;7150:59:68;;7052:53;1590:14:0;7052:53:68;;1590:14:0;7052:53:68;;;;;;1590:14:0;7052:53:68;;;:::i;:::-;;;1590:14:0;;;;;7052:53:68;;;;;-1:-1:-1;7052:53:68;;6956:52;1590:14:0;6956:52:68;;1590:14:0;6956:52:68;;;;;;1590:14:0;6956:52:68;;;:::i;:::-;;;1590:14:0;;;;;6956:52:68;;;;;-1:-1:-1;6956:52:68;;6833:71;;;1590:14:0;6833:71:68;1590:14:0;6833:71:68;;;;;;;:::i;:::-;;;6753:69;;;1590:14:0;6753:69:68;1590:14:0;6753:69:68;;;;;;;:::i;:::-;;;6673;;;1590:14:0;6673:69:68;1590:14:0;6673:69:68;;;;;;;:::i;:::-;;;6297:196;;;;;:::i;:::-;632:46320;;6297:196;;;;;632:46320;;;6026:195;;;;;:::i;:::-;632:46320;;6026:195;;;;5755;;;;;:::i;:::-;632:46320;;5755:195;;;;5443:236;;;;;:::i;:::-;632:46320;;5443:236;;;;5367:66;;;1590:14:0;5367:66:68;1590:14:0;5367:66:68;;;;;;;:::i;:::-;;;5072:236;;;;;:::i;:::-;632:46320;;5072:236;;;;4996:66;;;1590:14:0;4996:66:68;1590:14:0;4996:66:68;;;;;;;:::i;:::-;;;4705:224;;;;;:::i;:::-;632:46320;;4705:224;;;;4470;;;;;:::i;:::-;632:46320;;4470:224;;;;4193:201;;;;;:::i;:::-;632:46320;;4193:201;;;;3993:189;;;;;:::i;:::-;632:46320;;3993:189;;;;3928:54;;;1590:14:0;3928:54:68;1590:14:0;3928:54:68;;;;;;;:::i;:::-;;;3815;;;1590:14:0;3815:54:68;1590:14:0;3815:54:68;;;;;;;:::i;:::-;;;3691:58;;;1590:14:0;3691:58:68;1590:14:0;3691:58:68;;;;;;;:::i;:::-;;;3626:55;;;1590:14:0;3626:55:68;1590:14:0;3626:55:68;;;;;;;:::i;:::-;;;16724:29:8;3594:21:68;16736:17:8;;;;16724:29;;;16587:43;;;;;:::i;:::-;632:46320:68;;16587:43:8;;;;16424:32;;;;;1590:14:0;16424:32:8;;1590:14:0;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;;;;:::i;:::-;16021:3;2260:42:68;16021:3:8;2260:42:68;;;;632:46320;;;;;;;-1:-1:-1;;;16314:19:8;;7505:10;632:46320:68;;;;16314:19:8;;632:46320:68;;;16314:19:8;632:46320:68;1590:14:0;632:46320:68;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;12810:59;16170:185;16314:19;1590:14:0;16314:19:8;;;;;632:46320:68;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;632:46320:68;12810:59:8;;;-1:-1:-1;;;1984:42:68;12810:59:8;;;632:46320:68;;;;;;12810:59:8;;;632:46320:68;;;;;;;;16170:185:8;;27501:38:3;;16170:185:8;;;;;;:::i;:::-;3594:21:68;16103::8;12810:59;;;15938:460;;;;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;16724:29;3533:17:68;16736::8;;;;16724:29;;;16587:43;;;;;:::i;:::-;632:46320:68;;16587:43:8;;;;16424:32;;;;;1590:14:0;16424:32:8;;1590:14:0;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;;;;:::i;:::-;16021:3;2260:42:68;16021:3:8;2260:42:68;;;;632:46320;;;;;;;-1:-1:-1;;;16314:19:8;;7505:10;632:46320:68;;;;16314:19:8;;632:46320:68;;;16314:19:8;632:46320:68;1590:14:0;632:46320:68;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;12810:59;16170:185;16314:19;1590:14:0;16314:19:8;;;;;632:46320:68;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;632:46320:68;12810:59:8;;;-1:-1:-1;;;1984:42:68;12810:59:8;;;632:46320:68;;;;;;12810:59:8;;;632:46320:68;;;;;;;;16170:185:8;;27501:38:3;;16170:185:8;;;;;;:::i;:::-;3533:17:68;16103:21:8;12810:59;;;15938:460;;;;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;16724:29;3409:17:68;16736::8;;;;16724:29;;;16587:43;;;;;:::i;:::-;632:46320:68;;16587:43:8;;;;16424:32;;;;;1590:14:0;16424:32:8;;1590:14:0;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;;;;:::i;:::-;16021:3;2260:42:68;16021:3:8;2260:42:68;;;;632:46320;;;;;;;-1:-1:-1;;;16314:19:8;;7505:10;632:46320:68;;;;16314:19:8;;632:46320:68;;;16314:19:8;632:46320:68;1590:14:0;632:46320:68;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;12810:59;16170:185;16314:19;1590:14:0;16314:19:8;;;;;632:46320:68;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;632:46320:68;12810:59:8;;;-1:-1:-1;;;1984:42:68;12810:59:8;;;632:46320:68;;;;;;12810:59:8;;;632:46320:68;;;;;;;;16170:185:8;;27501:38:3;;16170:185:8;;;;;;:::i;:::-;3409:17:68;16103:21:8;12810:59;;;15938:460;;;;;;;16314:19;;;;;;;;;;;;;:::i;:::-;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;3247:49:68;;;;;:::i;:::-;632:46320;;3247:49;;;;3204:33;632:46320;;;1590:14:0;;;;;;;;3204:33:68;-1:-1:-1;;;632:46320:68;;;;;1590:14:0;632:46320:68;;3096:51;;;;;:::i;:::-;632:46320;;3096:51;;;;2949:49;;;;632:46320;2949:49;;:::i;:::-;632:46320;2949:49;;;;632:46320;;1590:14:0;632:46320:68;1590:14:0;;;;;2906:33:68;632:46320;;;;;;;;1590:14:0;632:46320:68;;2612:52;1590:14:0;2612:52:68;;1590:14:0;2612:52:68;;;;;;1590:14:0;2612:52:68;;;:::i;:::-;;;1590:14:0;;;;;2612:52:68;;;;;-1:-1:-1;2612:52:68;;2632:20;;;;;;632:46320;2632:20;;;;;;:::i;:::-;;;;632:46320;;;;;;-1:-1:-1;;632:46320:68;;;;;;:::i;:::-;;;735:10:34;;9813:19:28;9809:89;;-1:-1:-1;;;;;632:46320:68;;9911:21:28;;9907:90;;735:10:34;632:46320:68;;10006:11:28;632:46320:68;;;;;;;;;;;;;;;;;;;;10085:31:28;632:46320:68;735:10:34;10085:31:28;;632:46320:68;;;;;;;9907:90:28;9955:31;;;632:46320:68;9955:31:28;632:46320:68;;;;;9955:31:28;9809:89;9855:32;;;632:46320:68;9855:32:28;632:46320:68;;;;;9855:32:28;632:46320:68;;;;;;-1:-1:-1;;632:46320:68;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;632:46320:68;;;;;1856:5:28;632:46320:68;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1856:5:28;632:46320:68;;;;;;;-1:-1:-1;632:46320:68;;;;;;;-1:-1:-1;632:46320:68;;-1:-1:-1;632:46320:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:46320:68;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:46320:68;;-1:-1:-1;632:46320:68;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:46320:68;;;;;;;;-1:-1:-1;;632:46320:68;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;632:46320:68;;;;;;;:::o;:::-;2260:42;632:46320;;;;;-1:-1:-1;;;;;632:46320:68;;;;;;;:::o;:::-;;;27501:38:3;;632:46320:68;;;;;;;;-1:-1:-1;;;;;632:46320:68;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;632:46320:68;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;632:46320:68;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;632:46320:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:46320:68;;;;;;;;;;;;;:::o;:::-;27501:38:3;;;;;632:46320:68;27501:38:3;632:46320:68;;27501:38:3;;;632:46320:68;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;632:46320:68;;;;;;;;;;;;;;;;;;;;7505:10:8;632:46320:68;;;;;;7505:10:8;-1:-1:-1;632:46320:68;;-1:-1:-1;632:46320:68;;;-1:-1:-1;632:46320:68;:::o;:::-;;;;;;;;;;;;;534:59:65;632:46320:68;;;;;;534:59:65;-1:-1:-1;632:46320:68;;-1:-1:-1;632:46320:68;;;-1:-1:-1;632:46320:68;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;632:46320:68;;;;;;;;-1:-1:-1;632:46320:68;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;632:46320:68;;;;;;;;;:::o;523:5:65:-;;;;;;;:::o;:::-;632:46320:68;;;523:5:65;;;;;;;;8534:180;632:46320:68;;523:5:65;;;;;;;;;;;;;;;8690:17;8655:52;8690:17;;632:46320:68;8655:52:65;;:::i;:::-;8534:180;:::o;523:5::-;632:46320:68;;;-1:-1:-1;523:5:65;;;;;-1:-1:-1;523:5:65;1590:14:0;-1:-1:-1;;;;;1590:14:0;;;;632:46320:68;;-1:-1:-1;;632:46320:68;1590:14:0;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;1590:14:0;;;;;;;;;;;;;;;;;;;:::i;:::-;632:46320:68;;;;;;;:::i;:::-;1590:14:0;;;;;;;;;;;;-1:-1:-1;1590:14:0;;;;;;;;632:46320:68;;;;;1590:14:0;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;632:46320:68;1590:14:0:o;1442:42:68:-;;;;;;;;;;632:46320;;;;;;;1442:42;:::o;1049:::-;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;632:46320:68;;;;;1049:42;;;;632:46320;1049:42;;;632:46320;;;;1049:42;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;632:46320:68;;;;;;1049:42;;;632:46320;1049:42;;;632:46320;;;;1049:42;;;;;;;;;;;:::o;2161:::-;;;-1:-1:-1;;;;;;;;;;;632:46320:68;;2161:42;;;;;;;;;632:46320;-1:-1:-1;;;632:46320:68;;;2161:42;;;:::o;2260:::-;;;;;;;;;;;-1:-1:-1;;;;;2260:42:68;;;;;;;;;;;;;;;;;;;:::i;:::-;632:46320;;;;;;;:::i;:::-;2260:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;1590:14:0;;2260:42:68;;;;;;;;;;;632:46320;;2260:42;;;;;;:::o;:::-;632:46320;;26313:13;2260:42;;;;;;;:::o;:::-;632:46320;;2260:42;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;632:46320;;;;:::i;:::-;2260:42;;;1590:14:0;;;2260:42:68;;;1590:14:0;2260:42:68;;;:::o;:::-;;;;;;;;;;;632:46320;;;;;;;:::i;:::-;1590:14:0;;2260:42:68;;;;;1590:14:0;2260:42:68;;;;;;:::i;:::-;632:46320;2260:42;;;;:::o;:::-;632:46320;;;-1:-1:-1;;;;;632:46320:68;;;2260:42;;;632:46320;;;2260:42;;;632:46320;-1:-1:-1;2260:42:68;;;;;;;632:46320;;;;2260:42;;;:::o;:::-;;;;;;;;;;:::o;632:46320::-;;;;;;;;;;;-1:-1:-1;;;;;632:46320:68;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;2260:42;;;;632:46320;;-1:-1:-1;;;;;;;;;;;632:46320:68;;;;-1:-1:-1;;;;;;;;;;;632:46320:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;1243:204:1;1302:7;632:46320:68;;;;;;;1325:14:1;:::o;1298:143::-;632:46320:68;;;1590:14:0;;;1377:39:1;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;632:46320:68;192:59:1;;;;;;632:46320:68;192:59:1;1377:39;;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;;;;;632:46320:68;1377:39:1;;;1298:143;1377:53;;;1370:60;:::o;1377:39::-;;;192:59;1377:39;;192:59;1377:39;;;;;;1590:14:0;1377:39:1;;;:::i;:::-;;;1590:14:0;;;;;1377:39:1;;;;;;-1:-1:-1;1377:39:1;;632:46320:68;;;;;;;;;;;-1:-1:-1;;;;;632:46320:68;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;46475:475;632:46320;;-1:-1:-1;;;46578:23:68;;;632:46320;46578:23;632:46320;-1:-1:-1;;;;;;;;;;;46578:23:68;;;;;;-1:-1:-1;46578:23:68;;;46475:475;632:46320;;;;46559:42;46691:1;46680:12;;46676:78;;46475:475;46778:2;46767:13;;46763:94;;46475:475;632:46320;;;;;;;;46475:475;:::o;46763:94::-;-1:-1:-1;;2260:42:68;;;-1:-1:-1;2260:42:68;;;;46763:94;;;46676:78;3663:17;-1:-1:-1;;2260:42:68;;;;;;;46676:78;;;46578:23;;;;;;;;;;;;;;;;:::i;:::-;;;632:46320;;;;;;;;;;;;;46578:23;;;;;;-1:-1:-1;46578:23:68;;46475:475;632:46320;;-1:-1:-1;;;46578:23:68;;;632:46320;46578:23;632:46320;-1:-1:-1;;;;;;;;;;;46578:23:68;;;;;;-1:-1:-1;46578:23:68;;;632:46320;;;;46559:42;46691:1;46680:12;;46676:78;;46778:2;46767:13;;46763:94;;632:46320;;;;;;;;46475:475;:::o;:::-;632:46320;;-1:-1:-1;;;46578:23:68;;;632:46320;46578:23;632:46320;-1:-1:-1;;;;;;;;;;;46578:23:68;;;;;;-1:-1:-1;46578:23:68;;;632:46320;;;;46559:42;46691:1;46680:12;;46676:78;;46778:2;46767:13;;46763:94;;632:46320;;;;;;;;46475:475;:::o;:::-;632:46320;;-1:-1:-1;;;46578:23:68;;;632:46320;46578:23;632:46320;-1:-1:-1;;;;;;;;;;;46578:23:68;;;;;;-1:-1:-1;46578:23:68;;;632:46320;;;;46559:42;46691:1;46680:12;;46676:78;;46778:2;46767:13;;46763:94;;632:46320;;;;;;;;46475:475;:::o;:::-;632:46320;;-1:-1:-1;;;46578:23:68;;;632:46320;46578:23;632:46320;-1:-1:-1;;;;;;;;;;;46578:23:68;;;;;;-1:-1:-1;46578:23:68;;;632:46320;;;;46559:42;46691:1;46680:12;;46676:78;;46778:2;46767:13;;46763:94;;632:46320;;;;;;;;46475:475;:::o;:::-;632:46320;;-1:-1:-1;;;46578:23:68;;;632:46320;46578:23;632:46320;-1:-1:-1;;;;;;;;;;;46578:23:68;;;;;;-1:-1:-1;46578:23:68;;;632:46320;;;;46559:42;46691:1;46680:12;;46676:78;;46778:2;46767:13;;46763:94;;632:46320;;;;;;;;46475:475;:::o;:::-;632:46320;;-1:-1:-1;;;46578:23:68;;632:46320;46578:23;;632:46320;;46578:23;;632:46320;;-1:-1:-1;;;;;632:46320:68;46578:23;;;;;;-1:-1:-1;46578:23:68;;;632:46320;;;;46559:42;46691:1;46680:12;;46676:78;;46778:2;46767:13;;46763:94;;632:46320;;;;;;;;46475:475;:::o;2270:110:1:-;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;632:46320:68;;1590:14:0;;;;2349:24:1;;;;;632:46320:68;;;;;-1:-1:-1;2349:24:1;;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;;;;;2270:110;:::o;2349:24::-;-1:-1:-1;2349:24:1;;;:::i;:::-;2270:110::o;46277:192:68:-;-1:-1:-1;;;;;;;;;;;46430:32:68;;;;632:46320;;1590:14:0;;;46430:32:68;;46447:1;46430:32;;;632:46320;46447:1;632:46320;;;;46447:1;46430:32;;;;-1:-1:-1;;;;;;;;;;;46430:32:68;;;;;;;;46277:192;:::o;13112:110:1:-;-1:-1:-1;;;;;;;;;;;13191:24:1;;;;632:46320:68;;1590:14:0;;;;13191:24:1;;;;;632:46320:68;;;;;;;13191:24:1;;;-1:-1:-1;;;;;;;;;;;13191:24:1;;;;;;;;13112:110;:::o;5393:300:28:-;-1:-1:-1;;;;;632:46320:68;;5476:18:28;;5472:86;;-1:-1:-1;;;;;632:46320:68;;5571:16:28;;5567:86;;632:46320:68;5492:1:28;632:46320:68;6307:9:28;632:46320:68;;;5492:1:28;632:46320:68;;6340:19:28;;;6336:115;;632:46320:68;7083:25:28;632:46320:68;6307:9:28;632:46320:68;;5492:1:28;632:46320:68;;;;;;5492:1:28;632:46320:68;;;5492:1:28;632:46320:68;;;;;5492:1:28;632:46320:68;;;;;;;;;;;;7083:25:28;5393:300::o;6336:115::-;6386:50;;;;5492:1;6386:50;;632:46320:68;;;;;;5492:1:28;6386:50;5567:86;5610:32;;;5492:1;5610:32;5492:1;5610:32;632:46320:68;2260:42;5492:1:28;5610:32;5472:86;5517:30;;;5492:1;5517:30;5492:1;5517:30;632:46320:68;2260:42;5492:1:28;5517:30;2915:199:11;16419:15:68;16409:8;3033:19:11;2915:199;3033:19;:::i;:::-;632:46320:68;9766:7:11;632:46320:68;10418:54:11;632:46320:68;;;;;;:::i;2915:199:11:-;40835:15:68;40825:8;3033:19:11;2915:199;3033:19;:::i;8720:323:65:-;632:46320:68;8906:3:65;632:46320:68;;8881:23:65;;;;;8929:15;;;;:::i;:::-;632:46320:68;;;;;;;;8929:29:65;8925:79;;632:46320:68;;8866:13:65;;8925:79;8978:11;;632:46320:68;8978:11:65;:::o;632:46320:68:-;;;;;2260:42;;;;;632:46320;2260:42;8881:23:65;;;632:46320:68;8720:323:65;:::o;:::-;632:46320:68;8906:3:65;632:46320:68;;8881:23:65;;;;;8929:15;;;;:::i;:::-;632:46320:68;;;;;;;2531:24:65;8929:29;8925:79;;632:46320:68;;8866:13:65;;8720:323;632:46320:68;8906:3:65;632:46320:68;;8881:23:65;;;;;8929:15;;;;:::i;:::-;632:46320:68;;;;;;;6005:21:65;8929:29;8925:79;;632:46320:68;;8866:13:65;;5926:434:58;632:46320:68;;6065:47:58;;;;1590:14:0;;;;6065:47:58;;632:46320:68;;;;;;6065:47:58;;;;;632:46320:68;3663:17;;1442:42;;;632:46320;6065:47:58;;;;;;;:::i;:::-;8511:25;;-1:-1:-1;;;;;632:46320:68;;;-1:-1:-1;;;;;632:46320:68;8511:25:58;;;;;:::i;:::-;8553:81;;;5926:434;8553:127;;;;5926:434;6127:45;;6123:231;;5926:434;;;:::o;6123:231::-;6232:43;6330:12;632:46320:68;;;1590:14:0;;;;6065:47:58;6232:43;;;6065:47;6232:43;;632:46320:68;-1:-1:-1;6065:47:58;632:46320:68;;;6065:47:58;6232:43;;;6065:47;6232:43;;:::i;:::-;;;:::i;:::-;6330:12;:::i;8553:127::-;8650:26;;;:30;;8553:127;;;:81;632:46320:68;;;;-1:-1:-1;8577:22:58;;;:56;;;;8553:81;;;;;;;8577:56;8603:30;;;6065:47;8603:30;;;;;;;;:::i;:::-;8577:56;;;;632:46320:68;;;;;1590:14:0;632:46320:68;;:::i;:::-;;;;-1:-1:-1;;;632:46320:68;;;;;;;;;:::o;1911:4479:65:-;;;;;;632:46320:68;;-1:-1:-1;;;2117:44:65;;;;;632:46320:68;;;-1:-1:-1;;;;;632:46320:68;;;2260:42;;;632:46320;;;2260:42;;;632:46320;1911:4479:65;;;;;2117:44;632:46320:68;;2260:42;;;2117:44:65;;;;;632:46320:68;2117:44:65;-1:-1:-1;;;;;632:46320:68;;2117:44:65;;;;;;:47;:44;;;;;:47;;:::i;:::-;632:46320:68;;;-1:-1:-1;632:46320:68;1590:14:0;;;632:46320:68;;2174:61:65;;632:46320:68;;;;:::i;:::-;;;;;1590:14:0;632:46320:68;;;-1:-1:-1;;;632:46320:68;;;;2174:61:65;;;:::i;:::-;1590:14:0;;632:46320:68;986:7:15;632:46320:68;44640:78:15;632:46320:68;;;1590:14:0;;632:46320:68;;:::i;:::-;;;;;1590:14:0;632:46320:68;;;-1:-1:-1;;;632:46320:68;;;;;;44640:78:15;;;;;;1590:14:0;44640:78:15;;;632:46320:68;44640:78:15;;;632:46320:68;;;;;;:::i;:::-;-1:-1:-1;;;;;632:46320:68;;;;;;;;;;;;;;;;;;;44640:78:15;-1:-1:-1;;44640:78:15;;;;;;:::i;986:7::-;632:46320:68;;-1:-1:-1;;;2467:50:65;;2117:44;2467:50;;632:46320:68;;;-1:-1:-1;;;;;632:46320:68;;;2260:42;;;632:46320;;;2260:42;;;632:46320;2117:44:65;632:46320:68;;2260:42;;;2467:50:65;632:46320:68;;-1:-1:-1;;;;;632:46320:68;;2467:50:65;;;;;;2440:125;2467:50;2117:44;2467:50;;;1911:4479;2440:125;;:::i;:::-;2260:42:68;632:46320;;;;;;;:::i;:::-;2117:44:65;2260:42:68;;;;1590:14:0;2260:42:68;;;8365:37:65;;;2117:44;8365:37;8352:50;;;:::i;:::-;2260:42:68;8433:4:65;523:5;;;8412:25;;;:::i;:::-;2260:42:68;632:46320;;965:19:15;2260:42:68;;;;1590:14:0;;2260:42:68;;523:5:65;;8420:1;523:5;2260:42:68;;632:46320;;8487:1:65;2260:42:68;;;;;;632:46320;2260:42;;;632:46320;;-1:-1:-1;;;2822:49:65;;632:46320:68;2117:44:65;632:46320:68;;2822:49:65;2260:42:68;2822:49:65;;;2117:44;2822:49;;;:::i;:::-;;632:46320:68;;-1:-1:-1;;;;;632:46320:68;;2822:49:65;;;;;;;2117:44;2822:49;;;8365:37;2917:9;2903:24;2917:9;;;:::i;:::-;;2903:24;:::i;:::-;632:46320:68;;-1:-1:-1;;2260:42:68;;;3663:17;2260:42;;;;2941:40:65;2955:25;2881:174;2955:25;;;:::i;2941:40::-;1590:14:0;;632:46320:68;;;1590:14:0;632:46320:68;;;;:::i;:::-;;;;;1590:14:0;632:46320:68;;;-1:-1:-1;;;632:46320:68;;;;2881:174:65;:::i;:::-;3152:24;3166:9;;;:::i;3152:24::-;632:46320:68;;-1:-1:-1;;2260:42:68;;;3663:17;2260:42;;;;12247:66:15;632:46320:68;3204:25:65;3190:40;3204:25;986:7:15;3204:25:65;;;:::i;3190:40::-;1590:14:0;;632:46320:68;;;;;;;;;:::i;:::-;;;;;1590:14:0;632:46320:68;;;-1:-1:-1;;;632:46320:68;;;;;;12247:66:15;;;;;;1590:14:0;12247:66:15;;;1590:14:0;;44640:78:15;12247:66;;632:46320:68;;;;;;:::i;:::-;;;;;;;;;;12247:66:15;27501:38:3;;12247:66:15;;;;;;:::i;986:7::-;1590:14:0;;632:46320:68;;3251:53:65;;632:46320:68;;;;:::i;:::-;;;;;1590:14:0;632:46320:68;;;-1:-1:-1;;;632:46320:68;;;;3251:53:65;:::i;:::-;3314:60;3323:9;;;:::i;:::-;;632:46320:68;;;1590:14:0;;;632:46320:68;;;;;;;;:::i;:::-;;;;;1590:14:0;632:46320:68;;;3314:60:65;:::i;:::-;3384:64;1590:14:0;3393:9:65;;;:::i;:::-;;:21;632:46320:68;;;;;;;;;;;:::i;:::-;;;;;1590:14:0;632:46320:68;;;3384:64:65;:::i;:::-;3480:24;3494:9;;;:::i;3480:24::-;632:46320:68;;;;3514:49:65;632:46320:68;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1590:14:0;632:46320:68;;;3514:49:65;:::i;:::-;632:46320:68;;;;;;:::i;:::-;2117:44:65;632:46320:68;;2117:44:65;1590:14:0;632:46320:68;;;;;;;;;;:::i;:::-;2117:44:65;632:46320:68;;;1590:14:0;632:46320:68;;;;;;;;;-1:-1:-1;;2260:42:68;;;;;;;3635:27:65;;;;:::i;:::-;632:46320:68;2260:42;523:5:65;;;;;;;;2117:44;632:46320:68;;;;1590:14:0;27501:38:3;;1590:14:0;;;;27501:38:3;;3624:4:65;44640:78:15;27501:38:3;;632:46320:68;44640:78:15;27501:38:3;;;632:46320:68;27501:38:3;;:::i;:::-;27484:56;;;;;;27568:30;27484:56;;:::i;27568:30::-;-1:-1:-1;6854:12:8;1984:42:68;;-1:-1:-1;;;;;;1984:42:68;-1:-1:-1;;;;;632:46320:68;;1984:42;;;27524:10:3;632:46320:68;;7009:9:8;632:46320:68;;;7009:9:8;632:46320:68;7505:10:8;632:46320:68;-1:-1:-1;;;632:46320:68;;;;;;;8420:1:65;632:46320:68;;;7505:10:8;632:46320:68;;:::i;:::-;;;6854:12:8;632:46320:68;-1:-1:-1;;;;;632:46320:68;;;7009:9:8;632:46320:68;15610:11:8;632:46320:68;;1590:14:0;;15653:34:8;;:::i;:::-;15703:15;;-1:-1:-1;;;;;632:46320:68;;;;;1747:42;632:46320;;;;;15703:15:8;;632:46320:68;;;;;;2117:44:65;632:46320:68;1590:14:0;632:46320:68;;;2117:44:65;632:46320:68;;;;1590:14:0;15735:37:8;;;;;;;;;;:::i;:::-;632:46320:68;15725:48:8;;2117:44:65;632:46320:68;1590:14:0;632:46320:68;;8487:1:65;632:46320:68;;2117:44:65;632:46320:68;15703:77:8;632:46320:68;;15702:78:8;15698:126;;8365:37:65;15857:15:8;;-1:-1:-1;;;;;632:46320:68;;;;;1747:42;632:46320;;;;;;2117:44:65;632:46320:68;1590:14:0;632:46320:68;15889:37:8;;632:46320:68;;2117:44:65;632:46320:68;;;;;15889:37:8;;;1590:14:0;15889:37:8;;;;;:::i;:::-;632:46320:68;15879:48:8;;2117:44:65;632:46320:68;1590:14:0;632:46320:68;;;2117:44:65;632:46320:68;8420:1:65;15943:15:8;;632:46320:68;15961:16:8;965:19:15;15961:16:8;;632:46320:68;15943:34:8;;;;:::i;:::-;15938:460;;8365:37:65;632:46320:68;;;;;-1:-1:-1;;;16424:32:8;;;;-1:-1:-1;;;;;632:46320:68;2117:44:65;16424:32:8;;632:46320:68;1442:42;;;632:46320;;;;;;;1590:14:0;632:46320:68;1442:42;632:46320;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;2117:44:65;16424:32:8;;;8365:37:65;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;632:46320:68;;;-1:-1:-1;;;16587:43:8;;;;-1:-1:-1;;;;;632:46320:68;2117:44:65;16587:43:8;;632:46320:68;12810:59:8;;;632:46320:68;;;;2260:42;523:5:65;;632:46320:68;;;12656:92:8;12810:59;;;632:46320:68;-1:-1:-1;632:46320:68;12810:59:8;632:46320:68;-1:-1:-1;;;;;;;;;;;;16587:43:8;;;;;;;;8365:37:65;16678:31:8;;;:::i;:::-;16724:8;;632:46320:68;;;16724:29:8;;8365:37:65;16720:176:8;;;;14785:4;;;;:::i;:::-;632:46320:68;;;1590:14:0;;;3697:13:65;;1590:14:0;2117:44:65;;;;;-1:-1:-1;;;;;;;;;;;3697:13:65;;;;;;2117:44;;3697:13;;;;8365:37;-1:-1:-1;8420:1:65;3761:3;632:46320:68;;3741:18:65;;;;;986:7:15;632:46320:68;12952:65:15;3878:14:65;;;:::i;:::-;3910:10;;;;;:::i;:::-;632:46320:68;;;;;;;1590:14:0;632:46320:68;1590:14:0;;632:46320:68;;:::i;:::-;;;;;1590:14:0;632:46320:68;;;-1:-1:-1;;;632:46320:68;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1590:14:0;12952:65:15;;;1590:14:0;;44640:78:15;12952:65;;632:46320:68;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;632:46320:68;;;;;;;:::i;:::-;;;;;;12952:65:15;27501:38:3;;12952:65:15;;;;;;:::i;986:7::-;3972:24:65;3986:9;;;;:::i;3972:24::-;986:7:15;632:46320:68;12771:66:15;4051:10:65;;;;:::i;:::-;632:46320:68;;;;;;;;;;:::i;:::-;;;;;1590:14:0;632:46320:68;;;;;;12771:66:15;;;;;;1590:14:0;12771:66:15;;;1590:14:0;;44640:78:15;12771:66;;632:46320:68;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;632:46320:68;;;;;;12771:66:15;-1:-1:-1;;12771:66:15;;;;;;:::i;986:7::-;4166:10:65;632:46320:68;4166:10:65;;4093:97;4166:10;;;;:::i;:::-;632:46320:68;;;;-1:-1:-1;;;4093:97:65;;632:46320:68;;;;;2117:44:65;4093:97;;;:::i;:::-;;2117:44;;;632:46320:68;;;;;;;4093:97:65;;;;;;;2117:44;;4093:97;;;3761:3;632:46320:68;;;523:5:65;;;;;;;;;;;;;4244:52;4335:26;4286:10;523:5;4286:10;;;;:::i;:::-;632:46320:68;523:5:65;;4244:52;:::i;:::-;632:46320:68;;;4349:11:65;;4335:26;:::i;:::-;632:46320:68;4375:60:65;632:46320:68;;;;;;;;;:::i;:::-;;;;;1590:14:0;632:46320:68;;;4375:60:65;:::i;:::-;4449;632:46320:68;;;;;;;;;:::i;:::-;;;;;1590:14:0;632:46320:68;;;4449:60:65;:::i;:::-;4523:61;632:46320:68;;;;;;;;;:::i;:::-;;;;;1590:14:0;632:46320:68;;;4523:61:65;:::i;:::-;4599:1176;;;;;1590:14:0;;632:46320:68;;;5013:164:65;;4819:176;;-1:-1:-1;;4637:164:65;;632:46320:68;-1:-1:-1;632:46320:68;;;;:::i;:::-;;;;;1590:14:0;632:46320:68;;;-1:-1:-1;;;632:46320:68;;;;;4637:164:65;;:::i;:::-;1590:14:0;;632:46320:68;;;;1590:14:0;632:46320:68;;;;:::i;:::-;;;;;1590:14:0;632:46320:68;;;;;;;;;4819:176:65;;:::i;:::-;1590:14:0;;632:46320:68;;;;1590:14:0;632:46320:68;;;;:::i;:::-;;;;;1590:14:0;632:46320:68;;;-1:-1:-1;;;632:46320:68;;;;;5013:164:65;;:::i;:::-;632:46320:68;;;1590:14:0;;;;5789:25:65;;632:46320:68;;2117:44:65;5789:25;;632:46320:68;1590:14:0;2117:44:65;44640:78:15;2117:44:65;;;-1:-1:-1;;;;;;;;;;;5789:25:65;;;;;;;8420:1;5789:25;;;4599:1176;3761:3;632:46320:68;3726:13:65;;5789:25;;;1590:14:0;5789:25:65;;;;;;;;;:::i;:::-;;;;;;632:46320:68;;;1590:14:0;2117:44:65;;1590:14:0;;;;;4599:1176:65;5407:172;632:46320:68;5216:173:65;5597:163;632:46320:68;;;:::i;:::-;5216:173:65;;;:::i;:::-;632:46320:68;;:::i;:::-;5407:172:65;;;:::i;:::-;632:46320:68;;;1590:14:0;632:46320:68;1590:14:0;;632:46320:68;;:::i;:::-;;;;;1590:14:0;632:46320:68;;;-1:-1:-1;;;632:46320:68;;;;;5597:163:65;;:::i;:::-;4599:1176;;523:5;632:46320:68;;;2117:44:65;;523:5;6854:12:8;2117:44:65;523:5;44640:78:15;2117:44:65;;523:5;4093:97;;;;632:46320:68;4093:97:65;;;;;;;;;:::i;:::-;;;;3741:18;;;;;;;;;5873:3;523:5;;;;;;;5873:3;523:5;;;;;;;;632:46320:68;;;-1:-1:-1;;;5941:50:65;;2117:44;;;;5941:50;;632:46320:68;;;-1:-1:-1;;;;;632:46320:68;;;2260:42;;;632:46320;;;;2260:42;;;632:46320;2117:44:65;;632:46320:68;523:5:65;;;;;632:46320:68;2117:44:65;;632:46320:68;;;;;;;5941:50:65;;;;;;5914:122;2117:44;;;5941:50;;;3721:2104;5914:122;;:::i;:::-;;;;6590;632:46320:68;;;;;1590:14:0;;632:46320:68;;:::i;:::-;;;;;1590:14:0;632:46320:68;;;-1:-1:-1;;;632:46320:68;;;;;6590:122:65;:::i;:::-;632:46320:68;;;;;;;;;;:::i;:::-;8420:1:65;2260:42:68;;632:46320;;-1:-1:-1;;2260:42:68;;1590:14:0;2260:42:68;;;6783:37:65;;;:::i;:::-;2260:42:68;632:46320;;;-1:-1:-1;;;6835:57:65;;2117:44;;632:46320:68;;6835:57:65;;;;;2117:44;6835:57;;;:::i;:::-;;2117:44;;;632:46320:68;;;;;;;6835:57:65;;2117:44;;6835:57;;6047:287;-1:-1:-1;6831:346:65;;8420:1;6831:346;;:::i;:::-;;;;;;;;7259:18;632:46320:68;6831:346:65;7259:18;:::i;:::-;632:46320:68;;7190:97:65;632:46320:68;;;1590:14:0;;;;;;;;;;7190:97:65;;2117:44;7190:97;;;:::i;:::-;2117:44;;7190:97;;;;-1:-1:-1;;;;;632:46320:68;7190:97:65;;2117:44;;7190:97;;6831:346;-1:-1:-1;7186:342:65;;8420:1;7186:342;;:::i;:::-;;;;;;;;6047:287;6344:39;632:46320:68;;;;;;;;:::i;:::-;;;;;1590:14:0;632:46320:68;;;6344:39:65;:::i;7186:342::-;7375:153;;:::i;:::-;;;;7186:342;;;;7375:153;2117:44;;1590:14:0;;632:46320:68;;;2117:44:65;;-1:-1:-1;7418:99:65;;2117:44;632:46320:68;;;;;:::i;:::-;;;;;1590:14:0;632:46320:68;;;-1:-1:-1;;;632:46320:68;;;;;7418:99:65;:::i;:::-;7375:153;;;7186:342;632:46320:68;;;-1:-1:-1;;;7302:61:65;;1590:14:0;2117:44:65;7302:61;;632:46320:68;;44640:78:15;632:46320:68;;;;;;;;-1:-1:-1;;;632:46320:68;;;;;;7302:61:65;7190:97;;;632:46320:68;7190:97:65;632:46320:68;7190:97:65;;;;;;;:::i;:::-;;;6831:346;7018:159;;:::i;:::-;;;;6831:346;;;;7018:159;2117:44;;1590:14:0;;632:46320:68;;;2117:44:65;;-1:-1:-1;7061:105:65;;2117:44;632:46320:68;;;;;:::i;:::-;;;;;1590:14:0;632:46320:68;;;;;;;;;7061:105:65;:::i;:::-;7018:159;;;6831:346;632:46320:68;;;-1:-1:-1;;;6907:99:65;;1590:14:0;2117:44:65;6907:99;;632:46320:68;;44640:78:15;632:46320:68;;;;;;;;;;;;;;;6907:99:65;6835:57;;;;2117:44;;;6835:57;;;;;;:::i;:::-;;;6047:287;1590:14:0;;632:46320:68;;;7738:117:65;;632:46320:68;;;;;;;:::i;:::-;;;;;1590:14:0;632:46320:68;;;-1:-1:-1;;;632:46320:68;;;;;7738:117:65;:::i;:::-;632:46320:68;;;;;;;;;;:::i;:::-;8420:1:65;2260:42:68;;632:46320;;-1:-1:-1;;2260:42:68;;1590:14:0;2260:42:68;;;7926:37:65;;;:::i;:::-;2260:42:68;632:46320;;;1590:14:0;;;;7974:57:65;;2117:44;;7974:57;;;;;;;2117:44;7974:57;;;:::i;:::-;;2117:44;;;632:46320:68;;;;;;;7974:57:65;;;;;;;632:46320:68;;8110:18:65;;7974:57;;8110:18;;:::i;:::-;632:46320:68;;8041:97:65;632:46320:68;;;1590:14:0;;;;;;;;;;8041:97:65;;2117:44;8041:97;;;:::i;:::-;2117:44;;8041:97;;;;-1:-1:-1;;;;;632:46320:68;8041:97:65;;;;;;;;6047:287;;;;8041:97;;;632:46320:68;8041:97:65;632:46320:68;8041:97:65;;;;;;;:::i;:::-;;;;;7974:57;;;;2117:44;;;7974:57;;;;;;:::i;:::-;;;5941:50;;;;;2117:44;;;5941:50;;;;;;:::i;:::-;;;;3697:13;1590:14:0;3697:13:65;;1590:14:0;3697:13:65;;;;;;1590:14:0;3697:13:65;;;:::i;:::-;;;1590:14:0;;;;;3697:13:65;;;;;;;;-1:-1:-1;3697:13:65;;16720:176:8;632:46320:68;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;632:46320:68;;;-1:-1:-1;;;16769:41:8;;2117:44:65;;16769:41:8;;-1:-1:-1;;;;;632:46320:68;2117:44:65;16769:41:8;;632:46320:68;12810:59:8;;;632:46320:68;;;;12810:59:8;;;632:46320:68;;;;;;12810:59:8;;;16769:41;2117:44:65;;;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;;;;;16720:176;632:46320:68;;;-1:-1:-1;;;16824:61:8;;1590:14:0;2117:44:65;16824:61:8;;12810:59;632:46320:68;44640:78:15;12810:59:8;;632:46320:68;12810:59:8;632:46320:68;;;12810:59:8;-1:-1:-1;;;632:46320:68;12810:59:8;;;632:46320:68;;16824:61:8;16769:41;2117:44:65;;16769:41:8;;;:::i;:::-;632:46320:68;;;;16769:41:8;;;632:46320:68;2117:44:65;;;632:46320:68;16724:29:8;2260:42:68;523:5:65;16736:17:8;;;-1:-1:-1;16724:29:8;;;;16587:43;2117:44:65;16587:43:8;;;:::i;:::-;2117:44:65;632:46320:68;;16587:43:8;;;;632:46320:68;;;1590:14:0;2117:44:65;1590:14:0;;;;;16424:32:8;;;;1590:14:0;16424:32:8;;1590:14:0;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;:::i;:::-;16021:3;2260:42:68;16021:3:8;2260:42:68;;;;632:46320;;;;;;;;-1:-1:-1;;;16314:19:8;;8420:1:65;632:46320:68;;2117:44:65;16314:19:8;;632:46320:68;-1:-1:-1;632:46320:68;44640:78:15;632:46320:68;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;16170:185;12810:59;1590:14:0;16314:19:8;8420:1:65;16314:19:8;2117:44:65;16314:19:8;;;15938:460;632:46320:68;;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;632:46320:68;;12810:59:8;;;-1:-1:-1;;;1590:14:0;;12810:59:8;;;632:46320:68;;;;;;12810:59:8;;;632:46320:68;;;2117:44:65;632:46320:68;;;;16170:185:8;;27501:38:3;;16170:185:8;;;;;;:::i;:::-;632:46320:68;523:5:65;2260:42:68;523:5:65;16103:21:8;12810:59;;;15938:460;;;12810:59;632:46320:68;;;-1:-1:-1;;;12810:59:8;;1590:14:0;2117:44:65;12810:59:8;;632:46320:68;;;;;;44640:78:15;632:46320:68;;;;:::i;16314:19:8:-;;;;;;2117:44:65;16314:19:8;;;;;;:::i;:::-;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;2822:49:65;;;;;;;2117:44;2822:49;;;;;;:::i;:::-;;;;;8365:37;8397:5;523;;;8365:37;;2467:50;;;;;;2117:44;2467:50;;;;;;:::i;:::-;;;;2117:44;;;;;;;;;;;;;:::i;632:46320:68:-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;632:46320:68;;;;:::o;:::-;;;:::o;1142:78:11:-;;;;;;;:::o;1646:1263::-;632:46320:68;1764:10:11;;;;632:46320:68;;2070:8:11;;;;;;:20;;;1646:1263;2066:34;;2126:9;;;;:::i;:::-;1049:42:68;2138:1:11;1049:42:68;;;;;;;2334:1:11;2329:6;;;:18;;;1646:1263;2325:38;;-1:-1:-1;;2377:20:11;;;;:46;;1646:1263;2373:82;;2555:7;;;;;;2593;;;;;2628:11;2593:7;;:::i;:::-;2628:11;:::i;:::-;2657:8;;;2653:24;;2700:9;;;;:::i;:::-;-1:-1:-1;;2260:42:68;;;;;;;2551:352:11;1646:1263::o;2653:24::-;2667:10;;;:::o;2551:352::-;2730:173;;;;;;;;2551:352;;;;;1646:1263::o;2730:173::-;2772:7;;;;;;2807:11;2772:7;;;:::i;2807:11::-;2836:8;;;2832:24;;2879:9;;;;:::i;:::-;2138:1;1049:42:68;;;;;;;2730:173:11;;;;;;;2373:82;2260:42:68;;;;2432:23:11;2260:42:68;;;;2432:23:11;;:::i;2377:46::-;2260:42:68;;;2401:22:11;;2377:46;;2325:38;2356:7;;;;;;;;;:::i;2329:18::-;2339:8;;;;2329:18;;2066:34;2092:8;;;;;;:::o;2070:20::-;2082:8;;;;;2070:20;;632:46320:68;;;-1:-1:-1;;;632:46320:68;;;;;;;;;;;;;;;;;;;;;;;;;6764:749:58;3256:31:33;;3304:55;;-1:-1:-1;;;;;632:46320:68;;;;2626:1:33;;;;3256:31;;2626:1;632:46320:68;3256:31:33;;;;:::i;:::-;3304:55;;:::i;:::-;632:46320:68;;7289:21:58;;7285:222;;6764:749;;:::o;7285:222::-;3256:31:33;7390:30:58;;;;;;;;;:::i;:::-;632:46320:68;;;6764:749:58:o;632:46320:68:-;;;-1:-1:-1;;;632:46320:68;;3256:31:33;632:46320:68;;;;;;;;;;;;;;-1:-1:-1;;;632:46320:68;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13228:134:1:-;-1:-1:-1;;;;;;;;;;;13326:29:1;;;;632:46320:68;;2117:44:65;632:46320:68;;;1590:14:0;;;;;;;;13326:29:1;;;;;632:46320:68;;;;;;;;;;;;;;;;:::i;:::-;13326:29:1;;-1:-1:-1;;;;;;;;;;;13326:29:1;;;;;;;;13228:134;:::o;:::-;;-1:-1:-1;;;;;;;;;;;13326:29:1;;;;;632:46320:68;13326:29:1;632:46320:68;;1590:14:0;;;;;;;;13326:29:1;;;;;;:::i;6598:121:15:-;632:46320:68;6669:42:15;986:7;6598:121;632:46320:68;;6669:42:15;;;;;;;;;;;;;;632:46320:68;;;;;;:::i;7546:145:15:-;;7629:54;986:7;7546:145;7629:54;632:46320:68;;10418:54:11;;;;;;7629::15;;;;;;;;:::i;15596:134:1:-;;-1:-1:-1;;;;;;;;;;;15694:29:1;;;;;632:46320:68;15694:29:1;632:46320:68;;1590:14:0;;;;;;;;15694:29:1;;;;;;:::i;632:46320:68:-;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;632:46320:68;;;;;;;;;;;;-1:-1:-1;;;;;632:46320:68;;;;;;;;;;;;-1:-1:-1;;;;;632:46320:68;;;;;;;-1:-1:-1;;632:46320:68;;;;;;;;;-1:-1:-1;632:46320:68;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;:::o;7846:150:15:-;7935:53;632:46320:68;7846:150:15;632:46320:68;986:7:15;7846:150;632:46320:68;;7935:53:15;;;;;;;;;;632:46320:68;7935:53:15;;;632:46320:68;;;;;;:::i;:::-;;;;-1:-1:-1;;632:46320:68;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::o;953:236:8:-;632:46320:68;1052:14:8;632:46320:68;;:::i;:::-;1052:14:8;;632:46320:68;;;;;;1109:10:8;632:46320:68;;;;;;1109:10:8;1077:1;632:46320:68;;1077:1:8;632:46320:68;;1077:1:8;632:46320:68;;;;;;;;;;;;;;:::i;:::-;;;523:5:65;;;;;;;632:46320:68;523:5:65;;;;;;;632:46320:68;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;27501:38:3;;632:46320:68;;:::i;:::-;;2260:42;632:46320;;;2260:42;1077:1:8;11360:3;632:46320:68;;11346:12:8;;;;;11391:4;;1109:10;11391:4;;;:::i;:::-;632:46320:68;;11456:84:8;523:5:65;11456:84:8;;;;;632:46320:68;11331:13:8;;11346:12;-1:-1:-1;11346:12:8;-1:-1:-1;1094:26:8:o;632:46320:68:-;;;;;1109:10:8;632:46320:68;;;;;;-1:-1:-1;632:46320:68;;;;;;;;1048:135:8;632:46320:68;;;;;;1052:14:8;632:46320:68;:::i;953:236:8:-;1052:14;;;632:46320:68;;;;;:::i;:::-;1052:21:8;;1109:10;;;;632:46320:68;;;;;;;;;;;;;;;1077:1:8;632:46320:68;;1077:1:8;632:46320:68;;1077:1:8;632:46320:68;;;;;;;;;;;;;;:::i;:::-;;;523:5:65;;;;;;;632:46320:68;523:5:65;;;;;;;632:46320:68;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;27501:38:3;;632:46320:68;;:::i;:::-;;2260:42;632:46320;;;2260:42;1077:1:8;11360:3;632:46320:68;;11346:12:8;;;;;11391:4;;1109:10;11391:4;;;:::i;:::-;632:46320:68;;11456:84:8;523:5:65;11456:84:8;;;;;632:46320:68;11331:13:8;;632:46320:68;;;;;1109:10:8;632:46320:68;;;;;;-1:-1:-1;632:46320:68;;;;;;;;1048:135:8;632:46320:68;;;;;;;;;;;:::i;1251:343:8:-;-1:-1:-1;632:46320:68;1364:48:8;1381:9;632:46320:68;1590:14:0;;1364:48:8;632:46320:68;1392:19:8;1747:42:68;1392:19:8;:::i;:::-;632:46320:68;;1364:48:8;;;;;;632:46320:68;;;;;;;;;;;;;;;;;;;;;;;;1364:48:8;;27501:38:3;;1364:48:8;;;;;;:::i;:::-;1458:12;632:46320:68;1458:29:8;;;-1:-1:-1;;;;;632:46320:68;1458:29:8;;;;;:::i;:::-;1540:11;632:46320:68;;;;523:5:65;;;;;-1:-1:-1;;;;;523:5:65;;;;;-1:-1:-1;632:46320:68;;;1364:48:8;11010:13;;:29;1364:48;;;11010:29;1364:48;11010:29;;-1:-1:-1;11049:106:8;11069:7;;;;;;1563:24;;;;;1251:343;:::o;11078:3::-;11114:10;;;;;;;;:::i;:::-;632:46320:68;;;;;;;;;1364:48:8;632:46320:68;;1540:11:8;523:5:65;;;;;-1:-1:-1;;;;;;632:46320:68;523:5:65;;11142:1:8;523:5:65;;;;;;;;632:46320:68;;;11097:47:8;11078:3;632:46320:68;11054:13:8;;;;;11010:29;;;;1251:343;;-1:-1:-1;1381:9:8;1364:48;1381:9;;;632:46320:68;1590:14:0;;1364:48:8;632:46320:68;1392:19:8;;;:::i;1364:48::-;632:46320:68;1458:12:8;;632:46320:68;1458:29:8;;;-1:-1:-1;;;;;632:46320:68;1458:29:8;;1540:11;1458:29;;:::i;:::-;1540:11;;632:46320:68;523:5:65;;;;;-1:-1:-1;;;;;523:5:65;;;;;-1:-1:-1;632:46320:68;;;1364:48:8;11010:13;;:29;1364:48;;;11010:29;1364:48;11010:29;;-1:-1:-1;11049:106:8;11069:7;;;;;;1563:24;;;;;1251:343;:::o;11078:3::-;11114:10;;;;;;;;:::i;:::-;632:46320:68;;;;;;;;;1364:48:8;632:46320:68;;1540:11:8;523:5:65;;;;;-1:-1:-1;;;;;;632:46320:68;523:5:65;;11142:1:8;523:5:65;;;;;;;;632:46320:68;;;11097:47:8;11078:3;632:46320:68;11054:13:8;;;;;11010:29;;;;4421:582:33;;4593:8;;-1:-1:-1;632:46320:68;;5674:21:33;:17;;5846:142;;;;;;5670:385;6025:19;;;5694:1;6025:19;;5694:1;6025:19;4589:408;632:46320:68;;4841:22:33;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:33;4917:24;;;-1:-1:-1;;;;;632:46320:68;;;;4917:24:33;632:46320:68;2260:42;;4917:24:33;4841:49;4867:18;;;:23;4841:49;;643:59:8;;;;;;;;;;;;;;;:::i;:::-;632:46320:68;;;;;;;:::i;:::-;643:59:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;192::1;;643::8;;;;;;;;;;4249:2493;4361:12;632:46320:68;4397:9:8;632:46320:68;4438:11:8;632:46320:68;-1:-1:-1;;;;;632:46320:68;;;;;;1590:14:0;;4481:19:8;1747:42:68;4481:19:8;:::i;:::-;4551:15;632:46320:68;;;1747:42;632:46320;;;;;;;;;;;;;;;;;;;;;;4583:37:8;;;;;;;;;;:::i;:::-;632:46320:68;4573:48:8;;632:46320:68;;;;;4438:11:8;632:46320:68;;;4551:77:8;632:46320:68;;4547:255:8;;-1:-1:-1;;;;;;;;;;;4811:11:8;;;;632:46320:68;;-1:-1:-1;;;4811:11:8;;632:46320:68;;4361:12:8;632:46320:68;;-1:-1:-1;;;;;;;;;;;4811:11:8;;;;;;;;4249:2493;4857:16;;1747:42:68;4857:16:8;:::i;:::-;632:46320:68;;;;1590:14:0;;;4911:25:8;;;4361:12;4911:25;;632:46320:68;4911:25:8;;;;;-1:-1:-1;;;;;;;;;;;4911:25:8;;;;;;;;;;;4249:2493;-1:-1:-1;632:46320:68;;4951:12:8;;4984:74;632:46320:68;;12810:59:8;;;4984:74;;632:46320:68;4361:12:8;4984:74;;643:59;632:46320:68;4911:25:8;643:59;;632:46320:68;643:59:8;632:46320:68;;;643:59:8;;;;;;4984:74;4947:1461;5094:13;5127:3;632:46320:68;;5109:16:8;;;;;5178:8;632:46320:68;5178:8:8;;5165:22;5178:8;;:::i;:::-;632:46320:68;;;-1:-1:-1;;;5165:22:8;;-1:-1:-1;;;;;632:46320:68;;4361:12:8;5165:22;;632:46320:68;1442:42;;;632:46320;;;;;;;;;1442:42;;;;;5165:22:8;;;-1:-1:-1;;;;;;;;;;;5165:22:8;;;;;;;;;;;5127:3;5209:18;;;5205:114;;5127:3;5369:8;;;;:::i;:::-;632:46320:68;4361:12:8;632:46320:68;;;-1:-1:-1;;;1978:27:8;;-1:-1:-1;;;;;632:46320:68;;;4361:12:8;1978:27;;632:46320:68;;;1442:42;;;632:46320;;;;;;;1442:42;632:46320;-1:-1:-1;;;;;;;;;;;1978:27:8;;;;;;;;;;;5127:3;2057:16;;1747:42:68;2057:16:8;:::i;:::-;2102:65;;;:29;;:65;:29;;;-1:-1:-1;;3663:17:68;2102:65:8;-1:-1:-1;;;;;;;;;;;2177:37:8;;;;632:46320:68;;-1:-1:-1;;;2177:37:8;;-1:-1:-1;;;;;632:46320:68;;;;4361:12:8;2177:37;;632:46320:68;12810:59:8;;;632:46320:68;;;12810:59:8;;;632:46320:68;;;;;;12810:59:8;632:46320:68;;-1:-1:-1;;;;;;;;;;;2177:37:8;;;;;;;;;;;2102:65;2254:16;;;1747:42:68;2254:16:8;:::i;:::-;4361:12;632:46320:68;;;;-1:-1:-1;;;;;;632:46320:68;-1:-1:-1;;;;;;;;;;;2281:43:8;;;;632:46320:68;;-1:-1:-1;;;2281:43:8;;-1:-1:-1;;;;;632:46320:68;;;;4361:12:8;2281:43;;632:46320:68;12810:59:8;;;632:46320:68;;;;12810:59:8;;;632:46320:68;;;;;;12810:59:8;632:46320:68;;-1:-1:-1;;;;;;;;;;;2281:43:8;;;;;;;;;;;2102:65;2343:46;;;;;2102:65;5341:37;;;5337:92;;5447:50;;;632:46320:68;;5520:25:8;632:46320:68;;5516:256:8;;2102:65;12275:113;;;;;;;-1:-1:-1;;12275:113:8;;;5902:57;632:46320:68;;5998:29:8;;5994:84;;632:46320:68;;6319:8:8;632:46320:68;6101:89:8;643:59;632:46320:68;;6132:37:8;;632:46320:68;;;6132:37:8;;;632:46320:68;6132:37:8;;;;;:::i;:::-;632:46320:68;6122:48:8;;6180:8;;;;:::i;:::-;632:46320:68;;;;;;;643:59:8;632:46320:68;643:59:8;;632:46320:68;;643:59:8;;632:46320:68;643:59:8;;;632:46320:68;6101:89:8;6319:8;:::i;:::-;632:46320:68;;;;;643:59:8;632:46320:68;;;;;;-1:-1:-1;;;;;632:46320:68;;;;;4438:11:8;632:46320:68;;;2260:42;;632:46320;6302:58:8;;2260:42:68;;;632:46320;6302:58:8;;2260:42:68;;;643:59:8;6302:58;;643:59;632:46320:68;643:59:8;;632:46320:68;;;1747:42;632:46320;;;;;;;;;;;;;;;;6240:37:8;;;;;;;;;;:::i;:::-;632:46320:68;6230:48:8;;632:46320:68;;;;;;;;;;;;;643:59:8;;632:46320:68;;4397:9:8;643:59;;632:46320:68;643:59:8;;;632:46320:68;;;;;643:59:8;;;;;;;;5089:1309;632:46320:68;;;1747:42;632:46320;;;;;;;;;;;;;;;;6471:37:8;;;;;;;;;;:::i;:::-;632:46320:68;6461:48:8;;632:46320:68;;;;;4438:11:8;632:46320:68;;;6439:77:8;632:46320:68;;643:59:8;;;632:46320:68;6664:15:8;632:46320:68;;1747:42;632:46320;;;;;;;;;;6696:37:8;;632:46320:68;;;;;;6696:37:8;;;632:46320:68;6696:37:8;;;;;:::i;:::-;632:46320:68;6686:48:8;;632:46320:68;;;;;4249:2493:8;:::o;643:59::-;632:46320:68;;-1:-1:-1;;;643:59:8;;632:46320:68;4361:12:8;643:59;;;;4911:25;643:59;;632:46320:68;643:59:8;632:46320:68;;;643:59:8;-1:-1:-1;;;643:59:8;;;;;;;5994:84;6051:8;;;;632:46320:68;6051:8:8;5094:13;632:46320:68;5094:13:8;;5516:256;5654:8;;3216:27;5654:8;;;;;;:::i;:::-;632:46320:68;4361:12:8;632:46320:68;;;-1:-1:-1;;;3216:27:8;;-1:-1:-1;;;;;632:46320:68;;;4361:12:8;3216:27;;632:46320:68;1442:42;;;632:46320;;;;;;;;;;;;;1442:42;;;;;3216:27:8;;;-1:-1:-1;;;;;;;;;;;3216:27:8;;;;;;;;;;;5516:256;3293:28;;;1747:42:68;3293:28:8;:::i;:::-;3372:29;;;;;1747:42:68;3372:29:8;:::i;:::-;4361:12;632:46320:68;;;;;;-1:-1:-1;;;;;632:46320:68;-1:-1:-1;;;;;;;;;;;3497:43:8;;;;632:46320:68;;-1:-1:-1;;;3497:43:8;;-1:-1:-1;;;;;632:46320:68;;;;4361:12:8;3497:43;;632:46320:68;12810:59:8;;;632:46320:68;;;;12810:59:8;;;632:46320:68;;;;;;12810:59:8;632:46320:68;;-1:-1:-1;;;;;;;;;;;3497:43:8;;;;;;;;;;;5516:256;3558:23;;;;;5516:256;5601:62;;5689:6;5516:256;5685:69;5723:8;;;;;632:46320:68;5723:8:8;;;3558:23;;-1:-1:-1;3558:23:8;;;3497:43;;;;;:::i;:::-;632:46320:68;;3497:43:8;;;;632:46320:68;;;;3497:43:8;632:46320:68;;1590:14:0;632:46320:68;;1590:14:0;;;;3497:43:8;632:46320:68;;;3216:27:8;;;;632:46320:68;3216:27:8;;;;;;;;;1590:14:0;3216:27:8;;;:::i;:::-;;;1590:14:0;;;;;3216:27:8;;;;;;;-1:-1:-1;3216:27:8;;5337:92;5402:8;;632:46320:68;5402:8:8;;;2343:46;2355:33;;;-1:-1:-1;2343:46:8;;;;2281:43;;;;;:::i;:::-;632:46320:68;;2281:43:8;;;;;632:46320:68;;1590:14:0;632:46320:68;;1590:14:0;;;;2281:43:8;632:46320:68;;;2177:37:8;;;;;:::i;:::-;632:46320:68;;2177:37:8;;;;2102:65;;;;;1978:27;;;632:46320:68;1978:27:8;;;;;;;;;1590:14:0;1978:27:8;;;:::i;:::-;;;1590:14:0;;;;;1978:27:8;;;;;;-1:-1:-1;1978:27:8;;5205:114;5256:44;;5290:8;;;;:::i;:::-;632:46320:68;;;;-1:-1:-1;;;;;632:46320:68;;;;1442:42;;;632:46320;;;;;;;;1442:42;;;;5256:44:8;;;;5205:114;;5165:22;;;;632:46320:68;5165:22:8;;;;;;;;;1590:14:0;5165:22:8;;;:::i;:::-;;;1590:14:0;;;;;5165:22:8;;;;;;;-1:-1:-1;5165:22:8;;5109:16;;;;;;4911:25;;;;;;;;;;;;:::i;:::-;;;632:46320:68;643:59:8;;;;;;;;-1:-1:-1;;;;;643:59:8;;;;;;;;;;:::i;:::-;;632:46320:68;643:59:8;;;;-1:-1:-1;;;;;643:59:8;;;;;;;;;:::i;:::-;;4911:25;;;4811:11;;;;;632:46320:68;4811:11:8;;:::i;:::-;632:46320:68;4811:11:8;;;;4547:255;4720:15;;;;;632:46320:68;;1747:42;632:46320;;;;;;;;;;4752:37:8;;632:46320:68;;;;;;4752:37:8;;;632:46320:68;4752:37:8;;;;;:::i;:::-;632:46320:68;4742:48:8;;632:46320:68;;;;;;;4713:78:8;:::o;11586:239::-;1984:42:68;;;11652:12:8;632:46320:68;;11652:12:8;632:46320:68;;;11681:9:8;632:46320:68;;11681:9:8;632:46320:68;11707:10:8;632:46320:68;11645:19:8;11707:10;632:46320:68;;;;11586:239:8;632:46320:68;11645:19:8;11734:11;632:46320:68;;;11762:25:8;632:46320:68;;11762:25:8;632:46320:68;;11804:14:8;632:46320:68;;:::i;:::-;;;;11586:239:8;:::o;632:46320:68:-;;;;;;;;;11645:19:8;11804:14;632:46320:68;11586:239:8:o;632:46320:68:-;11804:14:8;11645:19;632:46320:68;;;;;;;;;;;;;;;;11804:14:8;11645:19;632:46320:68;11645:19:8;632:46320:68;;;;11804:14:8;632:46320:68;;2270:110:1:o;632:46320:68:-;;;;;;;;;11707:10:8;11645:19;632:46320:68;;;;;;;;;;;;;;;;11645:19:8;632:46320:68;;11707:10:8;632:46320:68;;;2560:514:8;;;2695:1;2698:12;2707:3;2698:12;;;;3050:17;;;;2695:1;3050:17;2695:1;2560:514;:::o;2712:8::-;2260:42:68;2771:3:8;2260:42:68;2771:3:8;2260:42:68;;;;2824:12:8;;;632:46320:68;;;;;;-1:-1:-1;;;;;632:46320:68;-1:-1:-1;;;;;;;;;;;2815:49:8;;;;632:46320:68;;-1:-1:-1;;;2815:49:8;;-1:-1:-1;;;;;632:46320:68;;;;2824:12:8;2815:49;;632:46320:68;12810:59:8;;;632:46320:68;;;12810:59:8;;;632:46320:68;;;;-1:-1:-1;632:46320:68;12810:59:8;632:46320:68;-1:-1:-1;;;;;;;;;;;;2815:49:8;;;;;;;;2712:8;2910:16;;;;:::i;:::-;2945:30;;;2712:8;2941:90;;;632:46320:68;;2678:18:8;;2941:90;2995:21;;;632:46320:68;2995:21:8;;:::o;2945:30::-;2957:17;;;;2945:30;;;2815:49;2695:1;2815:49;;;:::i;:::-;;;;2560:514;;;4551:10;2698:12;2707:3;2698:12;;;;3050:17;;;;4551:10;3050:17;4551:10;2560:514;:::o;2712:8::-;2824:12;;;632:46320:68;;;;;-1:-1:-1;;;;;632:46320:68;-1:-1:-1;;;;;;;;;;;2815:49:8;;;;632:46320:68;;-1:-1:-1;;;2815:49:8;;-1:-1:-1;;;;;632:46320:68;;;;2824:12:8;2815:49;;632:46320:68;12810:59:8;;;632:46320:68;;;12810:59:8;;;632:46320:68;;;;-1:-1:-1;632:46320:68;12810:59:8;632:46320:68;-1:-1:-1;;;;;;;;;;;;2815:49:8;;;;;;;;2712:8;2910:16;;;;:::i;:::-;2945:30;;;2712:8;2941:90;;;632:46320:68;;2678:18:8;;2945:30;2957:17;;;;2945:30;;;2815:49;4551:10;2815:49;;;:::i;:::-;;;;632:46320:68;10003:159:11;632:46320:68;;10003:159:11;632:46320:68;;10003:159:11;;779:42;10003:159;;;632:46320:68:o","linkReferences":{}},"methodIdentifiers":{"ERC4626_sETHx()":"4c6b2e7e","ERC4626_sGOETH()":"1e1685c0","ERC4626_sUSDC()":"d8579228","IS_TEST()":"fa7626d4","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","fractionToInt((uint256,uint256))":"08c41745","name()":"06fdde03","runPoolBehaviourTest(address,bytes32[])":"d170c3cc","setUp()":"0a9254e4","stringPctgs(uint256)":"a00872f1","symbol()":"95d89b41","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testPriceFuzzBalancerV3_ERC20_ERC20_DIRECT(uint256)":"3fbb8b68","testPriceFuzzBalancerV3_ERC20_ERC20_ERC4626_SWAP_WRAP(uint256)":"42f33148","testPriceFuzzBalancerV3_ERC20_ERC20_UNDERLYING_DIRECT(uint256)":"f0898550","testPriceFuzzBalancerV3_ERC20_ERC4626_ERC20_ALTERNATIVE_SWAP_UNWRAP(uint256)":"790a2a0b","testPriceFuzzBalancerV3_ERC20_ERC4626_ERC20_SWAP_UNWRAP(uint256)":"96a2fce6","testPriceFuzzBalancerV3_ERC20_ERC4626_ERC4626_ERC20_WRAP_SWAP_UNWRAP(uint256)":"325a4265","testPriceFuzzBalancerV3_ERC20_ERC4626_ERC4626_WRAP_SWAP(uint256)":"c700ea2e","testPriceFuzzBalancerV3_ERC4626_ERC20_DIRECT(uint256)":"5090a8ce","testPriceFuzzBalancerV3_ERC4626_ERC20_ERC20_ERC4626_UNWRAP_SWAP_WRAP(uint256)":"f3869e24","testPriceFuzzBalancerV3_ERC4626_ERC20_ERC20_UNWRAP_SWAP(uint256)":"c102053a","testPriceFuzzBalancerV3_ERC4626_ERC20_ERC4626_UNWRAP_SWAP(uint256)":"d46cbfcd","testPriceFuzzBalancerV3_ERC4626_ERC4626_DIRECT(uint256)":"0eed78c4","testPriceFuzzBalancerV3_ERC4626_ERC4626_ERC20_SWAP_UNWRAP(uint256)":"cf18b43d","testSwapFuzzBalancerV3_ERC20_ERC20_DIRECT(uint256,bool)":"d7ffd44d","testSwapFuzzBalancerV3_ERC20_ERC20_ERC4626_SWAP_WRAP(uint256,bool)":"9a8ebd36","testSwapFuzzBalancerV3_ERC20_ERC20_UNDERLYING_DIRECT(uint256,bool)":"6181917e","testSwapFuzzBalancerV3_ERC20_ERC4626_ERC20_ALTERNATIVE_SWAP_UNWRAP(uint256,bool)":"d32913cc","testSwapFuzzBalancerV3_ERC20_ERC4626_ERC20_SWAP_UNWRAP(uint256,bool)":"9e8518b3","testSwapFuzzBalancerV3_ERC20_ERC4626_ERC4626_WRAP_SWAP(uint256,bool)":"0bdca2c1","testSwapFuzzBalancerV3_ERC4626_ERC20_DIRECT(uint256,bool)":"d3a14f16","testSwapFuzzBalancerV3_ERC4626_ERC20_ERC20_ERC4626_UNWRAP_SWAP_WRAP(uint256,bool)":"e198fb18","testSwapFuzzBalancerV3_ERC4626_ERC20_ERC20_UNWRAP_SWAP(uint256,bool)":"4964eb1a","testSwapFuzzBalancerV3_ERC4626_ERC20_ERC4626_UNWRAP_SWAP(uint256,bool)":"67b4dbe7","testSwapFuzzBalancerV3_ERC4626_ERC4626_DIRECT(uint256,bool)":"8c154846","testSwapFuzzBalancerV3_ERC4626_ERC4626_ERC20_SWAP_UNWRAP(uint256,bool)":"56733b91","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterAddLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterInitializeHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterRemoveLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterSwapHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AllZeroInputs\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"AllowanceExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AmountGivenZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"AmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"AmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AmpUpdateAlreadyStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AmpUpdateDurationTooShort\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AmpUpdateRateTooFast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AmplificationFactorTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AmplificationFactorTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AssetBoundsExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalanceNotSettled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeAddLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeInitializeHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeRemoveLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeSwapHookFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"BptAmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"BptAmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"BufferAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"BufferNotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BufferSharesInvalidOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BufferSharesInvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"name\":\"BufferTotalSupplyTooLow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"CallerIsNotPoolCreator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotReceiveEth\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotSwapSameToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportAddLiquidityCustom\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportDonation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportRemoveLiquidityCustom\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportUnbalancedLiquidity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DynamicSwapFeeHookFailed\",\"type\":\"error\"},{\"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\"},{\"inputs\":[],\"name\":\"ExcessiveInvalidation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeePrecisionTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedAmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedAmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedSwapLimit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"poolHooksContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolFactory\",\"type\":\"address\"}],\"name\":\"HookRegistrationFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEth\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddLiquidityKind\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRemoveLiquidityKind\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenConfiguration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenDecimals\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenType\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"InvalidUnderlyingToken\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minIssuedShares\",\"type\":\"uint256\"}],\"name\":\"IssuedSharesBelowMin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"LimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxTokens\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinTokens\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinWeight\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MultipleNonZeroInputs\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NormalizedWeightInvariant\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughBufferShares\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expectedUnderlyingAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actualUnderlyingAmount\",\"type\":\"uint256\"}],\"name\":\"NotEnoughUnderlying\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expectedWrappedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actualWrappedAmount\",\"type\":\"uint256\"}],\"name\":\"NotEnoughWrapped\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotStaticCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVaultDelegateCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"OnlyPauseGuardian\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PauseBufferPeriodDurationTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PercentageAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolAddressMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PoolCreatorFeePercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolCreatorNotRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolInRecoveryMode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotInRecoveryMode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolPauseWindowExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolFeesExceedTotalCollected\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolSwapFeePercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolYieldFeePercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QueriesDisabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QueriesDisabledPermanently\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuoteResultSpoofed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RouterNotTrusted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SenderIsNotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StandardPoolWithCreator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StaticATokenInvalidZeroShares\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapDeadline\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapFeePercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapFeePercentageTooLow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"SwapLimit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenNotRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"expectedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"actualToken\",\"type\":\"address\"}],\"name\":\"TokensMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokensNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TradeAmountTooSmall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"Unavailable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultBuffersArePaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultIsNotUnlocked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultNotPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPauseWindowDurationTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPauseWindowExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultQueriesDisabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WeightedPoolBptRateUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"WrapAmountTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongProtocolFeeControllerDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"}],\"name\":\"WrongUnderlyingToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongVaultAdminDeployment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongVaultExtensionDeployment\",\"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\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"fsig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keysHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"SlotFound\",\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"word\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mask\",\"type\":\"uint256\"}],\"name\":\"UnorderedNonceInvalidation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"WARNING_UninitedSlot\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ERC4626_sETHx\",\"outputs\":[{\"internalType\":\"contract MockSETHx\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC4626_sGOETH\",\"outputs\":[{\"internalType\":\"contract MockSGOETH\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC4626_sUSDC\",\"outputs\":[{\"internalType\":\"contract MockSUSDC\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"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\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction\",\"name\":\"price\",\"type\":\"tuple\"}],\"name\":\"fractionToInt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISwapAdapter\",\"name\":\"adapter\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"poolIds\",\"type\":\"bytes32[]\"}],\"name\":\"runPoolBehaviourTest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"stringPctgs\",\"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\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"}],\"name\":\"testPriceFuzzBalancerV3_ERC20_ERC20_DIRECT\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"}],\"name\":\"testPriceFuzzBalancerV3_ERC20_ERC20_ERC4626_SWAP_WRAP\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"}],\"name\":\"testPriceFuzzBalancerV3_ERC20_ERC20_UNDERLYING_DIRECT\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"}],\"name\":\"testPriceFuzzBalancerV3_ERC20_ERC4626_ERC20_ALTERNATIVE_SWAP_UNWRAP\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"}],\"name\":\"testPriceFuzzBalancerV3_ERC20_ERC4626_ERC20_SWAP_UNWRAP\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"}],\"name\":\"testPriceFuzzBalancerV3_ERC20_ERC4626_ERC4626_ERC20_WRAP_SWAP_UNWRAP\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"}],\"name\":\"testPriceFuzzBalancerV3_ERC20_ERC4626_ERC4626_WRAP_SWAP\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"}],\"name\":\"testPriceFuzzBalancerV3_ERC4626_ERC20_DIRECT\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"}],\"name\":\"testPriceFuzzBalancerV3_ERC4626_ERC20_ERC20_ERC4626_UNWRAP_SWAP_WRAP\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"}],\"name\":\"testPriceFuzzBalancerV3_ERC4626_ERC20_ERC20_UNWRAP_SWAP\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"}],\"name\":\"testPriceFuzzBalancerV3_ERC4626_ERC20_ERC4626_UNWRAP_SWAP\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"}],\"name\":\"testPriceFuzzBalancerV3_ERC4626_ERC4626_DIRECT\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"}],\"name\":\"testPriceFuzzBalancerV3_ERC4626_ERC4626_ERC20_SWAP_UNWRAP\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isBuy\",\"type\":\"bool\"}],\"name\":\"testSwapFuzzBalancerV3_ERC20_ERC20_DIRECT\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isBuy\",\"type\":\"bool\"}],\"name\":\"testSwapFuzzBalancerV3_ERC20_ERC20_ERC4626_SWAP_WRAP\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isBuy\",\"type\":\"bool\"}],\"name\":\"testSwapFuzzBalancerV3_ERC20_ERC20_UNDERLYING_DIRECT\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isBuy\",\"type\":\"bool\"}],\"name\":\"testSwapFuzzBalancerV3_ERC20_ERC4626_ERC20_ALTERNATIVE_SWAP_UNWRAP\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isBuy\",\"type\":\"bool\"}],\"name\":\"testSwapFuzzBalancerV3_ERC20_ERC4626_ERC20_SWAP_UNWRAP\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isBuy\",\"type\":\"bool\"}],\"name\":\"testSwapFuzzBalancerV3_ERC20_ERC4626_ERC4626_WRAP_SWAP\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isBuy\",\"type\":\"bool\"}],\"name\":\"testSwapFuzzBalancerV3_ERC4626_ERC20_DIRECT\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isBuy\",\"type\":\"bool\"}],\"name\":\"testSwapFuzzBalancerV3_ERC4626_ERC20_ERC20_ERC4626_UNWRAP_SWAP_WRAP\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isBuy\",\"type\":\"bool\"}],\"name\":\"testSwapFuzzBalancerV3_ERC4626_ERC20_ERC20_UNWRAP_SWAP\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isBuy\",\"type\":\"bool\"}],\"name\":\"testSwapFuzzBalancerV3_ERC4626_ERC20_ERC4626_UNWRAP_SWAP\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isBuy\",\"type\":\"bool\"}],\"name\":\"testSwapFuzzBalancerV3_ERC4626_ERC4626_DIRECT\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isBuy\",\"type\":\"bool\"}],\"name\":\"testSwapFuzzBalancerV3_ERC4626_ERC4626_ERC20_SWAP_UNWRAP\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AllZeroInputs()\":[{\"details\":\"Input arrays for single token add/remove liquidity operations are expected to have one non-zero value, corresponding to the token being added or removed. This error results if all entries are zero.\"}],\"AllowanceExpired(uint256)\":[{\"params\":{\"deadline\":\"The timestamp at which the allowed amount is no longer valid\"}}],\"AmountInAboveMax(address,uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total token amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\",\"tokenIn\":\"The incoming token\"}}],\"AmountOutBelowMin(address,uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\",\"tokenOut\":\"The outgoing token\"}}],\"BptAmountInAboveMax(uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total BPT amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\"}}],\"BptAmountOutBelowMin(uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\"}}],\"BufferAlreadyInitialized(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"BufferNotInitialized(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"BufferTotalSupplyTooLow(uint256)\":[{\"params\":{\"totalSupply\":\"The total supply value that was below the minimum\"}}],\"CallerIsNotPoolCreator(address,address)\":[{\"params\":{\"caller\":\"The account attempting to withdraw pool creator fees\",\"pool\":\"The pool the caller tried to withdraw from\"}}],\"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.\"}}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"FeePrecisionTooHigh()\":[{\"details\":\"Primary fee percentages are 18-decimal values, stored here in 64 bits, and calculated with full 256-bit precision. However, the resulting aggregate fees are stored in the Vault with 24-bit precision, which corresponds to 0.00001% resolution (i.e., a fee can be 1%, 1.00001%, 1.00002%, but not 1.000005%). Disallow setting fees such that there would be precision loss in the Vault, leading to a discrepancy between the aggregate fee calculated here and that stored in the Vault.\"}],\"HookAdjustedAmountInAboveMax(address,uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total token amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\",\"tokenIn\":\"The incoming token\"}}],\"HookAdjustedAmountOutBelowMin(address,uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\",\"tokenOut\":\"The outgoing token\"}}],\"HookAdjustedSwapLimit(uint256,uint256)\":[{\"params\":{\"amount\":\"The total amount in or out\",\"limit\":\"The amount of the limit that has been exceeded\"}}],\"HookRegistrationFailed(address,address,address)\":[{\"params\":{\"pool\":\"Address of the rejected pool\",\"poolFactory\":\"Address of the pool factory\",\"poolHooksContract\":\"Address of the hook contract that rejected the pool registration\"}}],\"InsufficientAllowance(uint256)\":[{\"params\":{\"amount\":\"The maximum amount allowed\"}}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"InvalidUnderlyingToken(address)\":[{\"details\":\"This should never happen, but a malicious wrapper contract might do this (e.g., in an attempt to re-initialize the buffer).\",\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"IssuedSharesBelowMin(uint256,uint256)\":[{\"details\":\"Shares issued during initialization are below the requested amount.\"}],\"LengthMismatch()\":[{\"details\":\"If the spender does not need to transfer the number of tokens permitted, the spender can request amount 0 to be transferred\"}],\"LimitExceeded(uint256)\":[{\"details\":\"The LimitExceeded error is thrown when a limit has been exceeded. E.g. the specified amount can't be traded safely.\"}],\"MultipleNonZeroInputs()\":[{\"details\":\"Input arrays for single token add/remove liquidity operations are expected to have only one non-zero value, corresponding to the token being added or removed. This error results if there are multiple non-zero entries.\"}],\"NotEnoughUnderlying(address,uint256,uint256)\":[{\"details\":\"A wrap/unwrap operation consumed more or returned less underlying tokens than it should.\"}],\"NotEnoughWrapped(address,uint256,uint256)\":[{\"details\":\"A wrap/unwrap operation consumed more or returned less wrapped tokens than it should.\"}],\"NotImplemented(string)\":[{\"details\":\"The NotImplemented error is thrown when a function is not implemented.\"}],\"NotVaultDelegateCall()\":[{\"details\":\"It can only be called by the Vault via delegatecall.\"}],\"PoolAlreadyInitialized(address)\":[{\"params\":{\"pool\":\"The already initialized pool\"}}],\"PoolAlreadyRegistered(address)\":[{\"params\":{\"pool\":\"The already registered pool\"}}],\"PoolCreatorNotRegistered(address)\":[{\"params\":{\"pool\":\"The pool with no creator\"}}],\"PoolInRecoveryMode(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolNotInRecoveryMode(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolNotInitialized(address)\":[{\"params\":{\"pool\":\"The uninitialized pool\"}}],\"PoolNotPaused(address)\":[{\"params\":{\"pool\":\"The unpaused pool\"}}],\"PoolNotRegistered(address)\":[{\"params\":{\"pool\":\"The unregistered pool\"}}],\"PoolPauseWindowExpired(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolPaused(address)\":[{\"params\":{\"pool\":\"The paused pool\"}}],\"ProtocolFeesExceedTotalCollected()\":[{\"details\":\"This occurs when the sum of the parts (aggregate swap or yield fee) is greater than the whole (total swap or yield fee). Also validated when the protocol fee controller updates aggregate fee percentages in the Vault.\"}],\"ProtocolSwapFeePercentageTooHigh()\":[{\"details\":\"Note that this is checked for both the global and pool-specific protocol swap fee percentages.\"}],\"ProtocolYieldFeePercentageTooHigh()\":[{\"details\":\"Note that this is checked for both the global and pool-specific protocol yield fee percentages.\"}],\"SenderIsNotVault(address)\":[{\"params\":{\"sender\":\"The account attempting to call a permissioned function\"}}],\"SwapFeePercentageTooHigh()\":[{\"details\":\"The Vault itself does not impose a universal minimum. Rather, it validates against the range specified by the `ISwapFeePercentageBounds` interface. and reverts with this error if it is above the maximum value returned by the pool. Pools with dynamic fees do not check these limits.\"}],\"SwapFeePercentageTooLow()\":[{\"details\":\"The Vault itself does not impose a universal minimum. Rather, it validates against the range specified by the `ISwapFeePercentageBounds` interface. and reverts with this error if it is below the minimum value returned by the pool. Pools with dynamic fees do not check these limits.\"}],\"SwapLimit(uint256,uint256)\":[{\"params\":{\"amount\":\"The total amount in or out\",\"limit\":\"The amount of the limit that has been exceeded\"}}],\"TokenAlreadyRegistered(address)\":[{\"params\":{\"token\":\"The duplicate token\"}}],\"TokenNotRegistered(address)\":[{\"params\":{\"token\":\"The unregistered token\"}}],\"TokensMismatch(address,address,address)\":[{\"params\":{\"actualToken\":\"The actual token found at that index\",\"expectedToken\":\"The correct token at a given index in the pool\",\"pool\":\"Address of the pool\"}}],\"TokensNotSorted()\":[{\"details\":\"Tokens are not sorted by address on registration. This is an optimization so that off-chain processes can predict the token order without having to query the Vault. (It is also legacy v2 behavior.)\"}],\"Unavailable(string)\":[{\"details\":\"The Unavailable error is thrown when a pool or swap is not available for unexpected reason. E.g. it was paused due to a bug.\"}],\"WrapAmountTooSmall(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"WrongUnderlyingToken(address,address)\":[{\"details\":\"This should never happen, but a malicious wrapper contract might not return the correct address. Legitimate wrapper contracts should make the asset a constant or immutable value.\",\"params\":{\"underlyingToken\":\"The underlying token returned by `asset`\",\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}]},\"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\":\"See {IERC20-allowance}.\"},\"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\":\"See {IERC20-balanceOf}.\"},\"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\":\"See {IERC20-totalSupply}.\"},\"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\":{\"errors\":{\"AfterAddLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the afterAddLiquidity hook, indicating the transaction should revert.\"}],\"AfterInitializeHookFailed()\":[{\"notice\":\"The pool has returned false to the afterInitialize hook, indicating the transaction should revert.\"}],\"AfterRemoveLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the afterRemoveLiquidity hook, indicating the transaction should revert.\"}],\"AfterSwapHookFailed()\":[{\"notice\":\"The pool has returned false to the afterSwap hook, indicating the transaction should revert.\"}],\"AllZeroInputs()\":[{\"notice\":\"No valid input was given for a single token operation.\"}],\"AllowanceExpired(uint256)\":[{\"notice\":\"Thrown when an allowance on a token has expired.\"}],\"AmountGivenZero()\":[{\"notice\":\"The user tried to swap zero tokens.\"}],\"AmountInAboveMax(address,uint256,uint256)\":[{\"notice\":\"A required amountIn exceeds the maximum limit specified for the operation.\"}],\"AmountOutBelowMin(address,uint256,uint256)\":[{\"notice\":\"The actual amount out is below the minimum limit specified for the operation.\"}],\"AmpUpdateAlreadyStarted()\":[{\"notice\":\"Amplification update operations must be done one at a time.\"}],\"AmpUpdateDurationTooShort()\":[{\"notice\":\"The amplification change duration is too short.\"}],\"AmpUpdateRateTooFast()\":[{\"notice\":\"The amplification change rate is too fast.\"}],\"AmplificationFactorTooHigh()\":[{\"notice\":\"The amplification factor is above the maximum of the range (1 - 5000).\"}],\"AmplificationFactorTooLow()\":[{\"notice\":\"The amplification factor is below the minimum of the range (1 - 5000).\"}],\"BalanceNotSettled()\":[{\"notice\":\"A transient accounting operation completed with outstanding token deltas.\"}],\"BeforeAddLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeAddLiquidity hook, indicating the transaction should revert.\"}],\"BeforeInitializeHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeInitialize hook, indicating the transaction should revert.\"}],\"BeforeRemoveLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeRemoveLiquidity hook, indicating the transaction should revert.\"}],\"BeforeSwapHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeSwap hook, indicating the transaction should revert.\"}],\"BptAmountInAboveMax(uint256,uint256)\":[{\"notice\":\"The required BPT amount in exceeds the maximum limit specified for the operation.\"}],\"BptAmountOutBelowMin(uint256,uint256)\":[{\"notice\":\"The BPT amount received from adding liquidity is below the minimum specified for the operation.\"}],\"BufferAlreadyInitialized(address)\":[{\"notice\":\"The buffer for the given wrapped token was already initialized.\"}],\"BufferNotInitialized(address)\":[{\"notice\":\"The buffer for the given wrapped token was not initialized.\"}],\"BufferSharesInvalidOwner()\":[{\"notice\":\"Buffer shares were burned from the zero address.\"}],\"BufferSharesInvalidReceiver()\":[{\"notice\":\"Buffer shares were minted to the zero address.\"}],\"BufferTotalSupplyTooLow(uint256)\":[{\"notice\":\"The total supply of a buffer can't be lower than the absolute minimum.\"}],\"CallerIsNotPoolCreator(address,address)\":[{\"notice\":\"Error raised if the wrong account attempts to withdraw pool creator fees.\"}],\"CannotReceiveEth()\":[{\"notice\":\"The contract should not receive ETH.\"}],\"CannotSwapSameToken()\":[{\"notice\":\"The user attempted to swap a token for itself.\"}],\"DoesNotSupportAddLiquidityCustom()\":[{\"notice\":\"Pool does not support adding liquidity with a customized input.\"}],\"DoesNotSupportDonation()\":[{\"notice\":\"Pool does not support adding liquidity through donation.\"}],\"DoesNotSupportRemoveLiquidityCustom()\":[{\"notice\":\"Pool does not support removing liquidity with a customized input.\"}],\"DoesNotSupportUnbalancedLiquidity()\":[{\"notice\":\"Pool does not support adding / removing liquidity with an unbalanced input.\"}],\"DynamicSwapFeeHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeSwap hook, indicating the transaction should revert.\"}],\"FeePrecisionTooHigh()\":[{\"notice\":\"Primary fee percentages result in an aggregate fee that cannot be stored with the required precision.\"}],\"HookAdjustedAmountInAboveMax(address,uint256,uint256)\":[{\"notice\":\"A hook adjusted amountIn exceeds the maximum limit specified for the operation.\"}],\"HookAdjustedAmountOutBelowMin(address,uint256,uint256)\":[{\"notice\":\"The hook adjusted amount out is below the minimum limit specified for the operation.\"}],\"HookAdjustedSwapLimit(uint256,uint256)\":[{\"notice\":\"A hook adjusted amount in or out has exceeded the limit specified in the swap request.\"}],\"HookRegistrationFailed(address,address,address)\":[{\"notice\":\"A hook contract rejected a pool on registration.\"}],\"InputLengthMismatch()\":[{\"notice\":\"Arrays passed to a function and intended to be parallel have different lengths.\"}],\"InsufficientAllowance(uint256)\":[{\"notice\":\"Thrown when an allowance on a token has been depleted.\"}],\"InvalidAddLiquidityKind()\":[{\"notice\":\"Add liquidity kind not supported.\"}],\"InvalidRemoveLiquidityKind()\":[{\"notice\":\"Remove liquidity kind not supported.\"}],\"InvalidToken()\":[{\"notice\":\"Invalid tokens (e.g., zero) cannot be registered.\"}],\"InvalidTokenConfiguration()\":[{\"notice\":\"The data in a TokenConfig struct is inconsistent or unsupported.\"}],\"InvalidTokenDecimals()\":[{\"notice\":\"Tokens with more than 18 decimals are not supported.\"}],\"InvalidTokenType()\":[{\"notice\":\"The token type given in a TokenConfig during pool registration is invalid.\"}],\"InvalidUnderlyingToken(address)\":[{\"notice\":\"A wrapped token reported the zero address as its underlying token asset.\"}],\"LengthMismatch()\":[{\"notice\":\"Thrown when the number of tokens permissioned to a spender does not match the number of tokens being transferred\"}],\"MaxTokens()\":[{\"notice\":\"The token count is above the maximum allowed.\"}],\"MinTokens()\":[{\"notice\":\"The token count is below the minimum allowed.\"}],\"MinWeight()\":[{\"notice\":\"Indicates that one of the pool tokens' weight is below the minimum allowed.\"}],\"MultipleNonZeroInputs()\":[{\"notice\":\"More than one non-zero value was given for a single token operation.\"}],\"NormalizedWeightInvariant()\":[{\"notice\":\"Indicates that the sum of the pool tokens' weights is not FixedPoint.ONE.\"}],\"NotEnoughBufferShares()\":[{\"notice\":\"The user is trying to remove more than their allocated shares from the buffer.\"}],\"NotVaultDelegateCall()\":[{\"notice\":\"The `VaultExtension` contract was called by an account directly.\"}],\"PauseBufferPeriodDurationTooLarge()\":[{\"notice\":\"The caller specified a buffer period longer than the maximum.\"}],\"PercentageAboveMax()\":[{\"notice\":\"A given percentage is above the maximum (usually a value close to FixedPoint.ONE, or 1e18 wei).\"}],\"PoolAlreadyInitialized(address)\":[{\"notice\":\"A pool has already been initialized. `initialize` may only be called once.\"}],\"PoolAlreadyRegistered(address)\":[{\"notice\":\"A pool has already been registered. `registerPool` may only be called once.\"}],\"PoolCreatorFeePercentageTooHigh()\":[{\"notice\":\"Error raised when the pool creator swap or yield fee percentage exceeds the maximum allowed value.\"}],\"PoolCreatorNotRegistered(address)\":[{\"notice\":\"Error raised if there is no pool creator on a withdrawal attempt from the given pool.\"}],\"PoolInRecoveryMode(address)\":[{\"notice\":\"Cannot enable recovery mode when already enabled.\"}],\"PoolNotInRecoveryMode(address)\":[{\"notice\":\"Cannot disable recovery mode when not enabled.\"}],\"PoolNotInitialized(address)\":[{\"notice\":\"A referenced pool has not been initialized.\"}],\"PoolNotPaused(address)\":[{\"notice\":\"Governance tried to unpause the Pool when it was not paused.\"}],\"PoolNotRegistered(address)\":[{\"notice\":\"A pool has not been registered.\"}],\"PoolPauseWindowExpired(address)\":[{\"notice\":\"Governance tried to pause a Pool after the pause period expired.\"}],\"PoolPaused(address)\":[{\"notice\":\"A user tried to perform an operation involving a paused Pool.\"}],\"ProtocolFeesExceedTotalCollected()\":[{\"notice\":\"Error raised when there is an overflow in the fee calculation.\"}],\"ProtocolSwapFeePercentageTooHigh()\":[{\"notice\":\"Error raised when the protocol swap fee percentage exceeds the maximum allowed value.\"}],\"ProtocolYieldFeePercentageTooHigh()\":[{\"notice\":\"Error raised when the protocol yield fee percentage exceeds the maximum allowed value.\"}],\"QueriesDisabled()\":[{\"notice\":\"A user tried to execute a query operation when they were disabled.\"}],\"QueriesDisabledPermanently()\":[{\"notice\":\"An admin tried to re-enable queries, but they were disabled permanently.\"}],\"QuoteResultSpoofed()\":[{\"notice\":\"Quote reverted with a reserved error code.\"}],\"RouterNotTrusted()\":[{\"notice\":\"An unauthorized Router tried to call a permissioned function (i.e., using the Vault's token allowance).\"}],\"SenderIsNotVault(address)\":[{\"notice\":\"Error indicating the sender is not the Vault (e.g., someone is trying to call a permissioned function).\"}],\"SwapFeePercentageTooHigh()\":[{\"notice\":\"Error raised when the swap fee percentage is greater than the maximum allowed value.\"}],\"SwapFeePercentageTooLow()\":[{\"notice\":\"Error raised when the swap fee percentage is less than the minimum allowed value.\"}],\"SwapLimit(uint256,uint256)\":[{\"notice\":\"An amount in or out has exceeded the limit specified in the swap request.\"}],\"TokenAlreadyRegistered(address)\":[{\"notice\":\"A token was already registered (i.e., it is a duplicate in the pool).\"}],\"TokenNotRegistered(address)\":[{\"notice\":\"The user attempted to operate with a token that is not in the pool.\"}],\"TokensMismatch(address,address,address)\":[{\"notice\":\"The token list passed into an operation does not match the pool tokens in the pool.\"}],\"TokensNotSorted()\":[{\"notice\":\"The tokens supplied to an array argument were not sorted in numerical order.\"}],\"TradeAmountTooSmall()\":[{\"notice\":\"The amount given or calculated for an operation is below the minimum limit.\"}],\"VaultBuffersArePaused()\":[{\"notice\":\"Buffer operation attempted while vault buffers are paused.\"}],\"VaultIsNotUnlocked()\":[{\"notice\":\"A user called a Vault function (swap, add/remove liquidity) outside the lock context.\"}],\"VaultNotPaused()\":[{\"notice\":\"Governance tried to unpause the Vault when it was not paused.\"}],\"VaultPauseWindowDurationTooLarge()\":[{\"notice\":\"The caller specified a pause window period longer than the maximum.\"}],\"VaultPauseWindowExpired()\":[{\"notice\":\"Governance tried to pause the Vault after the pause period expired.\"}],\"VaultPaused()\":[{\"notice\":\"A user tried to perform an operation while the Vault was paused.\"}],\"WrapAmountTooSmall(address)\":[{\"notice\":\"The amount given to wrap/unwrap was too small, which can introduce rounding issues.\"}],\"WrongProtocolFeeControllerDeployment()\":[{\"notice\":\"The `ProtocolFeeController` contract was configured with an incorrect Vault address.\"}],\"WrongUnderlyingToken(address,address)\":[{\"notice\":\"The wrapped token asset does not match the underlying token.\"}],\"WrongVaultAdminDeployment()\":[{\"notice\":\"The `VaultAdmin` contract was configured with an incorrect Vault address.\"}],\"WrongVaultExtensionDeployment()\":[{\"notice\":\"The `VaultExtension` contract was configured with an incorrect Vault address.\"}]},\"events\":{\"UnorderedNonceInvalidation(address,uint256,uint256)\":{\"notice\":\"Emits an event when the owner successfully invalidates an unordered nonce.\"}},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/BalancerV3SwapAdapter.t.sol\":\"BalancerV3SwapAdapterTest\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b\",\"dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54\",\"dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678\",\"dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdToml.sol\":{\"keccak256\":\"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d\",\"dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e\",\"dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a\",\"dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf\",\"dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12\",\"dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC4626.sol\":{\"keccak256\":\"0xf171181c69e4560fbe3c575b8b0457ee4077cf22514c29c1b2cfcd3d9ad515cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66ff4f5325f725be9dd654b2e31c94a621261ff93295cdae03e85f8bd6bee4f2\",\"dweb:/ipfs/QmefUEsDJvdCeX6mehjE645tM9j9PHxfQzoGwZE3mArsZh\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0x29074fe5a74bb024c57b3570abf6c74d8bceed3438694d470fd0166a3ecd196a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f4f8435ccbc56e384f4cc9ac9ff491cf30a82f2beac00e33ccc2cf8af3f77cc3\",\"dweb:/ipfs/QmUKJXxTe6nn1qfgnX8xbnboNNAPUuEmJyGqMZCKNiFBgn\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x6fe40ce2addf1fe91a86c334b51ef5abe9c3b831d5d4d74ecae1d9c7d06cdccb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5027588e408027935ac78e32d9e813fda6bf33349b8a5be5c6c936273743369f\",\"dweb:/ipfs/QmZwSzs94V9u7VSdhw2bhbrogWZ37wvrQFBz6QNJTmKokE\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x8cd59334ed58b8884cd1f775afc9400db702e674e5d6a7a438c655b9de788d7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99e62c7de7318f413b6352e3f2704ca23e7725ff144e43c8bd574d12dbf29047\",\"dweb:/ipfs/QmSEXG2rBx1VxU2uFTWdiChjDvA4osEY2mesjmoVeVhHko\"]},\"src/balancer-v3/BalancerV3SwapAdapter.sol\":{\"keccak256\":\"0x953286f17c621bef769154e4d735e11350ddf439f4a7bb136b875ef11bcc1abc\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://916037f7d6a973f8ef83f8509e74fc9dcf4dcf34ef74836b8579353b45b4fd0a\",\"dweb:/ipfs/Qma94Vf221Q9BaYuNY2WvKJcaAQ8frZpyf5tH7LBuepfba\"]},\"src/balancer-v3/lib/BalancerCustomWrapHelpers.sol\":{\"keccak256\":\"0x0f6b335d2add29c075bdf0b4d596dfdfc1d46fd69eafa009b0d9141256ff1a30\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://94a73f885d3a4cf266128dcaf9bd276d80e54ee4fb580741213c58165c844313\",\"dweb:/ipfs/QmX2tRhSy3rYdSzViMgM1X9ResBMALBA21jhN7gTE7g2P8\"]},\"src/balancer-v3/lib/BalancerERC20Helpers.sol\":{\"keccak256\":\"0x40f4571feb1755549e172a1157af748b724aeff1a62edf118a625afe9651bdbd\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d9a7bc8172d05945a6262455c12cb8296fbe906ae20018fe2e4646d1051a63ec\",\"dweb:/ipfs/QmTFG25A5NR49dGcRsUkxB4g9PiKcxapPVZGu6GLvMPgb8\"]},\"src/balancer-v3/lib/BalancerERC4626Helpers.sol\":{\"keccak256\":\"0xf19e1a229b1cb569617e28ba1bc8d1b2cfb403d3164018610040ab439e65c211\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://2493d7748eedfc1ad1bed4bd6b16ede7f5e1b69f1ecf4176851a857f39b018ea\",\"dweb:/ipfs/QmeogRJKPvPGBTdJvciejWGMWy1tik8e817uPcp5Dp2Wn7\"]},\"src/balancer-v3/lib/BalancerInterfaces.sol\":{\"keccak256\":\"0xff32e4111c1954881e6c503c53c3406ae5b225f54ce0edf633d357a77c5a56c8\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://06ef20a4676393fb14947b7abdc6d06c19ae2249cfb508044e95fbc957c0f701\",\"dweb:/ipfs/QmaCws32eR57w1BmEZDFaV3kbEbyzQta8MP8eSL2EZcvKZ\"]},\"src/balancer-v3/lib/BalancerStorage.sol\":{\"keccak256\":\"0x16d74f81b9a15386060130b04b8be2aec55fb4ec20233742db16d2d82d6d748b\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9455e4e3a1dd98165117502ce53e12ba5787b1d5646df9873b93b1cfe3e1136\",\"dweb:/ipfs/QmQ8VohFLoeGCVziyD3iYr1Gynf52gf9VgEoM97TnyRE48\"]},\"src/balancer-v3/lib/BalancerSwapHelpers.sol\":{\"keccak256\":\"0x48d7f787de65a4671de1a49208130919b3fc7b17786c6eddf1897af122572f88\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://17ff1db9264aebdae9f74bb587a40870ace02d4d90bb083e128af48af8500b76\",\"dweb:/ipfs/QmPa9t3PmbRYZVzYoHyRVVjBZD9gs55pUNfF9hhuni5AQP\"]},\"src/balancer-v3/lib/BalancerV3Errors.sol\":{\"keccak256\":\"0x18480a94df48406540188876ec5381f4e2240013c893df0c4d74d5cfd0e7cbdb\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ae1e8647ab344c5ebad993497bccd6ad17dcf9533fb3646a333bfe99a66e82a9\",\"dweb:/ipfs/QmS5oeSX7WQttqNc1rZ7MNuA7VkffaFwMZk91j1RNC4ykY\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/libraries/CustomBytesAppend.sol\":{\"keccak256\":\"0x744de639d3f68d46b09e6f5f81ac003f92616f270007cc28778538894723276d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9278b5ff65908b5377e7b875151204ca6de587091c7bdd9f2f4f7d75b3d4d9e5\",\"dweb:/ipfs/QmPopj1aEWXtPg6CwKKAeEWBg1FBydPpQUM7VaFSvKvPU5\"]},\"src/libraries/EfficientERC20.sol\":{\"keccak256\":\"0x825d7f6aa98465b3c5b5a08d24cadfbb0a06f44693beec4e00ad2fe2824b4ef0\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2a5b53d7d634f50f27a1e45ce9136a054f1f19efc3dcfc1f85c8b1bbeac735fa\",\"dweb:/ipfs/QmQSeQyF86HLRnvKgQogia8W2eoWzncG2m1GkYMnp84DJZ\"]},\"src/libraries/FractionMath.sol\":{\"keccak256\":\"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c\",\"dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr\"]},\"test/AdapterTest.sol\":{\"keccak256\":\"0x56850be2bb3898eee065c3d77aadb6d181ee789da32f30b1d415d5521397fa43\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://8ca34143db16aa27c42ee3f8566ee466095d4aedcc4ea1c7726aa9c593f4fbd0\",\"dweb:/ipfs/QmWBTLXZKbTuT5kVpAbyGCxKRdhsmzWRPZPiTqZMg9BXhd\"]},\"test/BalancerV3SwapAdapter.t.sol\":{\"keccak256\":\"0xd3285a9e0caf9810e16e2fd7d408c08d21e60ac30b146df29ec670ab1deef15f\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://3981cd340e1f83d16b22198d07034b5d67b07dc12a0fecdc7308a46dfb50f647\",\"dweb:/ipfs/QmRE7Mx4fwcNkxK4KhmEToW3o8jQXwVJ6h1MVbayBQck7L\"]},\"test/interfaces/IBufferRouter.sol\":{\"keccak256\":\"0xdb4d1925268fcc506350d7ca75068cc1b8b85a728cc857c8a5d9686422436fe9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://69f9355938eea239584f45aac97aace9c2bd669500e87f4d66191df4eaa11625\",\"dweb:/ipfs/QmQezMNHG9VXNmi2twjqMQu83gQkhY67ohZ4SW37q4CLH4\"]},\"test/mocks/MockSETHx.sol\":{\"keccak256\":\"0xa15614c841ac362274d6674d24a8771cb8c9a207a196d583285e079b854b9c61\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://04074f2c48c42ea5cf601c59fc0546a9ae4c526e48925119d8ab881a0a3a099f\",\"dweb:/ipfs/QmZGBhVDhMfuF9FNMMc5aGmc6ZLQjKWavvuMqiURbi4RTL\"]},\"test/mocks/MockSGOETH.sol\":{\"keccak256\":\"0x0f5804798309e3db0909d573c0bde00dbf85badfc4c4e60db74b6966edbf048d\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://980ac9b7957e018491a1835246c74d6b82e13553171ce6c77c1fce9ba043ccb8\",\"dweb:/ipfs/Qme2RJ854Dg66TMkX2bbdMHq67G2FioLM8prpztnYU2SLQ\"]},\"test/mocks/MockSUSDC.sol\":{\"keccak256\":\"0x9ecd1e464af8b8f0d23bb44953eca1944f67cf4bc8c6800d02a7bd5e6f58b17c\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://464b50a2acd53195e88e6e900a181b532670de703d596366d348a49856d6e7c1\",\"dweb:/ipfs/QmVutpEvdTXy4jC7kJkE54QUYgfk6ngkEwsVoVtPU4j72b\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"AfterAddLiquidityHookFailed"},{"inputs":[],"type":"error","name":"AfterInitializeHookFailed"},{"inputs":[],"type":"error","name":"AfterRemoveLiquidityHookFailed"},{"inputs":[],"type":"error","name":"AfterSwapHookFailed"},{"inputs":[],"type":"error","name":"AllZeroInputs"},{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"}],"type":"error","name":"AllowanceExpired"},{"inputs":[],"type":"error","name":"AmountGivenZero"},{"inputs":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"type":"error","name":"AmountInAboveMax"},{"inputs":[{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"type":"error","name":"AmountOutBelowMin"},{"inputs":[],"type":"error","name":"AmpUpdateAlreadyStarted"},{"inputs":[],"type":"error","name":"AmpUpdateDurationTooShort"},{"inputs":[],"type":"error","name":"AmpUpdateRateTooFast"},{"inputs":[],"type":"error","name":"AmplificationFactorTooHigh"},{"inputs":[],"type":"error","name":"AmplificationFactorTooLow"},{"inputs":[],"type":"error","name":"AssetBoundsExceeded"},{"inputs":[],"type":"error","name":"BalanceNotSettled"},{"inputs":[],"type":"error","name":"BeforeAddLiquidityHookFailed"},{"inputs":[],"type":"error","name":"BeforeInitializeHookFailed"},{"inputs":[],"type":"error","name":"BeforeRemoveLiquidityHookFailed"},{"inputs":[],"type":"error","name":"BeforeSwapHookFailed"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"type":"error","name":"BptAmountInAboveMax"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"type":"error","name":"BptAmountOutBelowMin"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"type":"error","name":"BufferAlreadyInitialized"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"type":"error","name":"BufferNotInitialized"},{"inputs":[],"type":"error","name":"BufferSharesInvalidOwner"},{"inputs":[],"type":"error","name":"BufferSharesInvalidReceiver"},{"inputs":[{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"type":"error","name":"BufferTotalSupplyTooLow"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"pool","type":"address"}],"type":"error","name":"CallerIsNotPoolCreator"},{"inputs":[],"type":"error","name":"CannotReceiveEth"},{"inputs":[],"type":"error","name":"CannotSwapSameToken"},{"inputs":[],"type":"error","name":"DoesNotSupportAddLiquidityCustom"},{"inputs":[],"type":"error","name":"DoesNotSupportDonation"},{"inputs":[],"type":"error","name":"DoesNotSupportRemoveLiquidityCustom"},{"inputs":[],"type":"error","name":"DoesNotSupportUnbalancedLiquidity"},{"inputs":[],"type":"error","name":"DynamicSwapFeeHookFailed"},{"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":[],"type":"error","name":"ExcessiveInvalidation"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"FeePrecisionTooHigh"},{"inputs":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"type":"error","name":"HookAdjustedAmountInAboveMax"},{"inputs":[{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"type":"error","name":"HookAdjustedAmountOutBelowMin"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"type":"error","name":"HookAdjustedSwapLimit"},{"inputs":[{"internalType":"address","name":"poolHooksContract","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"poolFactory","type":"address"}],"type":"error","name":"HookRegistrationFailed"},{"inputs":[],"type":"error","name":"InputLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"type":"error","name":"InsufficientAllowance"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[],"type":"error","name":"InsufficientEth"},{"inputs":[],"type":"error","name":"InvalidAddLiquidityKind"},{"inputs":[{"internalType":"uint256","name":"maxAmount","type":"uint256"}],"type":"error","name":"InvalidAmount"},{"inputs":[],"type":"error","name":"InvalidRemoveLiquidityKind"},{"inputs":[],"type":"error","name":"InvalidToken"},{"inputs":[],"type":"error","name":"InvalidTokenConfiguration"},{"inputs":[],"type":"error","name":"InvalidTokenDecimals"},{"inputs":[],"type":"error","name":"InvalidTokenType"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"type":"error","name":"InvalidUnderlyingToken"},{"inputs":[{"internalType":"uint256","name":"issuedShares","type":"uint256"},{"internalType":"uint256","name":"minIssuedShares","type":"uint256"}],"type":"error","name":"IssuedSharesBelowMin"},{"inputs":[],"type":"error","name":"LengthMismatch"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"type":"error","name":"LimitExceeded"},{"inputs":[],"type":"error","name":"MaxTokens"},{"inputs":[],"type":"error","name":"MinTokens"},{"inputs":[],"type":"error","name":"MinWeight"},{"inputs":[],"type":"error","name":"MultipleNonZeroInputs"},{"inputs":[],"type":"error","name":"NormalizedWeightInvariant"},{"inputs":[],"type":"error","name":"NotEnoughBufferShares"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"expectedUnderlyingAmount","type":"uint256"},{"internalType":"uint256","name":"actualUnderlyingAmount","type":"uint256"}],"type":"error","name":"NotEnoughUnderlying"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"expectedWrappedAmount","type":"uint256"},{"internalType":"uint256","name":"actualWrappedAmount","type":"uint256"}],"type":"error","name":"NotEnoughWrapped"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"NotImplemented"},{"inputs":[],"type":"error","name":"NotStaticCall"},{"inputs":[],"type":"error","name":"NotVaultDelegateCall"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"type":"error","name":"OnlyPauseGuardian"},{"inputs":[],"type":"error","name":"PauseBufferPeriodDurationTooLarge"},{"inputs":[],"type":"error","name":"PercentageAboveMax"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"type":"error","name":"PoolAddressMismatch"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"type":"error","name":"PoolAlreadyInitialized"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"type":"error","name":"PoolAlreadyRegistered"},{"inputs":[],"type":"error","name":"PoolCreatorFeePercentageTooHigh"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"type":"error","name":"PoolCreatorNotRegistered"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"type":"error","name":"PoolInRecoveryMode"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"type":"error","name":"PoolNotInRecoveryMode"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"type":"error","name":"PoolNotInitialized"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"type":"error","name":"PoolNotPaused"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"type":"error","name":"PoolNotRegistered"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"type":"error","name":"PoolPauseWindowExpired"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"type":"error","name":"PoolPaused"},{"inputs":[],"type":"error","name":"ProtocolFeesExceedTotalCollected"},{"inputs":[],"type":"error","name":"ProtocolSwapFeePercentageTooHigh"},{"inputs":[],"type":"error","name":"ProtocolYieldFeePercentageTooHigh"},{"inputs":[],"type":"error","name":"QueriesDisabled"},{"inputs":[],"type":"error","name":"QueriesDisabledPermanently"},{"inputs":[],"type":"error","name":"QuoteResultSpoofed"},{"inputs":[],"type":"error","name":"RouterNotTrusted"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"SenderIsNotVault"},{"inputs":[],"type":"error","name":"StandardPoolWithCreator"},{"inputs":[],"type":"error","name":"StaticATokenInvalidZeroShares"},{"inputs":[],"type":"error","name":"SwapDeadline"},{"inputs":[],"type":"error","name":"SwapFeePercentageTooHigh"},{"inputs":[],"type":"error","name":"SwapFeePercentageTooLow"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"type":"error","name":"SwapLimit"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"type":"error","name":"TokenAlreadyRegistered"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"type":"error","name":"TokenNotRegistered"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"expectedToken","type":"address"},{"internalType":"address","name":"actualToken","type":"address"}],"type":"error","name":"TokensMismatch"},{"inputs":[],"type":"error","name":"TokensNotSorted"},{"inputs":[],"type":"error","name":"TradeAmountTooSmall"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"Unavailable"},{"inputs":[],"type":"error","name":"VaultBuffersArePaused"},{"inputs":[],"type":"error","name":"VaultIsNotUnlocked"},{"inputs":[],"type":"error","name":"VaultNotPaused"},{"inputs":[],"type":"error","name":"VaultPauseWindowDurationTooLarge"},{"inputs":[],"type":"error","name":"VaultPauseWindowExpired"},{"inputs":[],"type":"error","name":"VaultPaused"},{"inputs":[],"type":"error","name":"VaultQueriesDisabled"},{"inputs":[],"type":"error","name":"WeightedPoolBptRateUnsupported"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"type":"error","name":"WrapAmountTooSmall"},{"inputs":[],"type":"error","name":"WrongProtocolFeeControllerDeployment"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"underlyingToken","type":"address"}],"type":"error","name":"WrongUnderlyingToken"},{"inputs":[],"type":"error","name":"WrongVaultAdminDeployment"},{"inputs":[],"type":"error","name":"WrongVaultExtensionDeployment"},{"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":"who","type":"address","indexed":false},{"internalType":"bytes4","name":"fsig","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"keysHash","type":"bytes32","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"SlotFound","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","indexed":true},{"internalType":"uint256","name":"word","type":"uint256","indexed":false},{"internalType":"uint256","name":"mask","type":"uint256","indexed":false}],"type":"event","name":"UnorderedNonceInvalidation","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"WARNING_UninitedSlot","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"ERC4626_sETHx","outputs":[{"internalType":"contract MockSETHx","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"ERC4626_sGOETH","outputs":[{"internalType":"contract MockSGOETH","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"ERC4626_sUSDC","outputs":[{"internalType":"contract MockSUSDC","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"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":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct ISwapAdapterTypes.Fraction","name":"price","type":"tuple","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}],"stateMutability":"pure","type":"function","name":"fractionToInt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"contract ISwapAdapter","name":"adapter","type":"address"},{"internalType":"bytes32[]","name":"poolIds","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"runPoolBehaviourTest"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"stringPctgs","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":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[{"internalType":"uint256","name":"amount0","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testPriceFuzzBalancerV3_ERC20_ERC20_DIRECT"},{"inputs":[{"internalType":"uint256","name":"amount0","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testPriceFuzzBalancerV3_ERC20_ERC20_ERC4626_SWAP_WRAP"},{"inputs":[{"internalType":"uint256","name":"amount0","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testPriceFuzzBalancerV3_ERC20_ERC20_UNDERLYING_DIRECT"},{"inputs":[{"internalType":"uint256","name":"amount0","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testPriceFuzzBalancerV3_ERC20_ERC4626_ERC20_ALTERNATIVE_SWAP_UNWRAP"},{"inputs":[{"internalType":"uint256","name":"amount0","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testPriceFuzzBalancerV3_ERC20_ERC4626_ERC20_SWAP_UNWRAP"},{"inputs":[{"internalType":"uint256","name":"amount0","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testPriceFuzzBalancerV3_ERC20_ERC4626_ERC4626_ERC20_WRAP_SWAP_UNWRAP"},{"inputs":[{"internalType":"uint256","name":"amount0","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testPriceFuzzBalancerV3_ERC20_ERC4626_ERC4626_WRAP_SWAP"},{"inputs":[{"internalType":"uint256","name":"amount0","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testPriceFuzzBalancerV3_ERC4626_ERC20_DIRECT"},{"inputs":[{"internalType":"uint256","name":"amount0","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testPriceFuzzBalancerV3_ERC4626_ERC20_ERC20_ERC4626_UNWRAP_SWAP_WRAP"},{"inputs":[{"internalType":"uint256","name":"amount0","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testPriceFuzzBalancerV3_ERC4626_ERC20_ERC20_UNWRAP_SWAP"},{"inputs":[{"internalType":"uint256","name":"amount0","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testPriceFuzzBalancerV3_ERC4626_ERC20_ERC4626_UNWRAP_SWAP"},{"inputs":[{"internalType":"uint256","name":"amount0","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testPriceFuzzBalancerV3_ERC4626_ERC4626_DIRECT"},{"inputs":[{"internalType":"uint256","name":"amount0","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testPriceFuzzBalancerV3_ERC4626_ERC4626_ERC20_SWAP_UNWRAP"},{"inputs":[{"internalType":"uint256","name":"specifiedAmount","type":"uint256"},{"internalType":"bool","name":"isBuy","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"testSwapFuzzBalancerV3_ERC20_ERC20_DIRECT"},{"inputs":[{"internalType":"uint256","name":"specifiedAmount","type":"uint256"},{"internalType":"bool","name":"isBuy","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"testSwapFuzzBalancerV3_ERC20_ERC20_ERC4626_SWAP_WRAP"},{"inputs":[{"internalType":"uint256","name":"specifiedAmount","type":"uint256"},{"internalType":"bool","name":"isBuy","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"testSwapFuzzBalancerV3_ERC20_ERC20_UNDERLYING_DIRECT"},{"inputs":[{"internalType":"uint256","name":"specifiedAmount","type":"uint256"},{"internalType":"bool","name":"isBuy","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"testSwapFuzzBalancerV3_ERC20_ERC4626_ERC20_ALTERNATIVE_SWAP_UNWRAP"},{"inputs":[{"internalType":"uint256","name":"specifiedAmount","type":"uint256"},{"internalType":"bool","name":"isBuy","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"testSwapFuzzBalancerV3_ERC20_ERC4626_ERC20_SWAP_UNWRAP"},{"inputs":[{"internalType":"uint256","name":"specifiedAmount","type":"uint256"},{"internalType":"bool","name":"isBuy","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"testSwapFuzzBalancerV3_ERC20_ERC4626_ERC4626_WRAP_SWAP"},{"inputs":[{"internalType":"uint256","name":"specifiedAmount","type":"uint256"},{"internalType":"bool","name":"isBuy","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"testSwapFuzzBalancerV3_ERC4626_ERC20_DIRECT"},{"inputs":[{"internalType":"uint256","name":"specifiedAmount","type":"uint256"},{"internalType":"bool","name":"isBuy","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"testSwapFuzzBalancerV3_ERC4626_ERC20_ERC20_ERC4626_UNWRAP_SWAP_WRAP"},{"inputs":[{"internalType":"uint256","name":"specifiedAmount","type":"uint256"},{"internalType":"bool","name":"isBuy","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"testSwapFuzzBalancerV3_ERC4626_ERC20_ERC20_UNWRAP_SWAP"},{"inputs":[{"internalType":"uint256","name":"specifiedAmount","type":"uint256"},{"internalType":"bool","name":"isBuy","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"testSwapFuzzBalancerV3_ERC4626_ERC20_ERC4626_UNWRAP_SWAP"},{"inputs":[{"internalType":"uint256","name":"specifiedAmount","type":"uint256"},{"internalType":"bool","name":"isBuy","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"testSwapFuzzBalancerV3_ERC4626_ERC4626_DIRECT"},{"inputs":[{"internalType":"uint256","name":"specifiedAmount","type":"uint256"},{"internalType":"bool","name":"isBuy","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"testSwapFuzzBalancerV3_ERC4626_ERC4626_ERC20_SWAP_UNWRAP"},{"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":"See {IERC20-allowance}."},"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":"See {IERC20-balanceOf}."},"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":"See {IERC20-totalSupply}."},"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/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/BalancerV3SwapAdapter.t.sol":"BalancerV3SwapAdapterTest"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef","urls":["bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b","dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d","urls":["bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54","dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3","urls":["bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678","dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdToml.sol":{"keccak256":"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab","urls":["bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d","dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe","urls":["bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e","dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456","urls":["bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a","dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol":{"keccak256":"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06","urls":["bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf","dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb","urls":["bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12","dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC4626.sol":{"keccak256":"0xf171181c69e4560fbe3c575b8b0457ee4077cf22514c29c1b2cfcd3d9ad515cf","urls":["bzz-raw://66ff4f5325f725be9dd654b2e31c94a621261ff93295cdae03e85f8bd6bee4f2","dweb:/ipfs/QmefUEsDJvdCeX6mehjE645tM9j9PHxfQzoGwZE3mArsZh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0x29074fe5a74bb024c57b3570abf6c74d8bceed3438694d470fd0166a3ecd196a","urls":["bzz-raw://f4f8435ccbc56e384f4cc9ac9ff491cf30a82f2beac00e33ccc2cf8af3f77cc3","dweb:/ipfs/QmUKJXxTe6nn1qfgnX8xbnboNNAPUuEmJyGqMZCKNiFBgn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x6fe40ce2addf1fe91a86c334b51ef5abe9c3b831d5d4d74ecae1d9c7d06cdccb","urls":["bzz-raw://5027588e408027935ac78e32d9e813fda6bf33349b8a5be5c6c936273743369f","dweb:/ipfs/QmZwSzs94V9u7VSdhw2bhbrogWZ37wvrQFBz6QNJTmKokE"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x8cd59334ed58b8884cd1f775afc9400db702e674e5d6a7a438c655b9de788d7e","urls":["bzz-raw://99e62c7de7318f413b6352e3f2704ca23e7725ff144e43c8bd574d12dbf29047","dweb:/ipfs/QmSEXG2rBx1VxU2uFTWdiChjDvA4osEY2mesjmoVeVhHko"],"license":"MIT"},"src/balancer-v3/BalancerV3SwapAdapter.sol":{"keccak256":"0x953286f17c621bef769154e4d735e11350ddf439f4a7bb136b875ef11bcc1abc","urls":["bzz-raw://916037f7d6a973f8ef83f8509e74fc9dcf4dcf34ef74836b8579353b45b4fd0a","dweb:/ipfs/Qma94Vf221Q9BaYuNY2WvKJcaAQ8frZpyf5tH7LBuepfba"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerCustomWrapHelpers.sol":{"keccak256":"0x0f6b335d2add29c075bdf0b4d596dfdfc1d46fd69eafa009b0d9141256ff1a30","urls":["bzz-raw://94a73f885d3a4cf266128dcaf9bd276d80e54ee4fb580741213c58165c844313","dweb:/ipfs/QmX2tRhSy3rYdSzViMgM1X9ResBMALBA21jhN7gTE7g2P8"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerERC20Helpers.sol":{"keccak256":"0x40f4571feb1755549e172a1157af748b724aeff1a62edf118a625afe9651bdbd","urls":["bzz-raw://d9a7bc8172d05945a6262455c12cb8296fbe906ae20018fe2e4646d1051a63ec","dweb:/ipfs/QmTFG25A5NR49dGcRsUkxB4g9PiKcxapPVZGu6GLvMPgb8"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerERC4626Helpers.sol":{"keccak256":"0xf19e1a229b1cb569617e28ba1bc8d1b2cfb403d3164018610040ab439e65c211","urls":["bzz-raw://2493d7748eedfc1ad1bed4bd6b16ede7f5e1b69f1ecf4176851a857f39b018ea","dweb:/ipfs/QmeogRJKPvPGBTdJvciejWGMWy1tik8e817uPcp5Dp2Wn7"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerInterfaces.sol":{"keccak256":"0xff32e4111c1954881e6c503c53c3406ae5b225f54ce0edf633d357a77c5a56c8","urls":["bzz-raw://06ef20a4676393fb14947b7abdc6d06c19ae2249cfb508044e95fbc957c0f701","dweb:/ipfs/QmaCws32eR57w1BmEZDFaV3kbEbyzQta8MP8eSL2EZcvKZ"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerStorage.sol":{"keccak256":"0x16d74f81b9a15386060130b04b8be2aec55fb4ec20233742db16d2d82d6d748b","urls":["bzz-raw://e9455e4e3a1dd98165117502ce53e12ba5787b1d5646df9873b93b1cfe3e1136","dweb:/ipfs/QmQ8VohFLoeGCVziyD3iYr1Gynf52gf9VgEoM97TnyRE48"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerSwapHelpers.sol":{"keccak256":"0x48d7f787de65a4671de1a49208130919b3fc7b17786c6eddf1897af122572f88","urls":["bzz-raw://17ff1db9264aebdae9f74bb587a40870ace02d4d90bb083e128af48af8500b76","dweb:/ipfs/QmPa9t3PmbRYZVzYoHyRVVjBZD9gs55pUNfF9hhuni5AQP"],"license":"AGPL-3.0-or-later"},"src/balancer-v3/lib/BalancerV3Errors.sol":{"keccak256":"0x18480a94df48406540188876ec5381f4e2240013c893df0c4d74d5cfd0e7cbdb","urls":["bzz-raw://ae1e8647ab344c5ebad993497bccd6ad17dcf9533fb3646a333bfe99a66e82a9","dweb:/ipfs/QmS5oeSX7WQttqNc1rZ7MNuA7VkffaFwMZk91j1RNC4ykY"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/libraries/CustomBytesAppend.sol":{"keccak256":"0x744de639d3f68d46b09e6f5f81ac003f92616f270007cc28778538894723276d","urls":["bzz-raw://9278b5ff65908b5377e7b875151204ca6de587091c7bdd9f2f4f7d75b3d4d9e5","dweb:/ipfs/QmPopj1aEWXtPg6CwKKAeEWBg1FBydPpQUM7VaFSvKvPU5"],"license":"MIT"},"src/libraries/EfficientERC20.sol":{"keccak256":"0x825d7f6aa98465b3c5b5a08d24cadfbb0a06f44693beec4e00ad2fe2824b4ef0","urls":["bzz-raw://2a5b53d7d634f50f27a1e45ce9136a054f1f19efc3dcfc1f85c8b1bbeac735fa","dweb:/ipfs/QmQSeQyF86HLRnvKgQogia8W2eoWzncG2m1GkYMnp84DJZ"],"license":"UNLICENSED"},"src/libraries/FractionMath.sol":{"keccak256":"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735","urls":["bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c","dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr"],"license":"AGPL-3.0-or-later"},"test/AdapterTest.sol":{"keccak256":"0x56850be2bb3898eee065c3d77aadb6d181ee789da32f30b1d415d5521397fa43","urls":["bzz-raw://8ca34143db16aa27c42ee3f8566ee466095d4aedcc4ea1c7726aa9c593f4fbd0","dweb:/ipfs/QmWBTLXZKbTuT5kVpAbyGCxKRdhsmzWRPZPiTqZMg9BXhd"],"license":"AGPL-3.0-or-later"},"test/BalancerV3SwapAdapter.t.sol":{"keccak256":"0xd3285a9e0caf9810e16e2fd7d408c08d21e60ac30b146df29ec670ab1deef15f","urls":["bzz-raw://3981cd340e1f83d16b22198d07034b5d67b07dc12a0fecdc7308a46dfb50f647","dweb:/ipfs/QmRE7Mx4fwcNkxK4KhmEToW3o8jQXwVJ6h1MVbayBQck7L"],"license":"AGPL-3.0-or-later"},"test/interfaces/IBufferRouter.sol":{"keccak256":"0xdb4d1925268fcc506350d7ca75068cc1b8b85a728cc857c8a5d9686422436fe9","urls":["bzz-raw://69f9355938eea239584f45aac97aace9c2bd669500e87f4d66191df4eaa11625","dweb:/ipfs/QmQezMNHG9VXNmi2twjqMQu83gQkhY67ohZ4SW37q4CLH4"],"license":"GPL-3.0-or-later"},"test/mocks/MockSETHx.sol":{"keccak256":"0xa15614c841ac362274d6674d24a8771cb8c9a207a196d583285e079b854b9c61","urls":["bzz-raw://04074f2c48c42ea5cf601c59fc0546a9ae4c526e48925119d8ab881a0a3a099f","dweb:/ipfs/QmZGBhVDhMfuF9FNMMc5aGmc6ZLQjKWavvuMqiURbi4RTL"],"license":"AGPL-3.0-or-later"},"test/mocks/MockSGOETH.sol":{"keccak256":"0x0f5804798309e3db0909d573c0bde00dbf85badfc4c4e60db74b6966edbf048d","urls":["bzz-raw://980ac9b7957e018491a1835246c74d6b82e13553171ce6c77c1fce9ba043ccb8","dweb:/ipfs/Qme2RJ854Dg66TMkX2bbdMHq67G2FioLM8prpztnYU2SLQ"],"license":"AGPL-3.0-or-later"},"test/mocks/MockSUSDC.sol":{"keccak256":"0x9ecd1e464af8b8f0d23bb44953eca1944f67cf4bc8c6800d02a7bd5e6f58b17c","urls":["bzz-raw://464b50a2acd53195e88e6e900a181b532670de703d596366d348a49856d6e7c1","dweb:/ipfs/QmVutpEvdTXy4jC7kJkE54QUYgfk6ngkEwsVoVtPU4j72b"],"license":"AGPL-3.0-or-later"}},"version":1},"id":68} \ No newline at end of file diff --git a/evm/out/Base.sol/CommonBase.json b/evm/out/Base.sol/CommonBase.json deleted file mode 100644 index 36b5751..0000000 --- a/evm/out/Base.sol/CommonBase.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Base.sol\":\"CommonBase\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678\",\"dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a\",\"dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Base.sol":"CommonBase"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3","urls":["bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678","dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456","urls":["bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a","dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK"],"license":"MIT OR Apache-2.0"}},"version":1},"id":0} \ No newline at end of file diff --git a/evm/out/Base.sol/ScriptBase.json b/evm/out/Base.sol/ScriptBase.json deleted file mode 100644 index cdd860e..0000000 --- a/evm/out/Base.sol/ScriptBase.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Base.sol\":\"ScriptBase\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678\",\"dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a\",\"dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Base.sol":"ScriptBase"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3","urls":["bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678","dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456","urls":["bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a","dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK"],"license":"MIT OR Apache-2.0"}},"version":1},"id":0} \ No newline at end of file diff --git a/evm/out/Base.sol/TestBase.json b/evm/out/Base.sol/TestBase.json deleted file mode 100644 index 27def44..0000000 --- a/evm/out/Base.sol/TestBase.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Base.sol\":\"TestBase\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678\",\"dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a\",\"dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Base.sol":"TestBase"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3","urls":["bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678","dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456","urls":["bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a","dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK"],"license":"MIT OR Apache-2.0"}},"version":1},"id":0} \ No newline at end of file diff --git a/evm/out/Constants.sol/Constants.json b/evm/out/Constants.sol/Constants.json deleted file mode 100644 index 3bb0f8f..0000000 --- a/evm/out/Constants.sol/Constants.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x60808060405234610167575f80546001600160a01b031990811668433188fe2f8cf01f32179091556001805482166a0a40bef7490da1df664732179055600280548216607b17905560038054821673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc217905560048054821673dac17f958d2ee523a2206206994597c13d831ec717905560058054821673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48179055600680548216736b175474e89094c44da98b954eedeac495271d0f179055600780548216732260fac5e5542a773aa44fbcfedf7c193bc2c599179055600880548216735a98fcbea516cf06857215779fd812ca3bef1b3217905560098054821673d533a949740bb3306d119cc777fa900ba034cd52179055600a805490911673ba12222222228d8ba445958a75a0704d566bf2c81790557f06df3b2bbb68adc8b0e302443692037ed9f91b42000000000000000000000063600b556039908161016c8239f35b5f80fdfe5f80fdfea2646970667358221220dfa0e44b2b02d45182d8cbf35843a2c9c118e95f974ccaf4c6acae6f64d0488264736f6c634300081b0033","sourceMap":"65:926:69:-:0;;;;;;;109:31;65:926;;-1:-1:-1;;;;;;65:926:69;;;117:22;65:926;;;;;;;;;195:26;65:926;;;253:12;65:926;;;;261:3;65:926;;;324:42;65:926;;;;324:42;65:926;;;392:42;65:926;;;;392:42;65:926;;;460:42;65:926;;;;460:42;65:926;;;527:42;65:926;;;;527:42;65:926;;;595:42;65:926;;;;595:42;65:926;;;662:42;65:926;;;;662:42;65:926;;;729:42;65:926;;;;729:42;65:926;;;818:42;65:926;;;;;818:42;65:926;;;916:66;899:89;65:926;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea2646970667358221220dfa0e44b2b02d45182d8cbf35843a2c9c118e95f974ccaf4c6acae6f64d0488264736f6c634300081b0033","sourceMap":"65:926:69:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/Constants.sol\":\"Constants\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"test/Constants.sol\":{\"keccak256\":\"0x9dfc2aef78fce79609a74b254119ba6428806be6ca46525219f1111db0a5ffba\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://64e2c07f8a50a6efb25068c0882713b7e4805bb195c07789b1df37f6edb5d27f\",\"dweb:/ipfs/QmUzNQi8frUf4hDhLrmmSX9yyfGWbuVndvU1V11ZTnMABW\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/Constants.sol":"Constants"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"test/Constants.sol":{"keccak256":"0x9dfc2aef78fce79609a74b254119ba6428806be6ca46525219f1111db0a5ffba","urls":["bzz-raw://64e2c07f8a50a6efb25068c0882713b7e4805bb195c07789b1df37f6edb5d27f","dweb:/ipfs/QmUzNQi8frUf4hDhLrmmSX9yyfGWbuVndvU1V11ZTnMABW"],"license":"UNLICENSED"}},"version":1},"id":69} \ No newline at end of file diff --git a/evm/out/Context.sol/Context.json b/evm/out/Context.sol/Context.json deleted file mode 100644 index 73b4ce1..0000000 --- a/evm/out/Context.sol/Context.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/Context.sol":"Context"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"}},"version":1},"id":34} \ No newline at end of file diff --git a/evm/out/CurveAdapter.sol/CurveAdapter.json b/evm/out/CurveAdapter.sol/CurveAdapter.json deleted file mode 100644 index 28df7e9..0000000 --- a/evm/out/CurveAdapter.sol/CurveAdapter.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"getCapabilities","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"capabilities","type":"uint8[]","internalType":"enum ISwapAdapterTypes.Capability[]"}],"stateMutability":"pure"},{"type":"function","name":"getLimits","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"}],"outputs":[{"name":"limits","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getPoolIds","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"pure"},{"type":"function","name":"getTokens","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"price","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"},{"name":"specifiedAmounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"prices","type":"tuple[]","internalType":"struct ISwapAdapterTypes.Fraction[]","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"swap","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"},{"name":"side","type":"uint8","internalType":"enum ISwapAdapterTypes.OrderSide"},{"name":"specifiedAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"trade","type":"tuple","internalType":"struct ISwapAdapterTypes.Trade","components":[{"name":"calculatedAmount","type":"uint256","internalType":"uint256"},{"name":"gasUsed","type":"uint256","internalType":"uint256"},{"name":"price","type":"tuple","internalType":"struct ISwapAdapterTypes.Fraction","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"nonpayable"},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LimitExceeded","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotImplemented","inputs":[{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"Unavailable","inputs":[{"name":"reason","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x60808060405234601557611d11908161001a8239f35b5f80fdfe608080604052600436101561001c575b50361561001a575f80fd5b005b5f3560e01c90816323eeca01146107d05750806348bd7dfd1461073b5780638307c655146106d5578063a9270fbe146102c7578063aad6e488146101fd5763ecbbc0331461006a575f61000f565b346101f95760203660031901126101f95761008960043560601c610cfc565b602081016100978151610c9d565b5f925f5b835181101561012f5773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260018060a01b036100cb838551610939565b511614610126575b6001905f516020611cbc5f395f51905f52828060a01b036100f5838651610939565b51161461012157818060a01b0361010d828551610939565b51166101198286610925565b525b0161009b565b61011b565b600194506100d3565b5050915f146101f3578051600181018091116101df5761014e90610c9d565b915f5b8251811015610182576001906001600160a01b0361016f8285610925565b511661017b8287610925565b5201610151565b50506101905f915183610925565b525b6040518091602082016020835281518091526020604084019201905f5b8181106101bd575050500390f35b82516001600160a01b03168452859450602093840193909201916001016101af565b634e487b7160e01b5f52601160045260245ffd5b50610192565b5f80fd5b346101f95760803660031901126101f957610216610824565b5061021f61083a565b5060643567ffffffffffffffff81116101f957366023820112156101f95780600401359060246020610250846108dc565b61025d60405191826108ba565b848152019260051b820101903682116101f957602401915b8183106102b757604051631d04569d60e21b81526020600482015260126024820152714375727665416461707465722e707269636560701b6044820152606490fd5b8235815260209283019201610275565b346101f9576102d536610850565b9160601c9181815f926102e786610cfc565b926001600160a01b03166105f1575060208201935f5b85518110156105e6575f516020611cbc5f395f51905f5260018060a01b03610326838751610939565b51161480156105b6575b61033c576001016102fd565b835161037496505f516020611cbc5f395f51905f52925082916001600160a01b03916103689190610939565b5116146105ad57610ffd565b9091604051926103856060856108ba565b6002845260208401926040368537604051634903b0d160e01b81526001600160801b0383166004820152602081602481875afa5f9181610579575b506104ee57506040519162cb501b60e31b8352600f0b6004830152602082602481865afa80156104b0575f906104bb575b6020925060011c610401866108f4565b5260246040518094819362cb501b60e31b8352600f0b60048301525afa9081156104b0575f9161047e575b5060011c61043983610915565b52905b604051918291602083019060208452518091526040830191905f5b818110610465575050500390f35b8251845285945060209384019390920191600101610457565b90506020813d6020116104a8575b81610499602093836108ba565b810103126101f957518361042c565b3d915061048c565b6040513d5f823e3d90fd5b506020823d6020116104e6575b816104d5602093836108ba565b810103126101f957602091516103f1565b3d91506104c8565b602092506001600160801b039160249160011c61050a886108f4565b526040519485938492634903b0d160e01b84521660048301525afa9081156104b0575f91610547575b5060011c61054083610915565b529061043c565b90506020813d602011610571575b81610562602093836108ba565b810103126101f9575183610533565b3d9150610555565b9091506020813d6020116105a5575b81610595602093836108ba565b810103126101f9575190876103c0565b3d9150610588565b60019350610ffd565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260018060a01b036105de838751610939565b511614610330565b506103749450610ffd565b9093906001600160a01b03161561060d575b9261037493610ffd565b60208201935f5b85518110156106c9575f516020611cbc5f395f51905f5260018060a01b0361063d838751610939565b5116148015610699575b61065357600101610614565b835161037496505f516020611cbc5f395f51905f5293925083916001600160a01b03916106809190610939565b511614610690575b909350610603565b60019350610688565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260018060a01b036106c1838751610939565b511614610647565b50906103749450610688565b346101f95760a03660031901126101f9576106ee610824565b6106f661083a565b6064359160028310156101f9576080926107169260843592600435610957565b6020604080519280518452828101518385015201518051604084015201516060820152f35b346101f95761074936610850565b50505060405161075a6060826108ba565b600281526020810160403682376001610772836108f4565b52604051906020820192602083525180935260408201905f935b8085106107995783830384f35b9091825190600a8210156107bc576020816001938293520193019401939061078c565b634e487b7160e01b5f52602160045260245ffd5b346101f95760403660031901126101f957631d04569d60e21b815260206004820152601760248201527f4375727665416461707465722e676574506f6f6c4964730000000000000000006044820152606490fd5b602435906001600160a01b03821682036101f957565b604435906001600160a01b03821682036101f957565b60609060031901126101f957600435906024356001600160a01b03811681036101f957906044356001600160a01b03811681036101f95790565b6040810190811067ffffffffffffffff8211176108a657604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176108a657604052565b67ffffffffffffffff81116108a65760051b60200190565b8051156109015760200190565b634e487b7160e01b5f52603260045260245ffd5b8051600110156109015760400190565b80518210156109015760209160051b010190565b9060088110156109015760051b0190565b919082039182116101df57565b9394929194604051956060870187811067ffffffffffffffff8211176108a6576040525f87525f602088015260405161098f8161088a565b5f81525f60208201526040880152868215610c9257506040519260e0840184811067ffffffffffffffff8211176108a65760405260208401966040850160608601945f865260808701945f865260c08801935f855260601c9485895260018060a01b031690818c5260018060a01b03169182845260a0890152610a125f95610cfc565b93610a268560018060a01b038b5116610e7a565b15159052610bad575060208201985f5b8a51811015610b9d575f516020611cbc5f395f51905f5260018060a01b03610a5f838751610939565b5116148015610b6d575b610a7557600101610a36565b610ac095969798999a505f516020611cbc5f395f51905f5290818352610aa360018060a01b03918651610939565b511614610b64575b5190516001600160a01b039081169116610ffd565b600f9291920b9052600f0b90525a9160028110156107bc57610b0657610af5610aff92610aec836111b3565b86525a9061094a565b6020850152611721565b6040830152565b60405163643c60f360e01b815260206004820152602f60248201527f4f72646572536964652e427579206973206e6f7420617661696c61626c65206660448201526e37b9103a3434b99030b230b83a32b960891b6064820152608490fd5b60019350610aab565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260018060a01b03610b95838751610939565b511614610a69565b50610ac094959697989950610aab565b15610bc1575b610ac0939495969798610aab565b60208201985f5b8a51811015610c82575f516020611cbc5f395f51905f5260018060a01b03610bf1838751610939565b5116148015610c52575b610c0757600101610bc8565b610ac095969798999a505f516020611cbc5f395f51905f5290818452610c3560018060a01b03918651610939565b511614610c49575b98979695949350610bb3565b60019350610c3d565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260018060a01b03610c7a838751610939565b511614610bfb565b50610ac094959697989950610c3d565b955050505050915090565b90610ca7826108dc565b610cb460405191826108ba565b8281528092610cc5601f19916108dc565b0190602036910137565b908160209103126101f957516001600160a01b03811681036101f95790565b5f1981146101df5760010190565b90604051610d098161088a565b604051610100610d1981836108ba565b3682378152602081015f815281935f92610d32826119c0565b610ddb57925b60088110610d47575b50505050565b60405163c661065760e01b815260048101829052906020826024816001600160a01b0387165afa5f9281610dab575b50610d815750610d41565b600191610d8f828751610939565b90838060a01b03169052610da38451610cee565b845201610d38565b610dcd91935060203d8111610dd4575b610dc581836108ba565b810190610ccf565b915f610d76565b503d610dbb565b925b60088110610deb5750505050565b60405163046e8dd760e31b81526001600160801b038216600f0b6004820152906020826024816001600160a01b0387165afa5f9281610e5a575b50610e305750610d41565b600191610e3e828751610939565b90838060a01b03169052610e528451610cee565b845201610ddd565b610e7391935060203d8111610dd457610dc581836108ba565b915f610e25565b815151602491906001600160a01b03165f516020611cbc5f395f51905f52148015610fd5575b15610fcb57602060ff60015b1693610ec08560018060a01b039251610939565b516040516370a0823160e01b81526001600160a01b03909416600485018190529394859290918391165afa9182156104b0575f92610f96575b50606460ff91602093941590815f14610f8e575f915b15610f8557600a6001965b85604051988997889663556d6e9f60e01b88521660048701521660248501520460448301525afa9081610f56575b50610f5257600190565b5f90565b6020813d602011610f7d575b81610f6f602093836108ba565b810103126101f95751610f48565b3d9150610f62565b600a5f96610f1a565b600191610f0f565b91506020823d602011610fc3575b81610fb1602093836108ba565b810103126101f9579051906064610ef9565b3d9150610fa4565b602060ff5f610eac565b508251516001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc214610ea0565b5f94939192918590846001600160a01b0384165f516020611cbc5f395f51905f52148061112a575b61110e575b6001600160a01b03165f516020611cbc5f395f51905f52149081611105575b506110e9575b5f955b60208401518710156110e05783516001600160a01b0390611074908990610939565b516001600160a01b03851691160361109f575060016001600160801b038716600f0b965b0195611052565b9560018060a01b036110b2828651610939565b51166001600160a01b038616146110cc575b600190611098565b6001600160801b038116600f0b91506110c4565b95509392505050565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2935061104f565b9050155f611049565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2935061102a565b508115611025565b3d1561116c573d9067ffffffffffffffff82116108a65760405191611161601f8201601f1916602001846108ba565b82523d5f602084013e565b606090565b1561117857565b60405162461bcd60e51b8152602060048201526013602482015272115d1a081d1c985b9cd9995c8819985a5b1959606a1b6044820152606490fd5b6040810180516020830180515f959447946001600160a01b039485169490938893909116905f516020611cbc5f395f51905f5286036116b85747965b60c0840151156114305750516001600160a01b03165f516020611cbc5f395f51905f52036113735750805160a08201516060830151608090930151600f90810b93900b916001600160a01b0316803b1561136457604051630f7c084960e21b8152600f93840b60048201529390920b6024840152604483018190525f6064840152839183916084918391905af180156113685761134f575b50505f516020611cbc5f395f51905f52905b516001600160a01b0316036112ce57506112b66112cc914761094a565b9280808086335af16112c6611132565b50611171565b565b926040516370a0823160e01b8152306004820152602081602481885afa918215611343579161130f575b506112cc916113069161094a565b80933390611b9e565b90506020813d60201161133b575b8161132a602093836108ba565b810103126101f957516112cc6112f8565b3d915061131d565b604051903d90823e3d90fd5b81611359916108ba565b61136457845f611287565b8480fd5b6040513d84823e3d90fd5b9061139b60a082019261138984513033846119f9565b60018060a01b03835116845191611a42565b60018060a01b0381511660806060830151600f0b920151600f0b925190803b1561136457604051630f7c084960e21b8152600f93840b60048201529390920b602484015260448301525f606483015282908290818381608481015b03925af180156113685761141b575b50505f516020611cbc5f395f51905f5290611299565b81611425916108ba565b61136457845f611405565b90916001600160801b03606085015116915f516020611cbc5f395f51905f526001600160801b036080870151169460018060a01b03905116145f146114d2575050825160a090930151926001600160a01b0316803b156113645760405163ce7d650360e01b815260048101929092526024820192909252604481018390525f6064820152600160848201523060a4820152918391839182908160c481016113f6565b9094506114fe60a085939501956114ec87513033846119f9565b60018060a01b03845116875191611a42565b81518551906001600160a01b0316803b156101f95760405163ce7d650360e01b8152600481018790526024810186905260448101929092525f60648301819052600160848401523060a484015290829060c490829084905af19081611699575b50908a95949392916115cf575b50519251926001600160a01b0316803b15611364578492836084926040519687958694630b68372160e31b86526004860152602485015260448401528160648401525af180156113685761141b5750505f516020611cbc5f395f51905f5290611299565b6115de9192939495504761094a565b8015611612576115f78a80808085335af16112c6611132565b806116075790899493929161156b565b985050505050505050565b506040516370a0823160e01b81523060048201526020816024818a5afa801561168e5788908b90611658575b611648925061094a565b611653813389611b9e565b6115f7565b50506020813d602011611686575b81611673602093836108ba565b810103126101f95787611648915161163e565b3d9150611666565b6040513d8c823e3d90fd5b6116ab9196959493929b505f906108ba565b5f9990919293945f61155e565b6040516370a0823160e01b81523060048201529350602084602481895afa80156104b05789945f916116ec575b50966111ef565b9450506020843d602011611719575b81611708602093836108ba565b810103126101f9578893515f6116e5565b3d91506116fb565b60405161172d8161088a565b5f81525f60208201525060608101906001600160801b0382511660808201906001600160801b0382511660c084015115155f146118f557508251604051634903b0d160e01b81526004810192909252602090829060249082906001600160a01b03165afa5f91816118c1575b506118b0575060018060a01b038251169060208451600f0b60246040518095819362cb501b60e31b835260048301525afa9182156104b0575f9261187b575b506064620186a060209304935b5194519151604051635e0d443f60e01b8152600f93840b6004820152920b602483015260448201849052909384919082906001600160a01b03165afa9182156104b0575f92611847575b506040519161183d8361088a565b8252602082015290565b9091506020813d602011611873575b81611863602093836108ba565b810103126101f95751905f61182f565b3d9150611856565b91506020823d6020116118a8575b81611896602093836108ba565b810103126101f95790519060646117d8565b3d9150611889565b906064620186a060209304936117e5565b9091506020813d6020116118ed575b816118dd602093836108ba565b810103126101f95751905f611799565b3d91506118d0565b8351604051634903b0d160e01b81526004810184905292955091925090602090839060249082906001600160a01b03165afa9182156104b0575f9261198b575b506064620186a0602093049360018060a01b0390511694604051958693849263556d6e9f60e01b8452600484015260248301528560448301525afa9182156104b0575f9261184757506040519161183d8361088a565b91506020823d6020116119b8575b816119a6602093836108ba565b810103126101f9579051906064611935565b3d9150611999565b604051634903b0d160e01b81525f600482015290602090829060249082906001600160a01b03165afa9081610f565750610f5257600190565b6040516323b872dd60e01b60208201526001600160a01b0392831660248201529290911660448301526064808301939093529181526112cc91611a3d6084836108ba565b611bf2565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830181905294919390831691602085604481865afa9485156104b0575f95611b6a575b5084018094116101df5760405163095ea7b360e01b602082019081526001600160a01b039290921660248201526044808201959095529384525f908190611acd6064876108ba565b85519082855af190611add611132565b82611b38575b5081611b2d575b5015611af557505050565b611a3d6112cc936040519063095ea7b360e01b602083015260248201525f604482015260448152611b276064826108ba565b82611bf2565b90503b15155f611aea565b80519192508115918215611b50575b5050905f611ae3565b611b639250602080918301019101611bda565b5f80611b47565b9094506020813d602011611b96575b81611b86602093836108ba565b810103126101f95751935f611a85565b3d9150611b79565b60405163a9059cbb60e01b60208201526001600160a01b039290921660248301526044808301939093529181526112cc91611a3d6064836108ba565b908160209103126101f9575180151581036101f95790565b5f80611c1a9260018060a01b03169360208151910182865af1611c13611132565b9083611c5d565b8051908115159182611c42575b5050611c305750565b635274afe760e01b5f5260045260245ffd5b611c559250602080918301019101611bda565b155f80611c27565b90611c815750805115611c7257805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580611cb2575b611c92575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15611c8a56fe000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeea264697066735822122095b2866d1bfb6558995f95f5311386e755a500933ce3b93e801eddc460105df664736f6c634300081b0033","sourceMap":"630:19263:50:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608080604052600436101561001c575b50361561001a575f80fd5b005b5f3560e01c90816323eeca01146107d05750806348bd7dfd1461073b5780638307c655146106d5578063a9270fbe146102c7578063aad6e488146101fd5763ecbbc0331461006a575f61000f565b346101f95760203660031901126101f95761008960043560601c610cfc565b602081016100978151610c9d565b5f925f5b835181101561012f5773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260018060a01b036100cb838551610939565b511614610126575b6001905f516020611cbc5f395f51905f52828060a01b036100f5838651610939565b51161461012157818060a01b0361010d828551610939565b51166101198286610925565b525b0161009b565b61011b565b600194506100d3565b5050915f146101f3578051600181018091116101df5761014e90610c9d565b915f5b8251811015610182576001906001600160a01b0361016f8285610925565b511661017b8287610925565b5201610151565b50506101905f915183610925565b525b6040518091602082016020835281518091526020604084019201905f5b8181106101bd575050500390f35b82516001600160a01b03168452859450602093840193909201916001016101af565b634e487b7160e01b5f52601160045260245ffd5b50610192565b5f80fd5b346101f95760803660031901126101f957610216610824565b5061021f61083a565b5060643567ffffffffffffffff81116101f957366023820112156101f95780600401359060246020610250846108dc565b61025d60405191826108ba565b848152019260051b820101903682116101f957602401915b8183106102b757604051631d04569d60e21b81526020600482015260126024820152714375727665416461707465722e707269636560701b6044820152606490fd5b8235815260209283019201610275565b346101f9576102d536610850565b9160601c9181815f926102e786610cfc565b926001600160a01b03166105f1575060208201935f5b85518110156105e6575f516020611cbc5f395f51905f5260018060a01b03610326838751610939565b51161480156105b6575b61033c576001016102fd565b835161037496505f516020611cbc5f395f51905f52925082916001600160a01b03916103689190610939565b5116146105ad57610ffd565b9091604051926103856060856108ba565b6002845260208401926040368537604051634903b0d160e01b81526001600160801b0383166004820152602081602481875afa5f9181610579575b506104ee57506040519162cb501b60e31b8352600f0b6004830152602082602481865afa80156104b0575f906104bb575b6020925060011c610401866108f4565b5260246040518094819362cb501b60e31b8352600f0b60048301525afa9081156104b0575f9161047e575b5060011c61043983610915565b52905b604051918291602083019060208452518091526040830191905f5b818110610465575050500390f35b8251845285945060209384019390920191600101610457565b90506020813d6020116104a8575b81610499602093836108ba565b810103126101f957518361042c565b3d915061048c565b6040513d5f823e3d90fd5b506020823d6020116104e6575b816104d5602093836108ba565b810103126101f957602091516103f1565b3d91506104c8565b602092506001600160801b039160249160011c61050a886108f4565b526040519485938492634903b0d160e01b84521660048301525afa9081156104b0575f91610547575b5060011c61054083610915565b529061043c565b90506020813d602011610571575b81610562602093836108ba565b810103126101f9575183610533565b3d9150610555565b9091506020813d6020116105a5575b81610595602093836108ba565b810103126101f9575190876103c0565b3d9150610588565b60019350610ffd565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260018060a01b036105de838751610939565b511614610330565b506103749450610ffd565b9093906001600160a01b03161561060d575b9261037493610ffd565b60208201935f5b85518110156106c9575f516020611cbc5f395f51905f5260018060a01b0361063d838751610939565b5116148015610699575b61065357600101610614565b835161037496505f516020611cbc5f395f51905f5293925083916001600160a01b03916106809190610939565b511614610690575b909350610603565b60019350610688565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260018060a01b036106c1838751610939565b511614610647565b50906103749450610688565b346101f95760a03660031901126101f9576106ee610824565b6106f661083a565b6064359160028310156101f9576080926107169260843592600435610957565b6020604080519280518452828101518385015201518051604084015201516060820152f35b346101f95761074936610850565b50505060405161075a6060826108ba565b600281526020810160403682376001610772836108f4565b52604051906020820192602083525180935260408201905f935b8085106107995783830384f35b9091825190600a8210156107bc576020816001938293520193019401939061078c565b634e487b7160e01b5f52602160045260245ffd5b346101f95760403660031901126101f957631d04569d60e21b815260206004820152601760248201527f4375727665416461707465722e676574506f6f6c4964730000000000000000006044820152606490fd5b602435906001600160a01b03821682036101f957565b604435906001600160a01b03821682036101f957565b60609060031901126101f957600435906024356001600160a01b03811681036101f957906044356001600160a01b03811681036101f95790565b6040810190811067ffffffffffffffff8211176108a657604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176108a657604052565b67ffffffffffffffff81116108a65760051b60200190565b8051156109015760200190565b634e487b7160e01b5f52603260045260245ffd5b8051600110156109015760400190565b80518210156109015760209160051b010190565b9060088110156109015760051b0190565b919082039182116101df57565b9394929194604051956060870187811067ffffffffffffffff8211176108a6576040525f87525f602088015260405161098f8161088a565b5f81525f60208201526040880152868215610c9257506040519260e0840184811067ffffffffffffffff8211176108a65760405260208401966040850160608601945f865260808701945f865260c08801935f855260601c9485895260018060a01b031690818c5260018060a01b03169182845260a0890152610a125f95610cfc565b93610a268560018060a01b038b5116610e7a565b15159052610bad575060208201985f5b8a51811015610b9d575f516020611cbc5f395f51905f5260018060a01b03610a5f838751610939565b5116148015610b6d575b610a7557600101610a36565b610ac095969798999a505f516020611cbc5f395f51905f5290818352610aa360018060a01b03918651610939565b511614610b64575b5190516001600160a01b039081169116610ffd565b600f9291920b9052600f0b90525a9160028110156107bc57610b0657610af5610aff92610aec836111b3565b86525a9061094a565b6020850152611721565b6040830152565b60405163643c60f360e01b815260206004820152602f60248201527f4f72646572536964652e427579206973206e6f7420617661696c61626c65206660448201526e37b9103a3434b99030b230b83a32b960891b6064820152608490fd5b60019350610aab565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260018060a01b03610b95838751610939565b511614610a69565b50610ac094959697989950610aab565b15610bc1575b610ac0939495969798610aab565b60208201985f5b8a51811015610c82575f516020611cbc5f395f51905f5260018060a01b03610bf1838751610939565b5116148015610c52575b610c0757600101610bc8565b610ac095969798999a505f516020611cbc5f395f51905f5290818452610c3560018060a01b03918651610939565b511614610c49575b98979695949350610bb3565b60019350610c3d565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260018060a01b03610c7a838751610939565b511614610bfb565b50610ac094959697989950610c3d565b955050505050915090565b90610ca7826108dc565b610cb460405191826108ba565b8281528092610cc5601f19916108dc565b0190602036910137565b908160209103126101f957516001600160a01b03811681036101f95790565b5f1981146101df5760010190565b90604051610d098161088a565b604051610100610d1981836108ba565b3682378152602081015f815281935f92610d32826119c0565b610ddb57925b60088110610d47575b50505050565b60405163c661065760e01b815260048101829052906020826024816001600160a01b0387165afa5f9281610dab575b50610d815750610d41565b600191610d8f828751610939565b90838060a01b03169052610da38451610cee565b845201610d38565b610dcd91935060203d8111610dd4575b610dc581836108ba565b810190610ccf565b915f610d76565b503d610dbb565b925b60088110610deb5750505050565b60405163046e8dd760e31b81526001600160801b038216600f0b6004820152906020826024816001600160a01b0387165afa5f9281610e5a575b50610e305750610d41565b600191610e3e828751610939565b90838060a01b03169052610e528451610cee565b845201610ddd565b610e7391935060203d8111610dd457610dc581836108ba565b915f610e25565b815151602491906001600160a01b03165f516020611cbc5f395f51905f52148015610fd5575b15610fcb57602060ff60015b1693610ec08560018060a01b039251610939565b516040516370a0823160e01b81526001600160a01b03909416600485018190529394859290918391165afa9182156104b0575f92610f96575b50606460ff91602093941590815f14610f8e575f915b15610f8557600a6001965b85604051988997889663556d6e9f60e01b88521660048701521660248501520460448301525afa9081610f56575b50610f5257600190565b5f90565b6020813d602011610f7d575b81610f6f602093836108ba565b810103126101f95751610f48565b3d9150610f62565b600a5f96610f1a565b600191610f0f565b91506020823d602011610fc3575b81610fb1602093836108ba565b810103126101f9579051906064610ef9565b3d9150610fa4565b602060ff5f610eac565b508251516001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc214610ea0565b5f94939192918590846001600160a01b0384165f516020611cbc5f395f51905f52148061112a575b61110e575b6001600160a01b03165f516020611cbc5f395f51905f52149081611105575b506110e9575b5f955b60208401518710156110e05783516001600160a01b0390611074908990610939565b516001600160a01b03851691160361109f575060016001600160801b038716600f0b965b0195611052565b9560018060a01b036110b2828651610939565b51166001600160a01b038616146110cc575b600190611098565b6001600160801b038116600f0b91506110c4565b95509392505050565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2935061104f565b9050155f611049565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2935061102a565b508115611025565b3d1561116c573d9067ffffffffffffffff82116108a65760405191611161601f8201601f1916602001846108ba565b82523d5f602084013e565b606090565b1561117857565b60405162461bcd60e51b8152602060048201526013602482015272115d1a081d1c985b9cd9995c8819985a5b1959606a1b6044820152606490fd5b6040810180516020830180515f959447946001600160a01b039485169490938893909116905f516020611cbc5f395f51905f5286036116b85747965b60c0840151156114305750516001600160a01b03165f516020611cbc5f395f51905f52036113735750805160a08201516060830151608090930151600f90810b93900b916001600160a01b0316803b1561136457604051630f7c084960e21b8152600f93840b60048201529390920b6024840152604483018190525f6064840152839183916084918391905af180156113685761134f575b50505f516020611cbc5f395f51905f52905b516001600160a01b0316036112ce57506112b66112cc914761094a565b9280808086335af16112c6611132565b50611171565b565b926040516370a0823160e01b8152306004820152602081602481885afa918215611343579161130f575b506112cc916113069161094a565b80933390611b9e565b90506020813d60201161133b575b8161132a602093836108ba565b810103126101f957516112cc6112f8565b3d915061131d565b604051903d90823e3d90fd5b81611359916108ba565b61136457845f611287565b8480fd5b6040513d84823e3d90fd5b9061139b60a082019261138984513033846119f9565b60018060a01b03835116845191611a42565b60018060a01b0381511660806060830151600f0b920151600f0b925190803b1561136457604051630f7c084960e21b8152600f93840b60048201529390920b602484015260448301525f606483015282908290818381608481015b03925af180156113685761141b575b50505f516020611cbc5f395f51905f5290611299565b81611425916108ba565b61136457845f611405565b90916001600160801b03606085015116915f516020611cbc5f395f51905f526001600160801b036080870151169460018060a01b03905116145f146114d2575050825160a090930151926001600160a01b0316803b156113645760405163ce7d650360e01b815260048101929092526024820192909252604481018390525f6064820152600160848201523060a4820152918391839182908160c481016113f6565b9094506114fe60a085939501956114ec87513033846119f9565b60018060a01b03845116875191611a42565b81518551906001600160a01b0316803b156101f95760405163ce7d650360e01b8152600481018790526024810186905260448101929092525f60648301819052600160848401523060a484015290829060c490829084905af19081611699575b50908a95949392916115cf575b50519251926001600160a01b0316803b15611364578492836084926040519687958694630b68372160e31b86526004860152602485015260448401528160648401525af180156113685761141b5750505f516020611cbc5f395f51905f5290611299565b6115de9192939495504761094a565b8015611612576115f78a80808085335af16112c6611132565b806116075790899493929161156b565b985050505050505050565b506040516370a0823160e01b81523060048201526020816024818a5afa801561168e5788908b90611658575b611648925061094a565b611653813389611b9e565b6115f7565b50506020813d602011611686575b81611673602093836108ba565b810103126101f95787611648915161163e565b3d9150611666565b6040513d8c823e3d90fd5b6116ab9196959493929b505f906108ba565b5f9990919293945f61155e565b6040516370a0823160e01b81523060048201529350602084602481895afa80156104b05789945f916116ec575b50966111ef565b9450506020843d602011611719575b81611708602093836108ba565b810103126101f9578893515f6116e5565b3d91506116fb565b60405161172d8161088a565b5f81525f60208201525060608101906001600160801b0382511660808201906001600160801b0382511660c084015115155f146118f557508251604051634903b0d160e01b81526004810192909252602090829060249082906001600160a01b03165afa5f91816118c1575b506118b0575060018060a01b038251169060208451600f0b60246040518095819362cb501b60e31b835260048301525afa9182156104b0575f9261187b575b506064620186a060209304935b5194519151604051635e0d443f60e01b8152600f93840b6004820152920b602483015260448201849052909384919082906001600160a01b03165afa9182156104b0575f92611847575b506040519161183d8361088a565b8252602082015290565b9091506020813d602011611873575b81611863602093836108ba565b810103126101f95751905f61182f565b3d9150611856565b91506020823d6020116118a8575b81611896602093836108ba565b810103126101f95790519060646117d8565b3d9150611889565b906064620186a060209304936117e5565b9091506020813d6020116118ed575b816118dd602093836108ba565b810103126101f95751905f611799565b3d91506118d0565b8351604051634903b0d160e01b81526004810184905292955091925090602090839060249082906001600160a01b03165afa9182156104b0575f9261198b575b506064620186a0602093049360018060a01b0390511694604051958693849263556d6e9f60e01b8452600484015260248301528560448301525afa9182156104b0575f9261184757506040519161183d8361088a565b91506020823d6020116119b8575b816119a6602093836108ba565b810103126101f9579051906064611935565b3d9150611999565b604051634903b0d160e01b81525f600482015290602090829060249082906001600160a01b03165afa9081610f565750610f5257600190565b6040516323b872dd60e01b60208201526001600160a01b0392831660248201529290911660448301526064808301939093529181526112cc91611a3d6084836108ba565b611bf2565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830181905294919390831691602085604481865afa9485156104b0575f95611b6a575b5084018094116101df5760405163095ea7b360e01b602082019081526001600160a01b039290921660248201526044808201959095529384525f908190611acd6064876108ba565b85519082855af190611add611132565b82611b38575b5081611b2d575b5015611af557505050565b611a3d6112cc936040519063095ea7b360e01b602083015260248201525f604482015260448152611b276064826108ba565b82611bf2565b90503b15155f611aea565b80519192508115918215611b50575b5050905f611ae3565b611b639250602080918301019101611bda565b5f80611b47565b9094506020813d602011611b96575b81611b86602093836108ba565b810103126101f95751935f611a85565b3d9150611b79565b60405163a9059cbb60e01b60208201526001600160a01b039290921660248301526044808301939093529181526112cc91611a3d6064836108ba565b908160209103126101f9575180151581036101f95790565b5f80611c1a9260018060a01b03169360208151910182865af1611c13611132565b9083611c5d565b8051908115159182611c42575b5050611c305750565b635274afe760e01b5f5260045260245ffd5b611c559250602080918301019101611bda565b155f80611c27565b90611c815750805115611c7257805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580611cb2575b611c92575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15611c8a56fe000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeea264697066735822122095b2866d1bfb6558995f95f5311386e755a500933ce3b93e801eddc460105df664736f6c634300081b0033","sourceMap":"630:19263:50:-:0;;;;;;;;;;-1:-1:-1;630:19263:50;;;;;;;;;;;;;;;;;;;;;8392:41;;630:19263;8392:41;;;630:19263;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;630:19263:50;;;;7479:34;630:19263;;;;7479:34;:::i;:::-;630:19263;7566:17;;7552:32;630:19263;;7552:32;:::i;:::-;630:19263;7625:13;630:19263;7663:3;630:19263;;7640:21;;;;;1349:42;630:19263;;;;;7686:18;:15;;;:18;:::i;:::-;630:19263;;7686:34;7682:91;;7663:3;630:19263;;-1:-1:-1;;;;;;;;;;;630:19263:50;;;;;7790:18;:15;;;:18;:::i;:::-;630:19263;;7790:33;7786:80;;630:19263;;;;;7894:18;:15;;;:18;:::i;:::-;630:19263;;7879:33;;;;:::i;:::-;630:19263;7625:13;630:19263;7625:13;;7786:80;7843:8;;7682:91;630:19263;;-1:-1:-1;7682:91:50;;7640:21;;;;7933:306;;;;630:19263;;;;;;;;;;7973:36;;;:::i;:::-;8028:13;630:19263;8066:3;630:19263;;8043:21;;;;;630:19263;;-1:-1:-1;;;;;8101:12:50;630:19263;8101:12;;:::i;:::-;630:19263;;8089:24;;;;:::i;:::-;630:19263;;8028:13;;8043:21;;;8141:38;630:19263;8043:21;630:19263;8141:38;;:::i;:::-;630:19263;7933:306;630:19263;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;630:19263:50;;;;;-1:-1:-1;630:19263:50;;;;;;;;;;;;;;;;;;1349:42;;630:19263;1349:42;;630:19263;1349:42;7933:306;8210:18;7933:306;;630:19263;;;;;;;;;;-1:-1:-1;;630:19263:50;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1836:36:50;;630:19263;;1836:36;;630:19263;;;;;;-1:-1:-1;;;630:19263:50;;;;;;1836:36;630:19263;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;4879:30;;4919:28;630:19263;5006:21;;;;:::i;:::-;630:19263;-1:-1:-1;;;;;630:19263:50;;;-1:-1:-1;5253:17:50;;;;630:19263;5272:3;630:19263;;5249:21;;;;;-1:-1:-1;;;;;;;;;;;630:19263:50;;;;;5320:18;:15;;;:18;:::i;:::-;630:19263;;5320:33;:95;;;;5272:3;5295:356;;630:19263;;5234:13;;5295:356;5506:15;;6238:56;;-1:-1:-1;;;;;;;;;;;;1428:42:50;-1:-1:-1;1428:42:50;;-1:-1:-1;;;;;630:19263:50;5506:18;;5456:24;5506:18;:::i;:::-;630:19263;;5506:33;5502:104;;6238:56;:::i;:::-;630:19263;;;;;;;;;:::i;:::-;6328:1;630:19263;;;;;;;;;;;;-1:-1:-1;;;6484:33:50;;-1:-1:-1;;;;;630:19263:50;;;6484:33;;630:19263;;;6484:33;630:19263;6484:33;;;630:19263;;6484:33;;;5186:982;-1:-1:-1;6480:499:50;;630:19263;;;;;;;6717:90;;1349:42;;630:19263;6717:90;;518:1;630:19263;6717:90;6484:33;6717:90;;;;;;;;630:19263;6717:90;;;6480:499;630:19263;518:1;;;;6705:125;;;:::i;:::-;630:19263;6484:33;630:19263;;;;;;;;;6856:89;;1349:42;;630:19263;6856:89;;518:1;6856:89;;;;;;;630:19263;6856:89;;;6480:499;518:1;;;6844:124;;;:::i;:::-;630:19263;6480:499;;630:19263;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;630:19263:50;;;;;;;;;;;;;6856:89;;;630:19263;6856:89;;630:19263;6856:89;;;;;;630:19263;6856:89;;;:::i;:::-;;;630:19263;;;;;6856:89;;;;;;-1:-1:-1;6856:89:50;;;630:19263;;;;;;;;;6717:90;;630:19263;6717:90;;630:19263;6717:90;;;;;;630:19263;6717:90;;;:::i;:::-;;;630:19263;;;;;;;6717:90;;;;;-1:-1:-1;6717:90:50;;6480:499;630:19263;518:1;;-1:-1:-1;;;;;518:1:50;6484:33;518:1;;;6554:38;;;:::i;:::-;630:19263;;;;;;;;;;;6618:32;;630:19263;;6618:32;;630:19263;6618:32;;;;;;;630:19263;6618:32;;;6480:499;518:1;;;6606:67;;;:::i;:::-;630:19263;6480:499;;;6618:32;;;630:19263;6618:32;;630:19263;6618:32;;;;;;630:19263;6618:32;;;:::i;:::-;;;630:19263;;;;;6618:32;;;;;;-1:-1:-1;6618:32:50;;6484:33;;;;630:19263;6484:33;;630:19263;6484:33;;;;;;630:19263;6484:33;;;:::i;:::-;;;630:19263;;;;;6484:33;;;;;;;-1:-1:-1;6484:33:50;;5502:104;630:19263;;-1:-1:-1;6238:56:50;:::i;5320:95::-;630:19263;1349:42;630:19263;;;;;5381:18;:15;;;:18;:::i;:::-;630:19263;;5381:34;5320:95;;5249:21;;6238:56;5249:21;;6238:56;:::i;5186:982::-;630:19263;;;-1:-1:-1;;;;;630:19263:50;5685:22;5681:487;;5186:982;;6238:56;5186:982;6238:56;:::i;5681:487::-;5747:17;;;;630:19263;5766:3;630:19263;;5743:21;;;;;-1:-1:-1;;;;;;;;;;;630:19263:50;;;;;5814:18;:15;;;:18;:::i;:::-;630:19263;;5814:33;:95;;;;5766:3;5789:355;;630:19263;;5728:13;;5789:355;5999:15;;6238:56;;-1:-1:-1;;;;;;;;;;;;1428:42:50;5950:23;-1:-1:-1;1428:42:50;;-1:-1:-1;;;;;630:19263:50;5999:18;;5950:23;5999:18;:::i;:::-;630:19263;;5999:33;5995:104;;5789:355;5681:487;;;;;5995:104;630:19263;;-1:-1:-1;5995:104:50;;5814:95;630:19263;1349:42;630:19263;;;;;5875:18;:15;;;:18;:::i;:::-;630:19263;;5875:34;5814:95;;5743:21;;;6238:56;5743:21;;;;630:19263;;;;;;-1:-1:-1;;630:19263:50;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;7220:1;630:19263;;;;;;;;;7250:20;7232:38;;;:::i;:::-;630:19263;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7250:20;630:19263;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;630:19263:50;;;;-1:-1:-1;;;8392:41:50;;630:19263;;8392:41;;630:19263;;;;;;;;;;;8392:41;;;630:19263;;;;-1:-1:-1;;;;;630:19263:50;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;630:19263:50;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;630:19263:50;;;;;;;;;-1:-1:-1;;;;;630:19263:50;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;630:19263:50;;;;;-1:-1:-1;630:19263:50;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;6613:1;630:19263;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;1349:42::-;;;;;;;;;;:::o;1918:2620::-;;;;;;630:19263;;;;;;;;;;;;;;;;;-1:-1:-1;630:19263:50;;-1:-1:-1;630:19263:50;;;;;;;;;:::i;:::-;-1:-1:-1;630:19263:50;;-1:-1:-1;630:19263:50;;;;;;;;2099:18;2133:20;;2129:63;;630:19263;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;630:19263:50;;;;;;-1:-1:-1;630:19263:50;;;;;;-1:-1:-1;630:19263:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2551:32;-1:-1:-1;2551:32:50;;:::i;:::-;630:19263;2639:43;630:19263;;;;;;;;;2639:43;:::i;:::-;630:19263;;;;;;-1:-1:-1;630:19263:50;2924:17;;;-1:-1:-1;2943:3:50;630:19263;;2920:21;;;;;-1:-1:-1;;;;;;;;;;;630:19263:50;;;;;2999:18;:15;;;:18;:::i;:::-;630:19263;;2999:33;:99;;;;2943:3;2970:402;;630:19263;;2905:13;;2970:402;4041:106;630:19263;;;;;;;-1:-1:-1;;;;;;;;;;;630:19263:50;;;;3211:18;630:19263;;;;;3211:15;;;:18;:::i;:::-;630:19263;;3211:33;3207:112;;2970:402;630:19263;;;-1:-1:-1;;;;;630:19263:50;;;;;4041:106;:::i;:::-;1349:42;;;;;;;;;;;4188:9;1349:42;;;;;;;4212:22;;4458:21;4503:28;4275:16;;;;:::i;:::-;630:19263;;4470:9;4458:21;;:::i;:::-;630:19263;4442:13;;630:19263;4503:28;:::i;:::-;630:19263;4489:11;;:42;1918:2620::o;4208:224::-;630:19263;;-1:-1:-1;;;4329:92:50;;630:19263;4329:92;;;1349:42;;;;;630:19263;1349:42;630:19263;;;1349:42;-1:-1:-1;;;1349:42:50;;;;4329:92;;;3207:112;630:19263;;-1:-1:-1;3207:112:50;;2999:99;630:19263;1349:42;630:19263;;;;;3064:18;:15;;;:18;:::i;:::-;630:19263;;3064:34;2999:99;;2920:21;;4041:106;2920:21;;;;;;;;;2853:1106;3414:22;3410:549;;2853:1106;4041:106;2853:1106;;;;;;;;3410:549;630:19263;3480:17;;;-1:-1:-1;3499:3:50;630:19263;;3476:21;;;;;-1:-1:-1;;;;;;;;;;;630:19263:50;;;;;3555:18;:15;;;:18;:::i;:::-;630:19263;;3555:33;:99;;;;3499:3;3526:401;;630:19263;;3461:13;;3526:401;4041:106;630:19263;;;;;;;-1:-1:-1;;;;;;;;;;;630:19263:50;;;;3766:18;630:19263;;;;;3766:15;;;:18;:::i;:::-;630:19263;;3766:33;3762:112;;3526:401;3410:549;;;;;;;;;3762:112;630:19263;;-1:-1:-1;3762:112:50;;3555:99;630:19263;1349:42;630:19263;;;;;3620:18;:15;;;:18;:::i;:::-;630:19263;;3620:34;3555:99;;3476:21;;4041:106;3476:21;;;;;;;;;2129:63;2169:12;;;;;;;;;:::o;630:19263::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;630:19263:50;;;;;;;:::o;:::-;-1:-1:-1;;630:19263:50;;;;;;;:::o;17395:1301::-;;630:19263;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;630:19263:50;;17481:23;17520:11;-1:-1:-1;17685:31:50;;;;:::i;:::-;;;17772:406;17782:7;630:19263;17782:7;;;;17772:406;17680:1010;;;;17395:1301::o;17791:5::-;630:19263;;-1:-1:-1;;;17820:44:50;;;;;630:19263;;;;;;17820:44;630:19263;-1:-1:-1;;;;;630:19263:50;;17820:44;;-1:-1:-1;;17820:44:50;;;17791:5;-1:-1:-1;17816:348:50;;18140:5;;;17816:348;630:19263;17948:16;:28;:16;;;:28;:::i;:::-;630:19263;;;;;;;;;17998:20;630:19263;;17998:20;:::i;:::-;630:19263;;;17777:3;;17820:44;;;;;630:19263;17820:44;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;17680:1010;18208:472;18218:7;630:19263;18218:7;;;;17680:1010;;;;17395:1301::o;18227:5::-;630:19263;;-1:-1:-1;;;18303:101:50;;-1:-1:-1;;;;;630:19263:50;;1349:42;;18303:101;;;518:1;630:19263;;;18303:101;630:19263;-1:-1:-1;;;;;630:19263:50;;18303:101;;-1:-1:-1;;18303:101:50;;;18227:5;-1:-1:-1;18299:367:50;;18642:5;;;18299:367;630:19263;18450:16;:28;:16;;;:28;:::i;:::-;630:19263;;;;;;;;;18500:20;630:19263;;18500:20;:::i;:::-;630:19263;;;18213:3;;18303:101;;;;;630:19263;18303:101;;;;;;;;;:::i;:::-;;;;;16047:817;16363:15;;630:19263;16513:64;;16047:817;-1:-1:-1;;;;;630:19263:50;-1:-1:-1;;;;;;;;;;;16363:33:50;:87;;;;16047:817;16349:119;;;630:19263;;;16349:119;630:19263;;16520:33;630:19263;;;;;;16520:15;;:33;:::i;:::-;630:19263;;;-1:-1:-1;;;16513:64:50;;-1:-1:-1;;;;;630:19263:50;;;16513:64;;;630:19263;;;;;;;;;;;;16513:64;;;;;;;630:19263;16513:64;;;16349:119;16646:21;16592:167;630:19263;16646:21;630:19263;16646:21;;;:29;;;;;;630:19263;16646:29;;16689;;;16747:2;630:19263;16689:29;;630:19263;;;;;;;;;;;16592:167;;630:19263;16513:64;16592:167;;630:19263;;16513:64;630:19263;;;518:1;630:19263;;;;16592:167;;;;;;16689:29;-1:-1:-1;16588:270:50;;630:19263;16836:11;:::o;16588:270::-;630:19263;16792:12;:::o;16592:167::-;630:19263;16592:167;;630:19263;16592:167;;;;;;630:19263;16592:167;;;:::i;:::-;;;630:19263;;;;;16592:167;;;;;-1:-1:-1;16592:167:50;;16689:29;16747:2;630:19263;16689:29;;;16646;630:19263;16646:29;;;16513:64;;;630:19263;16513:64;;630:19263;16513:64;;;;;;630:19263;16513:64;;;:::i;:::-;;;630:19263;;;;;;;16592:167;16513:64;;;;;-1:-1:-1;16513:64:50;;16349:119;630:19263;;;16349:119;;16363:87;-1:-1:-1;16416:15:50;;630:19263;-1:-1:-1;;;;;630:19263:50;1349:42;16416:34;16363:87;;19101:790;630:19263;;19101:790;;;;630:19263;;19101:790;-1:-1:-1;;;;;630:19263:50;;-1:-1:-1;;;;;;;;;;;19401:24:50;;:38;;19101:790;19397:94;;19101:790;-1:-1:-1;;;;;630:19263:50;-1:-1:-1;;;;;;;;;;;19504:23:50;;;:37;;19101:790;19500:92;;;19101:790;630:19263;19601:284;19640:3;19621:17;;;630:19263;19617:21;;;;;19663:15;;-1:-1:-1;;;;;630:19263:50;19663:18;;:15;;:18;:::i;:::-;630:19263;-1:-1:-1;;;;;630:19263:50;;;;19663:32;630:19263;;;;-1:-1:-1;;;;;630:19263:50;;1349:42;;19659:216;;630:19263;19606:9;;;19659:216;630:19263;;;;;;19775:18;:15;;;:18;:::i;:::-;630:19263;;-1:-1:-1;;;;;630:19263:50;;19775:31;19771:104;;19659:216;630:19263;19659:216;;;19771:104;-1:-1:-1;;;;;630:19263:50;;1349:42;;;-1:-1:-1;19771:104:50;;19617:21;;;;;;;;19101:790::o;19500:92::-;1349:42;;-1:-1:-1;19500:92:50;;19504:37;19531:10;;;19504:37;;;19397:94;1349:42;;-1:-1:-1;19397:94:50;;19401:38;19429:10;;;19401:38;;630:19263;;;;;;;;;;;;;;;;;;;-1:-1:-1;;630:19263:50;;;;;:::i;:::-;;;;-1:-1:-1;630:19263:50;;;;:::o;:::-;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;630:19263:50;;;;;;;;;;;;-1:-1:-1;;;630:19263:50;;;;;;;11136:4709;11284:19;;;630:19263;;11340:20;;;630:19263;;;;11136:4709;11402:21;;-1:-1:-1;;;;;630:19263:50;;;;11284:19;;630:19263;;;;;;-1:-1:-1;;;;;;;;;;;11462:34:50;;1428:42;;11512:21;11461:120;;11596:23;;;630:19263;;11596:23;;-1:-1:-1;630:19263:50;-1:-1:-1;;;;;630:19263:50;-1:-1:-1;;;;;;;;;;;11639:35:50;1428:42;;-1:-1:-1;630:19263:50;;;11807:26;;630:19263;11873:25;;;630:19263;11920:24;;;;630:19263;1349:42;;;;;;;;-1:-1:-1;;;;;630:19263:50;11722:311;;;;;11284:19;630:19263;-1:-1:-1;;;11722:311:50;;1349:42;;;;11722:311;;;518:1;1349:42;;;;630:19263;;;518:1;630:19263;;;;;;-1:-1:-1;630:19263:50;;;;;;;;;;;;;11722:311;;;;;;;;11635:963;;;-1:-1:-1;;;;;;;;;;;11635:963:50;;630:19263;-1:-1:-1;;;;;630:19263:50;15393:34;1428:42;;15462:21;:41;15599:36;15462:21;;:41;:::i;:::-;15540:10;;;;;;15532:53;;;;:::i;:::-;;15599:36;:::i;:::-;11136:4709::o;15389:450::-;630:19263;11284:19;630:19263;;;;15701:33;;11410:4;15701:33;;;630:19263;11340:20;15701:33;;;;;;;;;;;;;;15389:450;15701:53;15811:16;15701:53;;;;:::i;:::-;15798:10;;;15811:16;;:::i;15701:33::-;;;11340:20;15701:33;;11340:20;15701:33;;;;;;630:19263;15701:33;;;:::i;:::-;;;630:19263;;;;;15811:16;15701:33;;;;;-1:-1:-1;15701:33:50;;;11284:19;630:19263;;;;;;;;;11722:311;;;;;:::i;:::-;630:19263;;11722:311;;;;630:19263;;;;11722:311;11284:19;630:19263;;;;;;;;11635:963;12147:26;12286;12147;;;630:19263;12147:26;630:19263;;11410:4;12120:10;12147:26;;:::i;:::-;630:19263;;;;;;;;;;12286:26;;:::i;:::-;630:19263;;;;;;;;12470:24;12423:25;;;630:19263;1349:42;;12470:24;;630:19263;1349:42;;630:19263;;12348:235;;;;;;11284:19;630:19263;-1:-1:-1;;;12348:235:50;;1349:42;;;;12348:235;;;518:1;1349:42;;;;630:19263;;;518:1;630:19263;;;;;;;;;;;;;;;;;;;12348:235;;;;;;;;;;;11635:963;;;-1:-1:-1;;;;;;;;;;;11635:963:50;;;12348:235;;;;;:::i;:::-;630:19263;;12348:235;;;;11592:3787;12689:25;;-1:-1:-1;;;;;12689:25:50;;;630:19263;;12790:24;-1:-1:-1;;;;;;;;;;;;;;;;12790:24:50;;;630:19263;;;;;;;;;;;12834:35;12830:2539;1428:42;;;-1:-1:-1;;630:19263:50;;12974:26;;;;630:19263;;-1:-1:-1;;;;;630:19263:50;12889:358;;;;;11284:19;630:19263;-1:-1:-1;;;12889:358:50;;;;;630:19263;;;;;;;;;;;;;;;;;-1:-1:-1;630:19263:50;;;;13869:4;630:19263;;;;11410:4;630:19263;;;;;;;;;;;;;;;12889:358;630:19263;12830:2539;13361:26;;;13500;13361;;;;;630:19263;13361:26;630:19263;;11410:4;13334:10;13361:26;;:::i;:::-;630:19263;;;;;;;;;;13500:26;;:::i;:::-;630:19263;;;;;-1:-1:-1;;;;;630:19263:50;13641:285;;;;;11284:19;630:19263;-1:-1:-1;;;13641:285:50;;;;;630:19263;;;;;;;;;;;;;;;;-1:-1:-1;630:19263:50;;;;;;13869:4;630:19263;;;;11410:4;630:19263;;;;-1:-1:-1;630:19263:50;;;;;;-1:-1:-1;;13641:285:50;;;;;;12830:2539;13637:1423;;;;;;;;;;12830:2539;-1:-1:-1;630:19263:50;;;;-1:-1:-1;;;;;630:19263:50;15133:221;;;;;630:19263;;;15133:221;630:19263;11284:19;630:19263;;;;;;;;;15133:221;;13641:285;15133:221;;630:19263;;;;;;;;;;;;;;15133:221;;;;;;;;12830:2539;;-1:-1:-1;;;;;;;;;;;12830:2539:50;11592:3787;;13637:1423;14208:44;:21;;;;;;;:44;:::i;:::-;14278:23;;;;14560:36;14329:38;;;;;13334:10;14424:110;;;;:::i;14560:36::-;14939:20;14935:98;;13637:1423;;;;;;;;14935:98;14987:23;-1:-1:-1;;;;;;;;14987:23:50:o;14274:640::-;-1:-1:-1;11284:19:50;630:19263;-1:-1:-1;;;14670:33:50;;11410:4;13641:285;14670:33;;630:19263;11340:20;630:19263;14670:33;630:19263;14670:33;;;;;;;;;;;;;14274:640;14670:81;;;;:::i;:::-;14849:16;13334:10;;14849:16;;:::i;:::-;14274:640;;14670:33;;;11340:20;14670:33;;11340:20;14670:33;;;;;;630:19263;14670:33;;;:::i;:::-;;;630:19263;;;;;14670:81;630:19263;;14670:33;;;;;-1:-1:-1;14670:33:50;;;11284:19;630:19263;;;;;;;;13641:285;;;;;;;;;;630:19263;13641:285;;:::i;:::-;630:19263;13641:285;;;;;;;;;11461:120;11284:19;630:19263;-1:-1:-1;;;11548:33:50;;11410:4;11548:33;;;630:19263;;-1:-1:-1;11340:20:50;630:19263;11548:33;630:19263;11548:33;;;;;;;;;630:19263;11548:33;;;11461:120;;;;;11548:33;;;;11340:20;11548:33;;11340:20;11548:33;;;;;;630:19263;11548:33;;;:::i;:::-;;;630:19263;;;;;;;11548:33;;;;;;-1:-1:-1;11548:33:50;;8851:1810;630:19263;;;;;:::i;:::-;-1:-1:-1;630:19263:50;;-1:-1:-1;630:19263:50;;;;9001:16;9072:25;;;630:19263;-1:-1:-1;;;;;630:19263:50;;;9153:24;;;630:19263;-1:-1:-1;;;;;630:19263:50;;;9193:23;;;630:19263;;;9189:1466;9193:23;;;-1:-1:-1;630:19263:50;;;;-1:-1:-1;;;9236:103:50;;;;;630:19263;;;;;;;;9236:103;;630:19263;;-1:-1:-1;;;;;630:19263:50;9236:103;;-1:-1:-1;;9236:103:50;;;9189:1466;-1:-1:-1;9232:614:50;;9547:284;630:19263;;;;;;;;;;;;1349:42;;9236:103;630:19263;;;;;;;;;9612:136;;9236:103;9612:136;;518:1;9612:136;;;;;;;-1:-1:-1;9612:136:50;;;9232:614;518:1;9893:192;1303:7;630:19263;518:1;;9232:614;;630:19263;;;;;;;-1:-1:-1;;;9893:192:50;;1349:42;;;;9236:103;9893:192;;518:1;1349:42;;9236:103;1303:7;;518:1;1303:7;;;630:19263;;;;;;;-1:-1:-1;630:19263:50;;-1:-1:-1;;;;;630:19263:50;9893:192;;;;;;;-1:-1:-1;9893:192:50;;;9232:614;630:19263;;;;;;;:::i;:::-;;;;9867:258;;630:19263;9860:265;:::o;9893:192::-;;;;630:19263;9893:192;;630:19263;9893:192;;;;;;630:19263;9893:192;;;:::i;:::-;;;630:19263;;;;;9893:192;;;;;;;-1:-1:-1;9893:192:50;;9612:136;;;630:19263;9612:136;;630:19263;9612:136;;;;;;630:19263;9612:136;;;:::i;:::-;;;630:19263;;;;;;;9893:192;9612:136;;;;;-1:-1:-1;9612:136:50;;9232:614;9391:105;9893:192;1303:7;630:19263;9391:105;518:1;9232:614;;;9236:103;;;;630:19263;9236:103;;630:19263;9236:103;;;;;;630:19263;9236:103;;;:::i;:::-;;;630:19263;;;;;9236:103;;;;;;;-1:-1:-1;9236:103:50;;9189:1466;630:19263;;;;-1:-1:-1;;;10224:119:50;;;;;630:19263;;;10167:251;;-1:-1:-1;630:19263:50;;-1:-1:-1;10167:251:50;630:19263;;;;10224:119;;630:19263;;-1:-1:-1;;;;;630:19263:50;10224:119;;;;;;;-1:-1:-1;10224:119:50;;;9189:1466;518:1;10466:138;1303:7;630:19263;518:1;;630:19263;;;;;;;;;;;;;;;;;;;;10466:138;;10224:119;10466:138;;630:19263;10224:119;1303:7;;630:19263;1303:7;;;;630:19263;10466:138;;;;;;;-1:-1:-1;10466:138:50;;;630:19263;;;;;;;:::i;10224:119::-;;;630:19263;10224:119;;630:19263;10224:119;;;;;;630:19263;10224:119;;;:::i;:::-;;;630:19263;;;;;;;10466:138;10224:119;;;;;-1:-1:-1;10224:119:50;;17028:270;630:19263;;-1:-1:-1;;;17148:45:50;;630:19263;17148:45;;;630:19263;;;;;;17148:45;;630:19263;;-1:-1:-1;;;;;630:19263:50;17148:45;;;;;;-1:-1:-1;17144:148:50;;;17270:11;:::o;1702:188:32:-;630:19263:50;;-1:-1:-1;;;1829:53:32;;;;-1:-1:-1;;;;;630:19263:50;;;1829:53:32;;;630:19263:50;;;;;;;;;;;;;;;;;1829:53:32;;;;;;;630:19263:50;1829:53:32;:::i;:::-;;:::i;2081:225::-;630:19263:50;;-1:-1:-1;;;2200:39:32;;2224:4;2200:39;;;630:19263:50;-1:-1:-1;;;;;630:19263:50;;;;;;;;;;;;;;;;;;2200:39:32;630:19263:50;;2200:39:32;;;;;;;-1:-1:-1;2200:39:32;;;2081:225;2278:20;630:19263:50;;;;;;;;;-1:-1:-1;;;630:19263:50;3411:47:32;;;;;-1:-1:-1;;;;;630:19263:50;;;;;3411:47:32;;630:19263:50;;;;;;;;;3411:47:32;;;-1:-1:-1;;;;3411:47:32;630:19263:50;;3411:47:32;:::i;:::-;8024:25;;;;;;;;;;:::i;:::-;8066:69;;;2081:225;8066:103;;;;2081:225;3473:45;;3469:201;;2081:225;;;:::o;3469:201::-;3561:43;3646:12;630:19263:50;;;;;;;;3561:43:32;;;630:19263:50;3561:43:32;;630:19263:50;-1:-1:-1;2200:39:32;630:19263:50;;;2200:39:32;3561:43;;;;;;:::i;:::-;;;:::i;8066:103::-;8139:26;;;:30;;8066:103;;;:69;630:19263:50;;;;-1:-1:-1;8078:22:32;;;:56;;;;8066:69;;;;;;;8078:56;8104:30;;;630:19263:50;8104:30:32;;;;;;;;:::i;:::-;8078:56;;;;2200:39;;;;630:19263:50;2200:39:32;;630:19263:50;2200:39:32;;;;;;630:19263:50;2200:39:32;;;:::i;:::-;;;630:19263:50;;;;;2200:39:32;;;;;;;-1:-1:-1;2200:39:32;;1303:160;630:19263:50;;-1:-1:-1;;;1412:43:32;;;;-1:-1:-1;;;;;630:19263:50;;;;1412:43:32;;;630:19263:50;;;;;;;;;1412:43:32;;;;;;630:19263:50;;1412:43:32;:::i;630:19263:50:-;;;;;;;;;;;;;;;;;;:::o;6468:629:32:-;2626:1:33;6468:629:32;3304:55:33;6468:629:32;630:19263:50;;;;;;3256:31:33;;;;;;;;;;;;:::i;:::-;3304:55;;;:::i;:::-;630:19263:50;;6960:22:32;;;;:57;;;;6468:629;6956:135;;;;6468:629;:::o;6956:135::-;7040:40;;;2626:1:33;7040:40:32;;630:19263:50;;2626:1:33;7040:40:32;6960:57;6987:30;;;3256:31:33;6987:30:32;;;;;;;;:::i;:::-;6986:31;6960:57;;;;4421:582:33;;4593:8;;-1:-1:-1;630:19263:50;;5674:21:33;:17;;5846:142;;;;;;5670:385;6025:19;;;5694:1;6025:19;;5694:1;6025:19;4589:408;630:19263:50;;4841:22:33;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:33;4917:24;;;-1:-1:-1;;;;;630:19263:50;;;;4917:24:33;630:19263:50;;;4917:24:33;4841:49;4867:18;;;:23;4841:49;","linkReferences":{}},"methodIdentifiers":{"getCapabilities(bytes32,address,address)":"48bd7dfd","getLimits(bytes32,address,address)":"a9270fbe","getPoolIds(uint256,uint256)":"23eeca01","getTokens(bytes32)":"ecbbc033","price(bytes32,address,address,uint256[])":"aad6e488","swap(bytes32,address,address,uint8,uint256)":"8307c655"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"LimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"Unavailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getCapabilities\",\"outputs\":[{\"internalType\":\"enum ISwapAdapterTypes.Capability[]\",\"name\":\"capabilities\",\"type\":\"uint8[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"}],\"name\":\"getLimits\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"limits\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getPoolIds\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"getTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"specifiedAmounts\",\"type\":\"uint256[]\"}],\"name\":\"price\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction[]\",\"name\":\"prices\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"enum ISwapAdapterTypes.OrderSide\",\"name\":\"side\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"calculatedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction\",\"name\":\"price\",\"type\":\"tuple\"}],\"internalType\":\"struct ISwapAdapterTypes.Trade\",\"name\":\"trade\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract supports both CryptoSwap and StableSwap Curve pools\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"LimitExceeded(uint256)\":[{\"details\":\"The LimitExceeded error is thrown when a limit has been exceeded. E.g. the specified amount can't be traded safely.\"}],\"NotImplemented(string)\":[{\"details\":\"The NotImplemented error is thrown when a function is not implemented.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}],\"Unavailable(string)\":[{\"details\":\"The Unavailable error is thrown when a pool or swap is not available for unexpected reason. E.g. it was paused due to a bug.\"}]},\"kind\":\"dev\",\"methods\":{\"getCapabilities(bytes32,address,address)\":{\"params\":{\"poolId\":\"The ID of the trading pool.\"},\"returns\":{\"capabilities\":\"An array of Capability.\"}},\"getLimits(bytes32,address,address)\":{\"details\":\"Retrieve the maximum limits of a token that can be traded. The limit is reached when the change in the received amounts is zero or close to zero or when the swap fails because of the pools restrictions. Overestimate if in doubt rather than underestimate. The swap function should not error with `LimitExceeded` if called with amounts below the limit.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\"},\"returns\":{\"limits\":\"An array of size two indicating the limit amount for the sell token (maximum the pool is willing to buy in sell token) as well as the limit amount of the buy token (maximum the pool is willing to sell in buy token).\"}},\"getTokens(bytes32)\":{\"details\":\"Mainly used for testing as this is redundant with the required substreams implementation.\",\"params\":{\"poolId\":\"The ID of the trading pool.\"},\"returns\":{\"tokens\":\"An array of address contracts.\"}},\"price(bytes32,address,address,uint256[])\":{\"details\":\"The returned prices should include all dex fees. In case the fee is dynamic on the amount traded, the returned price is expected to include the minimum fee. Note that the returned price should be the marginal price which is distinct from the executed price `swap(amount_in) / amount_in`! The marginal price is defined as the price to trade an arbitrarily small (almost zero) amount after the trade of (amount). E.g. the marginal price of a uniswap v2 pool at amount=0 is `reserve0/reserve1`. Ideally this method should be implemented, although it is optional as the price function can be numerically derived from the swap function. In case it is not available, it should be flagged via capabilities and calling it should revert using the `NotImplemented` error. The method needs to be implemented as view as this is usually more efficient and can be run in parallel.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\",\"specifiedAmounts\":\"Amounts to calculate marginal prices at.\"},\"returns\":{\"prices\":\"array of prices as fractions corresponding to the provided amounts.\"}},\"swap(bytes32,address,address,uint8,uint256)\":{\"details\":\"This function should be state modifying, meaning it should actually execute the swap and change the state of the EVM accordingly. Please include a gas usage estimate for each amount. This can be achieved e.g. by using the `gasleft()` function. The return type `Trade` has an attribute called price which should contain the value of `price(specifiedAmount)`. As this is optional, defined via `Capability.PriceFunction`, it is valid to return a Fraction(0, 0) value for this price. In that case the price will be estimated numerically.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\",\"side\":\"The side of the trade (Sell or Buy).\",\"specifiedAmount\":\"The amount to be traded.\"},\"returns\":{\"trade\":\"Trade struct representing the executed trade.\"}}},\"title\":\"Curve Finance Adapter\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCapabilities(bytes32,address,address)\":{\"notice\":\"Retrieves the capabilities of the selected pool.\"},\"getLimits(bytes32,address,address)\":{\"notice\":\"Retrieves the limits for each token.\"},\"getTokens(bytes32)\":{\"notice\":\"Retrieves the tokens in the selected pool.\"},\"price(bytes32,address,address,uint256[])\":{\"notice\":\"Calculates marginal prices for specified amounts (optional).\"},\"swap(bytes32,address,address,uint8,uint256)\":{\"notice\":\"Simulates swapping tokens on a given pool.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/curve/CurveAdapter.sol\":\"CurveAdapter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12\",\"dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/curve/CurveAdapter.sol\":{\"keccak256\":\"0x7b4cb321e3b307b8a0b538c098b31f0db01145f10f70377f90180fe0d400262f\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://925c32c4b0bd6620d2d9a0710c172a4a38a4a7862c8fc42c0676c0b999d4d913\",\"dweb:/ipfs/QmU23Jr4iVTH4mECJYxLbL3zX484T7J4t4aMRFvtochBmi\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/libraries/FractionMath.sol\":{\"keccak256\":\"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c\",\"dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"type":"error","name":"LimitExceeded"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"NotImplemented"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"Unavailable"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function","name":"getCapabilities","outputs":[{"internalType":"enum ISwapAdapterTypes.Capability[]","name":"capabilities","type":"uint8[]"}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"}],"stateMutability":"view","type":"function","name":"getLimits","outputs":[{"internalType":"uint256[]","name":"limits","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function","name":"getPoolIds","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getTokens","outputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"},{"internalType":"uint256[]","name":"specifiedAmounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"price","outputs":[{"internalType":"struct ISwapAdapterTypes.Fraction[]","name":"prices","type":"tuple[]","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"},{"internalType":"enum ISwapAdapterTypes.OrderSide","name":"side","type":"uint8"},{"internalType":"uint256","name":"specifiedAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swap","outputs":[{"internalType":"struct ISwapAdapterTypes.Trade","name":"trade","type":"tuple","components":[{"internalType":"uint256","name":"calculatedAmount","type":"uint256"},{"internalType":"uint256","name":"gasUsed","type":"uint256"},{"internalType":"struct ISwapAdapterTypes.Fraction","name":"price","type":"tuple","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"getCapabilities(bytes32,address,address)":{"params":{"poolId":"The ID of the trading pool."},"returns":{"capabilities":"An array of Capability."}},"getLimits(bytes32,address,address)":{"details":"Retrieve the maximum limits of a token that can be traded. The limit is reached when the change in the received amounts is zero or close to zero or when the swap fails because of the pools restrictions. Overestimate if in doubt rather than underestimate. The swap function should not error with `LimitExceeded` if called with amounts below the limit.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold."},"returns":{"limits":"An array of size two indicating the limit amount for the sell token (maximum the pool is willing to buy in sell token) as well as the limit amount of the buy token (maximum the pool is willing to sell in buy token)."}},"getTokens(bytes32)":{"details":"Mainly used for testing as this is redundant with the required substreams implementation.","params":{"poolId":"The ID of the trading pool."},"returns":{"tokens":"An array of address contracts."}},"price(bytes32,address,address,uint256[])":{"details":"The returned prices should include all dex fees. In case the fee is dynamic on the amount traded, the returned price is expected to include the minimum fee. Note that the returned price should be the marginal price which is distinct from the executed price `swap(amount_in) / amount_in`! The marginal price is defined as the price to trade an arbitrarily small (almost zero) amount after the trade of (amount). E.g. the marginal price of a uniswap v2 pool at amount=0 is `reserve0/reserve1`. Ideally this method should be implemented, although it is optional as the price function can be numerically derived from the swap function. In case it is not available, it should be flagged via capabilities and calling it should revert using the `NotImplemented` error. The method needs to be implemented as view as this is usually more efficient and can be run in parallel.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold.","specifiedAmounts":"Amounts to calculate marginal prices at."},"returns":{"prices":"array of prices as fractions corresponding to the provided amounts."}},"swap(bytes32,address,address,uint8,uint256)":{"details":"This function should be state modifying, meaning it should actually execute the swap and change the state of the EVM accordingly. Please include a gas usage estimate for each amount. This can be achieved e.g. by using the `gasleft()` function. The return type `Trade` has an attribute called price which should contain the value of `price(specifiedAmount)`. As this is optional, defined via `Capability.PriceFunction`, it is valid to return a Fraction(0, 0) value for this price. In that case the price will be estimated numerically.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold.","side":"The side of the trade (Sell or Buy).","specifiedAmount":"The amount to be traded."},"returns":{"trade":"Trade struct representing the executed trade."}}},"version":1},"userdoc":{"kind":"user","methods":{"getCapabilities(bytes32,address,address)":{"notice":"Retrieves the capabilities of the selected pool."},"getLimits(bytes32,address,address)":{"notice":"Retrieves the limits for each token."},"getTokens(bytes32)":{"notice":"Retrieves the tokens in the selected pool."},"price(bytes32,address,address,uint256[])":{"notice":"Calculates marginal prices for specified amounts (optional)."},"swap(bytes32,address,address,uint8,uint256)":{"notice":"Simulates swapping tokens on a given pool."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/curve/CurveAdapter.sol":"CurveAdapter"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb","urls":["bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12","dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/curve/CurveAdapter.sol":{"keccak256":"0x7b4cb321e3b307b8a0b538c098b31f0db01145f10f70377f90180fe0d400262f","urls":["bzz-raw://925c32c4b0bd6620d2d9a0710c172a4a38a4a7862c8fc42c0676c0b999d4d913","dweb:/ipfs/QmU23Jr4iVTH4mECJYxLbL3zX484T7J4t4aMRFvtochBmi"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/libraries/FractionMath.sol":{"keccak256":"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735","urls":["bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c","dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr"],"license":"AGPL-3.0-or-later"}},"version":1},"id":50} \ No newline at end of file diff --git a/evm/out/CurveAdapter.sol/ICurveCryptoSwapPool.json b/evm/out/CurveAdapter.sol/ICurveCryptoSwapPool.json deleted file mode 100644 index 566c44f..0000000 --- a/evm/out/CurveAdapter.sol/ICurveCryptoSwapPool.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"balances","inputs":[{"name":"arg0","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"exchange","inputs":[{"name":"i","type":"uint256","internalType":"uint256"},{"name":"j","type":"uint256","internalType":"uint256"},{"name":"dx","type":"uint256","internalType":"uint256"},{"name":"min_dy","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"fee","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"get_dy","inputs":[{"name":"i","type":"uint256","internalType":"uint256"},{"name":"j","type":"uint256","internalType":"uint256"},{"name":"dx","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"balances(uint256)":"4903b0d1","exchange(uint256,uint256,uint256,uint256)":"5b41b908","fee()":"ddca3f43","get_dy(uint256,uint256,uint256)":"556d6e9f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"arg0\",\"type\":\"uint256\"}],\"name\":\"balances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"j\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dx\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min_dy\",\"type\":\"uint256\"}],\"name\":\"exchange\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"j\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dx\",\"type\":\"uint256\"}],\"name\":\"get_dy\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Wrapped ported version of Curve Plain Pool to Solidity For params informations see: https://docs.curve.fi/cryptoswap-exchange/cryptoswap/pools/crypto-pool/\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/curve/CurveAdapter.sol\":\"ICurveCryptoSwapPool\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12\",\"dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/curve/CurveAdapter.sol\":{\"keccak256\":\"0x7b4cb321e3b307b8a0b538c098b31f0db01145f10f70377f90180fe0d400262f\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://925c32c4b0bd6620d2d9a0710c172a4a38a4a7862c8fc42c0676c0b999d4d913\",\"dweb:/ipfs/QmU23Jr4iVTH4mECJYxLbL3zX484T7J4t4aMRFvtochBmi\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/libraries/FractionMath.sol\":{\"keccak256\":\"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c\",\"dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"arg0","type":"uint256"}],"stateMutability":"view","type":"function","name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"i","type":"uint256"},{"internalType":"uint256","name":"j","type":"uint256"},{"internalType":"uint256","name":"dx","type":"uint256"},{"internalType":"uint256","name":"min_dy","type":"uint256"}],"stateMutability":"payable","type":"function","name":"exchange"},{"inputs":[],"stateMutability":"view","type":"function","name":"fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"i","type":"uint256"},{"internalType":"uint256","name":"j","type":"uint256"},{"internalType":"uint256","name":"dx","type":"uint256"}],"stateMutability":"view","type":"function","name":"get_dy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/curve/CurveAdapter.sol":"ICurveCryptoSwapPool"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb","urls":["bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12","dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/curve/CurveAdapter.sol":{"keccak256":"0x7b4cb321e3b307b8a0b538c098b31f0db01145f10f70377f90180fe0d400262f","urls":["bzz-raw://925c32c4b0bd6620d2d9a0710c172a4a38a4a7862c8fc42c0676c0b999d4d913","dweb:/ipfs/QmU23Jr4iVTH4mECJYxLbL3zX484T7J4t4aMRFvtochBmi"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/libraries/FractionMath.sol":{"keccak256":"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735","urls":["bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c","dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr"],"license":"AGPL-3.0-or-later"}},"version":1},"id":50} \ No newline at end of file diff --git a/evm/out/CurveAdapter.sol/ICurveCryptoSwapPoolEth.json b/evm/out/CurveAdapter.sol/ICurveCryptoSwapPoolEth.json deleted file mode 100644 index 75183f5..0000000 --- a/evm/out/CurveAdapter.sol/ICurveCryptoSwapPoolEth.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"balances","inputs":[{"name":"arg0","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"exchange","inputs":[{"name":"i","type":"uint256","internalType":"uint256"},{"name":"j","type":"uint256","internalType":"uint256"},{"name":"dx","type":"uint256","internalType":"uint256"},{"name":"min_dy","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"exchange","inputs":[{"name":"i","type":"uint256","internalType":"uint256"},{"name":"j","type":"uint256","internalType":"uint256"},{"name":"dx","type":"uint256","internalType":"uint256"},{"name":"min_dy","type":"uint256","internalType":"uint256"},{"name":"use_eth","type":"bool","internalType":"bool"},{"name":"receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"fee","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"get_dy","inputs":[{"name":"i","type":"uint256","internalType":"uint256"},{"name":"j","type":"uint256","internalType":"uint256"},{"name":"dx","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"balances(uint256)":"4903b0d1","exchange(uint256,uint256,uint256,uint256)":"5b41b908","exchange(uint256,uint256,uint256,uint256,bool,address)":"ce7d6503","fee()":"ddca3f43","get_dy(uint256,uint256,uint256)":"556d6e9f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"arg0\",\"type\":\"uint256\"}],\"name\":\"balances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"j\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dx\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min_dy\",\"type\":\"uint256\"}],\"name\":\"exchange\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"j\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dx\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min_dy\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"use_eth\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"exchange\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"j\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dx\",\"type\":\"uint256\"}],\"name\":\"get_dy\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/curve/CurveAdapter.sol\":\"ICurveCryptoSwapPoolEth\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12\",\"dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/curve/CurveAdapter.sol\":{\"keccak256\":\"0x7b4cb321e3b307b8a0b538c098b31f0db01145f10f70377f90180fe0d400262f\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://925c32c4b0bd6620d2d9a0710c172a4a38a4a7862c8fc42c0676c0b999d4d913\",\"dweb:/ipfs/QmU23Jr4iVTH4mECJYxLbL3zX484T7J4t4aMRFvtochBmi\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/libraries/FractionMath.sol\":{\"keccak256\":\"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c\",\"dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"arg0","type":"uint256"}],"stateMutability":"view","type":"function","name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"i","type":"uint256"},{"internalType":"uint256","name":"j","type":"uint256"},{"internalType":"uint256","name":"dx","type":"uint256"},{"internalType":"uint256","name":"min_dy","type":"uint256"}],"stateMutability":"payable","type":"function","name":"exchange"},{"inputs":[{"internalType":"uint256","name":"i","type":"uint256"},{"internalType":"uint256","name":"j","type":"uint256"},{"internalType":"uint256","name":"dx","type":"uint256"},{"internalType":"uint256","name":"min_dy","type":"uint256"},{"internalType":"bool","name":"use_eth","type":"bool"},{"internalType":"address","name":"receiver","type":"address"}],"stateMutability":"payable","type":"function","name":"exchange"},{"inputs":[],"stateMutability":"view","type":"function","name":"fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"i","type":"uint256"},{"internalType":"uint256","name":"j","type":"uint256"},{"internalType":"uint256","name":"dx","type":"uint256"}],"stateMutability":"view","type":"function","name":"get_dy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/curve/CurveAdapter.sol":"ICurveCryptoSwapPoolEth"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb","urls":["bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12","dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/curve/CurveAdapter.sol":{"keccak256":"0x7b4cb321e3b307b8a0b538c098b31f0db01145f10f70377f90180fe0d400262f","urls":["bzz-raw://925c32c4b0bd6620d2d9a0710c172a4a38a4a7862c8fc42c0676c0b999d4d913","dweb:/ipfs/QmU23Jr4iVTH4mECJYxLbL3zX484T7J4t4aMRFvtochBmi"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/libraries/FractionMath.sol":{"keccak256":"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735","urls":["bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c","dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr"],"license":"AGPL-3.0-or-later"}},"version":1},"id":50} \ No newline at end of file diff --git a/evm/out/CurveAdapter.sol/ICurveCustomInt128Pool.json b/evm/out/CurveAdapter.sol/ICurveCustomInt128Pool.json deleted file mode 100644 index 24746b5..0000000 --- a/evm/out/CurveAdapter.sol/ICurveCustomInt128Pool.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"balances","inputs":[{"name":"arg0","type":"int128","internalType":"int128"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"coins","inputs":[{"name":"arg0","type":"int128","internalType":"int128"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"balances(int128)":"065a80d8","coins(int128)":"23746eb8"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"int128\",\"name\":\"arg0\",\"type\":\"int128\"}],\"name\":\"balances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int128\",\"name\":\"arg0\",\"type\":\"int128\"}],\"name\":\"coins\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/curve/CurveAdapter.sol\":\"ICurveCustomInt128Pool\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12\",\"dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/curve/CurveAdapter.sol\":{\"keccak256\":\"0x7b4cb321e3b307b8a0b538c098b31f0db01145f10f70377f90180fe0d400262f\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://925c32c4b0bd6620d2d9a0710c172a4a38a4a7862c8fc42c0676c0b999d4d913\",\"dweb:/ipfs/QmU23Jr4iVTH4mECJYxLbL3zX484T7J4t4aMRFvtochBmi\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/libraries/FractionMath.sol\":{\"keccak256\":\"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c\",\"dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"int128","name":"arg0","type":"int128"}],"stateMutability":"view","type":"function","name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"int128","name":"arg0","type":"int128"}],"stateMutability":"view","type":"function","name":"coins","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/curve/CurveAdapter.sol":"ICurveCustomInt128Pool"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb","urls":["bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12","dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/curve/CurveAdapter.sol":{"keccak256":"0x7b4cb321e3b307b8a0b538c098b31f0db01145f10f70377f90180fe0d400262f","urls":["bzz-raw://925c32c4b0bd6620d2d9a0710c172a4a38a4a7862c8fc42c0676c0b999d4d913","dweb:/ipfs/QmU23Jr4iVTH4mECJYxLbL3zX484T7J4t4aMRFvtochBmi"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/libraries/FractionMath.sol":{"keccak256":"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735","urls":["bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c","dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr"],"license":"AGPL-3.0-or-later"}},"version":1},"id":50} \ No newline at end of file diff --git a/evm/out/CurveAdapter.sol/ICurveStableSwapMetaPool.json b/evm/out/CurveAdapter.sol/ICurveStableSwapMetaPool.json deleted file mode 100644 index 1863951..0000000 --- a/evm/out/CurveAdapter.sol/ICurveStableSwapMetaPool.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"balances","inputs":[{"name":"arg0","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"coins","inputs":[{"name":"i","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"exchange","inputs":[{"name":"i","type":"int128","internalType":"int128"},{"name":"j","type":"int128","internalType":"int128"},{"name":"dx","type":"uint256","internalType":"uint256"},{"name":"min_dy","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"exchange_underlying","inputs":[{"name":"i","type":"int128","internalType":"int128"},{"name":"j","type":"int128","internalType":"int128"},{"name":"dx","type":"uint256","internalType":"uint256"},{"name":"min_dy","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"fee","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"get_dy","inputs":[{"name":"i","type":"int128","internalType":"int128"},{"name":"j","type":"int128","internalType":"int128"},{"name":"dx","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"get_dy_underlying","inputs":[{"name":"i","type":"int128","internalType":"int128"},{"name":"j","type":"int128","internalType":"int128"},{"name":"dx","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"balances(uint256)":"4903b0d1","coins(uint256)":"c6610657","exchange(int128,int128,uint256,uint256)":"3df02124","exchange_underlying(int128,int128,uint256,uint256)":"a6417ed6","fee()":"ddca3f43","get_dy(int128,int128,uint256)":"5e0d443f","get_dy_underlying(int128,int128,uint256)":"07211ef7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"arg0\",\"type\":\"uint256\"}],\"name\":\"balances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"}],\"name\":\"coins\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int128\",\"name\":\"i\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"j\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"dx\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min_dy\",\"type\":\"uint256\"}],\"name\":\"exchange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int128\",\"name\":\"i\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"j\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"dx\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min_dy\",\"type\":\"uint256\"}],\"name\":\"exchange_underlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int128\",\"name\":\"i\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"j\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"dx\",\"type\":\"uint256\"}],\"name\":\"get_dy\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int128\",\"name\":\"i\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"j\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"dx\",\"type\":\"uint256\"}],\"name\":\"get_dy_underlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"TODO future implementation, not used at the moment since StableSwap Meta Pools are not supported yet\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/curve/CurveAdapter.sol\":\"ICurveStableSwapMetaPool\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12\",\"dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/curve/CurveAdapter.sol\":{\"keccak256\":\"0x7b4cb321e3b307b8a0b538c098b31f0db01145f10f70377f90180fe0d400262f\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://925c32c4b0bd6620d2d9a0710c172a4a38a4a7862c8fc42c0676c0b999d4d913\",\"dweb:/ipfs/QmU23Jr4iVTH4mECJYxLbL3zX484T7J4t4aMRFvtochBmi\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/libraries/FractionMath.sol\":{\"keccak256\":\"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c\",\"dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"arg0","type":"uint256"}],"stateMutability":"view","type":"function","name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"i","type":"uint256"}],"stateMutability":"view","type":"function","name":"coins","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"int128","name":"i","type":"int128"},{"internalType":"int128","name":"j","type":"int128"},{"internalType":"uint256","name":"dx","type":"uint256"},{"internalType":"uint256","name":"min_dy","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"exchange"},{"inputs":[{"internalType":"int128","name":"i","type":"int128"},{"internalType":"int128","name":"j","type":"int128"},{"internalType":"uint256","name":"dx","type":"uint256"},{"internalType":"uint256","name":"min_dy","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"exchange_underlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"int128","name":"i","type":"int128"},{"internalType":"int128","name":"j","type":"int128"},{"internalType":"uint256","name":"dx","type":"uint256"}],"stateMutability":"view","type":"function","name":"get_dy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"int128","name":"i","type":"int128"},{"internalType":"int128","name":"j","type":"int128"},{"internalType":"uint256","name":"dx","type":"uint256"}],"stateMutability":"view","type":"function","name":"get_dy_underlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/curve/CurveAdapter.sol":"ICurveStableSwapMetaPool"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb","urls":["bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12","dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/curve/CurveAdapter.sol":{"keccak256":"0x7b4cb321e3b307b8a0b538c098b31f0db01145f10f70377f90180fe0d400262f","urls":["bzz-raw://925c32c4b0bd6620d2d9a0710c172a4a38a4a7862c8fc42c0676c0b999d4d913","dweb:/ipfs/QmU23Jr4iVTH4mECJYxLbL3zX484T7J4t4aMRFvtochBmi"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/libraries/FractionMath.sol":{"keccak256":"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735","urls":["bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c","dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr"],"license":"AGPL-3.0-or-later"}},"version":1},"id":50} \ No newline at end of file diff --git a/evm/out/CurveAdapter.sol/ICurveStableSwapPool.json b/evm/out/CurveAdapter.sol/ICurveStableSwapPool.json deleted file mode 100644 index 91ce62d..0000000 --- a/evm/out/CurveAdapter.sol/ICurveStableSwapPool.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"balances","inputs":[{"name":"arg0","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"coins","inputs":[{"name":"i","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"exchange","inputs":[{"name":"i","type":"int128","internalType":"int128"},{"name":"j","type":"int128","internalType":"int128"},{"name":"dx","type":"uint256","internalType":"uint256"},{"name":"min_dy","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fee","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"get_dy","inputs":[{"name":"i","type":"int128","internalType":"int128"},{"name":"j","type":"int128","internalType":"int128"},{"name":"dx","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"balances(uint256)":"4903b0d1","coins(uint256)":"c6610657","exchange(int128,int128,uint256,uint256)":"3df02124","fee()":"ddca3f43","get_dy(int128,int128,uint256)":"5e0d443f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"arg0\",\"type\":\"uint256\"}],\"name\":\"balances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"}],\"name\":\"coins\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int128\",\"name\":\"i\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"j\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"dx\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min_dy\",\"type\":\"uint256\"}],\"name\":\"exchange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int128\",\"name\":\"i\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"j\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"dx\",\"type\":\"uint256\"}],\"name\":\"get_dy\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Wrapped ported version of Curve Plain Pool to Solidity For params informations see: https://docs.curve.fi/stableswap-exchange/stableswap/pools/plain_pools/\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/curve/CurveAdapter.sol\":\"ICurveStableSwapPool\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12\",\"dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/curve/CurveAdapter.sol\":{\"keccak256\":\"0x7b4cb321e3b307b8a0b538c098b31f0db01145f10f70377f90180fe0d400262f\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://925c32c4b0bd6620d2d9a0710c172a4a38a4a7862c8fc42c0676c0b999d4d913\",\"dweb:/ipfs/QmU23Jr4iVTH4mECJYxLbL3zX484T7J4t4aMRFvtochBmi\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/libraries/FractionMath.sol\":{\"keccak256\":\"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c\",\"dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"arg0","type":"uint256"}],"stateMutability":"view","type":"function","name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"i","type":"uint256"}],"stateMutability":"view","type":"function","name":"coins","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"int128","name":"i","type":"int128"},{"internalType":"int128","name":"j","type":"int128"},{"internalType":"uint256","name":"dx","type":"uint256"},{"internalType":"uint256","name":"min_dy","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"exchange"},{"inputs":[],"stateMutability":"view","type":"function","name":"fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"int128","name":"i","type":"int128"},{"internalType":"int128","name":"j","type":"int128"},{"internalType":"uint256","name":"dx","type":"uint256"}],"stateMutability":"view","type":"function","name":"get_dy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/curve/CurveAdapter.sol":"ICurveStableSwapPool"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb","urls":["bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12","dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/curve/CurveAdapter.sol":{"keccak256":"0x7b4cb321e3b307b8a0b538c098b31f0db01145f10f70377f90180fe0d400262f","urls":["bzz-raw://925c32c4b0bd6620d2d9a0710c172a4a38a4a7862c8fc42c0676c0b999d4d913","dweb:/ipfs/QmU23Jr4iVTH4mECJYxLbL3zX484T7J4t4aMRFvtochBmi"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/libraries/FractionMath.sol":{"keccak256":"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735","urls":["bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c","dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr"],"license":"AGPL-3.0-or-later"}},"version":1},"id":50} \ No newline at end of file diff --git a/evm/out/CurveAdapter.sol/ICurveStableSwapPoolEth.json b/evm/out/CurveAdapter.sol/ICurveStableSwapPoolEth.json deleted file mode 100644 index 69717fe..0000000 --- a/evm/out/CurveAdapter.sol/ICurveStableSwapPoolEth.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"exchange","inputs":[{"name":"i","type":"int128","internalType":"int128"},{"name":"j","type":"int128","internalType":"int128"},{"name":"dx","type":"uint256","internalType":"uint256"},{"name":"min_dy","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"exchange(int128,int128,uint256,uint256)":"3df02124"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"int128\",\"name\":\"i\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"j\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"dx\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min_dy\",\"type\":\"uint256\"}],\"name\":\"exchange\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/curve/CurveAdapter.sol\":\"ICurveStableSwapPoolEth\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12\",\"dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/curve/CurveAdapter.sol\":{\"keccak256\":\"0x7b4cb321e3b307b8a0b538c098b31f0db01145f10f70377f90180fe0d400262f\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://925c32c4b0bd6620d2d9a0710c172a4a38a4a7862c8fc42c0676c0b999d4d913\",\"dweb:/ipfs/QmU23Jr4iVTH4mECJYxLbL3zX484T7J4t4aMRFvtochBmi\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/libraries/FractionMath.sol\":{\"keccak256\":\"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c\",\"dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"int128","name":"i","type":"int128"},{"internalType":"int128","name":"j","type":"int128"},{"internalType":"uint256","name":"dx","type":"uint256"},{"internalType":"uint256","name":"min_dy","type":"uint256"}],"stateMutability":"payable","type":"function","name":"exchange"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/curve/CurveAdapter.sol":"ICurveStableSwapPoolEth"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb","urls":["bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12","dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/curve/CurveAdapter.sol":{"keccak256":"0x7b4cb321e3b307b8a0b538c098b31f0db01145f10f70377f90180fe0d400262f","urls":["bzz-raw://925c32c4b0bd6620d2d9a0710c172a4a38a4a7862c8fc42c0676c0b999d4d913","dweb:/ipfs/QmU23Jr4iVTH4mECJYxLbL3zX484T7J4t4aMRFvtochBmi"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/libraries/FractionMath.sol":{"keccak256":"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735","urls":["bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c","dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr"],"license":"AGPL-3.0-or-later"}},"version":1},"id":50} \ No newline at end of file diff --git a/evm/out/CurveAdapter.t.sol/CurveAdapterTest.json b/evm/out/CurveAdapter.t.sol/CurveAdapterTest.json deleted file mode 100644 index a31ad74..0000000 --- a/evm/out/CurveAdapter.t.sol/CurveAdapterTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"receive","stateMutability":"payable"},{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"fractionToInt","inputs":[{"name":"price","type":"tuple","internalType":"struct ISwapAdapterTypes.Fraction","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"runPoolBehaviourTest","inputs":[{"name":"adapter","type":"address","internalType":"contract ISwapAdapter"},{"name":"poolIds","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stringPctgs","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testGetCapabilitiesCurveSwap","inputs":[{"name":"pair","type":"bytes32","internalType":"bytes32"},{"name":"t0","type":"address","internalType":"address"},{"name":"t1","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testGetLimitsCurveCryptoSwap","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testGetLimitsCurveStableSwap","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testGetTokensCurveCryptoSwap","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testGetTokensCurveStableSwap","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapFuzzCurveCryptoSwap","inputs":[{"name":"specifiedAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapFuzzCurveCryptoSwapUsingEth","inputs":[{"name":"specifiedAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapFuzzCurveStEthPool","inputs":[{"name":"specifiedAmount","type":"uint256","internalType":"uint256"},{"name":"invertedSides","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapFuzzCurveStablePoolEthWithEth","inputs":[{"name":"specifiedAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapFuzzCurveStablePoolEthWithToken","inputs":[{"name":"specifiedAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapFuzzCurveStableSwap","inputs":[{"name":"specifiedAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapSellIncreasingSwapsCurve","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapsForAdditionalPools","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LimitExceeded","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotImplemented","inputs":[{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"Unavailable","inputs":[{"name":"reason","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x6080604052346102be57600160ff19600c541617600c55600160ff19601e541617601e556040516080810181811060018060401b0382111761020c5760405261004860406102c2565b6002815261302560f01b6020820152815261006360406102c2565b6004815263302e312560e01b6020820152602082015261008360406102c2565b600381526235302560e81b602082015260408201526100a260406102c2565b60048152633130302560e01b60208201526060820152601f546004601f5580600410610220575b50601f5f9081525f51602061acfe5f395f51905f52915b600482106100f75760405161a9c890816103368239f35b80518051906001600160401b03821161020c5761011485546102e7565b601f81116101d1575b50602090601f83116001146101685792826001949360209386955f9261015d575b50505f19600383901b1c191690841b1786555b019301910190916100e0565b015190505f8061013e565b90601f19831691865f52815f20925f5b8181106101b957509360209360019693879693838895106101a1575b505050811b018655610151565b01515f1960f88460031b161c191690555f8080610194565b82840151855560019094019360209384019301610178565b6101fc90865f5260205f20601f850160051c81019160208610610202575b601f0160051c019061031f565b5f61011d565b90915081906101ef565b634e487b7160e01b5f52604160045260245ffd5b601f5f525f51602061acfe5f395f51905f52017fa03837a25210ee280c2113ff4b77ca23440b19d4866cca721c801278fd08d80b5b81811061026257506100c9565b8061026f600192546102e7565b8061027c575b5001610255565b601f8111831461029157505f81555b5f610275565b6102ad90825f5283601f60205f20920160051c8201910161031f565b805f525f602081208183555561028b565b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761020c57604052565b90600182811c92168015610315575b602083101461030157565b634e487b7160e01b5f52602260045260245ffd5b91607f16916102f6565b81811061032a575050565b5f815560010161031f56fe61016080604052600436101561001d575b50361561001b575f80fd5b005b5f905f3560e01c90816308c41745146154f9575080630a9254e414614cf15780631b92811314614c515780631ed7831c14614bd357806321ce99d1146142c057806327e10f5b14613bb55780632ade388014613a465780632b23bee7146137c15780633584c58c146137315780633dbde0cc14612a3b5780633e5e3c23146129bd5780633f7286f41461293f578063444bb9ce146122a457806359f2cba1146121f2578063642b929d14611fa857806366d9a9a014611dfa57806385226c8114611d60578063916a17c614611ad457806391e2f3bf146112cc57806399dd5ff814610675578063a00872f114610605578063ad74a8691461059b578063b5508aa9146104fa578063ba414fa6146104d5578063d170c3cc146102a7578063d4bdd1791461020c578063e20c9f711461017e5763fa7626d403610010573461017b578060031936011261017b57602060ff601e54166040519015158152f35b80fd5b503461017b578060031936011261017b5760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b8181106101ed576101e9856101dd81870382615568565b60405191829182615589565b0390f35b82546001600160a01b03168452602090930192600192830192016101c6565b503461017b578060031936011261017b5760205460405163ecbbc03360e01b81527380466c64868e1ab14a1ddf27a676c3fcbe638fe560601b6004820152908290829060249082906001600160a01b03165afa801561029c5761027791839161027a575b5051615e5e565b80f35b61029691503d8085833e61028e8183615568565b8101906159b0565b5f610270565b6040513d84823e3d90fd5b503461017b57604036600319011261017b576004356001600160a01b0381168082036104d157602435916001600160401b0383116104cd57366023840112156104cd578260040135926102f98461580b565b936103076040519586615568565b8085526024602086019160051b830101913683116104c957602401905b8282106104b95750505061033783615a3a565b51604051906348bd7dfd60e01b82526004820152846024820152846044820152848160648183875af180156104ae5761037791869161048c575b50615f4c565b1591845b84518110156104885761038e8186615a57565b51906040519163ecbbc03360e01b83526004830152868260248183875af1801561047d578561045d916001948a91610463575b506103dc86868060a01b036103d584615a3a565b5116615ff7565b6103ef86868060a01b036103d584615a47565b610427826103fd868c615a57565b51878060a01b0361040d85615a3a565b5116888060a01b0361041e86615a47565b5116918b616217565b610431848a615a57565b5190858060a01b0361044282615a47565b511690610454878060a01b0391615a3a565b51169188616217565b0161037b565b61047791503d808c833e61028e8183615568565b5f6103c1565b6040513d89823e3d90fd5b8580f35b6104a891503d8088833e6104a08183615568565b81019061592d565b5f610371565b6040513d87823e3d90fd5b8135815260209182019101610324565b8680fd5b8380fd5b8280fd5b503461017b578060031936011261017b5760206104f0615bf9565b6040519015158152f35b503461017b578060031936011261017b576019546105178161580b565b916105256040519384615568565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b83831061056f57604051602080825281906101e9908201886155ef565b60016020819260405161058d81610586818961578a565b0382615568565b815201920192019190610552565b503461017b578060031936011261017b5760205460405163ecbbc03360e01b815273bebc44782c7db0a1a60cb6fe97d0b483032ff1c760601b6004820152908290829060249082906001600160a01b03165afa801561029c5761027791839161027a575051615e5e565b503461017b57602036600319011261017b57600435601f548110156106715761062d9061573a565b91909161065d576040516101e99061064981610586818761578a565b6040519182916020835260208301906155cb565b634e487b7160e01b81526004819052602490fd5b5080fd5b503461017b57604036600319011261017b576004359060243580159081150361067157156112af5773ae7ab96520de3a18e5e111b5eaab095312d7fe8491815b60205460405163549387df60e11b8152736e1218b5cd701478a4be13af5c8c951f507b381160611b60048201526001600160a01b039283166024820181905295831660448201819052929091859183916064918391165afa90811561093e579061072691859161128d575b50615a3a565b51821080611281575b5f51602061a9135f395f51905f523b156104cd57604051632631f2b160e11b8152901515600482015283816024815f51602061a9135f395f51905f525afa801561093e5790849161126c575b50508315918215610b5c5783946107a08260018060a0989697981b0360205416615d8e565b602080546040516370a0823160e01b81523060048201526001600160a01b0390911631929181602481895afa9081156104ae578591610b27575b50955b608060018060a01b036020541660a460405180988193638307c65560e01b8352736e1218b5cd701478a4be13af5c8c951f507b381160611b60048401528760248401528b60448401528160648401528960848401525af1948515610ad7578895610af6575b50156109b5575060205461086b9291610865916001600160a01b03163190615bdf565b90615cf0565b8051600381018091116109a1576040516370a0823160e01b815230600482015290602082602481875afa8015610996578592879161095d575b506108b8926108b291615bdf565b90615eae565b51600219810191908211610949576020602491604051928380926370a0823160e01b82523060048301525afa90811561093e578491610906575b506102779261090091615bdf565b90615efd565b90506020813d602011610936575b8161092160209383615568565b8101031261093257516102776108f2565b5f80fd5b3d9150610914565b6040513d86823e3d90fd5b634e487b7160e01b84526011600452602484fd5b9250506020823d60201161098e575b8161097960209383615568565b810103126109325790518491906108b86108a4565b3d915061096c565b6040513d88823e3d90fd5b634e487b7160e01b85526011600452602485fd5b909194935060038501808611610ae2576040516370a0823160e01b815230600482015290602082602481865afa918215610ad7578892610aa1575b506108b26109fe9285615bdf565b6002198501948511610a8d57906020602492604051938480926370a0823160e01b82523060048301525afa918215610996578692610a55575b50610277946109006108659493610a4d93615bdf565b519147615bdf565b9291506020833d602011610a85575b81610a7160209383615568565b810103126109325791519091610277610a37565b3d9150610a64565b634e487b7160e01b86526011600452602486fd5b91506020823d602011610acf575b81610abc60209383615568565b81010312610932579051906108b26109f0565b3d9150610aaf565b6040513d8a823e3d90fd5b634e487b7160e01b87526011600452602487fd5b610b1991955060803d608011610b20575b610b118183615568565b810190615aab565b935f610842565b503d610b07565b9450506020843d602011610b54575b81610b4360209383615568565b81010312610932578693515f6107da565b3d9150610b36565b604051632eca54bf60e21b81526004810182905294602086602481737f39c581f595b53c5cb19bd0b3f8da6c935e2ca05afa9586156104ae578596611238575b50848060405160208101906370a0823160e01b825230602482015260248152610bc6604482615568565b5190737f39c581f595b53c5cb19bd0b3f8da6c935e2ca05afa50610bfa610beb617858565b6020808251830101910161591e565b50601180546001600160a01b031916737f39c581f595b53c5cb19bd0b3f8da6c935e2ca0179055600f805463ffffffff19166370a08231179055600e54600160401b81101561122457610c56816001610c6f9301600e55615722565b919091309083549060031b91821b915f19901b19161790565b905560018060a01b036011541695600f5460e01b60105490610c8f617c18565b6001600160a01b038a165f908152600d60205260409020909163ffffffff60e01b1690818a52602052604089206040516020810190610ce181610cd3888886617c01565b03601f198101835282615568565b5190208a5260205260ff600360408b2001541615611216575b6001600160a01b038a165f908152600d60205260409020908952602052610cd3610d3360408a2093604051928391602083019586617c01565b51902087526020526040862096600188015490600289015498610d568a84615bec565b6110da575b8054604051630667f9d760e41b81526001600160a01b038416600482015260248101829052999a989997988b98946020866044815f51602061a9135f395f51905f525afa9586156110cf578a96611096575b506001908201610100031b5f1901811b198516915f51602061a9135f395f51905f523b15611092576040516370ca10bb60e01b81526001600160a01b038616600482015260248101919091529086901b9190911760448201528781606481835f51602061a9135f395f51905f525af1908115610ad757889161107d575b505083610e35617dd1565b919015918215611072575b5050610f8f57505050610e516188f7565b60405190636f074d1f60e11b8252600482015260208160248187737f39c581f595b53c5cb19bd0b3f8da6c935e2ca05af1801561093e57610f60575b506020805460405163095ea7b360e01b81526001600160a01b03909116600482015260248101849052908160448187865af1801561093e57610f33575b506040516370a0823160e01b8152306004820152602081602481855afa90811561093e578491610efe575b509047956107dd565b9350506020833d602011610f2b575b81610f1a60209383615568565b81010312610932578592515f610ef5565b3d9150610f0d565b610f549060203d602011610f59575b610f4c8183615568565b810190615a6b565b610eca565b503d610f42565b610f819060203d602011610f88575b610f798183615568565b81019061591e565b505f610e8d565b503d610f6f565b869291839154905f51602061a9135f395f51905f523b156104d1576040516370ca10bb60e01b81526001600160a01b039091166004820152602481019190915260448101929092528180606481015b0381835f51602061a9135f395f51905f525af1801561029c5761105d575b60405162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b611068828092615568565b61017b5780610ffc565b14159050845f610e40565b8161108791615568565b6104c957865f610e2a565b8980fd5b995094506020893d6020116110c7575b816110b360209383615568565b810103126109325797518b98909481610dad565b3d91506110a6565b6040513d8c823e3d90fd5b6110e48a84615bec565b6101000361010081116112025760ff8111611202576001901b996040519a63348051d760e11b8c528060048d01528a8c6024815f51602061a9135f395f51905f525afa9b8c156111f7578b9c6111d3575b50604051809c602082015f51602061a9735f395f51905f529052604082015f51602061a8d35f395f51905f5290526060820169030ba32b9103a3430b7160b51b905280516020819201606a84015e81018c606a82015203606a01601f1981018d526111a0908d615568565b8510156111ae579950610d5b565b60405162461bcd60e51b815260206004820152806111cf602482018e6155cb565b0390fd5b6111f0919c503d808d833e6111e88183615568565b8101906158bc565b9a5f611135565b6040513d8d823e3d90fd5b634e487b7160e01b8a52601160045260248afd5b61121e61804b565b50610cfa565b634e487b7160e01b86526041600452602486fd5b9095506020813d602011611264575b8161125460209383615568565b810103126109325751945f610b9c565b3d9150611247565b8161127691615568565b6104d157825f61077b565b50620186a0821161072f565b6112a991503d8087833e6112a18183615568565b810190615b66565b5f610720565b73ae7ab96520de3a18e5e111b5eaab095312d7fe849181926106b5565b503461017b57602036600319011261017b576004358160648160018060a01b03602054166040519283809263549387df60e11b82527380466c64868e1ab14a1ddf27a676c3fcbe638fe560601b60048301525f51602061a9335f395f51905f5260248301525f51602061a9535f395f51905f5260448301525afa801561029c5761135c918391611ac05750615a3a565b51821080611ab4575b5f51602061a9135f395f51905f523b1561067157604051632631f2b160e11b8152901515600482015281816024815f51602061a9135f395f51905f525afa801561029c57611a9f575b508060405160208101906370a0823160e01b8252306024820152602481526113d7604482615568565b51905f51602061a9335f395f51905f525afa506113f5610beb617858565b50601180546001600160a01b0319165f51602061a9335f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b811015611a8b57610c5681600161144a9301600e55615722565b905560018060a01b0360115416600f5460e01b60105490611469617c18565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908187526020526040862060405160208101906114ad81610cd3888886617c01565b519020875260205260ff60036040882001541615611a7d575b6001600160a01b0384165f908152600d60205260409020908652602052610cd36114ff6040872093604051928391602083019586617c01565b519020845260205282604081209160018301549260028101546115228186615bec565b611968575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f51602061a9135f395f51905f525afa96871561099657869761192f575b506001908201610100031b5f1901811b198616915f51602061a9135f395f51905f523b1561192b576040516370ca10bb60e01b81526001600160a01b038616600482015260248101919091529087901b9190911760448201528381606481835f51602061a9135f395f51905f525af190811561093e578491611916575b5050846115fc617dd1565b91901591821561190b575b50506118ba5782856116176188f7565b6020805460405163095ea7b360e01b81526001600160a01b039091166004820152602481018390529081604481865f51602061a9335f395f51905f525af180156118925761189d575b506040516370a0823160e01b8152306004820152906020826024815f51602061a9335f395f51905f525afa91821561189257839261185e575b506040516370a0823160e01b8152306004820152916020836024815f51602061a9535f395f51905f525afa92831561093e57849361182a575b50602054604051638307c65560e01b8152929060809084906001600160a01b03168188816117038760048301615b12565b03925af19283156104ae578593611809575b506040516370a0823160e01b81523060048201526020816024815f51602061a9335f395f51905f525afa9081156109965786916117d5575b506108659061175b93615bdf565b516040516370a0823160e01b81523060048201526020816024815f51602061a9535f395f51905f525afa90811561093e5784916117a1575b506102779261086591615bdf565b90506020813d6020116117cd575b816117bc60209383615568565b810103126109325751610277611793565b3d91506117af565b90506020813d602011611801575b816117f060209383615568565b81010312610932575161175b61174d565b3d91506117e3565b61182391935060803d608011610b2057610b118183615568565b9185611715565b9092506020813d602011611856575b8161184660209383615568565b81010312610932575191846116d2565b3d9150611839565b9091506020813d60201161188a575b8161187a60209383615568565b8101031261093257519083611699565b3d915061186d565b6040513d85823e3d90fd5b6118b59060203d602011610f5957610f4c8183615568565b611660565b82945054905f51602061a9135f395f51905f523b156104d1576040516370ca10bb60e01b81526001600160a01b03909116600482015260248101919091526044810192909252818060648101610fde565b14159050855f611607565b8161192091615568565b6104d157825f6115f1565b8580fd5b955095506020853d602011611960575b8161194c60209383615568565b810103126109325793519487949081611574565b3d915061193f565b909192506119768185615bec565b610100036101008111610ae25760ff8111610ae25760405163348051d760e11b8152600190911b6004820181905287826024815f51602061a9135f395f51905f525afa8015610ad757606a611a2e916020948b91611a63575b506040519485915f51602061a9735f395f51905f52828401525f51602061a8d35f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018b838201520301601f198101845283615568565b861015611a3f575090859291611527565b60405162461bcd60e51b8152602060048201529081906111cf9060248301906155cb565b611a7791503d808d833e6111e88183615568565b5f6119cf565b611a8561804b565b506114c6565b634e487b7160e01b83526041600452602483fd5b81611aa991615568565b61067157815f6113ae565b50620f42408211611365565b6112a991503d8085833e6112a18183615568565b503461017b578060031936011261017b57601c54611af18161580b565b90611aff6040519283615568565b808252601c8352827f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b838310611b4257604051806101e98782615647565b604051611b4e81615532565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b816007840110611cc15784600197946002979460209794611bd9945491818110611ca5575b818110611c89575b818110611c6d575b818110611c51575b818110611c35575b818110611c19575b818110611bff575b10611beb575b500382615568565b83820152815201920192019190611b2d565b6001600160e01b031916815286015f611bd1565b828a1b6001600160e01b0319168452928901928b01611bcb565b604083901b6001600160e01b0319168452928901928b01611bc3565b606083901b6001600160e01b0319168452928901928b01611bbb565b608083901b6001600160e01b0319168452928901928b01611bb3565b60a083901b6001600160e01b0319168452928901928b01611bab565b60c083901b6001600160e01b0319168452928901928b01611ba3565b60e083901b6001600160e01b0319168452928901928b01611b9b565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e0820152019401920191611b76565b503461017b578060031936011261017b57601a54611d7d8161580b565b91611d8b6040519384615568565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b838310611dd557604051602080825281906101e9908201886155ef565b600160208192604051611dec81610586818961578a565b815201920192019190611db8565b503461017b578060031936011261017b57601b54611e178161580b565b90611e256040519283615568565b808252601b8352827f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1602084015b838310611e6857604051806101e98782615647565b604051611e7481615532565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b816007840110611f095784600197946002979460209794611ef7945491818110611ca557818110611c8957818110611c6d57818110611c5157818110611c3557818110611c1957818110611bff5710611beb57500382615568565b83820152815201920192019190611e53565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e0820152019401920191611e9c565b503461017b57602036600319011261017b5760205460405163549387df60e11b81527380466c64868e1ab14a1ddf27a676c3fcbe638fe560601b600482810191909152602482018490525f51602061a9535f395f51905f52604483015235916001600160a01b0316908381606481855afa801561093e5761202f91859161128d5750615a3a565b518210806121e6575b5f51602061a9135f395f51905f523b156104cd57604051632631f2b160e11b815290151560048201528380826024815f51602061a9135f395f51905f525afa9182156121d95784926121c0575b505061209091615d8e565b602080546040516370a0823160e01b8152306004820152926001600160a01b0390911680319285929190856024815f51602061a9535f395f51905f525afa948515611892578395612187575b5060809060a460405180958193638307c65560e01b83527380466c64868e1ab14a1ddf27a676c3fcbe638fe560601b60048401528160248401525f51602061a9535f395f51905f5260448401528160648401528660848401525af19182156104ae578592612160575b5061086561175b929360018060a01b03602054163190615bdf565b61175b92506121806108659160803d608011610b2057610b118183615568565b9250612145565b925093506020823d6020116121b8575b816121a460209383615568565b8101031261093257608085925194906120dc565b3d9150612197565b819250906121cd91615568565b6104d15781835f612085565b50604051903d90823e3d90fd5b50620f42408211612038565b503461017b578060031936011261017b5760205460405163549387df60e11b815273bebc44782c7db0a1a60cb6fe97d0b483032ff1c760601b600482015273a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4860248201525f51602061a9535f395f51905f526044820152908290829060649082906001600160a01b03165afa801561029c5761027791839161228a575b5051615c94565b61229e91503d8085833e6112a18183615568565b5f612283565b503461017b57602036600319011261017b576004358160648160018060a01b03602054166040519283809263549387df60e11b8252735fd5b7d4af0048f6b302c56a498c4e965949c2f360611b60048301525f51602061a8f35f395f51905f5260248301528460448301525afa801561029c57612327918391611ac05750615a3a565b51821080612930575b5f51602061a9135f395f51905f523b1561067157604051632631f2b160e11b8152901515600482015281816024815f51602061a9135f395f51905f525afa801561029c5761291b575b508060405160208101906370a0823160e01b8252306024820152602481526123a2604482615568565b51905f51602061a8f35f395f51905f525afa506123c0610beb617858565b50601180546001600160a01b0319165f51602061a8f35f395f51905f52179055600f805463ffffffff19166370a08231179055600e54600160401b811015611a8b57610c568160016124159301600e55615722565b905560018060a01b0360115416600f5460e01b60105490612434617c18565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b169081875260205260408620604051602081019061247881610cd3888886617c01565b519020875260205260ff6003604088200154161561290d575b6001600160a01b0384165f908152600d60205260409020908652602052610cd36124ca6040872093604051928391602083019586617c01565b519020845260205282604081209160018301549260028101546124ed8186615bec565b612837575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f51602061a9135f395f51905f525afa9687156109965786976127fe575b506001908201610100031b5f1901811b198616915f51602061a9135f395f51905f523b1561192b576040516370ca10bb60e01b81526001600160a01b038616600482015260248101919091529087901b9190911760448201528381606481835f51602061a9135f395f51905f525af190811561093e5784916127e9575b5050846125c7617dd1565b9190159182156127de575b50506118ba5782856125e26188f7565b6020805460405163095ea7b360e01b81526001600160a01b039091166004820152602481018390529081604481865f51602061a8f35f395f51905f525af18015611892576127c1575b506040516370a0823160e01b81523060048201529082476020846024815f51602061a8f35f395f51905f525afa93841561029c57829461278a575b50602054604051638307c65560e01b8152735fd5b7d4af0048f6b302c56a498c4e965949c2f360611b60048201525f51602061a8f35f395f51905f52602482015260448101849052606481018490526084810185905292608091849160a4918391906001600160a01b03165af19182156104ae576126f29261086591879161276b575b50519147615bdf565b6040516370a0823160e01b81523060048201526020816024815f51602061a8f35f395f51905f525afa90811561093e578491612737575b506108659061027793615bdf565b90506020813d602011612763575b8161275260209383615568565b810103126109325751610277612729565b3d9150612745565b612784915060803d608011610b2057610b118183615568565b876126e9565b915092506020813d6020116127b9575b816127a760209383615568565b81010312610932578390519285612666565b3d915061279a565b6127d99060203d602011610f5957610f4c8183615568565b61262b565b14159050855f6125d2565b816127f391615568565b6104d157825f6125bc565b955095506020853d60201161282f575b8161281b60209383615568565b81010312610932579351948794908161253f565b3d915061280e565b909192506128458185615bec565b610100036101008111610ae25760ff8111610ae25760405163348051d760e11b8152600190911b6004820181905287826024815f51602061a9135f395f51905f525afa8015610ad757606a6128fc916020948b91611a6357506040519485915f51602061a9735f395f51905f52828401525f51602061a8d35f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018b838201520301601f198101845283615568565b861015611a3f5750908592916124f2565b61291561804b565b50612491565b8161292591615568565b61067157815f612379565b50655af3107a40008211612330565b503461017b578060031936011261017b5760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b81811061299e576101e9856101dd81870382615568565b82546001600160a01b0316845260209093019260019283019201612987565b503461017b578060031936011261017b5760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b818110612a1c576101e9856101dd81870382615568565b82546001600160a01b0316845260209093019260019283019201612a05565b503461017b578060031936011261017b57610ca0604051612a5c8282615568565b60648152601f1982019081366020830137835b606481106136ed5750612a80615e1d565b90845b6064811061318c57505060015b6063811061314f575050612aa76040519283615568565b60648252366020830137815b606481106131125750612ac4615e1d565b90825b60648110612b4857505060015b60638110612ae0578280f35b612aea8183615a57565b515160018201908183116109a157612b3b82612b18612b4293612b106001979689615a57565b515190615efd565b6040612b3281612b28878a615a57565b5101519288615a57565b51015190617887565b850b6178c5565b01612ad4565b604051634b88b8ad60e11b815290602082600481885f51602061a9135f395f51905f525af19182156104ae5785926130df575b50612b868184615a57565b51858060405160208101906370a0823160e01b825230602482015260248152612bb0604482615568565b51905f51602061a9335f395f51905f525afa50612bce610beb617858565b50601180546001600160a01b0319165f51602061a9335f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b8110156130cb57610c56816001612c239301600e55615722565b9055601154600f5460105488926001600160a01b03169160e01b612c45617c18565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818652602052604085206040516020810190612c8981610cd3888886617c01565b519020865260205260ff600360408720015416156130bd575b6001600160a01b0384165f908152600d60205260409020908552602052610cd3612cdb6040862093604051928391602083019586617c01565b5190208352602052604082206001810154936002820154612cfc8187615bec565b612fb1575b8254604051630667f9d760e41b81526001600160a01b038616600482015260248101829052969091906020886044815f51602061a9135f395f51905f525afa97881561047d578798612f79575b506001908201610100031b5f1901811b198716915f51602061a9135f395f51905f523b156104c9576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528481606481835f51602061a9135f395f51905f525af19081156104ae578591612f64575b5050612dd5617dd1565b919015918215612f59575b50506118ba5750505050612df26188f7565b60208054612e3d91906001600160a01b0316612e0e8487615a57565b5160405163095ea7b360e01b81526001600160a01b039092166004830152602482015291829081906044820190565b0381895f51602061a9335f395f51905f525af1801561099657612f3d575b506020548590608090612e98906001600160a01b0316612e7b8588615a57565b51604051948580948193638307c65560e01b835260048301615b12565b03925af1908115610996578691612f1f575b50612eb58286615a57565b52612ec08185615a57565b5060405191631135fc2960e21b83526004830152602082602481885f51602061a9135f395f51905f525af19182156104ae57600192612f01575b5001612ac7565b612f189060203d8111610f5957610f4c8183615568565b505f612efa565b612f37915060803d8111610b2057610b118183615568565b5f612eaa565b612f549060203d8111610f5957610f4c8183615568565b612e5b565b141590505f80612de0565b81612f6e91615568565b6104cd57835f612dcb565b965096506020863d8211612fa9575b81612f9560209383615568565b81010312610932579451958b959081612d4e565b3d9150612f88565b9091929350612fc08186615bec565b6101000361010081116130a95760ff81116130a95760405163348051d760e11b8152600190911b600482018190528b80836024815f51602061a9135f395f51905f525afa9283156121d95760209382606a9261307b949261308d575b506040519586925f51602061a9735f395f51905f52828501525f51602061a8d35f395f51905f52604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f198101845283615568565b831015611a3f57509089939291612d01565b6130a29192503d8084833e6111e88183615568565b905f61301c565b634e487b7160e01b8b52601160045260248bfd5b6130c561804b565b50612ca2565b634e487b7160e01b87526041600452602487fd5b9091506020813d821161310a575b816130fa60209383615568565b810103126109325751905f612b7b565b3d91506130ed565b806103e8026103e88104820361094957633b9aca00820290808204620f4240149015171561094957906001916131488285615a57565b5201612ab3565b6131598183615a57565b51516001820190818311610ae25761317f82612b1861318693612b106001979689615a57565b870b6178c5565b01612a90565b604051634b88b8ad60e11b8152906020826004818a5f51602061a9135f395f51905f525af191821561047d5787926136ba575b506131ca8184615a57565b51878060405160208101906370a0823160e01b8252306024820152602481526131f4604482615568565b51905f51602061a9335f395f51905f525afa50613212610beb617858565b50601180546001600160a01b0319165f51602061a9335f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b8110156136a657610c568160016132679301600e55615722565b9055601154600f546010548a926001600160a01b03169160e01b613289617c18565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908186526020526040852060405160208101906132cd81610cd3888886617c01565b519020865260205260ff60036040872001541615613698575b6001600160a01b0384165f908152600d60205260409020908552602052610cd361331f6040862093604051928391602083019586617c01565b51902083526020526040822060018101549360028201546133408187615bec565b6135a9575b8254604051630667f9d760e41b81526001600160a01b038616600482015260248101829052969091906020886044815f51602061a9135f395f51905f525afa97881561047d578798613571575b506001908201610100031b5f1901811b198716915f51602061a9135f395f51905f523b156104c9576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528481606481835f51602061a9135f395f51905f525af19081156104ae57859161355c575b5050613419617dd1565b919015918215613551575b50506118ba57505050506134366188f7565b6020805461345291906001600160a01b0316612e0e8487615a57565b03818b5f51602061a9335f395f51905f525af18015610ad757613535575b506020548790608090613490906001600160a01b0316612e7b8588615a57565b03925af1908115610ad7578891613517575b506134ad8286615a57565b526134b88185615a57565b5060405191631135fc2960e21b835260048301526020826024818a5f51602061a9135f395f51905f525af191821561047d576001926134f9575b5001612a83565b6135109060203d8111610f5957610f4c8183615568565b505f6134f2565b61352f915060803d8111610b2057610b118183615568565b5f6134a2565b61354c9060203d8111610f5957610f4c8183615568565b613470565b141590505f80613424565b8161356691615568565b6104cd57835f61340f565b965096506020863d82116135a1575b8161358d60209383615568565b81010312610932579451958d959081613392565b3d9150613580565b90919293506135b88186615bec565b6101000361010081116136845760ff81116136845760405163348051d760e11b8152600190911b600482018190528d80836024815f51602061a9135f395f51905f525afa9283156121d95760209382606a92613672949261308d57506040519586925f51602061a9735f395f51905f52828501525f51602061a8d35f395f51905f52604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f198101845283615568565b831015611a3f5750908b939291613345565b634e487b7160e01b8d52601160045260248dfd5b6136a061804b565b506132e6565b634e487b7160e01b89526041600452602489fd5b9091506020813d82116136e5575b816136d560209383615568565b810103126109325751905f6131bf565b3d91506136c8565b806103e8026103e881048203610a8d5767016345785d8a0000820290808204655af3107a40001490151715610a8d579060019161372a8285615a57565b5201612a6f565b503461017b578060031936011261017b5760205460405163549387df60e11b81527380466c64868e1ab14a1ddf27a676c3fcbe638fe560601b60048201525f51602061a9335f395f51905f5260248201525f51602061a9535f395f51905f526044820152908290829060649082906001600160a01b03165afa801561029c5761027791839161228a575051615c94565b503461017b57602036600319011261017b5760205460405163549387df60e11b8152735fd5b7d4af0048f6b302c56a498c4e965949c2f360611b600482810191909152602482018490525f51602061a8f35f395f51905f52604483015235916001600160a01b0316908381606481855afa801561093e5761384891859161128d5750615a3a565b51821080613a37575b5f51602061a9135f395f51905f523b156104cd57604051632631f2b160e11b815290151560048201528380826024815f51602061a9135f395f51905f525afa9182156121d9578492613a1e575b50506138a991615d8e565b602080546040516370a0823160e01b8152306004820152926001600160a01b0390911680319285929190856024815f51602061a8f35f395f51905f525afa9485156118925783956139e5575b5060809060a460405180958193638307c65560e01b8352735fd5b7d4af0048f6b302c56a498c4e965949c2f360611b60048401528160248401525f51602061a8f35f395f51905f5260448401528160648401528660848401525af19182156104ae5785926139be575b50610865613979929360018060a01b03602054163190615bdf565b516040516370a0823160e01b81523060048201526020816024815f51602061a8f35f395f51905f525afa90811561093e5784916117a157506102779261086591615bdf565b61397992506139de6108659160803d608011610b2057610b118183615568565b925061395e565b925093506020823d602011613a16575b81613a0260209383615568565b8101031261093257608085925194906138f5565b3d91506139f5565b81925090613a2b91615568565b6104d15781835f61389e565b50655af3107a40008211613851565b503461017b578060031936011261017b57601d54613a638161580b565b613a706040519182615568565b818152601d83526020810191837f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f845b838310613b2457868587604051928392602084019060208552518091526040840160408260051b8601019392905b828210613add57505050500390f35b91936001919395506020613b148192603f198a82030186526040838a51878060a01b038151168452015191818582015201906155ef565b9601920192018594939192613ace565b604051613b3081615532565b82546001600160a01b03168152600183018054613b4c8161580b565b91613b5a6040519384615568565b8183528a526020808b20908b9084015b838210613b90575050505060019282602092836002950152815201920192019190613aa0565b600160208192604051613ba781610586818a61578a565b815201930191019091613b6a565b503461017b57602036600319011261017b576004358160648160018060a01b03602054166040519283809263549387df60e11b825273bebc44782c7db0a1a60cb6fe97d0b483032ff1c760601b600483015273a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4860248301525f51602061a9535f395f51905f5260448301525afa801561029c57613c4c918391611ac05750615a3a565b518210806142b5575b5f51602061a9135f395f51905f523b1561067157604051632631f2b160e11b8152901515600482015281816024815f51602061a9135f395f51905f525afa801561029c576142a0575b508060405160208101906370a0823160e01b825230602482015260248152613cc7604482615568565b519073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb485afa50613cec610beb617858565b50601180546001600160a01b03191673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48179055600f805463ffffffff19166370a08231179055600e54600160401b811015611a8b57610c56816001613d489301600e55615722565b905560018060a01b0360115416600f5460e01b60105490613d67617c18565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818752602052604086206040516020810190613dab81610cd3888886617c01565b519020875260205260ff60036040882001541615614292575b6001600160a01b0384165f908152600d60205260409020908652602052610cd3613dfd6040872093604051928391602083019586617c01565b51902084526020528260408120916001830154926002810154613e208186615bec565b6141bc575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f51602061a9135f395f51905f525afa968715610996578697614183575b506001908201610100031b5f1901811b198616915f51602061a9135f395f51905f523b1561192b576040516370ca10bb60e01b81526001600160a01b038616600482015260248101919091529087901b9190911760448201528381606481835f51602061a9135f395f51905f525af190811561093e57849161416e575b505084613efa617dd1565b919015918215614163575b50506118ba578285613f156188f7565b6020805460405163095ea7b360e01b81526001600160a01b0390911660048201526024810183905290816044818673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb485af1801561189257614146575b506040516370a0823160e01b8152306004820152829060208160248173a0b86991c6218b36c1d19d4a2e9eb0ce3606eb485afa90811561029c578291614111575b506040516370a0823160e01b8152306004820152926020846024815f51602061a9535f395f51905f525afa9384156118925783946140da575b50602054604051638307c65560e01b815273bebc44782c7db0a1a60cb6fe97d0b483032ff1c760601b600482015273a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4860248201525f51602061a9535f395f51905f526044820152606481018590526084810183905293608091859160a4918391906001600160a01b03165af19283156104ae5785936140b9575b506040516370a0823160e01b815230600482015260208160248173a0b86991c6218b36c1d19d4a2e9eb0ce3606eb485afa9081156109965786916117d557506108659061175b93615bdf565b6140d391935060803d608011610b2057610b118183615568565b918561406d565b925092506020823d602011614109575b816140f760209383615568565b81010312610932578391519285613fdf565b3d91506140ea565b9150506020813d60201161413e575b8161412d60209383615568565b810103126109325782905184613fa6565b3d9150614120565b61415e9060203d602011610f5957610f4c8183615568565b613f65565b14159050855f613f05565b8161417891615568565b6104d157825f613eef565b955095506020853d6020116141b4575b816141a060209383615568565b810103126109325793519487949081613e72565b3d9150614193565b909192506141ca8185615bec565b610100036101008111610ae25760ff8111610ae25760405163348051d760e11b8152600190911b6004820181905287826024815f51602061a9135f395f51905f525afa8015610ad757606a614281916020948b91611a6357506040519485915f51602061a9735f395f51905f52828401525f51602061a8d35f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018b838201520301601f198101845283615568565b861015611a3f575090859291613e25565b61429a61804b565b50613dc4565b816142aa91615568565b61067157815f613c9e565b506127108211613c55565b503461017b578060031936011261017b57602154819060209060405b8185106142e7578380f35b846142f36024966156f6565b6001600160601b031991549060031b1c60601b168560018060a01b036020541684519889809263ecbbc03360e01b82528560048301525afa968715614bc9578697614bad575b508251966143478489615568565b60018852853660208a01376024602061435f856156f6565b90548751634903b0d160e01b8152600481018c90529384929091839160031b1c6001600160a01b03165afa889181614b7a575b50614b675750602460206143a5856156f6565b9054875162cb501b60e31b8152600481018c90529384929091839160031b1c6001600160a01b03165afa8015614b5d578890614b2b575b600a9150046143ea89615a3a565b525b6001600160a01b036143fd82615a3a565b51169761446561440c82615a3a565b51998980885160208101906370a0823160e01b825230602482015260248152614436604482615568565b5190845afa50614447610beb617858565b5060018060a01b03166001600160601b0360a01b6011541617601155565b6370a0823163ffffffff19600f541617600f55600e54600160401b8110156136a657610c5681600161449a9301600e55615722565b905560018060a01b0360115416600f5460e01b896010549160ff60038a6144bf617c18565b6001600160a01b0388165f908152600d602052604090209095909463ffffffff60e01b16948582526020528181208251602081019061450381610cd38c8c86617c01565b51902082526020522001541615614b1d575b6001600160a01b0384165f908152600d60205260409020908c52602052610cd361454c898d20938a51928391602083019586617c01565b5190208a526020528589209060018201549160028101549b61456e8d85615bec565b614a05575b81548951630667f9d760e41b81526001600160a01b0385166004820152602481018290529c9d9b9c9a9b999a98998e99956020876044815f51602061a9135f395f51905f525afa9687156149fb578b976149c3575b506001908201610100031b5f1901811b198616915f51602061a9135f395f51905f523b156149bf578c516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528881606481835f51602061a9135f395f51905f525af180156149b55790899161499c575b505061464e617dd1565b919015918215614991575b50506148a75750505061466a6188f7565b6146cb60206001600160a01b0361468085615a3a565b5182546001600160a01b0316911661469785615a3a565b518a5163095ea7b360e01b81526001600160a01b039093166004840152602483015290928391908290899082906044820190565b03925af1801561489d5761473e959493926080929091614881575b506020546001600160a01b03908116906146ff85615a3a565b5116918661471f6001600160a01b0361471788615a47565b511692615a3a565b518b51638307c65560e01b8152998a9586948593918b60048601615ae4565b03925af193841561487757908392916147c195614857575b506020546001600160a01b03908116919061477082615a3a565b5116906001600160a01b039061478590615a47565b51895163549387df60e11b815260048101959095526001600160a01b039283166024860152161660448301529093849190829081906064820190565b03915afa91821561484d57600193928561481d93614812938b93614827575b5061480691816147f260209351615d3f565b016147fe815151615d3f565b510151615d3f565b61481861481282615a3a565b51615d3f565b615a47565b01939291906142dc565b602091935091614844614806938d3d8091833e6112a18183615568565b939150916147e0565b84513d89823e3d90fd5b61487091945060803d8111610b2057610b118183615568565b925f614756565b86513d85823e3d90fd5b6148989060203d8111610f5957610f4c8183615568565b6146e6565b87513d87823e3d90fd5b91868992819454905f51602061a9135f395f51905f523b156104d15784516370ca10bb60e01b81526001600160a01b039190911660048201526024810191909152604481019290925281606481835f51602061a9135f395f51905f525af1801561498557614970575b815162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b61497b838092615568565b6106715781614910565b505051903d90823e3d90fd5b141590505f80614659565b816149a691615568565b6149b157875f614644565b8780fd5b8b513d8b823e3d90fd5b8a80fd5b9a50955060208a3d82116149f3575b816149df60209383615568565b810103126109325798518e999095816145c8565b3d91506149d2565b8d513d8d823e3d90fd5b614a0f8d85615bec565b6101000361010081116136845760ff8111613684576001901b895163348051d760e11b81528160048201528d816024815f51602061a9135f395f51905f525afa908115614b1157606a8f8060208f9295614ac7955f51602061a8d35f395f51905f52989791614af7575b5083519788945f51602061a9735f395f51905f528487015285015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f198101845283615568565b821015614ad45750614573565b895162461bcd60e51b8152602060048201529081906111cf9060248301906155cb565b614b0b91503d8085833e6111e88183615568565b5f614a79565b8e8c51903d90823e3d90fd5b614b2561804b565b50614515565b506020813d8211614b55575b81614b4460209383615568565b8101031261093257600a90516143dc565b3d9150614b37565b85513d8a823e3d90fd5b600a9004614b7489615a3a565b526143ec565b9091506020813d8211614ba5575b81614b9560209383615568565b810103126109325751905f614392565b3d9150614b88565b614bc29197503d8088833e61028e8183615568565b955f614339565b83513d88823e3d90fd5b503461017b578060031936011261017b5760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b818110614c32576101e9856101dd81870382615568565b82546001600160a01b0316845260209093019260019283019201614c1b565b503461017b57606036600319011261017b576024356001600160a01b038116810361067157816044356001600160a01b0381168103610671576020546040516348bd7dfd60e01b815260048035908201526001600160a01b0394851660248201529184166044830152909283916064918391165afa801561029c57610277918391614cdd575051615c94565b61229e91503d8085833e6104a08183615568565b5034610932575f3660031901126109325760405163975a6ce960e01b81526020600482015260076024820152661b585a5b9b995d60ca1b60448201525f816064815f51602061a9135f395f51905f525afa9081156153f857614d7a916020915f916154df575b50604051809381926371ee464d60e01b83526040600484015260448301906155cb565b630134c06a602483015203815f5f51602061a9135f395f51905f525af180156153f8576154b0575b50604051611d2b8082018281106001600160401b0382111761549c578291618ba8833903905ff080156153f85760018060a01b03166001600160601b0360a01b602054161760205560405161030081018181106001600160401b0382111761549c5760405273ecd5e75afb02efa118af914515d6521aabd189f1815273ed279fdd11ca84beef15af5d39bb4d4bee23f0ca60208201527343b4fdfd4ff969587185cdb6f0bd875c5fc83f8c6040820152739efe1a1cbd6ca51ee8319afc4573d253c3b732af6060820152734807862aa8b2bf68830e4c8dc86d0e9a998e085a608082015273d632f22692fac7611d2aa1c0d552930d43caed3b60a082015273a5407eae9ba41422680e2e00537571bcc53efbfd60c0820152735a6a4d54456819380173272a5e8e9b9904bdf41b60e0820152733211c6cbef1429da3d0d58494938299c92ad586061010082015273db6925ea42897ca786a045b252d95aa7370f44b461012082015273f861483fa7e511fbc37487d91b6faa803af5d37c610140820152731e098b32944292969fb58c85bdc85545da39711761016082015273e0e970a99bc4f53804d8145bebbc7ebc9422ba7f610180820152736bfe880ed1d639bf80167b93cc9c56a39c1ba2dc6101a082015273bdfae7d2cf2e69e27b75a5287ecd3808f62b5a766101c082015273fb8814d005c5f32874391e888da6eb2fe7a279026101e0820152730f3159811670c117c372428d4e69ac32325e4d0f610200820152734ebdf703948ddcea3b11f675b4d1fba9d2414a14610220820152730e9b5b092cad6f1c5e6bc7f89ffe1abb5c95f1c26102408201527321410232b484136404911780bc32756d5d1a9fa961026082015273322135dd9cbae8afa84727d9ae1434b5b3eba44b61028082015273c26b89a667578ec7b3f11b2f98d6fd15c07c54ba6102a0820152739409280dc1e6d33ab7a8c6ec03e5763fb61772b56102c0820152735fae7e604fc3e24fd43a72867cebac94c65b404a6102e0820152602154601860215580601810615440575b5060215f525f5b601881106154035760205483906001600160a01b03165f51602061a9135f395f51905f523b1561093257604051906318caf8e360e31b8252600482015260406024820152600c60448201526b21bab93b32a0b230b83a32b960a11b60648201525f81608481835f51602061a9135f395f51905f525af180156153f8576153e5575b505f51602061a9135f395f51905f523b1561017b57806040516318caf8e360e31b81525f51602061a9535f395f51905f5260048201526040602482015260046044820152631554d11560e21b60648201528181608481835f51602061a9135f395f51905f525af1801561029c576153d0575b50505f51602061a9135f395f51905f523b1561017b57806040516318caf8e360e31b815273a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4860048201526040602482015260046044820152635553444360e01b60648201528181608481835f51602061a9135f395f51905f525af1801561029c576153bb575b50505f51602061a9135f395f51905f523b1561017b57806040516318caf8e360e31b815273bebc44782c7db0a1a60cb6fe97d0b483032ff1c7600482015260406024820152600b60448201526a14d51050931157d413d3d360aa1b60648201528181608481835f51602061a9135f395f51905f525af1801561029c576153a6575b50505f51602061a9135f395f51905f523b1561017b57806040516318caf8e360e31b81525f51602061a9335f395f51905f5260048201526040602482015260046044820152630ae8aa8960e31b60648201528181608481835f51602061a9135f395f51905f525af1801561029c57615391575b50505f51602061a9135f395f51905f523b1561017b57806040516318caf8e360e31b81527380466c64868e1ab14a1ddf27a676c3fcbe638fe5600482015260406024820152600b60448201526a10d496541513d7d413d3d360aa1b60648201528181608481835f51602061a9135f395f51905f525af1801561029c576153805750f35b8161538a91615568565b61017b5780f35b8161539b91615568565b61017b5780826152fd565b816153b091615568565b61017b57808261528a565b816153c591615568565b61017b578082615209565b816153da91615568565b61017b57808261518f565b6153f191505f90615568565b5f8161511d565b6040513d5f823e3d90fd5b81516001600160a01b03167f3a6357012c1a3ae0a17d304c9920310382d968ebcc4b1771f41c6b304205b57082015560209091019060010161509c565b7f3a6357012c1a3ae0a17d304c9920310382d968ebcc4b1771f41c6b304205b570017f3a6357012c1a3ae0a17d304c9920310382d968ebcc4b1771f41c6b304205b5885b8181106154915750615095565b5f8155600101615484565b634e487b7160e01b5f52604160045260245ffd5b6020813d6020116154d7575b816154c960209383615568565b810103126109325751614da2565b3d91506154bc565b6154f391503d805f833e6111e88183615568565b5f614d57565b346109325760403660031901126109325761552a60209161551981615532565b600435815260243583820152615867565b604051908152f35b604081019081106001600160401b0382111761549c57604052565b606081019081106001600160401b0382111761549c57604052565b90601f801991011681019081106001600160401b0382111761549c57604052565b60206040818301928281528451809452019201905f5b8181106155ac5750505090565b82516001600160a01b031684526020938401939092019160010161559f565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9080602083519182815201916020808360051b8301019401925f915b83831061561a57505050505090565b9091929394602080615638600193601f1986820301875289516155cb565b9701930193019193929061560b565b602081016020825282518091526040820191602060408360051b8301019401925f915b83831061567957505050505090565b9091929394603f1982820301835285516020606081604085019360018060a01b0381511686520151936040838201528451809452019201905f905b8082106156d3575050506020806001929701930193019193929061566a565b82516001600160e01b0319168452602093840193909201916001909101906156b4565b60215481101561570e5760215f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b600e5481101561570e57600e5f5260205f2001905f90565b601f5481101561570e57601f5f5260205f2001905f90565b90600182811c92168015615780575b602083101461576c57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691615761565b5f929181549161579983615752565b80835292600181169081156157ee57506001146157b557505050565b5f9081526020812093945091925b8383106157d4575060209250010190565b6001816020929493945483858701015201910191906157c3565b915050602093945060ff929192191683830152151560051b010190565b6001600160401b03811161549c5760051b60200190565b8181029291811591840414171561583557565b634e487b7160e01b5f52601160045260245ffd5b8115615853570490565b634e487b7160e01b5f52601260045260245ffd5b80516a084595161401484a0000008102908082046a084595161401484a000000149015171561583557602061589e92015190615849565b90565b6001600160401b03811161549c57601f01601f191660200190565b602081830312610932578051906001600160401b038211610932570181601f82011215610932578051906158ef826158a1565b926158fd6040519485615568565b8284526020838301011161093257815f9260208093018386015e8301015290565b90816020910312610932575190565b602081830312610932578051906001600160401b03821161093257019080601f83011215610932578151906159618261580b565b9261596f6040519485615568565b82845260208085019360051b82010191821161093257602001915b8183106159975750505090565b8251600a8110156109325781526020928301920161598a565b602081830312610932578051906001600160401b03821161093257019080601f83011215610932578151906159e48261580b565b926159f26040519485615568565b82845260208085019360051b82010191821161093257602001915b818310615a1a5750505090565b82516001600160a01b038116810361093257815260209283019201615a0d565b80511561570e5760200190565b80516001101561570e5760400190565b805182101561570e5760209160051b010190565b90816020910312610932575180151581036109325790565b919082604091031261093257604051615a9b81615532565b6020808294805184520151910152565b9060808282031261093257615adc906040805193615ac88561554d565b805185526020810151602086015201615a83565b604082015290565b9081526001600160a01b039182166020820152911660408201525f6060820152608081019190915260a00190565b7380466c64868e1ab14a1ddf27a676c3fcbe638fe560601b81525f51602061a9335f395f51905f5260208201525f51602061a9535f395f51905f5260408201525f6060820152608081019190915260a00190565b602081830312610932578051906001600160401b03821161093257019080601f83011215610932578151615b998161580b565b92615ba76040519485615568565b81845260208085019260051b82010192831161093257602001905b828210615bcf5750505090565b8151815260209182019101615bc2565b9190820391821161583557565b9190820180921161583557565b60085460ff168015615c085790565b50604051630667f9d760e41b81525f51602061a9135f395f51905f5260048201526519985a5b195960d21b60248201526020816044815f51602061a9135f395f51905f525afa9081156153f8575f91615c62575b50151590565b90506020813d602011615c8c575b81615c7d60209383615568565b8101031261093257515f615c5c565b3d9150615c70565b5f51602061a9135f395f51905f523b15610932576040519063260a5b1560e21b82526004820152600260248201525f816044815f51602061a9135f395f51905f525afa80156153f857615ce45750565b5f615cee91615568565b565b905f51602061a9135f395f51905f523b15610932576040519163260a5b1560e21b8352600483015260248201525f816044815f51602061a9135f395f51905f525afa80156153f857615ce45750565b5f51602061a9135f395f51905f523b156109325760405190636d83fe6960e11b825260048201525f60248201525f816044815f51602061a9135f395f51905f525afa80156153f857615ce45750565b5f51602061a9135f395f51905f523b156109325760405163c88a5e6d60e01b81526001600160a01b0391909116600482015260248101919091525f81604481835f51602061a9135f395f51905f525af180156153f857615ce45750565b60405190615df88261554d565b815f81525f60208201526040805191615e1083615532565b5f83525f60208401520152565b604051610ca09190615e2f8382615568565b6064815291601f1901825f5b828110615e4757505050565b602090615e52615deb565b82828501015201615e3b565b5f51602061a9135f395f51905f523b15610932576040519063a8d4d1d960e01b82526004820152600260248201525f816044815f51602061a9135f395f51905f525afa80156153f857615ce45750565b905f51602061a9135f395f51905f523b15610932576040519163a8d4d1d960e01b8352600483015260248201525f816044815f51602061a9135f395f51905f525afa80156153f857615ce45750565b905f51602061a9135f395f51905f523b156109325760405191638466f41560e01b8352600483015260248201525f816044815f51602061a9135f395f51905f525afa80156153f857615ce45750565b5f5b8151811015615f9557615f618183615a57565b51600a811015615f8157600514615f7a57600101615f4e565b5050600190565b634e487b7160e01b5f52602160045260245ffd5b50505f90565b5f5b8151811015615f9557615fb08183615a57565b51600a811015615f8157600914615f7a57600101615f9d565b5f5b8151811015615f9557615fde8183615a57565b51600a811015615f8157600814615f7a57600101615fcb565b60405190602082019263095ea7b360e01b845260018060a01b0316928360248401525f1960448401526044835261602f606484615568565b82516001600160a01b038316915f91829182855af19061604d617858565b826160ad575b50816160a2575b501561606557505050565b61609d615cee936040519063095ea7b360e01b602083015260248201525f604482015260448152616097606482615568565b82617915565b617915565b90503b15155f61605a565b805191925081159182156160c5575b5050905f616053565b6160d89250602080918301019101615a6b565b5f806160bc565b602081830312610932578051906001600160401b038211610932570181601f820112156109325780516161118161580b565b9261611f6040519485615568565b81845260208085019260061b8401019281841161093257602001915b838310616149575050505090565b60206040916161588486615a83565b81520192019161613b565b60a0919360209360808301958352600180851b031684830152600180841b03166040820152608060608201528451809452019201905f5b8181106161a75750505090565b825184526020938401939092019160010161619a565b604051906161cc606083615568565b603682527536103a3790383934b1b29030b33a32b91039bbb0b81760511b6040837f45786563757465642070726963652073686f756c64206265206f72206571756160208201520152565b60c09490945260405163549387df60e11b8152600481018290526001600160a01b0380841660248301528416604482015291939290915f8180606481016101208490520381836001600160a01b0389165af180156153f85761627f915f916178445750615a3a565b5161010052606060a08190526040516162db9161629c9082615568565b602381527f53656c6c206c696d69742073686f756c6420626520677265617465722074686160208201526206e20360ec1b6040820152610100516179d8565b60a051505f806163636163916040516162f660a05182615568565b603681527f544553543a2054657374696e672070726963657320666f722070616972202573602082015275080b4f88095ccb8814d95b1b081b1a5b5a5d0e88095960521b6040820152604051928391638ef3f39960e01b60208401526080602484015260a48301906155cb565b6001600160a01b038a811660448401528716606483015261010051608483015203601f198101835282615568565b6020815191016a636f6e736f6c652e6c6f675afa506040516348bd7dfd60e01b8152600481018390526001600160a01b038086166024830152821660448201525f8180606481010381836001600160a01b0389165af180156153f8576163fe915f9161782a575b50615f9b565b906040519161640e60a084615568565b6004835260803660208501371561781d575f5b61642a83615a3a565b526103e8610100510461643c83615a47565b5281516002101561570e5760a05182016101005160011c905281516003101561570e5761010051608083015260405163155adc9160e31b8152935f858061648986868b8a60048601616163565b0381836001600160a01b0386165af19485156153f8575f95617801575b506164b96164b386615a3a565b51615867565b85515f19810191908211615835576164d76164b36165319389615a57565b60a05160405192906164e99084615568565b603083527f5072696365206174206c696d69742073686f756c6420626520736d616c6c657260208401526f0207468616e20707269636520617420360841b6040840152617a3f565b61653d6164b386615a3a565b85515f198101908111615835576165d86165f15f936165606164b386958c615a57565b60a0516040519291906165739084615568565b602d83527f544553543a20507269636520617420303a2025642c207072696365206174207360208401526c195b1b081b1a5b5a5d0e880959609a1b604084015260405194859363ca47c4eb60e01b602086015260a051602486015260848501906155cb565b916044840152606483015203601f198101835282615568565b6020815191016a636f6e736f6c652e6c6f675afa5060a0516040516166579161661a9082615568565b602581527f544553543a2054657374696e67206265686176696f7220666f72207072696365602082015264020617420360dc1b6040820152617a74565b6166a961666386615a3a565b5151604060e08190528051919061667a9083615568565b601882527f4e6f6d696e61746f722073686f756c646e27742062652030000000000000000060208301526179d8565b6166fa60206166b787615a3a565b51015160e051805191906166cb9083615568565b601a82527f44656e6f6d696e61746f722073686f756c646e2774206265203000000000000060208301526179d8565b6167066164b386615a3a565b9460e051506167458660e0515161671f60e05182615568565b6014815273151154d50e88141c9a58d948185d080c0e88095960621b6020820152617ab8565b61674d615deb565b5083515f198101908111615835576167659085615a57565b516005818102048103615835575f8060e0515160208101906370a0823160e01b82523060248201526024815261679c604482615568565b51908b5afa506167ad610beb617858565b50601180546001600160a01b0319166001600160a01b038a161790556370a0823163ffffffff19600f541617600f55600e54600160401b81101561549c57610c568160016167fe9301600e55615722565b90556011546001600160a01b031661014052600f546010549060e01b616822617c18565b610140516001600160a01b03165f908152600d60205260409020909163ffffffff60e01b1690815f5260205260e0515f2060e05151602081019061686b81610cd3888886617c01565b5190205f5260205260ff600360e0515f20015416156177f3575b610140516001600160a01b03165f908152600d60205260409020905f52602052610cd36168c360e0515f209360e05151928391602083019586617c01565b5190205f5260205260e0515f2060018101549160028201546168e58185615bec565b6176dd575b825460e05151630667f9d760e41b8152610140516001600160a01b0316600482015260248101829052949091906020866044815f51602061a9135f395f51905f525afa95861561769d575f966176a9575b506001908201610100031b5f1901811b1985165f51602061a9135f395f51905f523b156109325760e051516370ca10bb60e01b8152610140516001600160a01b0316600482015260248101939093526005840290911b1760448201525f81606481835f51602061a9135f395f51905f525af1801561769d57617688575b506169c1617dd1565b901591821561767a575b50506175865750506169db6188f7565b60e05151634b88b8ad60e11b8152602081600481610120515f51602061a9135f395f51905f525af18015616ed25761012051608052617553575b5060015b8451811015616f9f575f80616ad0616af6616a338561573a565b50616a3e868b615a57565b51616ae2610586616aaa60e0515194616a5960a05187615568565b603086527f544553543a2054657374696e67206265686176696f7220666f7220707269636560208701526f1030ba1012b99037b3103634b6b4ba1760811b60e05187015260e051519283809261578a565b60e05151635821efa160e01b602082015260a051602482015295869460848601906155cb565b848103602319016044860152906155cb565b90606483015203601f198101835282615568565b6020815191016a636f6e736f6c652e6c6f675afa50616b186164b38284615a57565b5f80616b8d616bb18c616b2b878c615a57565b5160e0515191616b3d60e05184615568565b601783527f544553543a205377617070696e67202564206f66202573000000000000000000602084015260e0515194859363038fd88960e31b602086015260a051602486015260848501906155cb565b60448401929092526001600160a01b0316606483015203601f198101835282615568565b6020815191016a636f6e736f6c652e6c6f675afa508460808a89616bf5616bd8878c615a57565b5160e05151638307c65560e01b8152958694859460048601615ae4565b03816101205160018060a01b038a165af1908115616ed2576101205191616f81575b508051806a084595161401484a0000008102046a084595161401484a0000001481151715616f6757616c64616c6f916a084595161401484a000000616c5c878c615a57565b519102615849565b9160e0510151615867565b91616cb38260e05151616c8460e05182615568565b601d81527f544553543a20202d2045786563757465642070726963653a20202025640000006020820152617ab8565b616cf68160e05151616cc760e05182615568565b601d81527f544553543a20202d20507269636520617420616d6f756e743a202025640000006020820152617ab8565b616d398360e05151616d0a60e05182615568565b601d81527f544553543a20202d20507269636520616674657220737761703a2025640000006020820152617ab8565b60c05115616ee15760a05160e05151616e6d94616e12939092616da8929190616d629083615568565b602c82527f50726963652073686f756c642062652067726561746564207468616e2065786560208301526b31baba32b210383934b1b29760a11b60e05183015285617afb565b60a05160e051519190616dbb9083615568565b603782527f45786563757465642070726963652073686f756c64206265206772656174657260208301527f207468616e20707269636520616674657220737761702e00000000000000000060e05183015283617a3f565b60a05160e051519190616e259083615568565b602e82527f50726963652073686f756c642062652067726561746564207468616e2070726960208301526d31b29030b33a32b91039bbb0b81760911b60e05183015289617a3f565b60e0515190631135fc2960e21b82526080516004830152602082602481610120515f51602061a9135f395f51905f525af1918215616ed257600192616eb4575b5001616a19565b616ecb9060203d8111610f5957610f4c8183615568565b505f616ead565b60e051513d61012051823e3d90fd5b616f0a90616efb616f6294616ef46161bd565b908d617afb565b616f036161bd565b908b617afb565b60e0515190616f1b60a05183615568565b602d82527f50726963652073686f756c64206265206f7220657175616c20746f207072696360208301526c329030b33a32b91039bbb0b81760991b60e05183015289617afb565b616e6d565b634e487b7160e01b61012051526011600452602461012051fd5b616f99915060803d8111610b2057610b118183615568565b5f616c17565b50509150919392506069610100510261010051810460691461010051151715616f675760e051516348bd7dfd60e01b81526101208051600483018890526001600160a01b0387811660248501528681166044850152915160649485900497949192849291839188165af18015616ed257617023916101205191617536575b50615fc9565b156173d95761708b8460e0515161703c60a05182615568565b603681527f544553543a2054657374696e6720726576657274206265686176696f722061626020820152751bdd99481d1a19481cd95b1b081b1a5b5a5d0e88095960521b60e051820152617ab8565b60e0518051949061709c9086615568565b6001855260e051601f19013660208701376170b685615a3a565b5260e0515163155adc9160e31b81526101205181806170db8888878c60048601616163565b03816101205160018060a01b0388165af190816173b6575b5061734a576001617102617b30565b6308c379a0146172bc575b616ed25761711c608094615a3a565b519461713f60e0515196879586948594638307c65560e01b865260048601615ae4565b61012051919003926001600160a01b03165af1908161729f575b5061723d576001617168617b30565b6308c379a0146171ba575b616ed2575b615cee60e0515161718b60e05182615568565b601781527f544553543a20416c6c207465737473207061737365642e0000000000000000006020820152617a74565b6171c2617b4b565b806171ce575b50617173565b6101205160a05160e051519193506172379291906171ec9082615568565b603281527f544553543a204578706563746564206572726f72207768656e207377617070696020820152716e672061626f7665206c696d69743a20257360701b60e051820152617bbd565b5f6171c8565b60e0515162461bcd60e51b815260206004820152603360248201527f506f6f6c2073686f756c646e27742062652061626c6520746f20737761702061604482015272189bdd99481d1a19481cd95b1b081b1a5b5a5d606a1b6064820152608490fd5b6172b79060803d608011610b2057610b118183615568565b617159565b6172c4617b4b565b806172d0575b5061710d565b6101205160a05160e051519193506173449291906172ee9082615568565b603881527f544553543a204578706563746564206572726f72207768656e2066657463686960208201527f6e672070726963652061626f7665206c696d69743a202573000000000000000060e051820152617bbd565b5f6172ca565b60e0515162461bcd60e51b815260206004820152603b60248201527f506f6f6c2073686f756c646e27742062652061626c6520746f2066657463682060448201527f7072696365732061626f7665207468652073656c6c206c696d697400000000006064820152608490fd5b6173d4903d8061012051833e6173cc8183615568565b8101906160df565b6170f3565b60a05160e0515161743b918691906173f19082615568565b603181527f544553543a2054657374696e67206f7065726174696f6e732061626f766520746020820152701a19481cd95b1b081b1a5b5a5d0e880959607a1b60e051820152617ab8565b60e0518051949061744c9086615568565b6001855260e051601f190136602087013761746685615a3a565b5260e051519363155adc9160e31b855261012051858061748c8488878c60048601616163565b03816101205160018060a01b0388165af1908115616ed2576080956174b59261751b5750615a3a565b51946174d860e0515196879586948594638307c65560e01b865260048601615ae4565b61012051919003926001600160a01b03165af18015616ed2576174fc575b50617178565b6175149060803d608011610b2057610b118183615568565b505f6174f6565b617531903d8061012051833e6173cc8183615568565b610720565b61754d91503d8061012051833e6104a08183615568565b5f61701d565b6020813d60201161757e575b8161756c60209383615568565b8101031261093257516080525f616a15565b3d915061755f565b545f51602061a9135f395f51905f523b156176735760e051516370ca10bb60e01b815261012051610140516001600160a01b03166004830152602482019290925260448101929092528180606481010381610120515f51602061a9135f395f51905f525af18015616ed257617658575b60e0515162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b6101205161766591615568565b6101205161767357806175f6565b6101205180fd5b600502141590505f806169cb565b5f61769291615568565b5f610120525f6169b8565b60e051513d5f823e3d90fd5b9095506020813d6020116176d5575b816176c560209383615568565b810103126109325751948161693b565b3d91506176b8565b6176e78185615bec565b6101000361010081116158355760ff81116158355760e0515163348051d760e11b81526001821b60048201525f816024815f51602061a9135f395f51905f525afa91821561769d576177a3606a6020946001945f916177d9575b5060e051519586915f51602061a9735f395f51905f52828401525f51602061a8d35f395f51905f5260e05184015269030ba32b9103a3430b7160b51b60a0518401528051918291018484015e81015f838201520301601f198101855284615568565b1b8360050210156177b457506168ea565b60e0515162461bcd60e51b8152602060048201529081906111cf9060248301906155cb565b6177ed91503d805f833e6111e88183615568565b5f617741565b6177fb61804b565b50616885565b6178169195503d805f833e6173cc8183615568565b935f6164a6565b6127106101005104616421565b61783e91503d805f833e6104a08183615568565b5f6163f8565b6112a991503d805f833e6112a18183615568565b3d15617882573d90617869826158a1565b916178776040519384615568565b82523d5f602084013e565b606090565b6178a790602061789c82518286015190615822565b935191015190615822565b908082036178b55750505f90565b11156178c057600190565b5f1990565b5f51602061a9135f395f51905f523b15610932576040519063fe74f05b60e01b82526004820152600160248201525f816044815f51602061a9135f395f51905f525afa80156153f857615ce45750565b8151617940926001600160a01b03909216915f91829160200182855af161793a617858565b91617f90565b8051908161794c575050565b60208061795d938301019101615a6b565b1561796457565b60405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b61589e93926060928252602082015281604082015201906155cb565b5f51602061a9135f395f51905f523b1561093257617a20915f916040519384928392636cd1e26960e11b845260048401528460248401526060604484015260648301906155cb565b03815f51602061a9135f395f51905f525afa80156153f857615ce45750565b905f51602061a9135f395f51905f523b15610932575f91617a206040519485938493636cd1e26960e11b8552600485016179bc565b5f610cd3617aa1829360405192839163104c13eb60e21b60208401526020602484015260448301906155cb565b6020815191016a636f6e736f6c652e6c6f675afa50565b617ae7617aa15f93928493604051938492632d839cb360e21b60208501526040602485015260648401906155cb565b90604483015203601f198101835282615568565b905f51602061a9135f395f51905f523b15610932575f91617a206040519485938493630389490b60e61b8552600485016179bc565b5f9060033d11617b3c57565b905060045f803e5f5160e01c90565b5f60443d1061589e576040513d600319016004823e8051913d60248401116001600160401b03841117617bb757828201928351916001600160401b038311617baf573d84016003190185840160200111617baf575061589e92910160200190615568565b949350505050565b92915050565b617bef617aa15f9392610cd38594604051948593634b5c427760e01b60208601526040602486015260648501906155cb565b838103602319016044850152906155cb565b60209291908391805192839101825e019081520190565b617c23601454615752565b617ce0576040519081826020600e549283815201600e5f5260205f20925f5b818110617cc7575050617c5792500383615568565b81518060051b908082046020149015171561583557617c75816158a1565b90617c836040519283615568565b808252617c92601f19916158a1565b013660208301375f5b8351811015617cc25780617cb160019286615a57565b5160208260051b8501015201617c9b565b509150565b8454835260019485019487945060209093019201617c42565b60405161589e8161058681601461578a565b6007810190617d018254615752565b617dbd57600191500190604051808360208295549384815201905f5260205f20925f5b818110617da4575050617d3992500383615568565b81518060051b908082046020149015171561583557617d57816158a1565b90617d656040519283615568565b808252617d74601f19916158a1565b013660208301375f5b8351811015617cc25780617d9360019286615a57565b5160208260051b8501015201617d7d565b8454835260019485019487945060209093019201617d24565b5061589e610586916040519283809261578a565b5f806020600f5460e01b617e1f6024617dea600d617cf2565b6040519485918183019563ffffffff60e01b1686528051918291018484015e810186838201520301601f198101845283615568565b6011549151916001600160a01b03165afa90617e39617858565b601054909290600581901b906001600160fb1b03811603615835575f938051602081115f14617ec457506020905b5f925b828410617e7957505050509190565b90919295617e878783615bec565b835181101561570e57830160200151600388901b91906001600160f81b031916881560088a8504141715615835576001921c179601929190617e6a565b90617e67565b905f806020600285015460e01b617ee56024617dea88617cf2565b60048601549151916001600160a01b03165afa6003617f02617858565b930154600581901b906001600160fb1b03811603615835575f938051602081115f14617f8a57506020905b5f925b828410617f3f57505050509190565b90919295617f4d8783615bec565b835181101561570e57830160200151600388901b91906001600160f81b031916881560088a8504141715615835576001921c179601929190617f30565b90617f2d565b90617fb45750805115617fa557805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580617fe5575b617fc5575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15617fbd565b9080601f830112156109325781516180058161580b565b926180136040519485615568565b81845260208085019260051b82010192831161093257602001905b82821061803b5750505090565b815181526020918201910161802e565b601154600f546010546001600160a01b03909216915f9160e01b61806f600d617cf2565b90845f52600d60205260405f209063ffffffff60e01b1690815f5260205260405f2060405160208101906180a881610cd3888886617c01565b5190205f5260205260ff600360405f200154166188b6575f51602061a9135f395f51905f523b156109325760405163266cf10960e01b81525f81600481835f51602061a9135f395f51905f525af180156153f8576188a1575b5061810c600d617eca565b90506040516365bc948160e01b81528660048201528581602481835f51602061a9135f395f51905f525af190811561099657869161883d575b5080516181b657608460405162461bcd60e51b815260206004820152604060248201527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152fd5b855b8151811015618835578160206181d18361820295615a57565b51604051630667f9d760e41b81526001600160a01b038c166004820152602481019190915293849081906044820190565b03815f51602061a9135f395f51905f525afa928315610ad7578893618802575b5082156187aa575b6182348282615a57565b51601154604051630667f9d760e41b81526001600160a01b03909116600482018190526024820183905291906020816044815f51602061a9135f395f51905f525afa9081156111f7578b91618779575b5061828f600d617eca565b91909382155f14618772575f19905b5f51602061a9135f395f51905f523b15618759576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810185905260448101919091528c81606481835f51602061a9135f395f51905f525af180156186e257908d9161875d575b505061830f600d617eca565b601154909491506001600160a01b03165f51602061a9135f395f51905f523b15618759576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528b81606481835f51602061a9135f395f51905f525af1801561874e57908c91618739575b50508261872e575b505015618724578793889360ff601354166185a9575b6001868601610100031b5f1901851b16841c810361859b575090618429917f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed60808b89610cd36183fe8d604051928391602083019586617c01565b51902061840b8686615a57565b51906040519283528a602084015260408301526060820152a1615a57565b51906040519060808201928284106001600160401b0385111761549c5760039360405282526020820193845260408201908152606082019360018552898952600d60205260408920868a5260205260408920604051602081019061849281610cd38d8d86617c01565b5190208a526020526040892092518355516001830155516002820155019051151560ff801983541691161790555b848452600d602052604084208185526020526040842060405160208101906184ed81610cd3888886617c01565b519020855260205260ff6003604086200154161561853e576040948452600d602052848420908452602052610cd3618532858520938651928391602083019586617c01565b51902082526020522090565b60405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201526e3a143994903737ba103337bab7321760891b6064820152608490fd5b935091506001905b016181b8565b94506185f493506185ba8383615a57565b51601154604051630667f9d760e41b81526001600160a01b0390911660048201526024810182905290959094602090869081906044820190565b03815f51602061a9135f395f51905f525afa9485156110cf578a956186f1575b5061862086600d618a0b565b95909661862e81600d618ae4565b60115490939192906001600160a01b03165f51602061a9135f395f51905f523b156186ed576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528c81606481835f51602061a9135f395f51905f525af180156186e257908d916186c9575b5050876186c1575b5094956183a35750935091506001906185a3565b96505f6186ad565b816186d391615568565b6186de578b5f6186a5565b8b80fd5b6040513d8f823e3d90fd5b8e80fd5b9094506020813d821161871c575b8161870c60209383615568565b810103126109325751935f618614565b3d91506186ff565b91506001906185a3565b141590505f8061838d565b8161874391615568565b6149bf578a5f618385565b6040513d8e823e3d90fd5b8d80fd5b8161876791615568565b6186de578b5f618303565b8c9061829e565b90506020813d82116187a2575b8161879360209383615568565b8101031261093257515f618284565b3d9150618786565b7f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a56187fa6187d88484615a57565b51604080516001600160a01b038e168152602081019290925290918291820190565b0390a161822a565b9092506020813d821161882d575b8161881d60209383615568565b810103126109325751915f618222565b3d9150618810565b5050506184c0565b90503d8087833e61884e8183615568565b81016040828203126104c95781516001600160401b0381116149b15781618876918401617fee565b916020810151906001600160401b03821161889d57618896929101617fee565b505f618145565b8880fd5b6188ae9194505f90615568565b5f925f618101565b91939092505f52600d60205260405f20905f52602052610cd36188e860405f2093604051928391602083019586617c01565b5190205f5260205260405f2090565b6001600160601b0360a01b6011541660115563ffffffff19600f5416600f55600e545f600e55806189c9575b505f60105560ff196013541660135561893d601454615752565b806189455750565b601f811160011461895757505f601455565b60145f52601f0160051c7fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec017fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ed5b8181106189be57505060145f525f602081208160145555565b5f81556001016189a5565b600e5f527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd908101905b818110618a005750618923565b5f81556001016189f3565b91905f5b6101008110618a2257505090505f905f90565b8060ff0360ff8111615835576004850154600190911b906001600160a01b03165f51602061a9135f395f51905f523b15610932576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f51602061a9135f395f51905f525af180156153f857618ad4575b50618aae84617eca565b81618aca575b50618ac157600101618a0f565b92505060019190565b905015155f618ab4565b5f618ade91615568565b5f618aa4565b91905f5b6101008110618afb57505090505f905f90565b60048401546001821b906001600160a01b03165f51602061a9135f395f51905f523b15610932576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f51602061a9135f395f51905f525af180156153f857618b97575b50618b7a84617eca565b81618b8d575b50618ac157600101618ae8565b905015155f618b80565b5f618ba191615568565b5f618b7056fe60808060405234601557611d11908161001a8239f35b5f80fdfe608080604052600436101561001c575b50361561001a575f80fd5b005b5f3560e01c90816323eeca01146107d05750806348bd7dfd1461073b5780638307c655146106d5578063a9270fbe146102c7578063aad6e488146101fd5763ecbbc0331461006a575f61000f565b346101f95760203660031901126101f95761008960043560601c610cfc565b602081016100978151610c9d565b5f925f5b835181101561012f5773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260018060a01b036100cb838551610939565b511614610126575b6001905f516020611cbc5f395f51905f52828060a01b036100f5838651610939565b51161461012157818060a01b0361010d828551610939565b51166101198286610925565b525b0161009b565b61011b565b600194506100d3565b5050915f146101f3578051600181018091116101df5761014e90610c9d565b915f5b8251811015610182576001906001600160a01b0361016f8285610925565b511661017b8287610925565b5201610151565b50506101905f915183610925565b525b6040518091602082016020835281518091526020604084019201905f5b8181106101bd575050500390f35b82516001600160a01b03168452859450602093840193909201916001016101af565b634e487b7160e01b5f52601160045260245ffd5b50610192565b5f80fd5b346101f95760803660031901126101f957610216610824565b5061021f61083a565b5060643567ffffffffffffffff81116101f957366023820112156101f95780600401359060246020610250846108dc565b61025d60405191826108ba565b848152019260051b820101903682116101f957602401915b8183106102b757604051631d04569d60e21b81526020600482015260126024820152714375727665416461707465722e707269636560701b6044820152606490fd5b8235815260209283019201610275565b346101f9576102d536610850565b9160601c9181815f926102e786610cfc565b926001600160a01b03166105f1575060208201935f5b85518110156105e6575f516020611cbc5f395f51905f5260018060a01b03610326838751610939565b51161480156105b6575b61033c576001016102fd565b835161037496505f516020611cbc5f395f51905f52925082916001600160a01b03916103689190610939565b5116146105ad57610ffd565b9091604051926103856060856108ba565b6002845260208401926040368537604051634903b0d160e01b81526001600160801b0383166004820152602081602481875afa5f9181610579575b506104ee57506040519162cb501b60e31b8352600f0b6004830152602082602481865afa80156104b0575f906104bb575b6020925060011c610401866108f4565b5260246040518094819362cb501b60e31b8352600f0b60048301525afa9081156104b0575f9161047e575b5060011c61043983610915565b52905b604051918291602083019060208452518091526040830191905f5b818110610465575050500390f35b8251845285945060209384019390920191600101610457565b90506020813d6020116104a8575b81610499602093836108ba565b810103126101f957518361042c565b3d915061048c565b6040513d5f823e3d90fd5b506020823d6020116104e6575b816104d5602093836108ba565b810103126101f957602091516103f1565b3d91506104c8565b602092506001600160801b039160249160011c61050a886108f4565b526040519485938492634903b0d160e01b84521660048301525afa9081156104b0575f91610547575b5060011c61054083610915565b529061043c565b90506020813d602011610571575b81610562602093836108ba565b810103126101f9575183610533565b3d9150610555565b9091506020813d6020116105a5575b81610595602093836108ba565b810103126101f9575190876103c0565b3d9150610588565b60019350610ffd565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260018060a01b036105de838751610939565b511614610330565b506103749450610ffd565b9093906001600160a01b03161561060d575b9261037493610ffd565b60208201935f5b85518110156106c9575f516020611cbc5f395f51905f5260018060a01b0361063d838751610939565b5116148015610699575b61065357600101610614565b835161037496505f516020611cbc5f395f51905f5293925083916001600160a01b03916106809190610939565b511614610690575b909350610603565b60019350610688565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260018060a01b036106c1838751610939565b511614610647565b50906103749450610688565b346101f95760a03660031901126101f9576106ee610824565b6106f661083a565b6064359160028310156101f9576080926107169260843592600435610957565b6020604080519280518452828101518385015201518051604084015201516060820152f35b346101f95761074936610850565b50505060405161075a6060826108ba565b600281526020810160403682376001610772836108f4565b52604051906020820192602083525180935260408201905f935b8085106107995783830384f35b9091825190600a8210156107bc576020816001938293520193019401939061078c565b634e487b7160e01b5f52602160045260245ffd5b346101f95760403660031901126101f957631d04569d60e21b815260206004820152601760248201527f4375727665416461707465722e676574506f6f6c4964730000000000000000006044820152606490fd5b602435906001600160a01b03821682036101f957565b604435906001600160a01b03821682036101f957565b60609060031901126101f957600435906024356001600160a01b03811681036101f957906044356001600160a01b03811681036101f95790565b6040810190811067ffffffffffffffff8211176108a657604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176108a657604052565b67ffffffffffffffff81116108a65760051b60200190565b8051156109015760200190565b634e487b7160e01b5f52603260045260245ffd5b8051600110156109015760400190565b80518210156109015760209160051b010190565b9060088110156109015760051b0190565b919082039182116101df57565b9394929194604051956060870187811067ffffffffffffffff8211176108a6576040525f87525f602088015260405161098f8161088a565b5f81525f60208201526040880152868215610c9257506040519260e0840184811067ffffffffffffffff8211176108a65760405260208401966040850160608601945f865260808701945f865260c08801935f855260601c9485895260018060a01b031690818c5260018060a01b03169182845260a0890152610a125f95610cfc565b93610a268560018060a01b038b5116610e7a565b15159052610bad575060208201985f5b8a51811015610b9d575f516020611cbc5f395f51905f5260018060a01b03610a5f838751610939565b5116148015610b6d575b610a7557600101610a36565b610ac095969798999a505f516020611cbc5f395f51905f5290818352610aa360018060a01b03918651610939565b511614610b64575b5190516001600160a01b039081169116610ffd565b600f9291920b9052600f0b90525a9160028110156107bc57610b0657610af5610aff92610aec836111b3565b86525a9061094a565b6020850152611721565b6040830152565b60405163643c60f360e01b815260206004820152602f60248201527f4f72646572536964652e427579206973206e6f7420617661696c61626c65206660448201526e37b9103a3434b99030b230b83a32b960891b6064820152608490fd5b60019350610aab565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260018060a01b03610b95838751610939565b511614610a69565b50610ac094959697989950610aab565b15610bc1575b610ac0939495969798610aab565b60208201985f5b8a51811015610c82575f516020611cbc5f395f51905f5260018060a01b03610bf1838751610939565b5116148015610c52575b610c0757600101610bc8565b610ac095969798999a505f516020611cbc5f395f51905f5290818452610c3560018060a01b03918651610939565b511614610c49575b98979695949350610bb3565b60019350610c3d565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260018060a01b03610c7a838751610939565b511614610bfb565b50610ac094959697989950610c3d565b955050505050915090565b90610ca7826108dc565b610cb460405191826108ba565b8281528092610cc5601f19916108dc565b0190602036910137565b908160209103126101f957516001600160a01b03811681036101f95790565b5f1981146101df5760010190565b90604051610d098161088a565b604051610100610d1981836108ba565b3682378152602081015f815281935f92610d32826119c0565b610ddb57925b60088110610d47575b50505050565b60405163c661065760e01b815260048101829052906020826024816001600160a01b0387165afa5f9281610dab575b50610d815750610d41565b600191610d8f828751610939565b90838060a01b03169052610da38451610cee565b845201610d38565b610dcd91935060203d8111610dd4575b610dc581836108ba565b810190610ccf565b915f610d76565b503d610dbb565b925b60088110610deb5750505050565b60405163046e8dd760e31b81526001600160801b038216600f0b6004820152906020826024816001600160a01b0387165afa5f9281610e5a575b50610e305750610d41565b600191610e3e828751610939565b90838060a01b03169052610e528451610cee565b845201610ddd565b610e7391935060203d8111610dd457610dc581836108ba565b915f610e25565b815151602491906001600160a01b03165f516020611cbc5f395f51905f52148015610fd5575b15610fcb57602060ff60015b1693610ec08560018060a01b039251610939565b516040516370a0823160e01b81526001600160a01b03909416600485018190529394859290918391165afa9182156104b0575f92610f96575b50606460ff91602093941590815f14610f8e575f915b15610f8557600a6001965b85604051988997889663556d6e9f60e01b88521660048701521660248501520460448301525afa9081610f56575b50610f5257600190565b5f90565b6020813d602011610f7d575b81610f6f602093836108ba565b810103126101f95751610f48565b3d9150610f62565b600a5f96610f1a565b600191610f0f565b91506020823d602011610fc3575b81610fb1602093836108ba565b810103126101f9579051906064610ef9565b3d9150610fa4565b602060ff5f610eac565b508251516001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc214610ea0565b5f94939192918590846001600160a01b0384165f516020611cbc5f395f51905f52148061112a575b61110e575b6001600160a01b03165f516020611cbc5f395f51905f52149081611105575b506110e9575b5f955b60208401518710156110e05783516001600160a01b0390611074908990610939565b516001600160a01b03851691160361109f575060016001600160801b038716600f0b965b0195611052565b9560018060a01b036110b2828651610939565b51166001600160a01b038616146110cc575b600190611098565b6001600160801b038116600f0b91506110c4565b95509392505050565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2935061104f565b9050155f611049565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2935061102a565b508115611025565b3d1561116c573d9067ffffffffffffffff82116108a65760405191611161601f8201601f1916602001846108ba565b82523d5f602084013e565b606090565b1561117857565b60405162461bcd60e51b8152602060048201526013602482015272115d1a081d1c985b9cd9995c8819985a5b1959606a1b6044820152606490fd5b6040810180516020830180515f959447946001600160a01b039485169490938893909116905f516020611cbc5f395f51905f5286036116b85747965b60c0840151156114305750516001600160a01b03165f516020611cbc5f395f51905f52036113735750805160a08201516060830151608090930151600f90810b93900b916001600160a01b0316803b1561136457604051630f7c084960e21b8152600f93840b60048201529390920b6024840152604483018190525f6064840152839183916084918391905af180156113685761134f575b50505f516020611cbc5f395f51905f52905b516001600160a01b0316036112ce57506112b66112cc914761094a565b9280808086335af16112c6611132565b50611171565b565b926040516370a0823160e01b8152306004820152602081602481885afa918215611343579161130f575b506112cc916113069161094a565b80933390611b9e565b90506020813d60201161133b575b8161132a602093836108ba565b810103126101f957516112cc6112f8565b3d915061131d565b604051903d90823e3d90fd5b81611359916108ba565b61136457845f611287565b8480fd5b6040513d84823e3d90fd5b9061139b60a082019261138984513033846119f9565b60018060a01b03835116845191611a42565b60018060a01b0381511660806060830151600f0b920151600f0b925190803b1561136457604051630f7c084960e21b8152600f93840b60048201529390920b602484015260448301525f606483015282908290818381608481015b03925af180156113685761141b575b50505f516020611cbc5f395f51905f5290611299565b81611425916108ba565b61136457845f611405565b90916001600160801b03606085015116915f516020611cbc5f395f51905f526001600160801b036080870151169460018060a01b03905116145f146114d2575050825160a090930151926001600160a01b0316803b156113645760405163ce7d650360e01b815260048101929092526024820192909252604481018390525f6064820152600160848201523060a4820152918391839182908160c481016113f6565b9094506114fe60a085939501956114ec87513033846119f9565b60018060a01b03845116875191611a42565b81518551906001600160a01b0316803b156101f95760405163ce7d650360e01b8152600481018790526024810186905260448101929092525f60648301819052600160848401523060a484015290829060c490829084905af19081611699575b50908a95949392916115cf575b50519251926001600160a01b0316803b15611364578492836084926040519687958694630b68372160e31b86526004860152602485015260448401528160648401525af180156113685761141b5750505f516020611cbc5f395f51905f5290611299565b6115de9192939495504761094a565b8015611612576115f78a80808085335af16112c6611132565b806116075790899493929161156b565b985050505050505050565b506040516370a0823160e01b81523060048201526020816024818a5afa801561168e5788908b90611658575b611648925061094a565b611653813389611b9e565b6115f7565b50506020813d602011611686575b81611673602093836108ba565b810103126101f95787611648915161163e565b3d9150611666565b6040513d8c823e3d90fd5b6116ab9196959493929b505f906108ba565b5f9990919293945f61155e565b6040516370a0823160e01b81523060048201529350602084602481895afa80156104b05789945f916116ec575b50966111ef565b9450506020843d602011611719575b81611708602093836108ba565b810103126101f9578893515f6116e5565b3d91506116fb565b60405161172d8161088a565b5f81525f60208201525060608101906001600160801b0382511660808201906001600160801b0382511660c084015115155f146118f557508251604051634903b0d160e01b81526004810192909252602090829060249082906001600160a01b03165afa5f91816118c1575b506118b0575060018060a01b038251169060208451600f0b60246040518095819362cb501b60e31b835260048301525afa9182156104b0575f9261187b575b506064620186a060209304935b5194519151604051635e0d443f60e01b8152600f93840b6004820152920b602483015260448201849052909384919082906001600160a01b03165afa9182156104b0575f92611847575b506040519161183d8361088a565b8252602082015290565b9091506020813d602011611873575b81611863602093836108ba565b810103126101f95751905f61182f565b3d9150611856565b91506020823d6020116118a8575b81611896602093836108ba565b810103126101f95790519060646117d8565b3d9150611889565b906064620186a060209304936117e5565b9091506020813d6020116118ed575b816118dd602093836108ba565b810103126101f95751905f611799565b3d91506118d0565b8351604051634903b0d160e01b81526004810184905292955091925090602090839060249082906001600160a01b03165afa9182156104b0575f9261198b575b506064620186a0602093049360018060a01b0390511694604051958693849263556d6e9f60e01b8452600484015260248301528560448301525afa9182156104b0575f9261184757506040519161183d8361088a565b91506020823d6020116119b8575b816119a6602093836108ba565b810103126101f9579051906064611935565b3d9150611999565b604051634903b0d160e01b81525f600482015290602090829060249082906001600160a01b03165afa9081610f565750610f5257600190565b6040516323b872dd60e01b60208201526001600160a01b0392831660248201529290911660448301526064808301939093529181526112cc91611a3d6084836108ba565b611bf2565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830181905294919390831691602085604481865afa9485156104b0575f95611b6a575b5084018094116101df5760405163095ea7b360e01b602082019081526001600160a01b039290921660248201526044808201959095529384525f908190611acd6064876108ba565b85519082855af190611add611132565b82611b38575b5081611b2d575b5015611af557505050565b611a3d6112cc936040519063095ea7b360e01b602083015260248201525f604482015260448152611b276064826108ba565b82611bf2565b90503b15155f611aea565b80519192508115918215611b50575b5050905f611ae3565b611b639250602080918301019101611bda565b5f80611b47565b9094506020813d602011611b96575b81611b86602093836108ba565b810103126101f95751935f611a85565b3d9150611b79565b60405163a9059cbb60e01b60208201526001600160a01b039290921660248301526044808301939093529181526112cc91611a3d6064836108ba565b908160209103126101f9575180151581036101f95790565b5f80611c1a9260018060a01b03169360208151910182865af1611c13611132565b9083611c5d565b8051908115159182611c42575b5050611c305750565b635274afe760e01b5f5260045260245ffd5b611c559250602080918301019101611bda565b155f80611c27565b90611c815750805115611c7257805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580611cb2575b611c92575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15611c8a56fe000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeea264697066735822122095b2866d1bfb6558995f95f5311386e755a500933ce3b93e801eddc460105df664736f6c634300081b00336b656420736c6f742e2057652063616e2774206669742076616c756520677265000000000000000000000000a2e3356610840701bdf5611a53974510ae27e2e10000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec773746453746f726167652066696e642853746453746f72616765293a20506163a2646970667358221220261575f55631d0bee0c5b5098e221188d5046535cb8f7c19239c842d6c79289064736f6c634300081b0033a03837a25210ee280c2113ff4b77ca23440b19d4866cca721c801278fd08d807","sourceMap":"138:14752:70:-:0;;;;;;3166:4:2;138:14752:70;;3166:4:2;138:14752:70;;;3166:4:2;138:14752:70;3166:4:2;138:14752:70;;1038:4:12;138:14752:70;;;1038:4:12;138:14752:70;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;138:14752:70;;;;;;;;;:::i;:::-;564:29:65;138:14752:70;;-1:-1:-1;;;138:14752:70;;;;;564:29:65;;138:14752:70;;;;:::i;:::-;;;;-1:-1:-1;;;138:14752:70;;;;;564:29:65;;138:14752:70;;;;:::i;:::-;564:29:65;138:14752:70;;-1:-1:-1;;;138:14752:70;;;;564:29:65;;;138:14752:70;;;564:29:65;138:14752:70;;;564:29:65;138:14752:70;;;-1:-1:-1;;138:14752:70;;;;;-1:-1:-1;;;;;;;;;;;138:14752:70;;564:29:65;138:14752:70;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;138:14752:70;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3166:4:2;138:14752:70;;;;;;;;;;;-1:-1:-1;;;;138:14752:70;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;138:14752:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3166:4:2;138:14752:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3166:4:2;138:14752:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;138:14752:70;;;;;;;;;;;564:29:65;138:14752:70;;;;;;;;-1:-1:-1;;;;;;;;;;;138:14752:70;;;;;;;;;;;;;;3166:4:2;138:14752:70;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;138:14752:70;;;-1:-1:-1;;;;;138:14752:70;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x61016080604052600436101561001d575b50361561001b575f80fd5b005b5f905f3560e01c90816308c41745146154f9575080630a9254e414614cf15780631b92811314614c515780631ed7831c14614bd357806321ce99d1146142c057806327e10f5b14613bb55780632ade388014613a465780632b23bee7146137c15780633584c58c146137315780633dbde0cc14612a3b5780633e5e3c23146129bd5780633f7286f41461293f578063444bb9ce146122a457806359f2cba1146121f2578063642b929d14611fa857806366d9a9a014611dfa57806385226c8114611d60578063916a17c614611ad457806391e2f3bf146112cc57806399dd5ff814610675578063a00872f114610605578063ad74a8691461059b578063b5508aa9146104fa578063ba414fa6146104d5578063d170c3cc146102a7578063d4bdd1791461020c578063e20c9f711461017e5763fa7626d403610010573461017b578060031936011261017b57602060ff601e54166040519015158152f35b80fd5b503461017b578060031936011261017b5760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b8181106101ed576101e9856101dd81870382615568565b60405191829182615589565b0390f35b82546001600160a01b03168452602090930192600192830192016101c6565b503461017b578060031936011261017b5760205460405163ecbbc03360e01b81527380466c64868e1ab14a1ddf27a676c3fcbe638fe560601b6004820152908290829060249082906001600160a01b03165afa801561029c5761027791839161027a575b5051615e5e565b80f35b61029691503d8085833e61028e8183615568565b8101906159b0565b5f610270565b6040513d84823e3d90fd5b503461017b57604036600319011261017b576004356001600160a01b0381168082036104d157602435916001600160401b0383116104cd57366023840112156104cd578260040135926102f98461580b565b936103076040519586615568565b8085526024602086019160051b830101913683116104c957602401905b8282106104b95750505061033783615a3a565b51604051906348bd7dfd60e01b82526004820152846024820152846044820152848160648183875af180156104ae5761037791869161048c575b50615f4c565b1591845b84518110156104885761038e8186615a57565b51906040519163ecbbc03360e01b83526004830152868260248183875af1801561047d578561045d916001948a91610463575b506103dc86868060a01b036103d584615a3a565b5116615ff7565b6103ef86868060a01b036103d584615a47565b610427826103fd868c615a57565b51878060a01b0361040d85615a3a565b5116888060a01b0361041e86615a47565b5116918b616217565b610431848a615a57565b5190858060a01b0361044282615a47565b511690610454878060a01b0391615a3a565b51169188616217565b0161037b565b61047791503d808c833e61028e8183615568565b5f6103c1565b6040513d89823e3d90fd5b8580f35b6104a891503d8088833e6104a08183615568565b81019061592d565b5f610371565b6040513d87823e3d90fd5b8135815260209182019101610324565b8680fd5b8380fd5b8280fd5b503461017b578060031936011261017b5760206104f0615bf9565b6040519015158152f35b503461017b578060031936011261017b576019546105178161580b565b916105256040519384615568565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b83831061056f57604051602080825281906101e9908201886155ef565b60016020819260405161058d81610586818961578a565b0382615568565b815201920192019190610552565b503461017b578060031936011261017b5760205460405163ecbbc03360e01b815273bebc44782c7db0a1a60cb6fe97d0b483032ff1c760601b6004820152908290829060249082906001600160a01b03165afa801561029c5761027791839161027a575051615e5e565b503461017b57602036600319011261017b57600435601f548110156106715761062d9061573a565b91909161065d576040516101e99061064981610586818761578a565b6040519182916020835260208301906155cb565b634e487b7160e01b81526004819052602490fd5b5080fd5b503461017b57604036600319011261017b576004359060243580159081150361067157156112af5773ae7ab96520de3a18e5e111b5eaab095312d7fe8491815b60205460405163549387df60e11b8152736e1218b5cd701478a4be13af5c8c951f507b381160611b60048201526001600160a01b039283166024820181905295831660448201819052929091859183916064918391165afa90811561093e579061072691859161128d575b50615a3a565b51821080611281575b5f51602061a9135f395f51905f523b156104cd57604051632631f2b160e11b8152901515600482015283816024815f51602061a9135f395f51905f525afa801561093e5790849161126c575b50508315918215610b5c5783946107a08260018060a0989697981b0360205416615d8e565b602080546040516370a0823160e01b81523060048201526001600160a01b0390911631929181602481895afa9081156104ae578591610b27575b50955b608060018060a01b036020541660a460405180988193638307c65560e01b8352736e1218b5cd701478a4be13af5c8c951f507b381160611b60048401528760248401528b60448401528160648401528960848401525af1948515610ad7578895610af6575b50156109b5575060205461086b9291610865916001600160a01b03163190615bdf565b90615cf0565b8051600381018091116109a1576040516370a0823160e01b815230600482015290602082602481875afa8015610996578592879161095d575b506108b8926108b291615bdf565b90615eae565b51600219810191908211610949576020602491604051928380926370a0823160e01b82523060048301525afa90811561093e578491610906575b506102779261090091615bdf565b90615efd565b90506020813d602011610936575b8161092160209383615568565b8101031261093257516102776108f2565b5f80fd5b3d9150610914565b6040513d86823e3d90fd5b634e487b7160e01b84526011600452602484fd5b9250506020823d60201161098e575b8161097960209383615568565b810103126109325790518491906108b86108a4565b3d915061096c565b6040513d88823e3d90fd5b634e487b7160e01b85526011600452602485fd5b909194935060038501808611610ae2576040516370a0823160e01b815230600482015290602082602481865afa918215610ad7578892610aa1575b506108b26109fe9285615bdf565b6002198501948511610a8d57906020602492604051938480926370a0823160e01b82523060048301525afa918215610996578692610a55575b50610277946109006108659493610a4d93615bdf565b519147615bdf565b9291506020833d602011610a85575b81610a7160209383615568565b810103126109325791519091610277610a37565b3d9150610a64565b634e487b7160e01b86526011600452602486fd5b91506020823d602011610acf575b81610abc60209383615568565b81010312610932579051906108b26109f0565b3d9150610aaf565b6040513d8a823e3d90fd5b634e487b7160e01b87526011600452602487fd5b610b1991955060803d608011610b20575b610b118183615568565b810190615aab565b935f610842565b503d610b07565b9450506020843d602011610b54575b81610b4360209383615568565b81010312610932578693515f6107da565b3d9150610b36565b604051632eca54bf60e21b81526004810182905294602086602481737f39c581f595b53c5cb19bd0b3f8da6c935e2ca05afa9586156104ae578596611238575b50848060405160208101906370a0823160e01b825230602482015260248152610bc6604482615568565b5190737f39c581f595b53c5cb19bd0b3f8da6c935e2ca05afa50610bfa610beb617858565b6020808251830101910161591e565b50601180546001600160a01b031916737f39c581f595b53c5cb19bd0b3f8da6c935e2ca0179055600f805463ffffffff19166370a08231179055600e54600160401b81101561122457610c56816001610c6f9301600e55615722565b919091309083549060031b91821b915f19901b19161790565b905560018060a01b036011541695600f5460e01b60105490610c8f617c18565b6001600160a01b038a165f908152600d60205260409020909163ffffffff60e01b1690818a52602052604089206040516020810190610ce181610cd3888886617c01565b03601f198101835282615568565b5190208a5260205260ff600360408b2001541615611216575b6001600160a01b038a165f908152600d60205260409020908952602052610cd3610d3360408a2093604051928391602083019586617c01565b51902087526020526040862096600188015490600289015498610d568a84615bec565b6110da575b8054604051630667f9d760e41b81526001600160a01b038416600482015260248101829052999a989997988b98946020866044815f51602061a9135f395f51905f525afa9586156110cf578a96611096575b506001908201610100031b5f1901811b198516915f51602061a9135f395f51905f523b15611092576040516370ca10bb60e01b81526001600160a01b038616600482015260248101919091529086901b9190911760448201528781606481835f51602061a9135f395f51905f525af1908115610ad757889161107d575b505083610e35617dd1565b919015918215611072575b5050610f8f57505050610e516188f7565b60405190636f074d1f60e11b8252600482015260208160248187737f39c581f595b53c5cb19bd0b3f8da6c935e2ca05af1801561093e57610f60575b506020805460405163095ea7b360e01b81526001600160a01b03909116600482015260248101849052908160448187865af1801561093e57610f33575b506040516370a0823160e01b8152306004820152602081602481855afa90811561093e578491610efe575b509047956107dd565b9350506020833d602011610f2b575b81610f1a60209383615568565b81010312610932578592515f610ef5565b3d9150610f0d565b610f549060203d602011610f59575b610f4c8183615568565b810190615a6b565b610eca565b503d610f42565b610f819060203d602011610f88575b610f798183615568565b81019061591e565b505f610e8d565b503d610f6f565b869291839154905f51602061a9135f395f51905f523b156104d1576040516370ca10bb60e01b81526001600160a01b039091166004820152602481019190915260448101929092528180606481015b0381835f51602061a9135f395f51905f525af1801561029c5761105d575b60405162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b611068828092615568565b61017b5780610ffc565b14159050845f610e40565b8161108791615568565b6104c957865f610e2a565b8980fd5b995094506020893d6020116110c7575b816110b360209383615568565b810103126109325797518b98909481610dad565b3d91506110a6565b6040513d8c823e3d90fd5b6110e48a84615bec565b6101000361010081116112025760ff8111611202576001901b996040519a63348051d760e11b8c528060048d01528a8c6024815f51602061a9135f395f51905f525afa9b8c156111f7578b9c6111d3575b50604051809c602082015f51602061a9735f395f51905f529052604082015f51602061a8d35f395f51905f5290526060820169030ba32b9103a3430b7160b51b905280516020819201606a84015e81018c606a82015203606a01601f1981018d526111a0908d615568565b8510156111ae579950610d5b565b60405162461bcd60e51b815260206004820152806111cf602482018e6155cb565b0390fd5b6111f0919c503d808d833e6111e88183615568565b8101906158bc565b9a5f611135565b6040513d8d823e3d90fd5b634e487b7160e01b8a52601160045260248afd5b61121e61804b565b50610cfa565b634e487b7160e01b86526041600452602486fd5b9095506020813d602011611264575b8161125460209383615568565b810103126109325751945f610b9c565b3d9150611247565b8161127691615568565b6104d157825f61077b565b50620186a0821161072f565b6112a991503d8087833e6112a18183615568565b810190615b66565b5f610720565b73ae7ab96520de3a18e5e111b5eaab095312d7fe849181926106b5565b503461017b57602036600319011261017b576004358160648160018060a01b03602054166040519283809263549387df60e11b82527380466c64868e1ab14a1ddf27a676c3fcbe638fe560601b60048301525f51602061a9335f395f51905f5260248301525f51602061a9535f395f51905f5260448301525afa801561029c5761135c918391611ac05750615a3a565b51821080611ab4575b5f51602061a9135f395f51905f523b1561067157604051632631f2b160e11b8152901515600482015281816024815f51602061a9135f395f51905f525afa801561029c57611a9f575b508060405160208101906370a0823160e01b8252306024820152602481526113d7604482615568565b51905f51602061a9335f395f51905f525afa506113f5610beb617858565b50601180546001600160a01b0319165f51602061a9335f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b811015611a8b57610c5681600161144a9301600e55615722565b905560018060a01b0360115416600f5460e01b60105490611469617c18565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908187526020526040862060405160208101906114ad81610cd3888886617c01565b519020875260205260ff60036040882001541615611a7d575b6001600160a01b0384165f908152600d60205260409020908652602052610cd36114ff6040872093604051928391602083019586617c01565b519020845260205282604081209160018301549260028101546115228186615bec565b611968575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f51602061a9135f395f51905f525afa96871561099657869761192f575b506001908201610100031b5f1901811b198616915f51602061a9135f395f51905f523b1561192b576040516370ca10bb60e01b81526001600160a01b038616600482015260248101919091529087901b9190911760448201528381606481835f51602061a9135f395f51905f525af190811561093e578491611916575b5050846115fc617dd1565b91901591821561190b575b50506118ba5782856116176188f7565b6020805460405163095ea7b360e01b81526001600160a01b039091166004820152602481018390529081604481865f51602061a9335f395f51905f525af180156118925761189d575b506040516370a0823160e01b8152306004820152906020826024815f51602061a9335f395f51905f525afa91821561189257839261185e575b506040516370a0823160e01b8152306004820152916020836024815f51602061a9535f395f51905f525afa92831561093e57849361182a575b50602054604051638307c65560e01b8152929060809084906001600160a01b03168188816117038760048301615b12565b03925af19283156104ae578593611809575b506040516370a0823160e01b81523060048201526020816024815f51602061a9335f395f51905f525afa9081156109965786916117d5575b506108659061175b93615bdf565b516040516370a0823160e01b81523060048201526020816024815f51602061a9535f395f51905f525afa90811561093e5784916117a1575b506102779261086591615bdf565b90506020813d6020116117cd575b816117bc60209383615568565b810103126109325751610277611793565b3d91506117af565b90506020813d602011611801575b816117f060209383615568565b81010312610932575161175b61174d565b3d91506117e3565b61182391935060803d608011610b2057610b118183615568565b9185611715565b9092506020813d602011611856575b8161184660209383615568565b81010312610932575191846116d2565b3d9150611839565b9091506020813d60201161188a575b8161187a60209383615568565b8101031261093257519083611699565b3d915061186d565b6040513d85823e3d90fd5b6118b59060203d602011610f5957610f4c8183615568565b611660565b82945054905f51602061a9135f395f51905f523b156104d1576040516370ca10bb60e01b81526001600160a01b03909116600482015260248101919091526044810192909252818060648101610fde565b14159050855f611607565b8161192091615568565b6104d157825f6115f1565b8580fd5b955095506020853d602011611960575b8161194c60209383615568565b810103126109325793519487949081611574565b3d915061193f565b909192506119768185615bec565b610100036101008111610ae25760ff8111610ae25760405163348051d760e11b8152600190911b6004820181905287826024815f51602061a9135f395f51905f525afa8015610ad757606a611a2e916020948b91611a63575b506040519485915f51602061a9735f395f51905f52828401525f51602061a8d35f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018b838201520301601f198101845283615568565b861015611a3f575090859291611527565b60405162461bcd60e51b8152602060048201529081906111cf9060248301906155cb565b611a7791503d808d833e6111e88183615568565b5f6119cf565b611a8561804b565b506114c6565b634e487b7160e01b83526041600452602483fd5b81611aa991615568565b61067157815f6113ae565b50620f42408211611365565b6112a991503d8085833e6112a18183615568565b503461017b578060031936011261017b57601c54611af18161580b565b90611aff6040519283615568565b808252601c8352827f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b838310611b4257604051806101e98782615647565b604051611b4e81615532565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b816007840110611cc15784600197946002979460209794611bd9945491818110611ca5575b818110611c89575b818110611c6d575b818110611c51575b818110611c35575b818110611c19575b818110611bff575b10611beb575b500382615568565b83820152815201920192019190611b2d565b6001600160e01b031916815286015f611bd1565b828a1b6001600160e01b0319168452928901928b01611bcb565b604083901b6001600160e01b0319168452928901928b01611bc3565b606083901b6001600160e01b0319168452928901928b01611bbb565b608083901b6001600160e01b0319168452928901928b01611bb3565b60a083901b6001600160e01b0319168452928901928b01611bab565b60c083901b6001600160e01b0319168452928901928b01611ba3565b60e083901b6001600160e01b0319168452928901928b01611b9b565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e0820152019401920191611b76565b503461017b578060031936011261017b57601a54611d7d8161580b565b91611d8b6040519384615568565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b838310611dd557604051602080825281906101e9908201886155ef565b600160208192604051611dec81610586818961578a565b815201920192019190611db8565b503461017b578060031936011261017b57601b54611e178161580b565b90611e256040519283615568565b808252601b8352827f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1602084015b838310611e6857604051806101e98782615647565b604051611e7481615532565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b816007840110611f095784600197946002979460209794611ef7945491818110611ca557818110611c8957818110611c6d57818110611c5157818110611c3557818110611c1957818110611bff5710611beb57500382615568565b83820152815201920192019190611e53565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e0820152019401920191611e9c565b503461017b57602036600319011261017b5760205460405163549387df60e11b81527380466c64868e1ab14a1ddf27a676c3fcbe638fe560601b600482810191909152602482018490525f51602061a9535f395f51905f52604483015235916001600160a01b0316908381606481855afa801561093e5761202f91859161128d5750615a3a565b518210806121e6575b5f51602061a9135f395f51905f523b156104cd57604051632631f2b160e11b815290151560048201528380826024815f51602061a9135f395f51905f525afa9182156121d95784926121c0575b505061209091615d8e565b602080546040516370a0823160e01b8152306004820152926001600160a01b0390911680319285929190856024815f51602061a9535f395f51905f525afa948515611892578395612187575b5060809060a460405180958193638307c65560e01b83527380466c64868e1ab14a1ddf27a676c3fcbe638fe560601b60048401528160248401525f51602061a9535f395f51905f5260448401528160648401528660848401525af19182156104ae578592612160575b5061086561175b929360018060a01b03602054163190615bdf565b61175b92506121806108659160803d608011610b2057610b118183615568565b9250612145565b925093506020823d6020116121b8575b816121a460209383615568565b8101031261093257608085925194906120dc565b3d9150612197565b819250906121cd91615568565b6104d15781835f612085565b50604051903d90823e3d90fd5b50620f42408211612038565b503461017b578060031936011261017b5760205460405163549387df60e11b815273bebc44782c7db0a1a60cb6fe97d0b483032ff1c760601b600482015273a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4860248201525f51602061a9535f395f51905f526044820152908290829060649082906001600160a01b03165afa801561029c5761027791839161228a575b5051615c94565b61229e91503d8085833e6112a18183615568565b5f612283565b503461017b57602036600319011261017b576004358160648160018060a01b03602054166040519283809263549387df60e11b8252735fd5b7d4af0048f6b302c56a498c4e965949c2f360611b60048301525f51602061a8f35f395f51905f5260248301528460448301525afa801561029c57612327918391611ac05750615a3a565b51821080612930575b5f51602061a9135f395f51905f523b1561067157604051632631f2b160e11b8152901515600482015281816024815f51602061a9135f395f51905f525afa801561029c5761291b575b508060405160208101906370a0823160e01b8252306024820152602481526123a2604482615568565b51905f51602061a8f35f395f51905f525afa506123c0610beb617858565b50601180546001600160a01b0319165f51602061a8f35f395f51905f52179055600f805463ffffffff19166370a08231179055600e54600160401b811015611a8b57610c568160016124159301600e55615722565b905560018060a01b0360115416600f5460e01b60105490612434617c18565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b169081875260205260408620604051602081019061247881610cd3888886617c01565b519020875260205260ff6003604088200154161561290d575b6001600160a01b0384165f908152600d60205260409020908652602052610cd36124ca6040872093604051928391602083019586617c01565b519020845260205282604081209160018301549260028101546124ed8186615bec565b612837575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f51602061a9135f395f51905f525afa9687156109965786976127fe575b506001908201610100031b5f1901811b198616915f51602061a9135f395f51905f523b1561192b576040516370ca10bb60e01b81526001600160a01b038616600482015260248101919091529087901b9190911760448201528381606481835f51602061a9135f395f51905f525af190811561093e5784916127e9575b5050846125c7617dd1565b9190159182156127de575b50506118ba5782856125e26188f7565b6020805460405163095ea7b360e01b81526001600160a01b039091166004820152602481018390529081604481865f51602061a8f35f395f51905f525af18015611892576127c1575b506040516370a0823160e01b81523060048201529082476020846024815f51602061a8f35f395f51905f525afa93841561029c57829461278a575b50602054604051638307c65560e01b8152735fd5b7d4af0048f6b302c56a498c4e965949c2f360611b60048201525f51602061a8f35f395f51905f52602482015260448101849052606481018490526084810185905292608091849160a4918391906001600160a01b03165af19182156104ae576126f29261086591879161276b575b50519147615bdf565b6040516370a0823160e01b81523060048201526020816024815f51602061a8f35f395f51905f525afa90811561093e578491612737575b506108659061027793615bdf565b90506020813d602011612763575b8161275260209383615568565b810103126109325751610277612729565b3d9150612745565b612784915060803d608011610b2057610b118183615568565b876126e9565b915092506020813d6020116127b9575b816127a760209383615568565b81010312610932578390519285612666565b3d915061279a565b6127d99060203d602011610f5957610f4c8183615568565b61262b565b14159050855f6125d2565b816127f391615568565b6104d157825f6125bc565b955095506020853d60201161282f575b8161281b60209383615568565b81010312610932579351948794908161253f565b3d915061280e565b909192506128458185615bec565b610100036101008111610ae25760ff8111610ae25760405163348051d760e11b8152600190911b6004820181905287826024815f51602061a9135f395f51905f525afa8015610ad757606a6128fc916020948b91611a6357506040519485915f51602061a9735f395f51905f52828401525f51602061a8d35f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018b838201520301601f198101845283615568565b861015611a3f5750908592916124f2565b61291561804b565b50612491565b8161292591615568565b61067157815f612379565b50655af3107a40008211612330565b503461017b578060031936011261017b5760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b81811061299e576101e9856101dd81870382615568565b82546001600160a01b0316845260209093019260019283019201612987565b503461017b578060031936011261017b5760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b818110612a1c576101e9856101dd81870382615568565b82546001600160a01b0316845260209093019260019283019201612a05565b503461017b578060031936011261017b57610ca0604051612a5c8282615568565b60648152601f1982019081366020830137835b606481106136ed5750612a80615e1d565b90845b6064811061318c57505060015b6063811061314f575050612aa76040519283615568565b60648252366020830137815b606481106131125750612ac4615e1d565b90825b60648110612b4857505060015b60638110612ae0578280f35b612aea8183615a57565b515160018201908183116109a157612b3b82612b18612b4293612b106001979689615a57565b515190615efd565b6040612b3281612b28878a615a57565b5101519288615a57565b51015190617887565b850b6178c5565b01612ad4565b604051634b88b8ad60e11b815290602082600481885f51602061a9135f395f51905f525af19182156104ae5785926130df575b50612b868184615a57565b51858060405160208101906370a0823160e01b825230602482015260248152612bb0604482615568565b51905f51602061a9335f395f51905f525afa50612bce610beb617858565b50601180546001600160a01b0319165f51602061a9335f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b8110156130cb57610c56816001612c239301600e55615722565b9055601154600f5460105488926001600160a01b03169160e01b612c45617c18565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818652602052604085206040516020810190612c8981610cd3888886617c01565b519020865260205260ff600360408720015416156130bd575b6001600160a01b0384165f908152600d60205260409020908552602052610cd3612cdb6040862093604051928391602083019586617c01565b5190208352602052604082206001810154936002820154612cfc8187615bec565b612fb1575b8254604051630667f9d760e41b81526001600160a01b038616600482015260248101829052969091906020886044815f51602061a9135f395f51905f525afa97881561047d578798612f79575b506001908201610100031b5f1901811b198716915f51602061a9135f395f51905f523b156104c9576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528481606481835f51602061a9135f395f51905f525af19081156104ae578591612f64575b5050612dd5617dd1565b919015918215612f59575b50506118ba5750505050612df26188f7565b60208054612e3d91906001600160a01b0316612e0e8487615a57565b5160405163095ea7b360e01b81526001600160a01b039092166004830152602482015291829081906044820190565b0381895f51602061a9335f395f51905f525af1801561099657612f3d575b506020548590608090612e98906001600160a01b0316612e7b8588615a57565b51604051948580948193638307c65560e01b835260048301615b12565b03925af1908115610996578691612f1f575b50612eb58286615a57565b52612ec08185615a57565b5060405191631135fc2960e21b83526004830152602082602481885f51602061a9135f395f51905f525af19182156104ae57600192612f01575b5001612ac7565b612f189060203d8111610f5957610f4c8183615568565b505f612efa565b612f37915060803d8111610b2057610b118183615568565b5f612eaa565b612f549060203d8111610f5957610f4c8183615568565b612e5b565b141590505f80612de0565b81612f6e91615568565b6104cd57835f612dcb565b965096506020863d8211612fa9575b81612f9560209383615568565b81010312610932579451958b959081612d4e565b3d9150612f88565b9091929350612fc08186615bec565b6101000361010081116130a95760ff81116130a95760405163348051d760e11b8152600190911b600482018190528b80836024815f51602061a9135f395f51905f525afa9283156121d95760209382606a9261307b949261308d575b506040519586925f51602061a9735f395f51905f52828501525f51602061a8d35f395f51905f52604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f198101845283615568565b831015611a3f57509089939291612d01565b6130a29192503d8084833e6111e88183615568565b905f61301c565b634e487b7160e01b8b52601160045260248bfd5b6130c561804b565b50612ca2565b634e487b7160e01b87526041600452602487fd5b9091506020813d821161310a575b816130fa60209383615568565b810103126109325751905f612b7b565b3d91506130ed565b806103e8026103e88104820361094957633b9aca00820290808204620f4240149015171561094957906001916131488285615a57565b5201612ab3565b6131598183615a57565b51516001820190818311610ae25761317f82612b1861318693612b106001979689615a57565b870b6178c5565b01612a90565b604051634b88b8ad60e11b8152906020826004818a5f51602061a9135f395f51905f525af191821561047d5787926136ba575b506131ca8184615a57565b51878060405160208101906370a0823160e01b8252306024820152602481526131f4604482615568565b51905f51602061a9335f395f51905f525afa50613212610beb617858565b50601180546001600160a01b0319165f51602061a9335f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b8110156136a657610c568160016132679301600e55615722565b9055601154600f546010548a926001600160a01b03169160e01b613289617c18565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908186526020526040852060405160208101906132cd81610cd3888886617c01565b519020865260205260ff60036040872001541615613698575b6001600160a01b0384165f908152600d60205260409020908552602052610cd361331f6040862093604051928391602083019586617c01565b51902083526020526040822060018101549360028201546133408187615bec565b6135a9575b8254604051630667f9d760e41b81526001600160a01b038616600482015260248101829052969091906020886044815f51602061a9135f395f51905f525afa97881561047d578798613571575b506001908201610100031b5f1901811b198716915f51602061a9135f395f51905f523b156104c9576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528481606481835f51602061a9135f395f51905f525af19081156104ae57859161355c575b5050613419617dd1565b919015918215613551575b50506118ba57505050506134366188f7565b6020805461345291906001600160a01b0316612e0e8487615a57565b03818b5f51602061a9335f395f51905f525af18015610ad757613535575b506020548790608090613490906001600160a01b0316612e7b8588615a57565b03925af1908115610ad7578891613517575b506134ad8286615a57565b526134b88185615a57565b5060405191631135fc2960e21b835260048301526020826024818a5f51602061a9135f395f51905f525af191821561047d576001926134f9575b5001612a83565b6135109060203d8111610f5957610f4c8183615568565b505f6134f2565b61352f915060803d8111610b2057610b118183615568565b5f6134a2565b61354c9060203d8111610f5957610f4c8183615568565b613470565b141590505f80613424565b8161356691615568565b6104cd57835f61340f565b965096506020863d82116135a1575b8161358d60209383615568565b81010312610932579451958d959081613392565b3d9150613580565b90919293506135b88186615bec565b6101000361010081116136845760ff81116136845760405163348051d760e11b8152600190911b600482018190528d80836024815f51602061a9135f395f51905f525afa9283156121d95760209382606a92613672949261308d57506040519586925f51602061a9735f395f51905f52828501525f51602061a8d35f395f51905f52604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f198101845283615568565b831015611a3f5750908b939291613345565b634e487b7160e01b8d52601160045260248dfd5b6136a061804b565b506132e6565b634e487b7160e01b89526041600452602489fd5b9091506020813d82116136e5575b816136d560209383615568565b810103126109325751905f6131bf565b3d91506136c8565b806103e8026103e881048203610a8d5767016345785d8a0000820290808204655af3107a40001490151715610a8d579060019161372a8285615a57565b5201612a6f565b503461017b578060031936011261017b5760205460405163549387df60e11b81527380466c64868e1ab14a1ddf27a676c3fcbe638fe560601b60048201525f51602061a9335f395f51905f5260248201525f51602061a9535f395f51905f526044820152908290829060649082906001600160a01b03165afa801561029c5761027791839161228a575051615c94565b503461017b57602036600319011261017b5760205460405163549387df60e11b8152735fd5b7d4af0048f6b302c56a498c4e965949c2f360611b600482810191909152602482018490525f51602061a8f35f395f51905f52604483015235916001600160a01b0316908381606481855afa801561093e5761384891859161128d5750615a3a565b51821080613a37575b5f51602061a9135f395f51905f523b156104cd57604051632631f2b160e11b815290151560048201528380826024815f51602061a9135f395f51905f525afa9182156121d9578492613a1e575b50506138a991615d8e565b602080546040516370a0823160e01b8152306004820152926001600160a01b0390911680319285929190856024815f51602061a8f35f395f51905f525afa9485156118925783956139e5575b5060809060a460405180958193638307c65560e01b8352735fd5b7d4af0048f6b302c56a498c4e965949c2f360611b60048401528160248401525f51602061a8f35f395f51905f5260448401528160648401528660848401525af19182156104ae5785926139be575b50610865613979929360018060a01b03602054163190615bdf565b516040516370a0823160e01b81523060048201526020816024815f51602061a8f35f395f51905f525afa90811561093e5784916117a157506102779261086591615bdf565b61397992506139de6108659160803d608011610b2057610b118183615568565b925061395e565b925093506020823d602011613a16575b81613a0260209383615568565b8101031261093257608085925194906138f5565b3d91506139f5565b81925090613a2b91615568565b6104d15781835f61389e565b50655af3107a40008211613851565b503461017b578060031936011261017b57601d54613a638161580b565b613a706040519182615568565b818152601d83526020810191837f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f845b838310613b2457868587604051928392602084019060208552518091526040840160408260051b8601019392905b828210613add57505050500390f35b91936001919395506020613b148192603f198a82030186526040838a51878060a01b038151168452015191818582015201906155ef565b9601920192018594939192613ace565b604051613b3081615532565b82546001600160a01b03168152600183018054613b4c8161580b565b91613b5a6040519384615568565b8183528a526020808b20908b9084015b838210613b90575050505060019282602092836002950152815201920192019190613aa0565b600160208192604051613ba781610586818a61578a565b815201930191019091613b6a565b503461017b57602036600319011261017b576004358160648160018060a01b03602054166040519283809263549387df60e11b825273bebc44782c7db0a1a60cb6fe97d0b483032ff1c760601b600483015273a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4860248301525f51602061a9535f395f51905f5260448301525afa801561029c57613c4c918391611ac05750615a3a565b518210806142b5575b5f51602061a9135f395f51905f523b1561067157604051632631f2b160e11b8152901515600482015281816024815f51602061a9135f395f51905f525afa801561029c576142a0575b508060405160208101906370a0823160e01b825230602482015260248152613cc7604482615568565b519073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb485afa50613cec610beb617858565b50601180546001600160a01b03191673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48179055600f805463ffffffff19166370a08231179055600e54600160401b811015611a8b57610c56816001613d489301600e55615722565b905560018060a01b0360115416600f5460e01b60105490613d67617c18565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818752602052604086206040516020810190613dab81610cd3888886617c01565b519020875260205260ff60036040882001541615614292575b6001600160a01b0384165f908152600d60205260409020908652602052610cd3613dfd6040872093604051928391602083019586617c01565b51902084526020528260408120916001830154926002810154613e208186615bec565b6141bc575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f51602061a9135f395f51905f525afa968715610996578697614183575b506001908201610100031b5f1901811b198616915f51602061a9135f395f51905f523b1561192b576040516370ca10bb60e01b81526001600160a01b038616600482015260248101919091529087901b9190911760448201528381606481835f51602061a9135f395f51905f525af190811561093e57849161416e575b505084613efa617dd1565b919015918215614163575b50506118ba578285613f156188f7565b6020805460405163095ea7b360e01b81526001600160a01b0390911660048201526024810183905290816044818673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb485af1801561189257614146575b506040516370a0823160e01b8152306004820152829060208160248173a0b86991c6218b36c1d19d4a2e9eb0ce3606eb485afa90811561029c578291614111575b506040516370a0823160e01b8152306004820152926020846024815f51602061a9535f395f51905f525afa9384156118925783946140da575b50602054604051638307c65560e01b815273bebc44782c7db0a1a60cb6fe97d0b483032ff1c760601b600482015273a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4860248201525f51602061a9535f395f51905f526044820152606481018590526084810183905293608091859160a4918391906001600160a01b03165af19283156104ae5785936140b9575b506040516370a0823160e01b815230600482015260208160248173a0b86991c6218b36c1d19d4a2e9eb0ce3606eb485afa9081156109965786916117d557506108659061175b93615bdf565b6140d391935060803d608011610b2057610b118183615568565b918561406d565b925092506020823d602011614109575b816140f760209383615568565b81010312610932578391519285613fdf565b3d91506140ea565b9150506020813d60201161413e575b8161412d60209383615568565b810103126109325782905184613fa6565b3d9150614120565b61415e9060203d602011610f5957610f4c8183615568565b613f65565b14159050855f613f05565b8161417891615568565b6104d157825f613eef565b955095506020853d6020116141b4575b816141a060209383615568565b810103126109325793519487949081613e72565b3d9150614193565b909192506141ca8185615bec565b610100036101008111610ae25760ff8111610ae25760405163348051d760e11b8152600190911b6004820181905287826024815f51602061a9135f395f51905f525afa8015610ad757606a614281916020948b91611a6357506040519485915f51602061a9735f395f51905f52828401525f51602061a8d35f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018b838201520301601f198101845283615568565b861015611a3f575090859291613e25565b61429a61804b565b50613dc4565b816142aa91615568565b61067157815f613c9e565b506127108211613c55565b503461017b578060031936011261017b57602154819060209060405b8185106142e7578380f35b846142f36024966156f6565b6001600160601b031991549060031b1c60601b168560018060a01b036020541684519889809263ecbbc03360e01b82528560048301525afa968715614bc9578697614bad575b508251966143478489615568565b60018852853660208a01376024602061435f856156f6565b90548751634903b0d160e01b8152600481018c90529384929091839160031b1c6001600160a01b03165afa889181614b7a575b50614b675750602460206143a5856156f6565b9054875162cb501b60e31b8152600481018c90529384929091839160031b1c6001600160a01b03165afa8015614b5d578890614b2b575b600a9150046143ea89615a3a565b525b6001600160a01b036143fd82615a3a565b51169761446561440c82615a3a565b51998980885160208101906370a0823160e01b825230602482015260248152614436604482615568565b5190845afa50614447610beb617858565b5060018060a01b03166001600160601b0360a01b6011541617601155565b6370a0823163ffffffff19600f541617600f55600e54600160401b8110156136a657610c5681600161449a9301600e55615722565b905560018060a01b0360115416600f5460e01b896010549160ff60038a6144bf617c18565b6001600160a01b0388165f908152600d602052604090209095909463ffffffff60e01b16948582526020528181208251602081019061450381610cd38c8c86617c01565b51902082526020522001541615614b1d575b6001600160a01b0384165f908152600d60205260409020908c52602052610cd361454c898d20938a51928391602083019586617c01565b5190208a526020528589209060018201549160028101549b61456e8d85615bec565b614a05575b81548951630667f9d760e41b81526001600160a01b0385166004820152602481018290529c9d9b9c9a9b999a98998e99956020876044815f51602061a9135f395f51905f525afa9687156149fb578b976149c3575b506001908201610100031b5f1901811b198616915f51602061a9135f395f51905f523b156149bf578c516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528881606481835f51602061a9135f395f51905f525af180156149b55790899161499c575b505061464e617dd1565b919015918215614991575b50506148a75750505061466a6188f7565b6146cb60206001600160a01b0361468085615a3a565b5182546001600160a01b0316911661469785615a3a565b518a5163095ea7b360e01b81526001600160a01b039093166004840152602483015290928391908290899082906044820190565b03925af1801561489d5761473e959493926080929091614881575b506020546001600160a01b03908116906146ff85615a3a565b5116918661471f6001600160a01b0361471788615a47565b511692615a3a565b518b51638307c65560e01b8152998a9586948593918b60048601615ae4565b03925af193841561487757908392916147c195614857575b506020546001600160a01b03908116919061477082615a3a565b5116906001600160a01b039061478590615a47565b51895163549387df60e11b815260048101959095526001600160a01b039283166024860152161660448301529093849190829081906064820190565b03915afa91821561484d57600193928561481d93614812938b93614827575b5061480691816147f260209351615d3f565b016147fe815151615d3f565b510151615d3f565b61481861481282615a3a565b51615d3f565b615a47565b01939291906142dc565b602091935091614844614806938d3d8091833e6112a18183615568565b939150916147e0565b84513d89823e3d90fd5b61487091945060803d8111610b2057610b118183615568565b925f614756565b86513d85823e3d90fd5b6148989060203d8111610f5957610f4c8183615568565b6146e6565b87513d87823e3d90fd5b91868992819454905f51602061a9135f395f51905f523b156104d15784516370ca10bb60e01b81526001600160a01b039190911660048201526024810191909152604481019290925281606481835f51602061a9135f395f51905f525af1801561498557614970575b815162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b61497b838092615568565b6106715781614910565b505051903d90823e3d90fd5b141590505f80614659565b816149a691615568565b6149b157875f614644565b8780fd5b8b513d8b823e3d90fd5b8a80fd5b9a50955060208a3d82116149f3575b816149df60209383615568565b810103126109325798518e999095816145c8565b3d91506149d2565b8d513d8d823e3d90fd5b614a0f8d85615bec565b6101000361010081116136845760ff8111613684576001901b895163348051d760e11b81528160048201528d816024815f51602061a9135f395f51905f525afa908115614b1157606a8f8060208f9295614ac7955f51602061a8d35f395f51905f52989791614af7575b5083519788945f51602061a9735f395f51905f528487015285015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f198101845283615568565b821015614ad45750614573565b895162461bcd60e51b8152602060048201529081906111cf9060248301906155cb565b614b0b91503d8085833e6111e88183615568565b5f614a79565b8e8c51903d90823e3d90fd5b614b2561804b565b50614515565b506020813d8211614b55575b81614b4460209383615568565b8101031261093257600a90516143dc565b3d9150614b37565b85513d8a823e3d90fd5b600a9004614b7489615a3a565b526143ec565b9091506020813d8211614ba5575b81614b9560209383615568565b810103126109325751905f614392565b3d9150614b88565b614bc29197503d8088833e61028e8183615568565b955f614339565b83513d88823e3d90fd5b503461017b578060031936011261017b5760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b818110614c32576101e9856101dd81870382615568565b82546001600160a01b0316845260209093019260019283019201614c1b565b503461017b57606036600319011261017b576024356001600160a01b038116810361067157816044356001600160a01b0381168103610671576020546040516348bd7dfd60e01b815260048035908201526001600160a01b0394851660248201529184166044830152909283916064918391165afa801561029c57610277918391614cdd575051615c94565b61229e91503d8085833e6104a08183615568565b5034610932575f3660031901126109325760405163975a6ce960e01b81526020600482015260076024820152661b585a5b9b995d60ca1b60448201525f816064815f51602061a9135f395f51905f525afa9081156153f857614d7a916020915f916154df575b50604051809381926371ee464d60e01b83526040600484015260448301906155cb565b630134c06a602483015203815f5f51602061a9135f395f51905f525af180156153f8576154b0575b50604051611d2b8082018281106001600160401b0382111761549c578291618ba8833903905ff080156153f85760018060a01b03166001600160601b0360a01b602054161760205560405161030081018181106001600160401b0382111761549c5760405273ecd5e75afb02efa118af914515d6521aabd189f1815273ed279fdd11ca84beef15af5d39bb4d4bee23f0ca60208201527343b4fdfd4ff969587185cdb6f0bd875c5fc83f8c6040820152739efe1a1cbd6ca51ee8319afc4573d253c3b732af6060820152734807862aa8b2bf68830e4c8dc86d0e9a998e085a608082015273d632f22692fac7611d2aa1c0d552930d43caed3b60a082015273a5407eae9ba41422680e2e00537571bcc53efbfd60c0820152735a6a4d54456819380173272a5e8e9b9904bdf41b60e0820152733211c6cbef1429da3d0d58494938299c92ad586061010082015273db6925ea42897ca786a045b252d95aa7370f44b461012082015273f861483fa7e511fbc37487d91b6faa803af5d37c610140820152731e098b32944292969fb58c85bdc85545da39711761016082015273e0e970a99bc4f53804d8145bebbc7ebc9422ba7f610180820152736bfe880ed1d639bf80167b93cc9c56a39c1ba2dc6101a082015273bdfae7d2cf2e69e27b75a5287ecd3808f62b5a766101c082015273fb8814d005c5f32874391e888da6eb2fe7a279026101e0820152730f3159811670c117c372428d4e69ac32325e4d0f610200820152734ebdf703948ddcea3b11f675b4d1fba9d2414a14610220820152730e9b5b092cad6f1c5e6bc7f89ffe1abb5c95f1c26102408201527321410232b484136404911780bc32756d5d1a9fa961026082015273322135dd9cbae8afa84727d9ae1434b5b3eba44b61028082015273c26b89a667578ec7b3f11b2f98d6fd15c07c54ba6102a0820152739409280dc1e6d33ab7a8c6ec03e5763fb61772b56102c0820152735fae7e604fc3e24fd43a72867cebac94c65b404a6102e0820152602154601860215580601810615440575b5060215f525f5b601881106154035760205483906001600160a01b03165f51602061a9135f395f51905f523b1561093257604051906318caf8e360e31b8252600482015260406024820152600c60448201526b21bab93b32a0b230b83a32b960a11b60648201525f81608481835f51602061a9135f395f51905f525af180156153f8576153e5575b505f51602061a9135f395f51905f523b1561017b57806040516318caf8e360e31b81525f51602061a9535f395f51905f5260048201526040602482015260046044820152631554d11560e21b60648201528181608481835f51602061a9135f395f51905f525af1801561029c576153d0575b50505f51602061a9135f395f51905f523b1561017b57806040516318caf8e360e31b815273a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4860048201526040602482015260046044820152635553444360e01b60648201528181608481835f51602061a9135f395f51905f525af1801561029c576153bb575b50505f51602061a9135f395f51905f523b1561017b57806040516318caf8e360e31b815273bebc44782c7db0a1a60cb6fe97d0b483032ff1c7600482015260406024820152600b60448201526a14d51050931157d413d3d360aa1b60648201528181608481835f51602061a9135f395f51905f525af1801561029c576153a6575b50505f51602061a9135f395f51905f523b1561017b57806040516318caf8e360e31b81525f51602061a9335f395f51905f5260048201526040602482015260046044820152630ae8aa8960e31b60648201528181608481835f51602061a9135f395f51905f525af1801561029c57615391575b50505f51602061a9135f395f51905f523b1561017b57806040516318caf8e360e31b81527380466c64868e1ab14a1ddf27a676c3fcbe638fe5600482015260406024820152600b60448201526a10d496541513d7d413d3d360aa1b60648201528181608481835f51602061a9135f395f51905f525af1801561029c576153805750f35b8161538a91615568565b61017b5780f35b8161539b91615568565b61017b5780826152fd565b816153b091615568565b61017b57808261528a565b816153c591615568565b61017b578082615209565b816153da91615568565b61017b57808261518f565b6153f191505f90615568565b5f8161511d565b6040513d5f823e3d90fd5b81516001600160a01b03167f3a6357012c1a3ae0a17d304c9920310382d968ebcc4b1771f41c6b304205b57082015560209091019060010161509c565b7f3a6357012c1a3ae0a17d304c9920310382d968ebcc4b1771f41c6b304205b570017f3a6357012c1a3ae0a17d304c9920310382d968ebcc4b1771f41c6b304205b5885b8181106154915750615095565b5f8155600101615484565b634e487b7160e01b5f52604160045260245ffd5b6020813d6020116154d7575b816154c960209383615568565b810103126109325751614da2565b3d91506154bc565b6154f391503d805f833e6111e88183615568565b5f614d57565b346109325760403660031901126109325761552a60209161551981615532565b600435815260243583820152615867565b604051908152f35b604081019081106001600160401b0382111761549c57604052565b606081019081106001600160401b0382111761549c57604052565b90601f801991011681019081106001600160401b0382111761549c57604052565b60206040818301928281528451809452019201905f5b8181106155ac5750505090565b82516001600160a01b031684526020938401939092019160010161559f565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9080602083519182815201916020808360051b8301019401925f915b83831061561a57505050505090565b9091929394602080615638600193601f1986820301875289516155cb565b9701930193019193929061560b565b602081016020825282518091526040820191602060408360051b8301019401925f915b83831061567957505050505090565b9091929394603f1982820301835285516020606081604085019360018060a01b0381511686520151936040838201528451809452019201905f905b8082106156d3575050506020806001929701930193019193929061566a565b82516001600160e01b0319168452602093840193909201916001909101906156b4565b60215481101561570e5760215f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b600e5481101561570e57600e5f5260205f2001905f90565b601f5481101561570e57601f5f5260205f2001905f90565b90600182811c92168015615780575b602083101461576c57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691615761565b5f929181549161579983615752565b80835292600181169081156157ee57506001146157b557505050565b5f9081526020812093945091925b8383106157d4575060209250010190565b6001816020929493945483858701015201910191906157c3565b915050602093945060ff929192191683830152151560051b010190565b6001600160401b03811161549c5760051b60200190565b8181029291811591840414171561583557565b634e487b7160e01b5f52601160045260245ffd5b8115615853570490565b634e487b7160e01b5f52601260045260245ffd5b80516a084595161401484a0000008102908082046a084595161401484a000000149015171561583557602061589e92015190615849565b90565b6001600160401b03811161549c57601f01601f191660200190565b602081830312610932578051906001600160401b038211610932570181601f82011215610932578051906158ef826158a1565b926158fd6040519485615568565b8284526020838301011161093257815f9260208093018386015e8301015290565b90816020910312610932575190565b602081830312610932578051906001600160401b03821161093257019080601f83011215610932578151906159618261580b565b9261596f6040519485615568565b82845260208085019360051b82010191821161093257602001915b8183106159975750505090565b8251600a8110156109325781526020928301920161598a565b602081830312610932578051906001600160401b03821161093257019080601f83011215610932578151906159e48261580b565b926159f26040519485615568565b82845260208085019360051b82010191821161093257602001915b818310615a1a5750505090565b82516001600160a01b038116810361093257815260209283019201615a0d565b80511561570e5760200190565b80516001101561570e5760400190565b805182101561570e5760209160051b010190565b90816020910312610932575180151581036109325790565b919082604091031261093257604051615a9b81615532565b6020808294805184520151910152565b9060808282031261093257615adc906040805193615ac88561554d565b805185526020810151602086015201615a83565b604082015290565b9081526001600160a01b039182166020820152911660408201525f6060820152608081019190915260a00190565b7380466c64868e1ab14a1ddf27a676c3fcbe638fe560601b81525f51602061a9335f395f51905f5260208201525f51602061a9535f395f51905f5260408201525f6060820152608081019190915260a00190565b602081830312610932578051906001600160401b03821161093257019080601f83011215610932578151615b998161580b565b92615ba76040519485615568565b81845260208085019260051b82010192831161093257602001905b828210615bcf5750505090565b8151815260209182019101615bc2565b9190820391821161583557565b9190820180921161583557565b60085460ff168015615c085790565b50604051630667f9d760e41b81525f51602061a9135f395f51905f5260048201526519985a5b195960d21b60248201526020816044815f51602061a9135f395f51905f525afa9081156153f8575f91615c62575b50151590565b90506020813d602011615c8c575b81615c7d60209383615568565b8101031261093257515f615c5c565b3d9150615c70565b5f51602061a9135f395f51905f523b15610932576040519063260a5b1560e21b82526004820152600260248201525f816044815f51602061a9135f395f51905f525afa80156153f857615ce45750565b5f615cee91615568565b565b905f51602061a9135f395f51905f523b15610932576040519163260a5b1560e21b8352600483015260248201525f816044815f51602061a9135f395f51905f525afa80156153f857615ce45750565b5f51602061a9135f395f51905f523b156109325760405190636d83fe6960e11b825260048201525f60248201525f816044815f51602061a9135f395f51905f525afa80156153f857615ce45750565b5f51602061a9135f395f51905f523b156109325760405163c88a5e6d60e01b81526001600160a01b0391909116600482015260248101919091525f81604481835f51602061a9135f395f51905f525af180156153f857615ce45750565b60405190615df88261554d565b815f81525f60208201526040805191615e1083615532565b5f83525f60208401520152565b604051610ca09190615e2f8382615568565b6064815291601f1901825f5b828110615e4757505050565b602090615e52615deb565b82828501015201615e3b565b5f51602061a9135f395f51905f523b15610932576040519063a8d4d1d960e01b82526004820152600260248201525f816044815f51602061a9135f395f51905f525afa80156153f857615ce45750565b905f51602061a9135f395f51905f523b15610932576040519163a8d4d1d960e01b8352600483015260248201525f816044815f51602061a9135f395f51905f525afa80156153f857615ce45750565b905f51602061a9135f395f51905f523b156109325760405191638466f41560e01b8352600483015260248201525f816044815f51602061a9135f395f51905f525afa80156153f857615ce45750565b5f5b8151811015615f9557615f618183615a57565b51600a811015615f8157600514615f7a57600101615f4e565b5050600190565b634e487b7160e01b5f52602160045260245ffd5b50505f90565b5f5b8151811015615f9557615fb08183615a57565b51600a811015615f8157600914615f7a57600101615f9d565b5f5b8151811015615f9557615fde8183615a57565b51600a811015615f8157600814615f7a57600101615fcb565b60405190602082019263095ea7b360e01b845260018060a01b0316928360248401525f1960448401526044835261602f606484615568565b82516001600160a01b038316915f91829182855af19061604d617858565b826160ad575b50816160a2575b501561606557505050565b61609d615cee936040519063095ea7b360e01b602083015260248201525f604482015260448152616097606482615568565b82617915565b617915565b90503b15155f61605a565b805191925081159182156160c5575b5050905f616053565b6160d89250602080918301019101615a6b565b5f806160bc565b602081830312610932578051906001600160401b038211610932570181601f820112156109325780516161118161580b565b9261611f6040519485615568565b81845260208085019260061b8401019281841161093257602001915b838310616149575050505090565b60206040916161588486615a83565b81520192019161613b565b60a0919360209360808301958352600180851b031684830152600180841b03166040820152608060608201528451809452019201905f5b8181106161a75750505090565b825184526020938401939092019160010161619a565b604051906161cc606083615568565b603682527536103a3790383934b1b29030b33a32b91039bbb0b81760511b6040837f45786563757465642070726963652073686f756c64206265206f72206571756160208201520152565b60c09490945260405163549387df60e11b8152600481018290526001600160a01b0380841660248301528416604482015291939290915f8180606481016101208490520381836001600160a01b0389165af180156153f85761627f915f916178445750615a3a565b5161010052606060a08190526040516162db9161629c9082615568565b602381527f53656c6c206c696d69742073686f756c6420626520677265617465722074686160208201526206e20360ec1b6040820152610100516179d8565b60a051505f806163636163916040516162f660a05182615568565b603681527f544553543a2054657374696e672070726963657320666f722070616972202573602082015275080b4f88095ccb8814d95b1b081b1a5b5a5d0e88095960521b6040820152604051928391638ef3f39960e01b60208401526080602484015260a48301906155cb565b6001600160a01b038a811660448401528716606483015261010051608483015203601f198101835282615568565b6020815191016a636f6e736f6c652e6c6f675afa506040516348bd7dfd60e01b8152600481018390526001600160a01b038086166024830152821660448201525f8180606481010381836001600160a01b0389165af180156153f8576163fe915f9161782a575b50615f9b565b906040519161640e60a084615568565b6004835260803660208501371561781d575f5b61642a83615a3a565b526103e8610100510461643c83615a47565b5281516002101561570e5760a05182016101005160011c905281516003101561570e5761010051608083015260405163155adc9160e31b8152935f858061648986868b8a60048601616163565b0381836001600160a01b0386165af19485156153f8575f95617801575b506164b96164b386615a3a565b51615867565b85515f19810191908211615835576164d76164b36165319389615a57565b60a05160405192906164e99084615568565b603083527f5072696365206174206c696d69742073686f756c6420626520736d616c6c657260208401526f0207468616e20707269636520617420360841b6040840152617a3f565b61653d6164b386615a3a565b85515f198101908111615835576165d86165f15f936165606164b386958c615a57565b60a0516040519291906165739084615568565b602d83527f544553543a20507269636520617420303a2025642c207072696365206174207360208401526c195b1b081b1a5b5a5d0e880959609a1b604084015260405194859363ca47c4eb60e01b602086015260a051602486015260848501906155cb565b916044840152606483015203601f198101835282615568565b6020815191016a636f6e736f6c652e6c6f675afa5060a0516040516166579161661a9082615568565b602581527f544553543a2054657374696e67206265686176696f7220666f72207072696365602082015264020617420360dc1b6040820152617a74565b6166a961666386615a3a565b5151604060e08190528051919061667a9083615568565b601882527f4e6f6d696e61746f722073686f756c646e27742062652030000000000000000060208301526179d8565b6166fa60206166b787615a3a565b51015160e051805191906166cb9083615568565b601a82527f44656e6f6d696e61746f722073686f756c646e2774206265203000000000000060208301526179d8565b6167066164b386615a3a565b9460e051506167458660e0515161671f60e05182615568565b6014815273151154d50e88141c9a58d948185d080c0e88095960621b6020820152617ab8565b61674d615deb565b5083515f198101908111615835576167659085615a57565b516005818102048103615835575f8060e0515160208101906370a0823160e01b82523060248201526024815261679c604482615568565b51908b5afa506167ad610beb617858565b50601180546001600160a01b0319166001600160a01b038a161790556370a0823163ffffffff19600f541617600f55600e54600160401b81101561549c57610c568160016167fe9301600e55615722565b90556011546001600160a01b031661014052600f546010549060e01b616822617c18565b610140516001600160a01b03165f908152600d60205260409020909163ffffffff60e01b1690815f5260205260e0515f2060e05151602081019061686b81610cd3888886617c01565b5190205f5260205260ff600360e0515f20015416156177f3575b610140516001600160a01b03165f908152600d60205260409020905f52602052610cd36168c360e0515f209360e05151928391602083019586617c01565b5190205f5260205260e0515f2060018101549160028201546168e58185615bec565b6176dd575b825460e05151630667f9d760e41b8152610140516001600160a01b0316600482015260248101829052949091906020866044815f51602061a9135f395f51905f525afa95861561769d575f966176a9575b506001908201610100031b5f1901811b1985165f51602061a9135f395f51905f523b156109325760e051516370ca10bb60e01b8152610140516001600160a01b0316600482015260248101939093526005840290911b1760448201525f81606481835f51602061a9135f395f51905f525af1801561769d57617688575b506169c1617dd1565b901591821561767a575b50506175865750506169db6188f7565b60e05151634b88b8ad60e11b8152602081600481610120515f51602061a9135f395f51905f525af18015616ed25761012051608052617553575b5060015b8451811015616f9f575f80616ad0616af6616a338561573a565b50616a3e868b615a57565b51616ae2610586616aaa60e0515194616a5960a05187615568565b603086527f544553543a2054657374696e67206265686176696f7220666f7220707269636560208701526f1030ba1012b99037b3103634b6b4ba1760811b60e05187015260e051519283809261578a565b60e05151635821efa160e01b602082015260a051602482015295869460848601906155cb565b848103602319016044860152906155cb565b90606483015203601f198101835282615568565b6020815191016a636f6e736f6c652e6c6f675afa50616b186164b38284615a57565b5f80616b8d616bb18c616b2b878c615a57565b5160e0515191616b3d60e05184615568565b601783527f544553543a205377617070696e67202564206f66202573000000000000000000602084015260e0515194859363038fd88960e31b602086015260a051602486015260848501906155cb565b60448401929092526001600160a01b0316606483015203601f198101835282615568565b6020815191016a636f6e736f6c652e6c6f675afa508460808a89616bf5616bd8878c615a57565b5160e05151638307c65560e01b8152958694859460048601615ae4565b03816101205160018060a01b038a165af1908115616ed2576101205191616f81575b508051806a084595161401484a0000008102046a084595161401484a0000001481151715616f6757616c64616c6f916a084595161401484a000000616c5c878c615a57565b519102615849565b9160e0510151615867565b91616cb38260e05151616c8460e05182615568565b601d81527f544553543a20202d2045786563757465642070726963653a20202025640000006020820152617ab8565b616cf68160e05151616cc760e05182615568565b601d81527f544553543a20202d20507269636520617420616d6f756e743a202025640000006020820152617ab8565b616d398360e05151616d0a60e05182615568565b601d81527f544553543a20202d20507269636520616674657220737761703a2025640000006020820152617ab8565b60c05115616ee15760a05160e05151616e6d94616e12939092616da8929190616d629083615568565b602c82527f50726963652073686f756c642062652067726561746564207468616e2065786560208301526b31baba32b210383934b1b29760a11b60e05183015285617afb565b60a05160e051519190616dbb9083615568565b603782527f45786563757465642070726963652073686f756c64206265206772656174657260208301527f207468616e20707269636520616674657220737761702e00000000000000000060e05183015283617a3f565b60a05160e051519190616e259083615568565b602e82527f50726963652073686f756c642062652067726561746564207468616e2070726960208301526d31b29030b33a32b91039bbb0b81760911b60e05183015289617a3f565b60e0515190631135fc2960e21b82526080516004830152602082602481610120515f51602061a9135f395f51905f525af1918215616ed257600192616eb4575b5001616a19565b616ecb9060203d8111610f5957610f4c8183615568565b505f616ead565b60e051513d61012051823e3d90fd5b616f0a90616efb616f6294616ef46161bd565b908d617afb565b616f036161bd565b908b617afb565b60e0515190616f1b60a05183615568565b602d82527f50726963652073686f756c64206265206f7220657175616c20746f207072696360208301526c329030b33a32b91039bbb0b81760991b60e05183015289617afb565b616e6d565b634e487b7160e01b61012051526011600452602461012051fd5b616f99915060803d8111610b2057610b118183615568565b5f616c17565b50509150919392506069610100510261010051810460691461010051151715616f675760e051516348bd7dfd60e01b81526101208051600483018890526001600160a01b0387811660248501528681166044850152915160649485900497949192849291839188165af18015616ed257617023916101205191617536575b50615fc9565b156173d95761708b8460e0515161703c60a05182615568565b603681527f544553543a2054657374696e6720726576657274206265686176696f722061626020820152751bdd99481d1a19481cd95b1b081b1a5b5a5d0e88095960521b60e051820152617ab8565b60e0518051949061709c9086615568565b6001855260e051601f19013660208701376170b685615a3a565b5260e0515163155adc9160e31b81526101205181806170db8888878c60048601616163565b03816101205160018060a01b0388165af190816173b6575b5061734a576001617102617b30565b6308c379a0146172bc575b616ed25761711c608094615a3a565b519461713f60e0515196879586948594638307c65560e01b865260048601615ae4565b61012051919003926001600160a01b03165af1908161729f575b5061723d576001617168617b30565b6308c379a0146171ba575b616ed2575b615cee60e0515161718b60e05182615568565b601781527f544553543a20416c6c207465737473207061737365642e0000000000000000006020820152617a74565b6171c2617b4b565b806171ce575b50617173565b6101205160a05160e051519193506172379291906171ec9082615568565b603281527f544553543a204578706563746564206572726f72207768656e207377617070696020820152716e672061626f7665206c696d69743a20257360701b60e051820152617bbd565b5f6171c8565b60e0515162461bcd60e51b815260206004820152603360248201527f506f6f6c2073686f756c646e27742062652061626c6520746f20737761702061604482015272189bdd99481d1a19481cd95b1b081b1a5b5a5d606a1b6064820152608490fd5b6172b79060803d608011610b2057610b118183615568565b617159565b6172c4617b4b565b806172d0575b5061710d565b6101205160a05160e051519193506173449291906172ee9082615568565b603881527f544553543a204578706563746564206572726f72207768656e2066657463686960208201527f6e672070726963652061626f7665206c696d69743a202573000000000000000060e051820152617bbd565b5f6172ca565b60e0515162461bcd60e51b815260206004820152603b60248201527f506f6f6c2073686f756c646e27742062652061626c6520746f2066657463682060448201527f7072696365732061626f7665207468652073656c6c206c696d697400000000006064820152608490fd5b6173d4903d8061012051833e6173cc8183615568565b8101906160df565b6170f3565b60a05160e0515161743b918691906173f19082615568565b603181527f544553543a2054657374696e67206f7065726174696f6e732061626f766520746020820152701a19481cd95b1b081b1a5b5a5d0e880959607a1b60e051820152617ab8565b60e0518051949061744c9086615568565b6001855260e051601f190136602087013761746685615a3a565b5260e051519363155adc9160e31b855261012051858061748c8488878c60048601616163565b03816101205160018060a01b0388165af1908115616ed2576080956174b59261751b5750615a3a565b51946174d860e0515196879586948594638307c65560e01b865260048601615ae4565b61012051919003926001600160a01b03165af18015616ed2576174fc575b50617178565b6175149060803d608011610b2057610b118183615568565b505f6174f6565b617531903d8061012051833e6173cc8183615568565b610720565b61754d91503d8061012051833e6104a08183615568565b5f61701d565b6020813d60201161757e575b8161756c60209383615568565b8101031261093257516080525f616a15565b3d915061755f565b545f51602061a9135f395f51905f523b156176735760e051516370ca10bb60e01b815261012051610140516001600160a01b03166004830152602482019290925260448101929092528180606481010381610120515f51602061a9135f395f51905f525af18015616ed257617658575b60e0515162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b6101205161766591615568565b6101205161767357806175f6565b6101205180fd5b600502141590505f806169cb565b5f61769291615568565b5f610120525f6169b8565b60e051513d5f823e3d90fd5b9095506020813d6020116176d5575b816176c560209383615568565b810103126109325751948161693b565b3d91506176b8565b6176e78185615bec565b6101000361010081116158355760ff81116158355760e0515163348051d760e11b81526001821b60048201525f816024815f51602061a9135f395f51905f525afa91821561769d576177a3606a6020946001945f916177d9575b5060e051519586915f51602061a9735f395f51905f52828401525f51602061a8d35f395f51905f5260e05184015269030ba32b9103a3430b7160b51b60a0518401528051918291018484015e81015f838201520301601f198101855284615568565b1b8360050210156177b457506168ea565b60e0515162461bcd60e51b8152602060048201529081906111cf9060248301906155cb565b6177ed91503d805f833e6111e88183615568565b5f617741565b6177fb61804b565b50616885565b6178169195503d805f833e6173cc8183615568565b935f6164a6565b6127106101005104616421565b61783e91503d805f833e6104a08183615568565b5f6163f8565b6112a991503d805f833e6112a18183615568565b3d15617882573d90617869826158a1565b916178776040519384615568565b82523d5f602084013e565b606090565b6178a790602061789c82518286015190615822565b935191015190615822565b908082036178b55750505f90565b11156178c057600190565b5f1990565b5f51602061a9135f395f51905f523b15610932576040519063fe74f05b60e01b82526004820152600160248201525f816044815f51602061a9135f395f51905f525afa80156153f857615ce45750565b8151617940926001600160a01b03909216915f91829160200182855af161793a617858565b91617f90565b8051908161794c575050565b60208061795d938301019101615a6b565b1561796457565b60405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b61589e93926060928252602082015281604082015201906155cb565b5f51602061a9135f395f51905f523b1561093257617a20915f916040519384928392636cd1e26960e11b845260048401528460248401526060604484015260648301906155cb565b03815f51602061a9135f395f51905f525afa80156153f857615ce45750565b905f51602061a9135f395f51905f523b15610932575f91617a206040519485938493636cd1e26960e11b8552600485016179bc565b5f610cd3617aa1829360405192839163104c13eb60e21b60208401526020602484015260448301906155cb565b6020815191016a636f6e736f6c652e6c6f675afa50565b617ae7617aa15f93928493604051938492632d839cb360e21b60208501526040602485015260648401906155cb565b90604483015203601f198101835282615568565b905f51602061a9135f395f51905f523b15610932575f91617a206040519485938493630389490b60e61b8552600485016179bc565b5f9060033d11617b3c57565b905060045f803e5f5160e01c90565b5f60443d1061589e576040513d600319016004823e8051913d60248401116001600160401b03841117617bb757828201928351916001600160401b038311617baf573d84016003190185840160200111617baf575061589e92910160200190615568565b949350505050565b92915050565b617bef617aa15f9392610cd38594604051948593634b5c427760e01b60208601526040602486015260648501906155cb565b838103602319016044850152906155cb565b60209291908391805192839101825e019081520190565b617c23601454615752565b617ce0576040519081826020600e549283815201600e5f5260205f20925f5b818110617cc7575050617c5792500383615568565b81518060051b908082046020149015171561583557617c75816158a1565b90617c836040519283615568565b808252617c92601f19916158a1565b013660208301375f5b8351811015617cc25780617cb160019286615a57565b5160208260051b8501015201617c9b565b509150565b8454835260019485019487945060209093019201617c42565b60405161589e8161058681601461578a565b6007810190617d018254615752565b617dbd57600191500190604051808360208295549384815201905f5260205f20925f5b818110617da4575050617d3992500383615568565b81518060051b908082046020149015171561583557617d57816158a1565b90617d656040519283615568565b808252617d74601f19916158a1565b013660208301375f5b8351811015617cc25780617d9360019286615a57565b5160208260051b8501015201617d7d565b8454835260019485019487945060209093019201617d24565b5061589e610586916040519283809261578a565b5f806020600f5460e01b617e1f6024617dea600d617cf2565b6040519485918183019563ffffffff60e01b1686528051918291018484015e810186838201520301601f198101845283615568565b6011549151916001600160a01b03165afa90617e39617858565b601054909290600581901b906001600160fb1b03811603615835575f938051602081115f14617ec457506020905b5f925b828410617e7957505050509190565b90919295617e878783615bec565b835181101561570e57830160200151600388901b91906001600160f81b031916881560088a8504141715615835576001921c179601929190617e6a565b90617e67565b905f806020600285015460e01b617ee56024617dea88617cf2565b60048601549151916001600160a01b03165afa6003617f02617858565b930154600581901b906001600160fb1b03811603615835575f938051602081115f14617f8a57506020905b5f925b828410617f3f57505050509190565b90919295617f4d8783615bec565b835181101561570e57830160200151600388901b91906001600160f81b031916881560088a8504141715615835576001921c179601929190617f30565b90617f2d565b90617fb45750805115617fa557805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580617fe5575b617fc5575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15617fbd565b9080601f830112156109325781516180058161580b565b926180136040519485615568565b81845260208085019260051b82010192831161093257602001905b82821061803b5750505090565b815181526020918201910161802e565b601154600f546010546001600160a01b03909216915f9160e01b61806f600d617cf2565b90845f52600d60205260405f209063ffffffff60e01b1690815f5260205260405f2060405160208101906180a881610cd3888886617c01565b5190205f5260205260ff600360405f200154166188b6575f51602061a9135f395f51905f523b156109325760405163266cf10960e01b81525f81600481835f51602061a9135f395f51905f525af180156153f8576188a1575b5061810c600d617eca565b90506040516365bc948160e01b81528660048201528581602481835f51602061a9135f395f51905f525af190811561099657869161883d575b5080516181b657608460405162461bcd60e51b815260206004820152604060248201527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152fd5b855b8151811015618835578160206181d18361820295615a57565b51604051630667f9d760e41b81526001600160a01b038c166004820152602481019190915293849081906044820190565b03815f51602061a9135f395f51905f525afa928315610ad7578893618802575b5082156187aa575b6182348282615a57565b51601154604051630667f9d760e41b81526001600160a01b03909116600482018190526024820183905291906020816044815f51602061a9135f395f51905f525afa9081156111f7578b91618779575b5061828f600d617eca565b91909382155f14618772575f19905b5f51602061a9135f395f51905f523b15618759576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810185905260448101919091528c81606481835f51602061a9135f395f51905f525af180156186e257908d9161875d575b505061830f600d617eca565b601154909491506001600160a01b03165f51602061a9135f395f51905f523b15618759576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528b81606481835f51602061a9135f395f51905f525af1801561874e57908c91618739575b50508261872e575b505015618724578793889360ff601354166185a9575b6001868601610100031b5f1901851b16841c810361859b575090618429917f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed60808b89610cd36183fe8d604051928391602083019586617c01565b51902061840b8686615a57565b51906040519283528a602084015260408301526060820152a1615a57565b51906040519060808201928284106001600160401b0385111761549c5760039360405282526020820193845260408201908152606082019360018552898952600d60205260408920868a5260205260408920604051602081019061849281610cd38d8d86617c01565b5190208a526020526040892092518355516001830155516002820155019051151560ff801983541691161790555b848452600d602052604084208185526020526040842060405160208101906184ed81610cd3888886617c01565b519020855260205260ff6003604086200154161561853e576040948452600d602052848420908452602052610cd3618532858520938651928391602083019586617c01565b51902082526020522090565b60405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201526e3a143994903737ba103337bab7321760891b6064820152608490fd5b935091506001905b016181b8565b94506185f493506185ba8383615a57565b51601154604051630667f9d760e41b81526001600160a01b0390911660048201526024810182905290959094602090869081906044820190565b03815f51602061a9135f395f51905f525afa9485156110cf578a956186f1575b5061862086600d618a0b565b95909661862e81600d618ae4565b60115490939192906001600160a01b03165f51602061a9135f395f51905f523b156186ed576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528c81606481835f51602061a9135f395f51905f525af180156186e257908d916186c9575b5050876186c1575b5094956183a35750935091506001906185a3565b96505f6186ad565b816186d391615568565b6186de578b5f6186a5565b8b80fd5b6040513d8f823e3d90fd5b8e80fd5b9094506020813d821161871c575b8161870c60209383615568565b810103126109325751935f618614565b3d91506186ff565b91506001906185a3565b141590505f8061838d565b8161874391615568565b6149bf578a5f618385565b6040513d8e823e3d90fd5b8d80fd5b8161876791615568565b6186de578b5f618303565b8c9061829e565b90506020813d82116187a2575b8161879360209383615568565b8101031261093257515f618284565b3d9150618786565b7f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a56187fa6187d88484615a57565b51604080516001600160a01b038e168152602081019290925290918291820190565b0390a161822a565b9092506020813d821161882d575b8161881d60209383615568565b810103126109325751915f618222565b3d9150618810565b5050506184c0565b90503d8087833e61884e8183615568565b81016040828203126104c95781516001600160401b0381116149b15781618876918401617fee565b916020810151906001600160401b03821161889d57618896929101617fee565b505f618145565b8880fd5b6188ae9194505f90615568565b5f925f618101565b91939092505f52600d60205260405f20905f52602052610cd36188e860405f2093604051928391602083019586617c01565b5190205f5260205260405f2090565b6001600160601b0360a01b6011541660115563ffffffff19600f5416600f55600e545f600e55806189c9575b505f60105560ff196013541660135561893d601454615752565b806189455750565b601f811160011461895757505f601455565b60145f52601f0160051c7fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec017fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ed5b8181106189be57505060145f525f602081208160145555565b5f81556001016189a5565b600e5f527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd908101905b818110618a005750618923565b5f81556001016189f3565b91905f5b6101008110618a2257505090505f905f90565b8060ff0360ff8111615835576004850154600190911b906001600160a01b03165f51602061a9135f395f51905f523b15610932576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f51602061a9135f395f51905f525af180156153f857618ad4575b50618aae84617eca565b81618aca575b50618ac157600101618a0f565b92505060019190565b905015155f618ab4565b5f618ade91615568565b5f618aa4565b91905f5b6101008110618afb57505090505f905f90565b60048401546001821b906001600160a01b03165f51602061a9135f395f51905f523b15610932576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f51602061a9135f395f51905f525af180156153f857618b97575b50618b7a84617eca565b81618b8d575b50618ac157600101618ae8565b905015155f618b80565b5f618ba191615568565b5f618b7056fe60808060405234601557611d11908161001a8239f35b5f80fdfe608080604052600436101561001c575b50361561001a575f80fd5b005b5f3560e01c90816323eeca01146107d05750806348bd7dfd1461073b5780638307c655146106d5578063a9270fbe146102c7578063aad6e488146101fd5763ecbbc0331461006a575f61000f565b346101f95760203660031901126101f95761008960043560601c610cfc565b602081016100978151610c9d565b5f925f5b835181101561012f5773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260018060a01b036100cb838551610939565b511614610126575b6001905f516020611cbc5f395f51905f52828060a01b036100f5838651610939565b51161461012157818060a01b0361010d828551610939565b51166101198286610925565b525b0161009b565b61011b565b600194506100d3565b5050915f146101f3578051600181018091116101df5761014e90610c9d565b915f5b8251811015610182576001906001600160a01b0361016f8285610925565b511661017b8287610925565b5201610151565b50506101905f915183610925565b525b6040518091602082016020835281518091526020604084019201905f5b8181106101bd575050500390f35b82516001600160a01b03168452859450602093840193909201916001016101af565b634e487b7160e01b5f52601160045260245ffd5b50610192565b5f80fd5b346101f95760803660031901126101f957610216610824565b5061021f61083a565b5060643567ffffffffffffffff81116101f957366023820112156101f95780600401359060246020610250846108dc565b61025d60405191826108ba565b848152019260051b820101903682116101f957602401915b8183106102b757604051631d04569d60e21b81526020600482015260126024820152714375727665416461707465722e707269636560701b6044820152606490fd5b8235815260209283019201610275565b346101f9576102d536610850565b9160601c9181815f926102e786610cfc565b926001600160a01b03166105f1575060208201935f5b85518110156105e6575f516020611cbc5f395f51905f5260018060a01b03610326838751610939565b51161480156105b6575b61033c576001016102fd565b835161037496505f516020611cbc5f395f51905f52925082916001600160a01b03916103689190610939565b5116146105ad57610ffd565b9091604051926103856060856108ba565b6002845260208401926040368537604051634903b0d160e01b81526001600160801b0383166004820152602081602481875afa5f9181610579575b506104ee57506040519162cb501b60e31b8352600f0b6004830152602082602481865afa80156104b0575f906104bb575b6020925060011c610401866108f4565b5260246040518094819362cb501b60e31b8352600f0b60048301525afa9081156104b0575f9161047e575b5060011c61043983610915565b52905b604051918291602083019060208452518091526040830191905f5b818110610465575050500390f35b8251845285945060209384019390920191600101610457565b90506020813d6020116104a8575b81610499602093836108ba565b810103126101f957518361042c565b3d915061048c565b6040513d5f823e3d90fd5b506020823d6020116104e6575b816104d5602093836108ba565b810103126101f957602091516103f1565b3d91506104c8565b602092506001600160801b039160249160011c61050a886108f4565b526040519485938492634903b0d160e01b84521660048301525afa9081156104b0575f91610547575b5060011c61054083610915565b529061043c565b90506020813d602011610571575b81610562602093836108ba565b810103126101f9575183610533565b3d9150610555565b9091506020813d6020116105a5575b81610595602093836108ba565b810103126101f9575190876103c0565b3d9150610588565b60019350610ffd565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260018060a01b036105de838751610939565b511614610330565b506103749450610ffd565b9093906001600160a01b03161561060d575b9261037493610ffd565b60208201935f5b85518110156106c9575f516020611cbc5f395f51905f5260018060a01b0361063d838751610939565b5116148015610699575b61065357600101610614565b835161037496505f516020611cbc5f395f51905f5293925083916001600160a01b03916106809190610939565b511614610690575b909350610603565b60019350610688565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260018060a01b036106c1838751610939565b511614610647565b50906103749450610688565b346101f95760a03660031901126101f9576106ee610824565b6106f661083a565b6064359160028310156101f9576080926107169260843592600435610957565b6020604080519280518452828101518385015201518051604084015201516060820152f35b346101f95761074936610850565b50505060405161075a6060826108ba565b600281526020810160403682376001610772836108f4565b52604051906020820192602083525180935260408201905f935b8085106107995783830384f35b9091825190600a8210156107bc576020816001938293520193019401939061078c565b634e487b7160e01b5f52602160045260245ffd5b346101f95760403660031901126101f957631d04569d60e21b815260206004820152601760248201527f4375727665416461707465722e676574506f6f6c4964730000000000000000006044820152606490fd5b602435906001600160a01b03821682036101f957565b604435906001600160a01b03821682036101f957565b60609060031901126101f957600435906024356001600160a01b03811681036101f957906044356001600160a01b03811681036101f95790565b6040810190811067ffffffffffffffff8211176108a657604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176108a657604052565b67ffffffffffffffff81116108a65760051b60200190565b8051156109015760200190565b634e487b7160e01b5f52603260045260245ffd5b8051600110156109015760400190565b80518210156109015760209160051b010190565b9060088110156109015760051b0190565b919082039182116101df57565b9394929194604051956060870187811067ffffffffffffffff8211176108a6576040525f87525f602088015260405161098f8161088a565b5f81525f60208201526040880152868215610c9257506040519260e0840184811067ffffffffffffffff8211176108a65760405260208401966040850160608601945f865260808701945f865260c08801935f855260601c9485895260018060a01b031690818c5260018060a01b03169182845260a0890152610a125f95610cfc565b93610a268560018060a01b038b5116610e7a565b15159052610bad575060208201985f5b8a51811015610b9d575f516020611cbc5f395f51905f5260018060a01b03610a5f838751610939565b5116148015610b6d575b610a7557600101610a36565b610ac095969798999a505f516020611cbc5f395f51905f5290818352610aa360018060a01b03918651610939565b511614610b64575b5190516001600160a01b039081169116610ffd565b600f9291920b9052600f0b90525a9160028110156107bc57610b0657610af5610aff92610aec836111b3565b86525a9061094a565b6020850152611721565b6040830152565b60405163643c60f360e01b815260206004820152602f60248201527f4f72646572536964652e427579206973206e6f7420617661696c61626c65206660448201526e37b9103a3434b99030b230b83a32b960891b6064820152608490fd5b60019350610aab565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260018060a01b03610b95838751610939565b511614610a69565b50610ac094959697989950610aab565b15610bc1575b610ac0939495969798610aab565b60208201985f5b8a51811015610c82575f516020611cbc5f395f51905f5260018060a01b03610bf1838751610939565b5116148015610c52575b610c0757600101610bc8565b610ac095969798999a505f516020611cbc5f395f51905f5290818452610c3560018060a01b03918651610939565b511614610c49575b98979695949350610bb3565b60019350610c3d565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260018060a01b03610c7a838751610939565b511614610bfb565b50610ac094959697989950610c3d565b955050505050915090565b90610ca7826108dc565b610cb460405191826108ba565b8281528092610cc5601f19916108dc565b0190602036910137565b908160209103126101f957516001600160a01b03811681036101f95790565b5f1981146101df5760010190565b90604051610d098161088a565b604051610100610d1981836108ba565b3682378152602081015f815281935f92610d32826119c0565b610ddb57925b60088110610d47575b50505050565b60405163c661065760e01b815260048101829052906020826024816001600160a01b0387165afa5f9281610dab575b50610d815750610d41565b600191610d8f828751610939565b90838060a01b03169052610da38451610cee565b845201610d38565b610dcd91935060203d8111610dd4575b610dc581836108ba565b810190610ccf565b915f610d76565b503d610dbb565b925b60088110610deb5750505050565b60405163046e8dd760e31b81526001600160801b038216600f0b6004820152906020826024816001600160a01b0387165afa5f9281610e5a575b50610e305750610d41565b600191610e3e828751610939565b90838060a01b03169052610e528451610cee565b845201610ddd565b610e7391935060203d8111610dd457610dc581836108ba565b915f610e25565b815151602491906001600160a01b03165f516020611cbc5f395f51905f52148015610fd5575b15610fcb57602060ff60015b1693610ec08560018060a01b039251610939565b516040516370a0823160e01b81526001600160a01b03909416600485018190529394859290918391165afa9182156104b0575f92610f96575b50606460ff91602093941590815f14610f8e575f915b15610f8557600a6001965b85604051988997889663556d6e9f60e01b88521660048701521660248501520460448301525afa9081610f56575b50610f5257600190565b5f90565b6020813d602011610f7d575b81610f6f602093836108ba565b810103126101f95751610f48565b3d9150610f62565b600a5f96610f1a565b600191610f0f565b91506020823d602011610fc3575b81610fb1602093836108ba565b810103126101f9579051906064610ef9565b3d9150610fa4565b602060ff5f610eac565b508251516001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc214610ea0565b5f94939192918590846001600160a01b0384165f516020611cbc5f395f51905f52148061112a575b61110e575b6001600160a01b03165f516020611cbc5f395f51905f52149081611105575b506110e9575b5f955b60208401518710156110e05783516001600160a01b0390611074908990610939565b516001600160a01b03851691160361109f575060016001600160801b038716600f0b965b0195611052565b9560018060a01b036110b2828651610939565b51166001600160a01b038616146110cc575b600190611098565b6001600160801b038116600f0b91506110c4565b95509392505050565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2935061104f565b9050155f611049565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2935061102a565b508115611025565b3d1561116c573d9067ffffffffffffffff82116108a65760405191611161601f8201601f1916602001846108ba565b82523d5f602084013e565b606090565b1561117857565b60405162461bcd60e51b8152602060048201526013602482015272115d1a081d1c985b9cd9995c8819985a5b1959606a1b6044820152606490fd5b6040810180516020830180515f959447946001600160a01b039485169490938893909116905f516020611cbc5f395f51905f5286036116b85747965b60c0840151156114305750516001600160a01b03165f516020611cbc5f395f51905f52036113735750805160a08201516060830151608090930151600f90810b93900b916001600160a01b0316803b1561136457604051630f7c084960e21b8152600f93840b60048201529390920b6024840152604483018190525f6064840152839183916084918391905af180156113685761134f575b50505f516020611cbc5f395f51905f52905b516001600160a01b0316036112ce57506112b66112cc914761094a565b9280808086335af16112c6611132565b50611171565b565b926040516370a0823160e01b8152306004820152602081602481885afa918215611343579161130f575b506112cc916113069161094a565b80933390611b9e565b90506020813d60201161133b575b8161132a602093836108ba565b810103126101f957516112cc6112f8565b3d915061131d565b604051903d90823e3d90fd5b81611359916108ba565b61136457845f611287565b8480fd5b6040513d84823e3d90fd5b9061139b60a082019261138984513033846119f9565b60018060a01b03835116845191611a42565b60018060a01b0381511660806060830151600f0b920151600f0b925190803b1561136457604051630f7c084960e21b8152600f93840b60048201529390920b602484015260448301525f606483015282908290818381608481015b03925af180156113685761141b575b50505f516020611cbc5f395f51905f5290611299565b81611425916108ba565b61136457845f611405565b90916001600160801b03606085015116915f516020611cbc5f395f51905f526001600160801b036080870151169460018060a01b03905116145f146114d2575050825160a090930151926001600160a01b0316803b156113645760405163ce7d650360e01b815260048101929092526024820192909252604481018390525f6064820152600160848201523060a4820152918391839182908160c481016113f6565b9094506114fe60a085939501956114ec87513033846119f9565b60018060a01b03845116875191611a42565b81518551906001600160a01b0316803b156101f95760405163ce7d650360e01b8152600481018790526024810186905260448101929092525f60648301819052600160848401523060a484015290829060c490829084905af19081611699575b50908a95949392916115cf575b50519251926001600160a01b0316803b15611364578492836084926040519687958694630b68372160e31b86526004860152602485015260448401528160648401525af180156113685761141b5750505f516020611cbc5f395f51905f5290611299565b6115de9192939495504761094a565b8015611612576115f78a80808085335af16112c6611132565b806116075790899493929161156b565b985050505050505050565b506040516370a0823160e01b81523060048201526020816024818a5afa801561168e5788908b90611658575b611648925061094a565b611653813389611b9e565b6115f7565b50506020813d602011611686575b81611673602093836108ba565b810103126101f95787611648915161163e565b3d9150611666565b6040513d8c823e3d90fd5b6116ab9196959493929b505f906108ba565b5f9990919293945f61155e565b6040516370a0823160e01b81523060048201529350602084602481895afa80156104b05789945f916116ec575b50966111ef565b9450506020843d602011611719575b81611708602093836108ba565b810103126101f9578893515f6116e5565b3d91506116fb565b60405161172d8161088a565b5f81525f60208201525060608101906001600160801b0382511660808201906001600160801b0382511660c084015115155f146118f557508251604051634903b0d160e01b81526004810192909252602090829060249082906001600160a01b03165afa5f91816118c1575b506118b0575060018060a01b038251169060208451600f0b60246040518095819362cb501b60e31b835260048301525afa9182156104b0575f9261187b575b506064620186a060209304935b5194519151604051635e0d443f60e01b8152600f93840b6004820152920b602483015260448201849052909384919082906001600160a01b03165afa9182156104b0575f92611847575b506040519161183d8361088a565b8252602082015290565b9091506020813d602011611873575b81611863602093836108ba565b810103126101f95751905f61182f565b3d9150611856565b91506020823d6020116118a8575b81611896602093836108ba565b810103126101f95790519060646117d8565b3d9150611889565b906064620186a060209304936117e5565b9091506020813d6020116118ed575b816118dd602093836108ba565b810103126101f95751905f611799565b3d91506118d0565b8351604051634903b0d160e01b81526004810184905292955091925090602090839060249082906001600160a01b03165afa9182156104b0575f9261198b575b506064620186a0602093049360018060a01b0390511694604051958693849263556d6e9f60e01b8452600484015260248301528560448301525afa9182156104b0575f9261184757506040519161183d8361088a565b91506020823d6020116119b8575b816119a6602093836108ba565b810103126101f9579051906064611935565b3d9150611999565b604051634903b0d160e01b81525f600482015290602090829060249082906001600160a01b03165afa9081610f565750610f5257600190565b6040516323b872dd60e01b60208201526001600160a01b0392831660248201529290911660448301526064808301939093529181526112cc91611a3d6084836108ba565b611bf2565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830181905294919390831691602085604481865afa9485156104b0575f95611b6a575b5084018094116101df5760405163095ea7b360e01b602082019081526001600160a01b039290921660248201526044808201959095529384525f908190611acd6064876108ba565b85519082855af190611add611132565b82611b38575b5081611b2d575b5015611af557505050565b611a3d6112cc936040519063095ea7b360e01b602083015260248201525f604482015260448152611b276064826108ba565b82611bf2565b90503b15155f611aea565b80519192508115918215611b50575b5050905f611ae3565b611b639250602080918301019101611bda565b5f80611b47565b9094506020813d602011611b96575b81611b86602093836108ba565b810103126101f95751935f611a85565b3d9150611b79565b60405163a9059cbb60e01b60208201526001600160a01b039290921660248301526044808301939093529181526112cc91611a3d6064836108ba565b908160209103126101f9575180151581036101f95790565b5f80611c1a9260018060a01b03169360208151910182865af1611c13611132565b9083611c5d565b8051908115159182611c42575b5050611c305750565b635274afe760e01b5f5260045260245ffd5b611c559250602080918301019101611bda565b155f80611c27565b90611c815750805115611c7257805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580611cb2575b611c92575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15611c8a56fe000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeea264697066735822122095b2866d1bfb6558995f95f5311386e755a500933ce3b93e801eddc460105df664736f6c634300081b00336b656420736c6f742e2057652063616e2774206669742076616c756520677265000000000000000000000000a2e3356610840701bdf5611a53974510ae27e2e10000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec773746453746f726167652066696e642853746453746f72616765293a20506163a2646970667358221220261575f55631d0bee0c5b5098e221188d5046535cb8f7c19239c842d6c79289064736f6c634300081b0033","sourceMap":"138:14752:70:-:0;;;;;;;;;;-1:-1:-1;138:14752:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1016:26:12;138:14752:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2421:18:5;138:14752:70;;;;;;;2421:18:5;138:14752:70;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;138:14752:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14075:7;1590:14:0;138:14752:70;;-1:-1:-1;;;14075:23:70;;-1:-1:-1;;;138:14752:70;14075:23;;138:14752;;;;;;14075:23;;138:14752;;-1:-1:-1;;;;;138:14752:70;14075:23;;;;;;14109:26;14075:23;;;;;138:14752;;;14109:26;:::i;:::-;138:14752;;14075:23;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;138:14752;;1590:14:0;138:14752:70;;1590:14:0;;;;138:14752:70;;;;;;;-1:-1:-1;;138:14752:70;;;;;;-1:-1:-1;;;;;138:14752:70;;;;;;;;;;-1:-1:-1;;;;;138:14752:70;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1126:10:65;;;;;;:::i;:::-;138:14752:70;;;1590:14:0;;;;1102:59:65;;138:14752:70;1102:59:65;;138:14752:70;;;;;;;;;;;1102:59:65;;;;;;;;;;;;1075:134;1102:59;;;;;138:14752:70;1075:134:65;;:::i;:::-;1074:135;1224:13;;1259:3;138:14752:70;;1239:18:65;;;;;1322:10;;;;:::i;:::-;138:14752:70;;;;1590:14:0;;;;1304:29:65;;138:14752:70;1304:29:65;;138:14752:70;1304:29:65;;138:14752:70;1304:29:65;;;;;;;;;;1708:14;1304:29;1442:1;1304:29;;;;;1259:3;138:14752:70;1396:17:65;138:14752:70;;;;;;1354:9:65;;;:::i;:::-;1590:14:0;138:14752:70;1396:17:65;:::i;:::-;1477;138:14752:70;;;;;;1435:9:65;;;:::i;1477:17::-;1588:14;1554:10;;;;;:::i;:::-;138:14752:70;;;;;;1566:9:65;;;:::i;:::-;1590:14:0;138:14752:70;;;;;;1577:9:65;;;:::i;:::-;1590:14:0;138:14752:70;1588:14:65;;;:::i;:::-;1674:10;;;;:::i;:::-;138:14752:70;;;;;;;1686:9:65;;;:::i;:::-;1590:14:0;138:14752:70;;1697:9:65;138:14752:70;;;;;1697:9:65;;:::i;:::-;1590:14:0;138:14752:70;1708:14:65;;;:::i;:::-;138:14752:70;1224:13:65;;1304:29;;;;;;;;;;;;;:::i;:::-;;;;;138:14752:70;;1590:14:0;138:14752:70;;1590:14:0;;;;1239:18:65;;138:14752:70;;1102:59:65;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;138:14752:70;;1590:14:0;138:14752:70;;1590:14:0;;;;138:14752:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;2273:18:5;138:14752:70;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;2273:18:5;138:14752:70;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;13865:7;1590:14:0;138:14752:70;;-1:-1:-1;;;13865:23:70;;-1:-1:-1;;;138:14752:70;13865:23;;138:14752;;;;;;13865:23;;138:14752;;-1:-1:-1;;;;;138:14752:70;13865:23;;;;;;13899:26;13865:23;;;;;138:14752;;13899:26;:::i;138:14752::-;;;;;;;-1:-1:-1;;138:14752:70;;;;;;534:59:65;138:14752:70;534:59:65;;;;;;;;:::i;:::-;138:14752:70;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;138:14752:70;;;;;;;;;534:59:65;;138:14752:70;;;;;;;;;-1:-1:-1;;138:14752:70;;;;;;;;;;;;;;;;;5049:44;;;875:42;;5049:44;;138:14752;1590:14:0;138:14752:70;;-1:-1:-1;;;5257:44:70;;-1:-1:-1;;;138:14752:70;5257:44;;138:14752;-1:-1:-1;;;;;138:14752:70;;;;;;;;;;;;;;;;;;;;;;;;;5257:44;;138:14752;;;5257:44;;;;;;;;5340:9;5257:44;;;;;5049;5340:9;;:::i;:::-;138:14752;5322:27;;:56;;;5049:44;-1:-1:-1;;;;;;;;;;;5312:67:70;;;;138:14752;;-1:-1:-1;;;5312:67:70;;138:14752;;;;5312:67;;138:14752;5312:67;138:14752;;;-1:-1:-1;;;;;;;;;;;5312:67:70;;;;;;;;;;;5049:44;-1:-1:-1;;5394:16:70;;;5390:489;;;;138:14752;;5449:15;138:14752;1666:18;138:14752;;;;;;;;;1590:14:0;138:14752:70;5449:15;:::i;:::-;138:14752;1590:14:0;;138:14752:70;;-1:-1:-1;;;5558:41:70;;5593:4;138:14752;5558:41;;138:14752;-1:-1:-1;;;;;138:14752:70;;;5500:24;;;138:14752;;;5558:41;;;;;;;;;;;;5390:489;5538:61;5390:489;;138:14752;1666:18;138:14752;;;;;1590:14:0;138:14752:70;5910:94;138:14752;;1590:14:0;;;;;;;5910:94:70;;138:14752;;;;5910:94;;138:14752;;;;;;;;;;;;5257:44;138:14752;;;;;;;;5910:94;;;;;;;;;;;5390:489;-1:-1:-1;6015:927:70;;;-1:-1:-1;138:14752:70;1590:14:0;6094:45:70;;138:14752;6094:45;;-1:-1:-1;;;;;138:14752:70;6115:24;;6094:45;:::i;:::-;;;:::i;:::-;138:14752;;6218:1;1293:42;;;;;;;138:14752;;-1:-1:-1;;;6237:41:70;;6272:4;138:14752;6237:41;;138:14752;;;;;;6237:41;;;;;;;;;;;;;6015:927;6237:61;;;;;;:::i;:::-;;;:::i;:::-;138:14752;-1:-1:-1;;138:14752:70;;;;;;;;;;;;;1590:14:0;;;;;;;6396:41:70;;6272:4;138:14752;6396:41;;138:14752;6396:41;;;;;;;;;;;6015:927;6396:61;;;;;;:::i;:::-;;;:::i;:41::-;;;138:14752;6396:41;;138:14752;6396:41;;;;;;1590:14:0;6396:41:70;;;:::i;:::-;;;1590:14:0;;;;;6396:61:70;:41;;1590:14:0;-1:-1:-1;138:14752:70;;6396:41;;;-1:-1:-1;6396:41:70;;;138:14752;;1590:14:0;138:14752:70;;1590:14:0;;;;138:14752:70;-1:-1:-1;;;523:5:65;;;138:14752:70;523:5:65;138:14752:70;;523:5:65;6237:41:70;;;;138:14752;6237:41;;138:14752;6237:41;;;;;;1590:14:0;6237:41:70;;;:::i;:::-;;;1590:14:0;;;;;;;;-1:-1:-1;6237:61:70;:41;;;;;-1:-1:-1;6237:41:70;;;138:14752;;1590:14:0;138:14752:70;;1590:14:0;;;;1293:42:70;-1:-1:-1;;;523:5:65;;;138:14752:70;523:5:65;138:14752:70;;523:5:65;6015:927:70;1293:42;;;;;6546:1;1293:42;;;;;;;138:14752;;-1:-1:-1;;;6586:42:70;;6622:4;138:14752;6586:42;;138:14752;;;;;;6586:42;;;;;;;;;;;;6015:927;6565:63;;;;;;:::i;:::-;-1:-1:-1;;138:14752:70;;;;;;;;;;;;;1590:14:0;;;;;;;6740:42:70;;6622:4;138:14752;6740:42;;138:14752;6740:42;;;;;;;;;;;6015:927;6719:63;6876:41;6719:63;;6876:41;6719:63;;;;;:::i;:::-;138:14752;6876:21;;:41;:::i;6740:42::-;;;;138:14752;6740:42;;138:14752;6740:42;;;;;;1590:14:0;6740:42:70;;;:::i;:::-;;;1590:14:0;;;;;;6740:42:70;;6876:41;6740:42;;;;;-1:-1:-1;6740:42:70;;138:14752;-1:-1:-1;;;523:5:65;;;138:14752:70;523:5:65;138:14752:70;;523:5:65;6586:42:70;;;138:14752;6586:42;;138:14752;6586:42;;;;;;1590:14:0;6586:42:70;;;:::i;:::-;;;1590:14:0;;;;;;;6565:63:70;6586:42;;;;;-1:-1:-1;6586:42:70;;;138:14752;;1590:14:0;138:14752:70;;1590:14:0;;;;1293:42:70;-1:-1:-1;;;523:5:65;;;138:14752:70;523:5:65;138:14752:70;;523:5:65;5910:94:70;;;;;138:14752;5910:94;138:14752;5910:94;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;5558:41;;;;138:14752;5558:41;;138:14752;5558:41;;;;;;1590:14:0;5558:41:70;;;:::i;:::-;;;1590:14:0;;;;;;;5558:41:70;;;;;;-1:-1:-1;5558:41:70;;5390:489;138:14752;;-1:-1:-1;;;14753:31:70;;138:14752;14753:31;;138:14752;;;;;;;;1472:42;14753:31;;;;;;;;;;;5390:489;138:14752;;;;;;27501:38:3;;1590:14:0;;;;27501:38:3;;14824:4:70;138:14752;27501:38:3;;138:14752:70;;27501:38:3;;;;;;:::i;:::-;27484:56;;1472:42:70;27484:56:3;;;27568:30;27484:56;;:::i;:::-;138:14752:70;;;;27568:30:3;;;;;;:::i;:::-;-1:-1:-1;6854:12:8;1590:14:0;;-1:-1:-1;;;;;;1590:14:0;1472:42:70;1590:14:0;;;7009:9:8;138:14752:70;;-1:-1:-1;;138:14752:70;27524:10:3;138:14752:70;;;7505:10:8;138:14752:70;-1:-1:-1;;;138:14752:70;;;;;;;;1590:14:0;138:14752:70;;7505:10:8;138:14752:70;;:::i;:::-;14824:4;;;;1590:14:0;;;;;;;;;;;;;;;;;;;;;;1666:18:70;138:14752;;;;6854:12:8;138:14752:70;;;7009:9:8;138:14752:70;;1590:14:0;15610:11:8;138:14752:70;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;138:14752:70;;;;;;27635:8:3;138:14752:70;;;;;15703:15:8;;138:14752:70;;;;;;;;;;;;;;;;15735:37:8;;;;;;;;;;:::i;:::-;;138:14752:70;;15735:37:8;;;;;;:::i;:::-;138:14752:70;15725:48:8;;138:14752:70;;;;;15610:11:8;138:14752:70;;;15703:77:8;138:14752:70;;15702:78:8;15698:126;;5390:489:70;-1:-1:-1;;;;;138:14752:70;;;;;;27635:8:3;138:14752:70;;;;;;;;;;15889:37:8;;138:14752:70;;;;;;15889:37:8;;;138:14752:70;15889:37:8;;;;;:::i;:::-;138:14752:70;15879:48:8;;138:14752:70;;;;;;;15943:15:8;138:14752:70;15943:15:8;;138:14752:70;15961:16:8;7009:9;15961:16;;138:14752:70;15943:34:8;;;;;:::i;:::-;15938:460;;5390:489:70;138:14752;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;138:14752:70;;;16424:32:8;;138:14752:70;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;5390:489:70;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;138:14752:70;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;138:14752:70;;;16587:43:8;;138:14752:70;12810:59:8;;;138:14752:70;;;;1590:14:0;;;;12656:92:8;;;;12810:59;;;138:14752:70;;;12810:59:8;138:14752:70;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;5390:489:70;16678:31:8;;;;;:::i;:::-;16724:8;;;138:14752:70;;;16724:29:8;;5390:489:70;16720:176:8;;;;14785:4;;;;;:::i;:::-;138:14752:70;;1590:14:0;;;;14854:27:70;;138:14752;14854:27;;138:14752;;14854:27;138:14752;14854:27;;1472:42;14854:27;;;;;;;;5390:489;-1:-1:-1;138:14752:70;1590:14:0;;138:14752:70;;-1:-1:-1;;;5676:60:70;;-1:-1:-1;;;;;138:14752:70;;;;5676:60;;138:14752;;;;;;;;;;;5676:60;;;;;;;;;;5390:489;-1:-1:-1;138:14752:70;;-1:-1:-1;;;5771:42:70;;14824:4;138:14752;5771:42;;138:14752;;;;;5771:42;;;;;;;;;;;;5390:489;5750:63;5847:21;;5390:489;;;5771:42;;;;138:14752;5771:42;;138:14752;5771:42;;;;;;1590:14:0;5771:42:70;;;:::i;:::-;;;1590:14:0;;;;;;;5771:42:70;;;;;;-1:-1:-1;5771:42:70;;5676:60;;;138:14752;5676:60;138:14752;5676:60;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;14854:27;;;138:14752;14854:27;138:14752;14854:27;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;16720:176:8;138:14752:70;;;;;;16769:41:8;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;138:14752:70;;-1:-1:-1;;;16769:41:8;;-1:-1:-1;;;;;138:14752:70;;;;16769:41:8;;138:14752:70;12810:59:8;;;138:14752:70;;;;12810:59:8;;;138:14752:70;;;;;;12810:59:8;;;16769:41;;;;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;;;;;16720:176;138:14752:70;;-1:-1:-1;;;16824:61:8;;138:14752:70;;16824:61:8;;12810:59;;138:14752:70;12810:59:8;;138:14752:70;12810:59:8;27501:38:3;138:14752:70;;12810:59:8;-1:-1:-1;;;5257:44:70;12810:59:8;;;16824:61;;;16769:41;;;;;;:::i;:::-;138:14752:70;;16769:41:8;;;16724:29;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;138:14752:70;;16587:43:8;;;;;138:14752:70;;;16424:32:8;;;;;138:14752:70;16424:32:8;;138:14752:70;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;;138:14752:70;;1590:14:0;138:14752:70;;1590:14:0;;;;15938:460:8;16028:34;;;;:::i;:::-;16021:3;138:14752:70;16021:3:8;138:14752:70;;;;;;;;;;;;;;;1590:14:0;;;;16314:19:8;;;138:14752:70;16314:19:8;;138:14752:70;16314:19:8;;138:14752:70;16314:19:8;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;;;;;15938:460;138:14752:70;;;16170:185:8;;138:14752:70;16170:185:8;;-1:-1:-1;;;;;;;;;;;12810:59:8;;138:14752:70;12810:59:8;;-1:-1:-1;;;;;;;;;;;12810:59:8;;138:14752:70;12810:59:8;;-1:-1:-1;;;12810:59:8;;138:14752:70;;;;;;12810:59:8;;;138:14752:70;;;;12810:59:8;138:14752:70;;;16170:185:8;12810:59;16170:185;138:14752:70;;16170:185:8;;;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;;12810:59;138:14752:70;;-1:-1:-1;;;12810:59:8;;138:14752:70;;12810:59:8;;138:14752:70;;;;;;;;:::i;:::-;12810:59:8;;;16314:19;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;138:14752:70;;1590:14:0;138:14752:70;;1590:14:0;;;;138:14752:70;-1:-1:-1;;;523:5:65;;6854:12:8;138:14752:70;523:5:65;138:14752:70;;523:5:65;15698:126:8;13208:33;;:::i;:::-;;15698:126;;138:14752:70;-1:-1:-1;;;138:14752:70;;;;;;;;14753:31;;;;138:14752;14753:31;;138:14752;14753:31;;;;;;1590:14:0;14753:31:70;;;:::i;:::-;;;1590:14:0;;;;;14753:31:70;;;;;;;-1:-1:-1;14753:31:70;;5312:67;;;;;:::i;:::-;138:14752;;5312:67;;;;5322:56;5353:25;5371:7;5353:25;;5322:56;;5257:44;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;5049;875:42;5049:44;;;;;138:14752;;;;;;;-1:-1:-1;;138:14752:70;;;;;;;8092:35;138:14752;1666:18;138:14752;;;;;1590:14:0;138:14752:70;;;1590:14:0;;;;;;;8092:35:70;;1047:42;138:14752;;;8092:35;;138:14752;-1:-1:-1;;;;;;;;;;;138:14752:70;;;;-1:-1:-1;;;;;;;;;;;138:14752:70;;;;8092:35;;;;;;8166:9;8092:35;;;;;8166:9;;:::i;:::-;138:14752;8148:27;;:56;;;138:14752;-1:-1:-1;;;;;;;;;;;8138:67:70;;;;138:14752;;-1:-1:-1;;;8138:67:70;;138:14752;;;;8138:67;;138:14752;8138:67;138:14752;;;-1:-1:-1;;;;;;;;;;;8138:67:70;;;;;;;;138:14752;;;;;;27501:38:3;;1590:14:0;;;;27501:38:3;;8235:4:70;138:14752;27501:38:3;;138:14752:70;;27501:38:3;;;138:14752:70;27501:38:3;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;-1:-1:-1;6854:12:8;1590:14:0;;-1:-1:-1;;;;;;1590:14:0;-1:-1:-1;;;;;;;;;;;1590:14:0;;;27524:10:3;138:14752:70;;7009:9:8;138:14752:70;;;7009:9:8;138:14752:70;7505:10:8;138:14752:70;-1:-1:-1;;;138:14752:70;;;;;;;;1590:14:0;138:14752:70;;7505:10:8;138:14752:70;;:::i;1590:14:0:-;;;1666:18:70;138:14752;;;;6854:12:8;138:14752:70;;7009:9:8;138:14752:70;;1590:14:0;15610:11:8;138:14752:70;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;138:14752:70;;;;;;27635:8:3;138:14752:70;;;;;15703:15:8;;138:14752:70;;;;;;;;;;;;;;;;15735:37:8;;;;;;;;;;:::i;:::-;138:14752:70;15725:48:8;;138:14752:70;;;;;15610:11:8;138:14752:70;;;15703:77:8;138:14752:70;;15702:78:8;15698:126;;138:14752:70;-1:-1:-1;;;;;138:14752:70;;;;;;27635:8:3;138:14752:70;;;;;;;;;;15889:37:8;;138:14752:70;;;;;;15889:37:8;;;138:14752:70;15889:37:8;;;;;:::i;:::-;138:14752:70;15879:48:8;;138:14752:70;;;;;;;;15943:15:8;138:14752:70;15943:15:8;;138:14752:70;15961:16:8;7009:9;15961:16;;138:14752:70;15943:34:8;;;;:::i;:::-;15938:460;;138:14752:70;;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;138:14752:70;;;16424:32:8;;138:14752:70;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;138:14752:70;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;138:14752:70;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;138:14752:70;;;16587:43:8;;138:14752:70;12810:59:8;;;138:14752:70;;;;1590:14:0;;;;12656:92:8;;;;12810:59;;;138:14752:70;;;12810:59:8;138:14752:70;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;138:14752:70;16678:31:8;;;;;:::i;:::-;16724:8;;;138:14752:70;;;16724:29:8;;138:14752:70;16720:176:8;;;;14785:4;;;;:::i;:::-;138:14752:70;1590:14:0;;138:14752:70;;-1:-1:-1;;;8268:55:70;;-1:-1:-1;;;;;138:14752:70;;;;8268:55;;138:14752;;;;;;;;;;;8268:55;-1:-1:-1;;;;;;;;;;;8268:55:70;;;;;;;;138:14752;-1:-1:-1;138:14752:70;;-1:-1:-1;;;8357:37:70;;8235:4;138:14752;8357:37;;138:14752;;;;;;-1:-1:-1;;;;;;;;;;;8357:37:70;;;;;;;;;;;138:14752;-1:-1:-1;138:14752:70;;-1:-1:-1;;;8427:37:70;;8235:4;138:14752;8427:37;;138:14752;;;;;;-1:-1:-1;;;;;;;;;;;8427:37:70;;;;;;;;;;;138:14752;-1:-1:-1;138:14752:70;1590:14:0;138:14752:70;;-1:-1:-1;;;8508:53:70;;138:14752;;8508:53;;138:14752;;-1:-1:-1;;;;;138:14752:70;;8508:53;138:14752;8508:53;138:14752;;8508:53;;;:::i;:::-;;;;;;;;;;;;;;138:14752;-1:-1:-1;138:14752:70;;-1:-1:-1;;;8638:37:70;;8235:4;138:14752;8638:37;;138:14752;;;;;-1:-1:-1;;;;;;;;;;;8638:37:70;;;;;;;;;;;138:14752;8623:52;;;;;;:::i;:::-;138:14752;;;-1:-1:-1;;;8753:37:70;;8235:4;138:14752;8753:37;;138:14752;;;;;-1:-1:-1;;;;;;;;;;;8753:37:70;;;;;;;;;;;138:14752;8753:52;;;;;;:::i;:37::-;;;138:14752;8753:37;;138:14752;8753:37;;;;;;1590:14:0;8753:37:70;;;:::i;:::-;;;1590:14:0;;;;;8753:52:70;:37;;;;;-1:-1:-1;8753:37:70;;8638;;;138:14752;8638:37;;138:14752;8638:37;;;;;;1590:14:0;8638:37:70;;;:::i;:::-;;;1590:14:0;;;;;8623:52:70;8638:37;;;;;-1:-1:-1;8638:37:70;;8508:53;;;;;;;;;;;;;;;:::i;:::-;;;;;8427:37;;;;138:14752;8427:37;;138:14752;8427:37;;;;;;1590:14:0;8427:37:70;;;:::i;:::-;;;1590:14:0;;;;;8427:37:70;;;;;;;-1:-1:-1;8427:37:70;;8357;;;;138:14752;8357:37;;138:14752;8357:37;;;;;;1590:14:0;8357:37:70;;;:::i;:::-;;;1590:14:0;;;;;8357:37:70;;;;;;;-1:-1:-1;8357:37:70;;;138:14752;;1590:14:0;138:14752:70;;1590:14:0;;;;8268:55:70;;;138:14752;8268:55;138:14752;8268:55;;;;;;;:::i;:::-;;;16720:176:8;138:14752:70;;;;16769:41:8;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;138:14752:70;;-1:-1:-1;;;16769:41:8;;-1:-1:-1;;;;;138:14752:70;;;;16769:41:8;;138:14752:70;12810:59:8;;;138:14752:70;;;;12810:59:8;;;138:14752:70;;;;;;12810:59:8;;;16769:41;12810:59;16724:29;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;138:14752:70;;16587:43:8;;;;;138:14752:70;;;16424:32:8;;;;;138:14752:70;16424:32:8;;138:14752:70;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;;;;:::i;:::-;16021:3;138:14752:70;16021:3:8;138:14752:70;;;;;;;;;;;-1:-1:-1;;;16314:19:8;;138:14752:70;;;;;16314:19:8;;138:14752:70;;;16314:19:8;138:14752:70;;;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;12810:59;16170:185;16314:19;138:14752:70;16314:19:8;;;;;15938:460;138:14752:70;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;138:14752:70;12810:59:8;;;-1:-1:-1;;;138:14752:70;12810:59:8;;;138:14752:70;;;;;;12810:59:8;;;138:14752:70;;;;;;;;16170:185:8;;138:14752:70;;16170:185:8;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;;;;;12810:59;138:14752:70;;-1:-1:-1;;;12810:59:8;;138:14752:70;;12810:59:8;;138:14752:70;;;;;;;;;;;:::i;16314:19:8:-;;;;;;;;;;;;;:::i;:::-;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;138:14752:70;-1:-1:-1;;;138:14752:70;;;;;;;;8138:67;;;;;:::i;:::-;138:14752;;8138:67;;;;8148:56;8179:25;8197:7;8179:25;;8148:56;;8092:35;;;;;;;;;;;;;:::i;138:14752::-;;;;;;;;;;;;;3190:18:5;138:14752:70;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;3190:18:5;138:14752:70;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;-1:-1:-1;;;;;138:14752:70;1590:14:0;;138:14752:70;;1666:18;138:14752;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1590:14:0;138:14752:70;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;138:14752:70;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;138:14752:70;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;138:14752:70;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;138:14752:70;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;138:14752:70;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;138:14752:70;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;138:14752:70;;;;;;;;;;;;;;;;;;;;;;1590:14:0;138:14752:70;1590:14:0;138:14752:70;;;;;;1590:14:0;138:14752:70;1590:14:0;;138:14752:70;;;;;;;1590:14:0;138:14752:70;1590:14:0;;138:14752:70;;;;;;;1590:14:0;138:14752:70;1590:14:0;;138:14752:70;;;;;;;1590:14:0;138:14752:70;1590:14:0;;138:14752:70;;;;;;;1590:14:0;138:14752:70;1590:14:0;;138:14752:70;;;;;;;1590:14:0;138:14752:70;1590:14:0;;138:14752:70;;;;;;;1590:14:0;138:14752:70;;;;;;;;;;;;;;;;;;;;;;;;;2707:18:5;138:14752:70;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;2707:18:5;138:14752:70;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;2883:26:5;138:14752:70;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;2883:26:5;138:14752:70;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;-1:-1:-1;;;;;138:14752:70;1590:14:0;;138:14752:70;;1666:18;138:14752;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;1590:14:0;138:14752:70;1590:14:0;138:14752:70;;;;;;1590:14:0;138:14752:70;1590:14:0;;138:14752:70;;;;;;;1590:14:0;138:14752:70;1590:14:0;;138:14752:70;;;;;;;1590:14:0;138:14752:70;1590:14:0;;138:14752:70;;;;;;;1590:14:0;138:14752:70;1590:14:0;;138:14752:70;;;;;;;1590:14:0;138:14752:70;1590:14:0;;138:14752:70;;;;;;;1590:14:0;138:14752:70;1590:14:0;;138:14752:70;;;;;;;1590:14:0;138:14752:70;;;;;;;;;;;;;;;;;;;-1:-1:-1;;138:14752:70;;;;;1590:14:0;138:14752:70;;-1:-1:-1;;;9049:34:70;;-1:-1:-1;;;138:14752:70;9049:34;;;138:14752;;;;;;;;;;-1:-1:-1;;;;;;;;;;;138:14752:70;;;;;;-1:-1:-1;;;;;138:14752:70;;;;9049:34;138:14752;;9049:34;;;;;;9122:9;9049:34;;;;;9122:9;;:::i;:::-;138:14752;9104:27;;:56;;;138:14752;-1:-1:-1;;;;;;;;;;;9094:67:70;;;;138:14752;;-1:-1:-1;;;9094:67:70;;138:14752;;;;9094:67;;138:14752;9094:67;;138:14752;;;-1:-1:-1;;;;;;;;;;;9094:67:70;;;;;;;;;;;138:14752;9195:15;;;;;:::i;:::-;138:14752;1590:14:0;;138:14752:70;;-1:-1:-1;;;9301:37:70;;9332:4;138:14752;9301:37;;138:14752;;-1:-1:-1;;;;;138:14752:70;;;9244:24;;;;;138:14752;;;;;-1:-1:-1;;;;;;;;;;;9301:37:70;;;;;;;;;;;138:14752;;;;9382:52;138:14752;;1590:14:0;;;;;;;9382:52:70;;1047:42;138:14752;;;9382:52;;138:14752;;;;;;-1:-1:-1;;;;;;;;;;;138:14752:70;;;;;9049:34;138:14752;;;;;;;;9382:52;;;;;;;;;;;138:14752;;9471:38;;138:14752;;1666:18;138:14752;;;;;1590:14:0;138:14752:70;9485:24;9471:38;;:::i;9382:52::-;9471:38;9382:52;;;9471:38;9382:52;138:14752;9382:52;138:14752;9382:52;;;;;;;:::i;:::-;;;;;9301:37;;;;;138:14752;9301:37;;138:14752;9301:37;;;;;;1590:14:0;9301:37:70;;;:::i;:::-;;;1590:14:0;;;;138:14752:70;1590:14:0;;;9301:37:70;;;;;;;-1:-1:-1;9301:37:70;;9094:67;;;;;;;;:::i;:::-;138:14752;;9094:67;;;;;;138:14752;;;1590:14:0;;;;;;;;9104:56:70;9135:25;9153:7;9135:25;;9104:56;;138:14752;;;;;;;;;;;;;14285:7;1590:14:0;138:14752:70;;-1:-1:-1;;;14285:35:70;;-1:-1:-1;;;138:14752:70;14285:35;;138:14752;385:42;138:14752;;;;-1:-1:-1;;;;;;;;;;;138:14752:70;;;;;;;;;14285:35;;138:14752;;-1:-1:-1;;;;;138:14752:70;14285:35;;;;;;14331:26;14285:35;;;;;138:14752;;;14331:26;:::i;14285:35::-;;;;;;;;;;;;;:::i;:::-;;;;138:14752;;;;;;;-1:-1:-1;;138:14752:70;;;;;;;10706:35;138:14752;1666:18;138:14752;;;;;1590:14:0;138:14752:70;;;1590:14:0;;;;;;;10706:35:70;;138:14752;;;;10706:35;;138:14752;-1:-1:-1;;;;;;;;;;;138:14752:70;;;;;;;;;10706:35;;;;;;10780:9;10706:35;;;;;10780:9;;:::i;:::-;138:14752;10762:27;;:57;;;138:14752;-1:-1:-1;;;;;;;;;;;10752:68:70;;;;138:14752;;-1:-1:-1;;;10752:68:70;;138:14752;;;;10752:68;;138:14752;10752:68;138:14752;;;-1:-1:-1;;;;;;;;;;;10752:68:70;;;;;;;;138:14752;;;;;;27501:38:3;;1590:14:0;;;;27501:38:3;;10860:4:70;138:14752;27501:38:3;;138:14752:70;;27501:38:3;;;138:14752:70;27501:38:3;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;-1:-1:-1;6854:12:8;1590:14:0;;-1:-1:-1;;;;;;1590:14:0;-1:-1:-1;;;;;;;;;;;1590:14:0;;;7009:9:8;138:14752:70;;-1:-1:-1;;138:14752:70;27524:10:3;138:14752:70;;;7505:10:8;138:14752:70;-1:-1:-1;;;138:14752:70;;;;;;;;1590:14:0;138:14752:70;;7505:10:8;138:14752:70;;:::i;1590:14:0:-;;;1666:18:70;138:14752;;;;6854:12:8;138:14752:70;;7009:9:8;138:14752:70;;1590:14:0;15610:11:8;138:14752:70;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;138:14752:70;;;;;;27635:8:3;138:14752:70;;;;;15703:15:8;;138:14752:70;;;;;;;;;;;;;;;;15735:37:8;;;;;;;;;;:::i;:::-;138:14752:70;15725:48:8;;138:14752:70;;;;;15610:11:8;138:14752:70;;;15703:77:8;138:14752:70;;15702:78:8;15698:126;;138:14752:70;-1:-1:-1;;;;;138:14752:70;;;;;;27635:8:3;138:14752:70;;;;;;;;;;15889:37:8;;138:14752:70;;;;;;15889:37:8;;;138:14752:70;15889:37:8;;;;;:::i;:::-;138:14752:70;15879:48:8;;138:14752:70;;;;;;;;15943:15:8;138:14752:70;15943:15:8;;138:14752:70;15961:16:8;7009:9;15961:16;;138:14752:70;15943:34:8;;;;:::i;:::-;15938:460;;138:14752:70;;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;138:14752:70;;;16424:32:8;;138:14752:70;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;138:14752:70;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;138:14752:70;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;138:14752:70;;;16587:43:8;;138:14752:70;12810:59:8;;;138:14752:70;;;;1590:14:0;;;;12656:92:8;;;;12810:59;;;138:14752:70;;;12810:59:8;138:14752:70;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;138:14752:70;16678:31:8;;;;;:::i;:::-;16724:8;;;138:14752:70;;;16724:29:8;;138:14752:70;16720:176:8;;;;14785:4;;;;:::i;:::-;138:14752:70;1590:14:0;;138:14752:70;;-1:-1:-1;;;10893:56:70;;-1:-1:-1;;;;;138:14752:70;;;;10893:56;;138:14752;;;;;;;;;;;10893:56;-1:-1:-1;;;;;;;;;;;10893:56:70;;;;;;;;138:14752;-1:-1:-1;138:14752:70;;-1:-1:-1;;;11037:38:70;;10860:4;138:14752;11037:38;;138:14752;;;10982:21;138:14752;;;;-1:-1:-1;;;;;;;;;;;11037:38:70;;;;;;;;;;;138:14752;-1:-1:-1;138:14752:70;1590:14:0;138:14752:70;;-1:-1:-1;;;11119:53:70;;-1:-1:-1;;;138:14752:70;11119:53;;138:14752;-1:-1:-1;;;;;;;;;;;138:14752:70;;;;;;;;;;10706:35;138:14752;;;;;;;;;;;;;;;;11119:53;;138:14752;;1590:14:0;-1:-1:-1;;;;;138:14752:70;11119:53;;;;;;;11216:35;11119:53;11216:35;11119:53;;;;;138:14752;;;11216:21;;:35;:::i;:::-;138:14752;;-1:-1:-1;;;11329:38:70;;10860:4;138:14752;11329:38;;138:14752;;;;;-1:-1:-1;;;;;;;;;;;11329:38:70;;;;;;;;;;;138:14752;11313:54;;;;;;:::i;11329:38::-;;;138:14752;11329:38;;138:14752;11329:38;;;;;;1590:14:0;11329:38:70;;;:::i;:::-;;;1590:14:0;;;;;11313:54:70;11329:38;;;;;-1:-1:-1;11329:38:70;;11119:53;;;;138:14752;11119:53;138:14752;11119:53;;;;;;;:::i;:::-;;;;11037:38;;;;;138:14752;11037:38;;138:14752;11037:38;;;;;;1590:14:0;11037:38:70;;;:::i;:::-;;;1590:14:0;;;;;;;11037:38:70;;;;;;;-1:-1:-1;11037:38:70;;10893:56;;;138:14752;10893:56;138:14752;10893:56;;;;;;;:::i;:::-;;;16724:29:8;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;138:14752:70;;16587:43:8;;;;16424:32;;;;;138:14752:70;16424:32:8;;138:14752:70;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;;;;:::i;:::-;16021:3;138:14752:70;16021:3:8;138:14752:70;;;;;;;;;;;-1:-1:-1;;;16314:19:8;;138:14752:70;;;;;16314:19:8;;138:14752:70;;;16314:19:8;138:14752:70;;;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;12810:59;16170:185;16314:19;138:14752:70;16314:19:8;;;;;138:14752:70;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;138:14752:70;12810:59:8;;;-1:-1:-1;;;138:14752:70;12810:59:8;;;138:14752:70;;;;;;12810:59:8;;;138:14752:70;;;;;;;;16170:185:8;;138:14752:70;;16170:185:8;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;10752:68:70;;;;;:::i;:::-;138:14752;;10752:68;;;;10762:57;10793:26;10811:8;10793:26;;10762:57;;138:14752;;;;;;;;;;;;;;;;;;3038:18:5;138:14752:70;;;;;;;3038:18:5;138:14752:70;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;138:14752:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3331:16:5;138:14752:70;;;;;;;3331:16:5;138:14752:70;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;138:14752:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1421:3;138:14752;;-1:-1:-1;;138:14752:70;;;;;;;;;11774:13;11789:19;1421:3;11789:19;;;;11906:28;;;:::i;:::-;11977:13;;11992:19;1421:3;11992:19;;;;12312:13;;138:14752;12327:23;138:14752;12327:23;;;;138:14752;;;;;;;;:::i;:::-;1421:3;138:14752;;;;;;;12746:13;12761:19;1421:3;12761:19;;;;12877:28;;;:::i;:::-;12948:13;;12963:19;1421:3;12963:19;;;;13283:13;;138:14752;13298:23;138:14752;13298:23;;;;138:14752;;;13323:3;13351:9;;;;:::i;:::-;;138:14752;;1293:42;;;;;;;;13433:53;13379:13;:30;13424:66;13379:13;;138:14752;13379:13;;;;:::i;:::-;;138:14752;13379:30;;:::i;:::-;138:14752;13466:13;13433:9;;;;;:::i;:::-;;:15;;1293:42;13466:13;;:::i;:::-;;:19;;13433:53;;:::i;:::-;1421:3;;13424:66;:::i;:::-;138:14752;13283:13;;12984:3;138:14752;;-1:-1:-1;;;13016:13:70;;138:14752;;;;;13016:13;-1:-1:-1;;;;;;;;;;;13016:13:70;;;;;;;;;;;12984:3;13070:10;;;;;:::i;:::-;138:14752;;;;;;27501:38:3;;1590:14:0;;;;27501:38:3;;12092:4:70;27501:38:3;;;138:14752:70;27501:38:3;;;;;;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;-1:-1:-1;6854:12:8;1590:14:0;;-1:-1:-1;;;;;;1590:14:0;-1:-1:-1;;;;;;;;;;;1590:14:0;;;27524:10:3;138:14752:70;;7009:9:8;138:14752:70;;;7009:9:8;138:14752:70;7505:10:8;138:14752:70;-1:-1:-1;;;138:14752:70;;;;;;;;1590:14:0;138:14752:70;;7505:10:8;138:14752:70;;:::i;1590:14:0:-;;;6854:12:8;138:14752:70;7009:9:8;138:14752:70;15610:11:8;138:14752:70;;;-1:-1:-1;;;;;138:14752:70;;;1590:14:0;15653:34:8;;:::i;:::-;-1:-1:-1;;;;;138:14752:70;;;;;;27635:8:3;138:14752:70;;;;;15703:15:8;;138:14752:70;;;;;;;;;;;;;;;;15735:37:8;;;;;;;;;;:::i;:::-;138:14752:70;15725:48:8;;138:14752:70;;;;;15610:11:8;138:14752:70;;;15703:77:8;138:14752:70;;15702:78:8;15698:126;;12984:3:70;-1:-1:-1;;;;;138:14752:70;;;;;;27635:8:3;138:14752:70;;;;;;;;;;15889:37:8;;138:14752:70;;;;;;15889:37:8;;;138:14752:70;15889:37:8;;;;;:::i;:::-;138:14752:70;15879:48:8;;138:14752:70;;;;;;;;15943:15:8;;138:14752:70;15961:16:8;7009:9;15961:16;;138:14752:70;15943:34:8;;;;:::i;:::-;15938:460;;12984:3:70;138:14752;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;138:14752:70;;;16424:32:8;;138:14752:70;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;12984:3:70;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;138:14752:70;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;138:14752:70;;;16587:43:8;;138:14752:70;12810:59:8;;;138:14752:70;;;;1590:14:0;;;;12656:92:8;;;;12810:59;;;138:14752:70;;;12810:59:8;138:14752:70;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;12984:3:70;16678:31:8;;;;:::i;:::-;16724:8;;;138:14752:70;;;16724:29:8;;12984:3:70;16720:176:8;;;;14785:4;;;;;;:::i;:::-;138:14752:70;1590:14:0;;13095:50:70;;138:14752;-1:-1:-1;;;;;138:14752:70;13134:10;;;;:::i;:::-;138:14752;;;-1:-1:-1;;;13095:50:70;;-1:-1:-1;;;;;138:14752:70;;;;13095:50;;138:14752;;;;;;;;;;;;;;;13095:50;;;;-1:-1:-1;;;;;;;;;;;13095:50:70;;;;;;;;12984:3;-1:-1:-1;138:14752:70;1590:14:0;138:14752:70;;12201:48;;13172;;-1:-1:-1;;;;;138:14752:70;13209:10;;;;:::i;:::-;138:14752;;;1590:14:0;;;;;;;;;13172:48:70;;138:14752;13172:48;;;:::i;:::-;;;;;;;;;;;;;;12984:3;13160:60;;;;;:::i;:::-;;;;;;:::i;:::-;;138:14752;;1590:14:0;;;;13234:23:70;;138:14752;13234:23;;138:14752;;13234:23;27501:38:3;13234:23:70;;-1:-1:-1;;;;;;;;;;;13234:23:70;;;;;;;138:14752;13234:23;;;12984:3;;138:14752;12948:13;;13234:23;;;138:14752;13234:23;;;;;;;;;:::i;:::-;;;;;13172:48;;;;12201;13172;;;;;;;;;:::i;:::-;;;;13095:50;;;138:14752;13095:50;;;;;;;;;:::i;:::-;;;16724:29:8;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;138:14752:70;;16587:43:8;;;;16424:32;;;;;138:14752:70;16424:32:8;;;;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;;;;;:::i;:::-;16021:3;138:14752:70;16021:3:8;138:14752:70;;;;;;;;;;;-1:-1:-1;;;16314:19:8;;138:14752:70;;;;;16314:19:8;;138:14752:70;;;16314:19:8;;138:14752:70;27501:38:3;138:14752:70;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;138:14752:70;16314:19:8;;12810:59;16314:19;16170:185;16314:19;;;;15938:460;138:14752:70;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;138:14752:70;12810:59:8;;;-1:-1:-1;;;138:14752:70;12810:59:8;;;138:14752:70;;;;;;12810:59:8;;;138:14752:70;;;;;;;;16170:185:8;;138:14752:70;;16170:185:8;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;;;;;;16314:19;;;;;;;;;;;;;;:::i;:::-;;;;;138:14752:70;-1:-1:-1;;;523:5:65;;6854:12:8;138:14752:70;523:5:65;27501:38:3;138:14752:70;523:5:65;15698:126:8;13208:33;;:::i;:::-;;15698:126;;138:14752:70;-1:-1:-1;;;138:14752:70;;;;;27501:38:3;138:14752:70;;13016:13;;;;138:14752;13016:13;;;;;;;;;1590:14:0;13016:13:70;;;:::i;:::-;;;1590:14:0;;;;;13016:13:70;;;;;;;-1:-1:-1;13016:13:70;;12782:3;523:5:65;11842:4:70;523:5:65;11842:4:70;523:5:65;;;;;;;;;;;;;12825:7:70;523:5:65;;;;;;;12801:31:70;138:14752;12801:31;;;;;:::i;:::-;138:14752;;12746:13;;12352:3;12380:9;;;;:::i;:::-;;138:14752;;1293:42;;;;;;;;12462:53;12408:13;:30;12453:66;12408:13;;138:14752;12408:13;;;;:::i;12462:53::-;1421:3;;12453:66;:::i;:::-;138:14752;12312:13;;12013:3;138:14752;;-1:-1:-1;;;12045:13:70;;138:14752;;;;;12045:13;-1:-1:-1;;;;;;;;;;;12045:13:70;;;;;;;;;;;12013:3;12099:10;;;;;:::i;:::-;138:14752;;;;;;27501:38:3;;1590:14:0;;;;27501:38:3;;12092:4:70;27501:38:3;;;138:14752:70;27501:38:3;;;;;;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;-1:-1:-1;6854:12:8;1590:14:0;;-1:-1:-1;;;;;;1590:14:0;-1:-1:-1;;;;;;;;;;;1590:14:0;;;27524:10:3;138:14752:70;;7009:9:8;138:14752:70;;;7009:9:8;138:14752:70;7505:10:8;138:14752:70;-1:-1:-1;;;138:14752:70;;;;;;;;1590:14:0;138:14752:70;;7505:10:8;138:14752:70;;:::i;1590:14:0:-;;;6854:12:8;138:14752:70;7009:9:8;138:14752:70;15610:11:8;138:14752:70;;;-1:-1:-1;;;;;138:14752:70;;;1590:14:0;15653:34:8;;:::i;:::-;-1:-1:-1;;;;;138:14752:70;;;;;;27635:8:3;138:14752:70;;;;;15703:15:8;;138:14752:70;;;;;;;;;;;;;;;;15735:37:8;;;;;;;;;;:::i;:::-;138:14752:70;15725:48:8;;138:14752:70;;;;;15610:11:8;138:14752:70;;;15703:77:8;138:14752:70;;15702:78:8;15698:126;;12013:3:70;-1:-1:-1;;;;;138:14752:70;;;;;;27635:8:3;138:14752:70;;;;;;;;;;15889:37:8;;138:14752:70;;;;;;15889:37:8;;;138:14752:70;15889:37:8;;;;;:::i;:::-;138:14752:70;15879:48:8;;138:14752:70;;;;;;;;15943:15:8;;138:14752:70;15961:16:8;7009:9;15961:16;;138:14752:70;15943:34:8;;;;:::i;:::-;15938:460;;12013:3:70;138:14752;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;138:14752:70;;;16424:32:8;;138:14752:70;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;12013:3:70;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;138:14752:70;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;138:14752:70;;;16587:43:8;;138:14752:70;12810:59:8;;;138:14752:70;;;;1590:14:0;;;;12656:92:8;;;;12810:59;;;138:14752:70;;;12810:59:8;138:14752:70;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;12013:3:70;16678:31:8;;;;:::i;:::-;16724:8;;;138:14752:70;;;16724:29:8;;12013:3:70;16720:176:8;;;;14785:4;;;;;;:::i;:::-;138:14752:70;1590:14:0;;12124:50:70;;138:14752;-1:-1:-1;;;;;138:14752:70;12163:10;;;;:::i;12124:50::-;;;;-1:-1:-1;;;;;;;;;;;12124:50:70;;;;;;;;12013:3;-1:-1:-1;138:14752:70;1590:14:0;138:14752:70;;12201:48;;;;-1:-1:-1;;;;;138:14752:70;12238:10;;;;:::i;12201:48::-;;;;;;;;;;;;;;12013:3;12189:60;;;;;:::i;:::-;;;;;;:::i;:::-;;138:14752;;1590:14:0;;;;12263:23:70;;138:14752;12263:23;;138:14752;;12263:23;27501:38:3;12263:23:70;;-1:-1:-1;;;;;;;;;;;12263:23:70;;;;;;;138:14752;12263:23;;;12013:3;;138:14752;11977:13;;12263:23;;;138:14752;12263:23;;;;;;;;;:::i;:::-;;;;;12201:48;;;;;;;;;;;;;;:::i;:::-;;;;12124:50;;;138:14752;12124:50;;;;;;;;;:::i;:::-;;;16724:29:8;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;138:14752:70;;16587:43:8;;;;16424:32;;;;;138:14752:70;16424:32:8;;;;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;;;;;:::i;:::-;16021:3;138:14752:70;16021:3:8;138:14752:70;;;;;;;;;;;-1:-1:-1;;;16314:19:8;;138:14752:70;;;;;16314:19:8;;138:14752:70;;;16314:19:8;;138:14752:70;27501:38:3;138:14752:70;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;138:14752:70;16314:19:8;;12810:59;16314:19;16170:185;16314:19;;;;138:14752:70;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;138:14752:70;12810:59:8;;;-1:-1:-1;;;138:14752:70;12810:59:8;;;138:14752:70;;;;;;12810:59:8;;;138:14752:70;;;;;;;;16170:185:8;;138:14752:70;;16170:185:8;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;;;;;;138:14752:70;-1:-1:-1;;;523:5:65;;6854:12:8;138:14752:70;523:5:65;27501:38:3;138:14752:70;523:5:65;15698:126:8;13208:33;;:::i;:::-;;15698:126;;138:14752:70;-1:-1:-1;;;138:14752:70;;;;;27501:38:3;138:14752:70;;12045:13;;;;138:14752;12045:13;;;;;;;;;1590:14:0;12045:13:70;;;:::i;:::-;;;1590:14:0;;;;;12045:13:70;;;;;;;-1:-1:-1;12045:13:70;;11810:3;523:5:65;11842:4:70;523:5:65;11842:4:70;523:5:65;;;;;;;;;;;;;11853:8:70;523:5:65;;;;;;;11829:32:70;138:14752;11829:32;;;;;:::i;:::-;138:14752;;11774:13;;138:14752;;;;;;;;;;;;;14507:7;1590:14:0;138:14752:70;;-1:-1:-1;;;14507:35:70;;-1:-1:-1;;;138:14752:70;14507:35;;138:14752;-1:-1:-1;;;;;;;;;;;138:14752:70;;;;-1:-1:-1;;;;;;;;;;;138:14752:70;;;;;;;;;14507:35;;138:14752;;-1:-1:-1;;;;;138:14752:70;14507:35;;;;;;14553:26;14507:35;;;;;138:14752;;14553:26;:::i;138:14752::-;;;;;;;-1:-1:-1;;138:14752:70;;;;;1590:14:0;138:14752:70;;-1:-1:-1;;;9873:35:70;;-1:-1:-1;;;138:14752:70;9873:35;;;138:14752;;;;;;;;;;-1:-1:-1;;;;;;;;;;;138:14752:70;;;;;;-1:-1:-1;;;;;138:14752:70;;;;9873:35;138:14752;;9873:35;;;;;;9947:9;9873:35;;;;;9947:9;;:::i;:::-;138:14752;9929:27;;:57;;;138:14752;-1:-1:-1;;;;;;;;;;;9919:68:70;;;;138:14752;;-1:-1:-1;;;9919:68:70;;138:14752;;;;9919:68;;138:14752;9919:68;;138:14752;;;-1:-1:-1;;;;;;;;;;;9919:68:70;;;;;;;;;;;138:14752;10021:15;;;;;:::i;:::-;138:14752;1590:14:0;;138:14752:70;;-1:-1:-1;;;10128:38:70;;10160:4;138:14752;10128:38;;138:14752;;-1:-1:-1;;;;;138:14752:70;;;10070:24;;;;;138:14752;;;;;-1:-1:-1;;;;;;;;;;;10128:38:70;;;;;;;;;;;138:14752;;;;10210:53;138:14752;;1590:14:0;;;;;;;10210:53:70;;138:14752;;;;10210:53;;138:14752;;;;;;-1:-1:-1;;;;;;;;;;;138:14752:70;;;;;9873:35;138:14752;;;;;;;;10210:53;;;;;;;;;;;138:14752;;10300:38;;138:14752;;1666:18;138:14752;;;;;1590:14:0;138:14752:70;10314:24;10300:38;;:::i;:::-;138:14752;;;-1:-1:-1;;;10407:38:70;;10160:4;138:14752;10407:38;;138:14752;;;;;-1:-1:-1;;;;;;;;;;;10407:38:70;;;;;;;;;;;:54;;;;;;:::i;10210:53::-;10300:38;10210:53;;;10300:38;10210:53;138:14752;10210:53;138:14752;10210:53;;;;;;;:::i;:::-;;;;;10128:38;;;;;138:14752;10128:38;;138:14752;10128:38;;;;;;1590:14:0;10128:38:70;;;:::i;:::-;;;1590:14:0;;;;138:14752:70;1590:14:0;;;10128:38:70;;;;;;;-1:-1:-1;10128:38:70;;9919:68;;;;;;;;:::i;:::-;138:14752;;9919:68;;;;;9929:57;9960:26;9978:8;9960:26;;9929:57;;138:14752;;;;;;;;;;;;;3485:19:5;138:14752:70;;;;:::i;:::-;;;;;;;:::i;:::-;;;;3485:19:5;138:14752:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;138:14752:70;1590:14:0;;1666:18:70;138:14752;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;138:14752:70;;;;;;;7155:35;138:14752;1666:18;138:14752;;;;;1590:14:0;138:14752:70;;;1590:14:0;;;;;;;7155:35:70;;968:42;138:14752;;;7155:35;;138:14752;385:42;138:14752;;;;-1:-1:-1;;;;;;;;;;;138:14752:70;;;;7155:35;;;;;;7229:9;7155:35;;;;;7229:9;;:::i;:::-;138:14752;7211:27;;:56;;;138:14752;-1:-1:-1;;;;;;;;;;;7201:67:70;;;;138:14752;;-1:-1:-1;;;7201:67:70;;138:14752;;;;7201:67;;138:14752;7201:67;138:14752;;;-1:-1:-1;;;;;;;;;;;7201:67:70;;;;;;;;138:14752;;;;;;27501:38:3;;1590:14:0;;;;27501:38:3;;7298:4:70;138:14752;27501:38:3;;138:14752:70;;27501:38:3;;;138:14752:70;27501:38:3;;:::i;:::-;27484:56;;385:42:70;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;-1:-1:-1;6854:12:8;1590:14:0;;-1:-1:-1;;;;;;1590:14:0;385:42:70;1590:14:0;;;7009:9:8;138:14752:70;;-1:-1:-1;;138:14752:70;27524:10:3;138:14752:70;;;7505:10:8;138:14752:70;-1:-1:-1;;;138:14752:70;;;;;;;;1590:14:0;138:14752:70;;7505:10:8;138:14752:70;;:::i;1590:14:0:-;;;1666:18:70;138:14752;;;;6854:12:8;138:14752:70;;7009:9:8;138:14752:70;;1590:14:0;15610:11:8;138:14752:70;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;138:14752:70;;;;;;27635:8:3;138:14752:70;;;;;15703:15:8;;138:14752:70;;;;;;;;;;;;;;;;15735:37:8;;;;;;;;;;:::i;:::-;138:14752:70;15725:48:8;;138:14752:70;;;;;15610:11:8;138:14752:70;;;15703:77:8;138:14752:70;;15702:78:8;15698:126;;138:14752:70;-1:-1:-1;;;;;138:14752:70;;;;;;27635:8:3;138:14752:70;;;;;;;;;;15889:37:8;;138:14752:70;;;;;;15889:37:8;;;138:14752:70;15889:37:8;;;;;:::i;:::-;138:14752:70;15879:48:8;;138:14752:70;;;;;;;;15943:15:8;138:14752:70;15943:15:8;;138:14752:70;15961:16:8;7009:9;15961:16;;138:14752:70;15943:34:8;;;;:::i;:::-;15938:460;;138:14752:70;;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;138:14752:70;;;16424:32:8;;138:14752:70;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;138:14752:70;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;138:14752:70;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;138:14752:70;;;16587:43:8;;138:14752:70;12810:59:8;;;138:14752:70;;;;1590:14:0;;;;12656:92:8;;;;12810:59;;;138:14752:70;;;12810:59:8;138:14752:70;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;138:14752:70;16678:31:8;;;;;:::i;:::-;16724:8;;;138:14752:70;;;16724:29:8;;138:14752:70;16720:176:8;;;;14785:4;;;;:::i;:::-;138:14752:70;1590:14:0;;138:14752:70;;-1:-1:-1;;;7331:55:70;;-1:-1:-1;;;;;138:14752:70;;;;7331:55;;138:14752;;;;;;;;;;;7331:55;385:42;7331:55;;;;;;;;138:14752;-1:-1:-1;138:14752:70;;-1:-1:-1;;;7420:37:70;;7298:4;138:14752;7420:37;;138:14752;;;;;;;385:42;7420:37;;;;;;;;;;;138:14752;-1:-1:-1;138:14752:70;;-1:-1:-1;;;7490:37:70;;7298:4;138:14752;7490:37;;138:14752;;;;;;-1:-1:-1;;;;;;;;;;;7490:37:70;;;;;;;;;;;138:14752;-1:-1:-1;138:14752:70;1590:14:0;138:14752:70;;-1:-1:-1;;;7571:53:70;;-1:-1:-1;;;138:14752:70;7571:53;;138:14752;385:42;138:14752;;;;-1:-1:-1;;;;;;;;;;;138:14752:70;;;;7155:35;138:14752;;;;;;;;;;;;;;;;7571:53;;138:14752;;1590:14:0;-1:-1:-1;;;;;138:14752:70;7571:53;;;;;;;;;;;138:14752;-1:-1:-1;138:14752:70;;-1:-1:-1;;;7701:37:70;;7298:4;138:14752;7701:37;;138:14752;;;;;385:42;7701:37;;;;;;;;;;;7686:52;;;;;;:::i;7571:53::-;;;;;138:14752;7571:53;138:14752;7571:53;;;;;;;:::i;:::-;;;;;7490:37;;;;;138:14752;7490:37;;138:14752;7490:37;;;;;;1590:14:0;7490:37:70;;;:::i;:::-;;;1590:14:0;;;;;;;7490:37:70;;;;;;;-1:-1:-1;7490:37:70;;7420;;;;138:14752;7420:37;;138:14752;7420:37;;;;;;1590:14:0;7420:37:70;;;:::i;:::-;;;1590:14:0;;;;;;;7420:37:70;;;;;;-1:-1:-1;7420:37:70;;7331:55;;;138:14752;7331:55;138:14752;7331:55;;;;;;;:::i;:::-;;;16724:29:8;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;138:14752:70;;16587:43:8;;;;16424:32;;;;;138:14752:70;16424:32:8;;138:14752:70;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;;;;:::i;:::-;16021:3;138:14752:70;16021:3:8;138:14752:70;;;;;;;;;;;-1:-1:-1;;;16314:19:8;;138:14752:70;;;;;16314:19:8;;138:14752:70;;;16314:19:8;138:14752:70;;;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;12810:59;16170:185;16314:19;138:14752:70;16314:19:8;;;;;138:14752:70;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;138:14752:70;12810:59:8;;;-1:-1:-1;;;138:14752:70;12810:59:8;;;138:14752:70;;;;;;12810:59:8;;;138:14752:70;;;;;;;;16170:185:8;;138:14752:70;;16170:185:8;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;7201:67:70;;;;;:::i;:::-;138:14752;;7201:67;;;;7211:56;7242:25;7260:7;7242:25;;7211:56;;138:14752;;;;;;;;;;;;;3500:28;138:14752;3550:13;;138:14752;;;3565:7;;;;;;138:14752;;;3574:3;3624:31;;27501:38:3;3624:31:70;;:::i;:::-;-1:-1:-1;;;;;138:14752:70;;;1590:14:0;;;138:14752:70;;;;;1666:18;138:14752;;;;3697:7;1590:14:0;138:14752:70;;;1590:14:0;;;;;;;3697:23:70;;;138:14752;3697:23;;138:14752;3697:23;;;;;;;;;;;3574:3;138:14752;;;;;;;;:::i;:::-;3775:1;138:14752;;;;3697:7;138:14752;;;27501:38:3;3697:7:70;3817:31;;;:::i;:::-;138:14752;;;;-1:-1:-1;;;3796:95:70;;138:14752;3796:95;;138:14752;;;;;;1590:14:0;;138:14752:70;;1590:14:0;;138:14752:70;-1:-1:-1;;;;;138:14752:70;3796:95;;;;;;;3574:3;-1:-1:-1;3792:347:70;;4050:31;27501:38:3;3697:7:70;4050:31;;;:::i;:::-;138:14752;;;;-1:-1:-1;;;4006:113:70;;138:14752;4006:113;;138:14752;;;;;;1590:14:0;;138:14752:70;;1590:14:0;;138:14752:70;-1:-1:-1;;;;;138:14752:70;4006:113;;;;;;;;;;3792:347;4122:2;523:5:65;;;3993:131:70;;;:::i;:::-;138:14752;3792:347;-1:-1:-1;;;;;4158:9:70;;;:::i;:::-;1590:14:0;138:14752:70;4184:10;6854:22:8;4184:10:70;;;:::i;:::-;138:14752;;;;;;3697:7;27501:38:3;;1590:14:0;;;;27501:38:3;;4177:4:70;27501:38:3;;;138:14752:70;27501:38:3;;;;;;;:::i;:::-;27484:56;;;;;;27568:30;27484:56;;:::i;27568:30::-;;1666:18:70;138:14752;;;;;-1:-1:-1;;;;;1590:14:0;;6854:12:8;1590:14:0;;;6854:12:8;1590:14:0;;6854:22:8;27524:10:3;138:14752:70;;7009:9:8;138:14752:70;;;7009:9:8;138:14752:70;7505:10:8;138:14752:70;-1:-1:-1;;;138:14752:70;;;;;;;3775:1;1590:14:0;138:14752:70;;7505:10:8;138:14752:70;;:::i;1590:14:0:-;;;1666:18:70;138:14752;;;;6854:12:8;138:14752:70;;7009:9:8;138:14752:70;;1590:14:0;138:14752:70;15610:11:8;138:14752:70;15653:34:8;138:14752:70;1590:14:0;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;138:14752:70;;;;;;27635:8:3;138:14752:70;;;;;15703:15:8;;;138:14752:70;;;;;;;;;3697:7;138:14752;;;;;;3697:7;15735:37:8;;;;;;;;;;:::i;:::-;138:14752:70;15725:48:8;;138:14752:70;;3697:7;138:14752;;15703:77:8;138:14752:70;;15702:78:8;15698:126;;3792:347:70;-1:-1:-1;;;;;138:14752:70;;;;;;27635:8:3;138:14752:70;;;;;;;;3697:7;138:14752;15889:37:8;;138:14752:70;;;;;;15889:37:8;;;3697:7:70;15889:37:8;;;;;:::i;:::-;138:14752:70;15879:48:8;;138:14752:70;;3697:7;138:14752;;;;15943:15:8;3775:1:70;15943:15:8;;138:14752:70;15961:16:8;7009:9;15961:16;;138:14752:70;15943:34:8;;;;;:::i;:::-;15938:460;;3792:347:70;138:14752;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;138:14752:70;;;16424:32:8;;138:14752:70;;;;;;;;;;;;;;;;;;;;3697:7;138:14752;;;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;3792:347:70;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;138:14752:70;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;138:14752:70;;;16587:43:8;;138:14752:70;12810:59:8;;;138:14752:70;;;;1590:14:0;;;;12656:92:8;;;;12810:59;;;138:14752:70;;;12810:59:8;138:14752:70;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;3792:347:70;16678:31:8;;;;:::i;:::-;16724:8;;;138:14752:70;;;16724:29:8;;3792:347:70;16720:176:8;;;;14785:4;;;;;:::i;:::-;4209:55:70;3697:7;-1:-1:-1;;;;;4216:9:70;;;:::i;:::-;1590:14:0;;;-1:-1:-1;;;;;138:14752:70;;;4253:10;;;:::i;:::-;138:14752;;;-1:-1:-1;;;4209:55:70;;-1:-1:-1;;;;;138:14752:70;;;;4209:55;;138:14752;;;;;;;;;-1:-1:-1;138:14752:70;;;;;;;;;;;4209:55;;;;;;;;;4325:180;;4209:55;;;4325:180;;4209:55;;;;3792:347;-1:-1:-1;3697:7:70;1590:14:0;-1:-1:-1;;;;;138:14752:70;;;;4377:9;;;:::i;:::-;1590:14:0;138:14752:70;;;4481:10;-1:-1:-1;;;;;4404:9:70;;;:::i;:::-;1590:14:0;138:14752:70;4481:10;;:::i;:::-;138:14752;;;-1:-1:-1;;;4325:180:70;;138:14752;;;;;;;;4325:180;138:14752;4325:180;;;:::i;:::-;;;;;;;;;;;;;;4589:45;4325:180;;;3792:347;-1:-1:-1;3697:7:70;1590:14:0;-1:-1:-1;;;;;138:14752:70;;;;;4613:9;138:14752;4613:9;:::i;:::-;1590:14:0;138:14752:70;;-1:-1:-1;;;;;138:14752:70;4624:9;;;:::i;:::-;1590:14:0;138:14752:70;;-1:-1:-1;;;4589:45:70;;138:14752;4589:45;;138:14752;;;;-1:-1:-1;;;;;138:14752:70;;;;;;;;;;;;;;;;;-1:-1:-1;138:14752:70;;;;;;;;;4589:45;;;;;;;;;;3775:1;4589:45;;;4832:22;4589:45;4841:9;4589:45;;;;;3792:347;138:14752;4746:36;138:14752;;4649:35;3697:7;138:14752;;4649:35;:::i;:::-;4707:11;4698:34;4707:11;;138:14752;4698:34;:::i;:::-;4755:11;:23;138:14752;4746:36;:::i;:::-;4796:22;4805:9;;;:::i;:::-;138:14752;4796:22;:::i;:::-;4841:9;:::i;4832:22::-;138:14752;3550:13;;;;;;4589:45;3697:7;4589:45;;;;;4746:36;4589:45;;;;;;;;;;;:::i;:::-;;;;;;;;138:14752;;1590:14:0;138:14752:70;;1590:14:0;;;;4325:180:70;;;;;;;;;;;;;;;:::i;:::-;;;;;;138:14752;;1590:14:0;138:14752:70;;1590:14:0;;;;4209:55:70;;;3697:7;4209:55;;;;;;;;;:::i;:::-;;;;138:14752;;1590:14:0;138:14752:70;;1590:14:0;;;;16720:176:8;138:14752:70;;;;;;;16769:41:8;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;138:14752:70;;-1:-1:-1;;;16769:41:8;;-1:-1:-1;;;;;138:14752:70;;;;;16769:41:8;;138:14752:70;12810:59:8;;;138:14752:70;;;;12810:59:8;;;138:14752:70;;;;;12810:59:8;138:14752:70;16769:41:8;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;;;;;16720:176;138:14752:70;;-1:-1:-1;;;16824:61:8;;3697:7:70;138:14752;16824:61:8;;12810:59;;27501:38:3;12810:59:8;;138:14752:70;12810:59:8;27501:38:3;138:14752:70;;12810:59:8;-1:-1:-1;;;12810:59:8;;;;16824:61;;;16769:41;;;;;;:::i;:::-;138:14752:70;;16769:41:8;;;;138:14752:70;;;1590:14:0;;;;;;;;16724:29:8;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;138:14752:70;;16587:43:8;;;;138:14752:70;;;;16587:43:8;138:14752:70;;1590:14:0;138:14752:70;;1590:14:0;;;;16587:43:8;138:14752:70;;;16424:32:8;;;;;3697:7:70;16424:32:8;;;;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;;138:14752:70;;1590:14:0;138:14752:70;;1590:14:0;;;;15938:460:8;16028:34;;;;:::i;:::-;16021:3;138:14752:70;16021:3:8;138:14752:70;;;;;;;;;3775:1;138:14752;;;;1590:14:0;;;16314:19:8;;;138:14752:70;16314:19:8;;138:14752:70;16314:19:8;;27501:38:3;16314:19:8;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;12810:59;16314:19;;3697:7:70;16314:19:8;;;16170:185;16314:19;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;15938:460;138:14752:70;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;;;;-1:-1:-1;;;138:14752:70;12810:59:8;;;138:14752:70;;;;;;12810:59:8;;;138:14752:70;;;;;;;;16170:185:8;;138:14752:70;;16170:185:8;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;12810:59;138:14752:70;;-1:-1:-1;;;12810:59:8;;3697:7:70;138:14752;12810:59:8;;138:14752:70;;;;;;27501:38:3;138:14752:70;;;;:::i;16314:19:8:-;;;;;;;;;;;;;:::i;:::-;;;;;138:14752:70;;;1590:14:0;;;;;;;;15698:126:8;13208:33;;:::i;:::-;;15698:126;;4006:113:70;;3697:7;4006:113;;;;;;;;;1590:14:0;4006:113:70;;;:::i;:::-;;;1590:14:0;;;;4122:2:70;1590:14:0;;4006:113:70;;;;;-1:-1:-1;4006:113:70;;;138:14752;;1590:14:0;138:14752:70;;1590:14:0;;;;3792:347:70;3951:2;523:5:65;;3932:21:70;;;:::i;:::-;138:14752;3792:347;;3796:95;;;;3697:7;3796:95;;;;;;;;;1590:14:0;3796:95:70;;;:::i;:::-;;;1590:14:0;;;;;3796:95:70;;;;;;;-1:-1:-1;3796:95:70;;3697:23;;;;;;;;;;;;;;:::i;:::-;;;;;;138:14752;;1590:14:0;138:14752:70;;1590:14:0;;;;138:14752:70;;;;;;;;;;;;;;;;;;2563:16:5;138:14752:70;;;;;;;2563:16:5;138:14752:70;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;138:14752:70;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;138:14752:70;;;;;;-1:-1:-1;;;;;138:14752:70;;;;;;;;;-1:-1:-1;;;;;138:14752:70;;;;;;;1590:14:0;138:14752:70;;-1:-1:-1;;;13644:37:70;;138:14752;;;13644:37;;;138:14752;-1:-1:-1;;;;;138:14752:70;;;;;;;;;;;;;;;;;;;;;;;13644:37;;;;;;13692:23;13644:37;;;;;138:14752;;13692:23;:::i;13644:37::-;;;;;;;;;;;;;:::i;138:14752::-;;;;;;;-1:-1:-1;;138:14752:70;;;;;;-1:-1:-1;;;1614:20:70;;1590:14:0;138:14752:70;1614:20;;1590:14:0;;;;;138:14752:70;-1:-1:-1;;;138:14752:70;;;1590:14:0;-1:-1:-1;138:14752:70;1614:20;138:14752;-1:-1:-1;;;;;;;;;;;1614:20:70;;;;;;;1590:14:0;1614:20:70;1590:14:0;1614:20:70;138:14752;1614:20;;;138:14752;;;;1590:14:0;;;;;;;1594:52:70;;138:14752;;1594:52;;1590:14:0;138:14752:70;1590:14:0;;;;:::i;:::-;1576:8:70;1590:14:0;;;138:14752:70;1594:52;;138:14752;-1:-1:-1;;;;;;;;;;;1594:52:70;;;;;;;;138:14752;;;;1666:18;;;;;;;-1:-1:-1;;;;;1666:18:70;;;;;;;;;;;;138:14752;1666:18;;;;;;138:14752;;;;;-1:-1:-1;;;;;1590:14:0;;;;;;;;138:14752:70;;1590:14:0;138:14752:70;;;;;-1:-1:-1;;;;;138:14752:70;;;;;;;1801:42;1590:14:0;;1857:42:70;1590:14:0;1787:1354:70;;1590:14:0;1913:42:70;138:14752;1787:1354;;1590:14:0;1969:42:70;1787:1354;;;1590:14:0;2025:42:70;1787:1354;;;1590:14:0;2081:42:70;1787:1354;;;1590:14:0;2137:42:70;1787:1354;;;1590:14:0;2193:42:70;138:14752;1787:1354;;1590:14:0;2249:42:70;1787:1354;;;1590:14:0;2305:42:70;1787:1354;;;1590:14:0;2361:42:70;1787:1354;;;1590:14:0;2417:42:70;1787:1354;;;1590:14:0;2473:42:70;1787:1354;;;1590:14:0;2529:42:70;1787:1354;;;1590:14:0;2585:42:70;1787:1354;;;1590:14:0;2641:42:70;1787:1354;;;1590:14:0;2697:42:70;1787:1354;;;1590:14:0;2753:42:70;1787:1354;;;1590:14:0;2809:42:70;1787:1354;;;1590:14:0;2865:42:70;1787:1354;;;1590:14:0;2921:42:70;1787:1354;;;1590:14:0;2977:42:70;1787:1354;;;1590:14:0;3033:42:70;1787:1354;;;1590:14:0;3089:42:70;1787:1354;;;1590:14:0;1756:1385:70;138:14752;1787:1354;1756:1385;1590:14:0;;1787:1354:70;1590:14:0;;;138:14752:70;1590:14:0;1756:1385:70;138:14752;;;1590:14:0;1787:1354:70;1590:14:0;;;;;;138:14752:70;;-1:-1:-1;;;;;138:14752:70;-1:-1:-1;;;;;;;;;;;3152:42:70;;;;138:14752;;1590:14:0;;;;3152:42:70;;138:14752;3152:42;;138:14752;;1590:14:0;;;;;138:14752:70;1590:14:0;;138:14752:70;-1:-1:-1;;;1614:20:70;138:14752;;1590:14:0;138:14752:70;3152:42;;;;-1:-1:-1;;;;;;;;;;;3152:42:70;;;;;;;;1590:14:0;3204:22:70;-1:-1:-1;;;;;;;;;;;3204:22:70;;;;138:14752;;;1590:14:0;;;3204:22:70;;-1:-1:-1;;;;;;;;;;;138:14752:70;3204:22;;138:14752;;1590:14:0;313:42:70;;;138:14752;;313:42;;138:14752;-1:-1:-1;;;1614:20:70;138:14752;;313:42;3204:22;;3152:42;3204:22;;-1:-1:-1;;;;;;;;;;;3204:22:70;;;;;;;;1590:14:0;3236:22:70;;-1:-1:-1;;;;;;;;;;;3236:22:70;;;;138:14752;;;1590:14:0;;;3236:22:70;;385:42;138:14752;3236:22;;138:14752;;1590:14:0;385:42:70;;;138:14752;;385:42;;138:14752;-1:-1:-1;;;1614:20:70;138:14752;;385:42;3236:22;;3152:42;3236:22;;-1:-1:-1;;;;;;;;;;;3236:22:70;;;;;;;;1590:14:0;3268:36:70;;-1:-1:-1;;;;;;;;;;;3268:36:70;;;;138:14752;;;1590:14:0;;;3268:36:70;;968:42;138:14752;3268:36;;138:14752;;1590:14:0;968:42:70;;;;138:14752;968:42;;138:14752;-1:-1:-1;;;1614:20:70;138:14752;;968:42;3268:36;;3152:42;3268:36;;-1:-1:-1;;;;;;;;;;;3268:36:70;;;;;;;;1590:14:0;3314:22:70;;-1:-1:-1;;;;;;;;;;;3314:22:70;;;;138:14752;;;1590:14:0;;;3314:22:70;;-1:-1:-1;;;;;;;;;;;138:14752:70;3314:22;;138:14752;;1590:14:0;457:42:70;;;138:14752;;457:42;;138:14752;-1:-1:-1;;;1614:20:70;138:14752;;457:42;3314:22;;3152:42;3314:22;;-1:-1:-1;;;;;;;;;;;3314:22:70;;;;;;;;1590:14:0;3346:36:70;;-1:-1:-1;;;;;;;;;;;3346:36:70;;;;138:14752;;;1590:14:0;;;3346:36:70;;1047:42;138:14752;3346:36;;138:14752;;1590:14:0;1047:42:70;;;968;138:14752;1047:42;;138:14752;-1:-1:-1;;;1614:20:70;138:14752;;1047:42;3346:36;;3152:42;3346:36;;-1:-1:-1;;;;;;;;;;;3346:36:70;;;;;;;;138:14752;;3346:36;;;;;:::i;:::-;138:14752;;3346:36;138:14752;3314:22;;;;;:::i;:::-;138:14752;;3314:22;;;;3268:36;;;;;:::i;:::-;138:14752;;3268:36;;;;3236:22;;;;;:::i;:::-;138:14752;;3236:22;;;;3204;;;;;:::i;:::-;138:14752;;3204:22;;;;3152:42;;;;138:14752;3152:42;;:::i;:::-;138:14752;3152:42;;;;138:14752;;1590:14:0;138:14752:70;1590:14:0;;;;;;;;-1:-1:-1;;;;;138:14752:70;;1590:14:0;;;;;;;;;;;;;138:14752:70;1590:14:0;;;;;;;;;;;;138:14752:70;1590:14:0;;;;;;138:14752:70;;;;;;;;;1590:14:0;138:14752:70;;1594:52;1590:14:0;1594:52:70;;1590:14:0;1594:52:70;;;;;;1590:14:0;1594:52:70;;;:::i;:::-;;;1590:14:0;;;;;1594:52:70;;;;;-1:-1:-1;1594:52:70;;1614:20;;;;;;138:14752;1614:20;;;;;;:::i;:::-;;;;138:14752;;;;;;-1:-1:-1;;138:14752:70;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;138:14752:70;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;138:14752:70;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;138:14752:70;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;138:14752:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;138:14752:70;;;;;;;;-1:-1:-1;;138:14752:70;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;138:14752:70;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;1666:18;138:14752;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;138:14752:70;;;;;;;;;;;;;;;;;;;;3500:28;138:14752;;;;;;3500:28;-1:-1:-1;138:14752:70;;-1:-1:-1;138:14752:70;;;-1:-1:-1;138:14752:70;:::o;:::-;;;;;;;;;;;;;7505:10:8;138:14752:70;;;;;;7505:10:8;-1:-1:-1;138:14752:70;;-1:-1:-1;138:14752:70;;;-1:-1:-1;138:14752:70;:::o;:::-;534:59:65;138:14752:70;;;;;;534:59:65;-1:-1:-1;138:14752:70;;-1:-1:-1;138:14752:70;;;-1:-1:-1;138:14752:70;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;138:14752:70;;;;;;;;-1:-1:-1;138:14752:70;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;138:14752:70;;;;;;;;;:::o;523:5:65:-;;;;;;;;;;;;;;;;:::o;:::-;138:14752:70;;;523:5:65;;;;;;;;;;;;;;;:::o;:::-;138:14752:70;;;523:5:65;;;;;;;;8534:180;138:14752:70;;523:5:65;;;;;;;;;;;;;;;8690:17;8655:52;8690:17;;138:14752:70;8655:52:65;;:::i;:::-;8534:180;:::o;1590:14:0:-;-1:-1:-1;;;;;1590:14:0;;;;138:14752:70;;-1:-1:-1;;138:14752:70;1590:14:0;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;1590:14:0;;;;;;;;;;;;;;;;;;;:::i;:::-;138:14752:70;;;;;;;:::i;:::-;1590:14:0;;;;;;;;;;;;-1:-1:-1;1590:14:0;;;;;;;;138:14752:70;;;;;1590:14:0;:::o;:::-;;;;;;;;;;;:::o;138:14752:70:-;;;;;;;;;;;-1:-1:-1;;;;;138:14752:70;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;138:14752:70;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;138:14752:70;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;3775:1;138:14752;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;1590:14:0;;;138:14752:70;;;1590:14:0;138:14752:70;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;1590:14:0;;138:14752:70;;;;;1590:14:0;138:14752:70;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;138:14752:70;;;;;;;;;;;;;-1:-1:-1;138:14752:70;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;138:14752:70;;-1:-1:-1;;;;;;;;;;;138:14752:70;;;;-1:-1:-1;;;;;;;;;;;138:14752:70;;;;-1:-1:-1;138:14752:70;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;138:14752:70;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;1590:14:0;;138:14752:70;;;;;;;;;;;;;;;;;;;;:::o;1293:42::-;;;;;;;;;;:::o;1243:204:1:-;1302:7;138:14752:70;;;;;;;1325:14:1;:::o;1298:143::-;138:14752:70;;;1590:14:0;;;1377:39:1;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;138:14752:70;192:59:1;;;;;;138:14752:70;192:59:1;1377:39;;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;;;;;138:14752:70;1377:39:1;;;1298:143;1377:53;;;1370:60;:::o;1377:39::-;;;192:59;1377:39;;192:59;1377:39;;;;;;1590:14:0;1377:39:1;;;:::i;:::-;;;1590:14:0;;;;;1377:39:1;;;;;;-1:-1:-1;1377:39:1;;2270:110;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;138:14752:70;;1590:14:0;;;;2349:24:1;;;;;138:14752:70;13713:1;138:14752;;;;-1:-1:-1;2349:24:1;;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;;;;;2270:110;:::o;2349:24::-;-1:-1:-1;2349:24:1;;;:::i;:::-;2270:110::o;:::-;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;138:14752:70;;1590:14:0;;;;2349:24:1;;;;;138:14752:70;;;;;-1:-1:-1;2349:24:1;;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;;;;;2270:110;:::o;13112:::-;-1:-1:-1;;;;;;;;;;;13191:24:1;;;;138:14752:70;;1590:14:0;;;;13191:24:1;;;;;138:14752:70;;;;;;;13191:24:1;;;-1:-1:-1;;;;;;;;;;;13191:24:1;;;;;;;;13112:110;:::o;26720:91:3:-;-1:-1:-1;;;;;;;;;;;26787:17:3;;;;138:14752:70;;-1:-1:-1;;;26787:17:3;;-1:-1:-1;;;;;138:14752:70;;;;26787:17:3;;;138:14752:70;;;;;;;;-1:-1:-1;138:14752:70;;;-1:-1:-1;;;;;;;;;;;;26787:17:3;;;;;;;;26720:91;:::o;1421:3:70:-;138:14752;;;;;;:::i;:::-;1421:3;-1:-1:-1;1421:3:70;;-1:-1:-1;1421:3:70;;;;138:14752;;;;;;;:::i;:::-;-1:-1:-1;1421:3:70;;-1:-1:-1;1421:3:70;;;;;;:::o;:::-;138:14752;;;;;;;;;:::i;:::-;1421:3;138:14752;;;-1:-1:-1;;1421:3:70;138:14752;-1:-1:-1;1421:3:70;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;15480:110:1;-1:-1:-1;;;;;;;;;;;15559:24:1;;;;138:14752:70;;1590:14:0;;;;15559:24:1;;;;;138:14752:70;13923:1;138:14752;;;;-1:-1:-1;15559:24:1;;;-1:-1:-1;;;;;;;;;;;15559:24:1;;;;;;;;15480:110;:::o;:::-;;-1:-1:-1;;;;;;;;;;;15559:24:1;;;;138:14752:70;;1590:14:0;;;;15559:24:1;;;;;138:14752:70;;;;;-1:-1:-1;15559:24:1;;;-1:-1:-1;;;;;;;;;;;15559:24:1;;;;;;;;15480:110;:::o;14296:::-;;-1:-1:-1;;;;;;;;;;;14375:24:1;;;;138:14752:70;;1590:14:0;;;;14375:24:1;;;;;138:14752:70;;;;;-1:-1:-1;14375:24:1;;;-1:-1:-1;;;;;;;;;;;14375:24:1;;;;;;;;14296:110;:::o;8720:323:65:-;138:14752:70;8906:3:65;138:14752:70;;8881:23:65;;;;;8929:15;;;;:::i;:::-;138:14752:70;;;;;;;;8929:29:65;8925:79;;138:14752:70;;8866:13:65;;8925:79;8978:11;;138:14752:70;8978:11:65;:::o;138:14752:70:-;;;;;;;;;;;;8881:23:65;;;138:14752:70;8720:323:65;:::o;:::-;138:14752:70;8906:3:65;138:14752:70;;8881:23:65;;;;;8929:15;;;;:::i;:::-;138:14752:70;;;;;;;2531:24:65;8929:29;8925:79;;138:14752:70;;8866:13:65;;8720:323;138:14752:70;8906:3:65;138:14752:70;;8881:23:65;;;;;8929:15;;;;:::i;:::-;138:14752:70;;;;;;;6005:21:65;8929:29;8925:79;;138:14752:70;;8866:13:65;;5926:434:58;138:14752:70;;6065:47:58;;;;1590:14:0;;;;6065:47:58;;1666:18:70;138:14752;;;;;6065:47:58;;;;;138:14752:70;1590:14:0;;138:14752:70;;;;6065:47:58;;;;;;;:::i;:::-;8511:25;;-1:-1:-1;;;;;138:14752:70;;;-1:-1:-1;;;;;138:14752:70;8511:25:58;;;;;:::i;:::-;8553:81;;;5926:434;8553:127;;;;5926:434;6127:45;;6123:231;;5926:434;;;:::o;6123:231::-;6232:43;6330:12;138:14752:70;;;1590:14:0;;;;6065:47:58;6232:43;;;6065:47;6232:43;;138:14752:70;-1:-1:-1;6065:47:58;138:14752:70;;;6065:47:58;6232:43;;;6065:47;6232:43;;:::i;:::-;;;:::i;:::-;6330:12;:::i;8553:127::-;8650:26;;;:30;;8553:127;;;:81;138:14752:70;;;;-1:-1:-1;8577:22:58;;;:56;;;;8553:81;;;;;;;8577:56;8603:30;;;6065:47;8603:30;;;;;;;;:::i;:::-;8577:56;;;;138:14752:70;;;;;;;;;;;-1:-1:-1;;;;;138:14752:70;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1666:18;138:14752;;;;;;;;;1666:18;138:14752;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;1590:14:0;138:14752:70;;:::i;:::-;;;;-1:-1:-1;;;138:14752:70;;;;;;;;;:::o;1911:4479:65:-;;;;;;138:14752:70;;-1:-1:-1;;;2117:44:65;;;;;138:14752:70;;;-1:-1:-1;;;;;138:14752:70;;;;;;;;;;;;;1911:4479:65;;;;;2117:44;138:14752:70;;;;;2117:44:65;;;;;138:14752:70;2117:44:65;-1:-1:-1;;;;;138:14752:70;;2117:44:65;;;;;;:47;:44;;;;;:47;;:::i;:::-;138:14752:70;;;-1:-1:-1;138:14752:70;1590:14:0;;;138:14752:70;;2174:61:65;;138:14752:70;;;;:::i;:::-;;;;;1590:14:0;138:14752:70;;;-1:-1:-1;;;138:14752:70;;;;2174:61:65;;;:::i;:::-;1590:14:0;;138:14752:70;2117:44:65;138:14752:70;;44640:78:15;138:14752:70;;;1590:14:0;;138:14752:70;;:::i;:::-;;;;;1590:14:0;138:14752:70;;;-1:-1:-1;;;138:14752:70;;;;;;44640:78:15;;;;;;1590:14:0;44640:78:15;;;138:14752:70;44640:78:15;;;138:14752:70;;;;;;:::i;:::-;-1:-1:-1;;;;;138:14752:70;;;;;;;;;;;;;;;;;;;44640:78:15;-1:-1:-1;;44640:78:15;;;;;;:::i;:::-;1222:159;138:14752:70;;1222:159:15;;591:42;1222:159;;-1:-1:-1;138:14752:70;;-1:-1:-1;;;2467:50:65;;2117:44;2467:50;;138:14752:70;;;-1:-1:-1;;;;;138:14752:70;;;;;;;;;;;;;2117:44:65;138:14752:70;;;;;2467:50:65;138:14752:70;;-1:-1:-1;;;;;138:14752:70;;2467:50:65;;;;;;2440:125;2467:50;2117:44;2467:50;;;1911:4479;2440:125;;:::i;:::-;138:14752:70;;;;;;;;:::i;:::-;2117:44:65;138:14752:70;;;;1590:14:0;138:14752:70;;;8365:37:65;;;2117:44;8365:37;8352:50;;;:::i;:::-;138:14752:70;8433:4:65;523:5;;;8412:25;;;:::i;:::-;138:14752:70;;;8468:1:65;138:14752:70;;;;1590:14:0;;138:14752:70;;523:5:65;;8420:1;523:5;138:14752:70;;;;8487:1:65;138:14752:70;;;;;;;;;;;;-1:-1:-1;;;2822:49:65;;138:14752:70;2117:44:65;138:14752:70;;2822:49:65;138:14752:70;2822:49:65;;;2117:44;2822:49;;;:::i;:::-;;138:14752:70;;-1:-1:-1;;;;;138:14752:70;;2822:49:65;;;;;;;2117:44;2822:49;;;8365:37;2917:9;2903:24;2917:9;;;:::i;:::-;;2903:24;:::i;:::-;138:14752:70;;-1:-1:-1;;138:14752:70;;;1590:14:0;138:14752:70;;;;2941:40:65;2955:25;2881:174;2955:25;;;:::i;2941:40::-;1590:14:0;;138:14752:70;;;1590:14:0;138:14752:70;;;;:::i;:::-;;;;;1590:14:0;138:14752:70;;;-1:-1:-1;;;138:14752:70;;;;2881:174:65;:::i;:::-;3152:24;3166:9;;;:::i;3152:24::-;138:14752:70;;-1:-1:-1;;138:14752:70;;;;;;;;12247:66:15;2117:44:65;3204:25;3190:40;3204:25;;;;;:::i;3190:40::-;1590:14:0;;138:14752:70;;;;;;;;;:::i;:::-;;;;;1590:14:0;138:14752:70;;;-1:-1:-1;;;138:14752:70;;;;;;12247:66:15;;;;;;1590:14:0;12247:66:15;;;1590:14:0;;44640:78:15;12247:66;;138:14752:70;;;;;;:::i;:::-;;;;;;;;;;12247:66:15;138:14752:70;;12247:66:15;;;;;;:::i;:::-;1222:159;138:14752:70;;1222:159:15;;591:42;1222:159;;-1:-1:-1;1590:14:0;;138:14752:70;;3251:53:65;;138:14752:70;;;;:::i;:::-;;;;;1590:14:0;138:14752:70;;;-1:-1:-1;;;138:14752:70;;;;3251:53:65;:::i;:::-;3314:60;3323:9;;;:::i;:::-;;138:14752:70;;;1590:14:0;;;138:14752:70;;;;;;;;:::i;:::-;;;;;1590:14:0;138:14752:70;;;3314:60:65;:::i;:::-;3384:64;1590:14:0;3393:9:65;;;:::i;:::-;;:21;138:14752:70;;;;;;;;;;;:::i;:::-;;;;;1590:14:0;138:14752:70;;;3384:64:65;:::i;:::-;3480:24;3494:9;;;:::i;3480:24::-;138:14752:70;;;;3514:49:65;138:14752:70;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1590:14:0;138:14752:70;;;3514:49:65;:::i;:::-;1421:3:70;;:::i;:::-;-1:-1:-1;138:14752:70;;-1:-1:-1;;138:14752:70;;;;;;;3635:27:65;;;;:::i;:::-;138:14752:70;;523:5:65;;;;;;;;2117:44;138:14752:70;;;;1590:14:0;27501:38:3;;1590:14:0;;;;27501:38:3;;3624:4:65;44640:78:15;27501:38:3;;138:14752:70;44640:78:15;27501:38:3;;;138:14752:70;27501:38:3;;:::i;:::-;27484:56;;;;;;27568:30;27484:56;;:::i;27568:30::-;-1:-1:-1;6854:12:8;1590:14:0;;-1:-1:-1;;;;;;1590:14:0;-1:-1:-1;;;;;138:14752:70;;1590:14:0;;;27524:10:3;138:14752:70;;7009:9:8;138:14752:70;;;7009:9:8;138:14752:70;7505:10:8;138:14752:70;-1:-1:-1;;;138:14752:70;;;;;;;8420:1:65;1590:14:0;138:14752:70;;7505:10:8;138:14752:70;;:::i;1590:14:0:-;;;6854:12:8;138:14752:70;-1:-1:-1;;;;;138:14752:70;;;7009:9:8;138:14752:70;15610:11:8;138:14752:70;;1590:14:0;;15653:34:8;;:::i;:::-;15703:15;;-1:-1:-1;;;;;138:14752:70;;;;;27635:8:3;138:14752:70;;;;;15703:15:8;;138:14752:70;;;;;;2117:44:65;138:14752:70;1590:14:0;138:14752:70;;;2117:44:65;138:14752:70;;;;1590:14:0;15735:37:8;;;;;;;;;;:::i;:::-;138:14752:70;15725:48:8;;2117:44:65;138:14752:70;1590:14:0;138:14752:70;;8487:1:65;138:14752:70;;2117:44:65;138:14752:70;15703:77:8;138:14752:70;;15702:78:8;15698:126;;8365:37:65;15857:15:8;;-1:-1:-1;;;;;138:14752:70;;;;;27635:8:3;138:14752:70;;;;;;2117:44:65;138:14752:70;1590:14:0;138:14752:70;15889:37:8;;138:14752:70;;2117:44:65;138:14752:70;;;;;15889:37:8;;;1590:14:0;15889:37:8;;;;;:::i;:::-;138:14752:70;15879:48:8;;2117:44:65;138:14752:70;1590:14:0;138:14752:70;;;2117:44:65;138:14752:70;8420:1:65;15943:15:8;;138:14752:70;15961:16:8;8468:1:65;15961:16:8;;138:14752:70;15943:34:8;;;;:::i;:::-;15938:460;;8365:37:65;138:14752:70;;;;;-1:-1:-1;;;16424:32:8;;;;-1:-1:-1;;;;;138:14752:70;2117:44:65;16424:32:8;;138:14752:70;;;;;;;;;;;1590:14:0;138:14752:70;;;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;2117:44:65;16424:32:8;;;8365:37:65;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;138:14752:70;;;-1:-1:-1;;;16587:43:8;;;;-1:-1:-1;;;;;138:14752:70;2117:44:65;16587:43:8;;138:14752:70;12810:59:8;;;138:14752:70;;;;;523:5:65;;1590:14:0;;;12656:92:8;12810:59;;;138:14752:70;-1:-1:-1;138:14752:70;12810:59:8;138:14752:70;-1:-1:-1;;;;;;;;;;;;16587:43:8;;;;;;;;8365:37:65;16678:31:8;;;:::i;:::-;16724:8;;138:14752:70;;;16724:29:8;;8365:37:65;16720:176:8;;;;14785:4;;;;:::i;:::-;138:14752:70;;;1590:14:0;;;3697:13:65;;1590:14:0;2117:44:65;;;;;-1:-1:-1;;;;;;;;;;;3697:13:65;;;;;;2117:44;;3697:13;;;;8365:37;-1:-1:-1;8420:1:65;3761:3;138:14752:70;;3741:18:65;;;;;1222:159:15;3878:14:65;138:14752:70;12952:65:15;3878:14:65;;;:::i;:::-;3910:10;;;;;:::i;:::-;138:14752:70;;;;;;;1590:14:0;138:14752:70;1590:14:0;;138:14752:70;;:::i;:::-;;;;;1590:14:0;138:14752:70;;;-1:-1:-1;;;138:14752:70;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1590:14:0;12952:65:15;;;1590:14:0;;44640:78:15;12952:65;;138:14752:70;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;138:14752:70;;;;;;;:::i;:::-;;;;;;12952:65:15;138:14752:70;;12952:65:15;;;;;;:::i;:::-;1222:159;138:14752:70;;1222:159:15;;591:42;1222:159;;;3972:24:65;3986:9;;;;:::i;3972:24::-;1222:159:15;4051:10:65;138:14752:70;12771:66:15;4051:10:65;;;;;:::i;:::-;138:14752:70;;;;;;;;;;:::i;:::-;;;;;1590:14:0;138:14752:70;;;;;;12771:66:15;;;;;;1590:14:0;12771:66:15;;;1590:14:0;;44640:78:15;12771:66;;138:14752:70;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;138:14752:70;;;;;12771:66:15;-1:-1:-1;;12771:66:15;;;;;;:::i;:::-;1222:159;138:14752:70;;1222:159:15;;591:42;1222:159;;;4166:10:65;138:14752:70;4166:10:65;;4093:97;4166:10;;;;:::i;:::-;138:14752:70;;;;-1:-1:-1;;;4093:97:65;;138:14752:70;;;;;2117:44:65;4093:97;;;:::i;:::-;;2117:44;;;1666:18:70;138:14752;;;;;;4093:97:65;;;;;;;2117:44;;4093:97;;;3761:3;138:14752:70;;;523:5:65;;;;;;;;;;;;;4244:52;4335:26;4286:10;523:5;4286:10;;;;:::i;:::-;138:14752:70;523:5:65;;4244:52;:::i;:::-;138:14752:70;;;4349:11:65;;4335:26;:::i;:::-;138:14752:70;4375:60:65;138:14752:70;;;;;;;;;:::i;:::-;;;;;1590:14:0;138:14752:70;;;4375:60:65;:::i;:::-;4449;138:14752:70;;;;;;;;;:::i;:::-;;;;;1590:14:0;138:14752:70;;;4449:60:65;:::i;:::-;4523:61;138:14752:70;;;;;;;;;:::i;:::-;;;;;1590:14:0;138:14752:70;;;4523:61:65;:::i;:::-;4599:1176;;;;;1590:14:0;;138:14752:70;;;5013:164:65;;4819:176;;-1:-1:-1;;4637:164:65;;138:14752:70;-1:-1:-1;138:14752:70;;;;:::i;:::-;;;;;1590:14:0;138:14752:70;;;-1:-1:-1;;;138:14752:70;;;;;4637:164:65;;:::i;:::-;1590:14:0;;138:14752:70;;;;1590:14:0;138:14752:70;;;;:::i;:::-;;;;;1590:14:0;138:14752:70;;;;;;;;;4819:176:65;;:::i;:::-;1590:14:0;;138:14752:70;;;;1590:14:0;138:14752:70;;;;:::i;:::-;;;;;1590:14:0;138:14752:70;;;-1:-1:-1;;;138:14752:70;;;;;5013:164:65;;:::i;:::-;138:14752:70;;;1590:14:0;;;;5789:25:65;;138:14752:70;;2117:44:65;5789:25;;138:14752:70;1590:14:0;2117:44:65;44640:78:15;2117:44:65;;;-1:-1:-1;;;;;;;;;;;5789:25:65;;;;;;;8420:1;5789:25;;;4599:1176;3761:3;138:14752:70;3726:13:65;;5789:25;;;1590:14:0;5789:25:65;;;;;;;;;:::i;:::-;;;;;;138:14752:70;;;1590:14:0;2117:44:65;;1590:14:0;;;;;4599:1176:65;5407:172;138:14752:70;5216:173:65;5597:163;138:14752:70;;;:::i;:::-;5216:173:65;;;:::i;:::-;138:14752:70;;:::i;:::-;5407:172:65;;;:::i;:::-;138:14752:70;;;1590:14:0;138:14752:70;1590:14:0;;138:14752:70;;:::i;:::-;;;;;1590:14:0;138:14752:70;;;-1:-1:-1;;;138:14752:70;;;;;5597:163:65;;:::i;:::-;4599:1176;;523:5;138:14752:70;;;2117:44:65;;523:5;6854:12:8;2117:44:65;523:5;44640:78:15;2117:44:65;;523:5;4093:97;;;;138:14752:70;4093:97:65;;;;;;;;;:::i;:::-;;;;3741:18;;;;;;;;;5873:3;523:5;;;;;;;5873:3;523:5;;;;;;;;138:14752:70;;;-1:-1:-1;;;5941:50:65;;2117:44;;;;5941:50;;138:14752:70;;;-1:-1:-1;;;;;138:14752:70;;;;;;;;;;;;;;2117:44:65;;138:14752:70;523:5:65;;;;;138:14752:70;2117:44:65;;138:14752:70;;;;;;;5941:50:65;;;;;;5914:122;2117:44;;;5941:50;;;3721:2104;5914:122;;:::i;:::-;;;;6590;138:14752:70;;;;;1590:14:0;;138:14752:70;;:::i;:::-;;;;;1590:14:0;138:14752:70;;;-1:-1:-1;;;138:14752:70;;;;;6590:122:65;:::i;:::-;138:14752:70;;;;;;;;;;:::i;:::-;8420:1:65;138:14752:70;;;;-1:-1:-1;;138:14752:70;;1590:14:0;138:14752:70;;;6783:37:65;;;:::i;:::-;138:14752:70;;;;-1:-1:-1;;;6835:57:65;;2117:44;;138:14752:70;;6835:57:65;;;;;2117:44;6835:57;;;:::i;:::-;;2117:44;;;1666:18:70;138:14752;;;;;;6835:57:65;;2117:44;;6835:57;;6047:287;-1:-1:-1;6831:346:65;;8420:1;6831:346;;:::i;:::-;;;;;;;;7259:18;138:14752:70;6831:346:65;7259:18;:::i;:::-;138:14752:70;;7190:97:65;138:14752:70;;;1590:14:0;;;;;;;;;;7190:97:65;;2117:44;7190:97;;;:::i;:::-;2117:44;;7190:97;;;;-1:-1:-1;;;;;138:14752:70;7190:97:65;;2117:44;;7190:97;;6831:346;-1:-1:-1;7186:342:65;;8420:1;7186:342;;:::i;:::-;;;;;;;;6047:287;6344:39;138:14752:70;;;;;;;;:::i;:::-;;;;;1590:14:0;138:14752:70;;;6344:39:65;:::i;7186:342::-;7375:153;;:::i;:::-;;;;7186:342;;;;7375:153;2117:44;;1590:14:0;;138:14752:70;;;2117:44:65;;-1:-1:-1;7418:99:65;;2117:44;138:14752:70;;;;;:::i;:::-;;;;;1590:14:0;138:14752:70;;;-1:-1:-1;;;138:14752:70;;;;;7418:99:65;:::i;:::-;7375:153;;;7186:342;138:14752:70;;;-1:-1:-1;;;7302:61:65;;1590:14:0;2117:44:65;7302:61;;138:14752:70;;44640:78:15;138:14752:70;;;;;;;;-1:-1:-1;;;138:14752:70;;;;;;7302:61:65;7190:97;;;138:14752:70;7190:97:65;138:14752:70;7190:97:65;;;;;;;:::i;:::-;;;6831:346;7018:159;;:::i;:::-;;;;6831:346;;;;7018:159;2117:44;;1590:14:0;;138:14752:70;;;2117:44:65;;-1:-1:-1;7061:105:65;;2117:44;138:14752:70;;;;;:::i;:::-;;;;;1590:14:0;138:14752:70;;;;;;;;;7061:105:65;:::i;:::-;7018:159;;;6831:346;138:14752:70;;;-1:-1:-1;;;6907:99:65;;1590:14:0;2117:44:65;6907:99;;138:14752:70;;44640:78:15;138:14752:70;;;;;;;;;;;;;;;6907:99:65;6835:57;;;;2117:44;;;6835:57;;;;;;:::i;:::-;;;;;:::i;:::-;;;6047:287;1590:14:0;;138:14752:70;;;7738:117:65;;138:14752:70;;;;;;;:::i;:::-;;;;;1590:14:0;138:14752:70;;;-1:-1:-1;;;138:14752:70;;;;;7738:117:65;:::i;:::-;138:14752:70;;;;;;;;;;:::i;:::-;8420:1:65;138:14752:70;;;;-1:-1:-1;;138:14752:70;;1590:14:0;138:14752:70;;;7926:37:65;;;:::i;:::-;138:14752:70;;;;1590:14:0;;;;7974:57:65;;2117:44;;7974:57;;;;;;;2117:44;7974:57;;;:::i;:::-;;2117:44;;;1666:18:70;138:14752;;;;;;7974:57:65;;;;;;;138:14752:70;;8110:18:65;;7974:57;;8110:18;;:::i;:::-;138:14752:70;;8041:97:65;138:14752:70;;;1590:14:0;;;;;;;;;;8041:97:65;;2117:44;8041:97;;;:::i;:::-;2117:44;;8041:97;;;;-1:-1:-1;;;;;138:14752:70;8041:97:65;;;;;;;;6047:287;;;;8041:97;;;138:14752:70;8041:97:65;138:14752:70;8041:97:65;;;;;;;:::i;:::-;;;;;7974:57;;;;2117:44;;;7974:57;;;;;;:::i;:::-;;;5941:50;;;;;2117:44;;;5941:50;;;;;;:::i;:::-;;;;3697:13;1590:14:0;3697:13:65;;1590:14:0;3697:13:65;;;;;;1590:14:0;3697:13:65;;;:::i;:::-;;;1590:14:0;;;;;3697:13:65;;;;;;;;-1:-1:-1;3697:13:65;;16720:176:8;138:14752:70;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;138:14752:70;;;-1:-1:-1;;;16769:41:8;;2117:44:65;;16769:41:8;;-1:-1:-1;;;;;138:14752:70;2117:44:65;16769:41:8;;138:14752:70;12810:59:8;;;138:14752:70;;;;12810:59:8;;;138:14752:70;;;;;;12810:59:8;;;16769:41;2117:44:65;;;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;;;;;16720:176;138:14752:70;;;-1:-1:-1;;;16824:61:8;;1590:14:0;2117:44:65;16824:61:8;;12810:59;138:14752:70;44640:78:15;12810:59:8;;138:14752:70;12810:59:8;138:14752:70;;;12810:59:8;-1:-1:-1;;;138:14752:70;12810:59:8;;;138:14752:70;;16824:61:8;16769:41;2117:44:65;;16769:41:8;;;:::i;:::-;138:14752:70;;;;16769:41:8;;;138:14752:70;2117:44:65;;;138:14752:70;16724:29:8;138:14752:70;523:5:65;16736:17:8;;;-1:-1:-1;16724:29:8;;;;16587:43;2117:44:65;16587:43:8;;;:::i;:::-;2117:44:65;138:14752:70;;16587:43:8;;;;138:14752:70;;;1590:14:0;2117:44:65;1590:14:0;;;;;16424:32:8;;;;1590:14:0;16424:32:8;;1590:14:0;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;:::i;:::-;16021:3;138:14752:70;16021:3:8;138:14752:70;;;;;;;;;;;;-1:-1:-1;;;16314:19:8;;8420:1:65;138:14752:70;;2117:44:65;16314:19:8;;138:14752:70;-1:-1:-1;138:14752:70;44640:78:15;138:14752:70;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;16170:185;12810:59;1590:14:0;16314:19:8;8420:1:65;16314:19:8;2117:44:65;16314:19:8;;;15938:460;138:14752:70;;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;138:14752:70;;12810:59:8;;;-1:-1:-1;;;1590:14:0;;12810:59:8;;;138:14752:70;;;;;;12810:59:8;;;138:14752:70;;;2117:44:65;138:14752:70;;;;16170:185:8;;138:14752:70;;16170:185:8;;;;;;:::i;:::-;138:14752:70;523:5:65;138:14752:70;523:5:65;16103:21:8;12810:59;;;15938:460;;;12810:59;138:14752:70;;;-1:-1:-1;;;12810:59:8;;1590:14:0;2117:44:65;12810:59:8;;138:14752:70;;;;;;44640:78:15;138:14752:70;;;;:::i;16314:19:8:-;;;;;;2117:44:65;16314:19:8;;;;;;:::i;:::-;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;2822:49:65;;;;;;;2117:44;2822:49;;;;;;:::i;:::-;;;;;8365:37;8397:5;523;;;8365:37;;2467:50;;;;;;2117:44;2467:50;;;;;;:::i;:::-;;;;2117:44;;;;;;;;;;;;;:::i;138:14752:70:-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;138:14752:70;;;;:::o;:::-;;;:::o;426:547:59:-;688:35;426:547;637:17;619:35;138:14752:70;;637:17:59;;;138:14752:70;619:35:59;;:::i;:::-;138:14752:70;;706:17:59;;138:14752:70;688:35:59;;:::i;:::-;769:30;;;;;;801:8;;138:14752:70;801:8:59;:::o;765:201::-;867:29;;;;905:1;898:8;:::o;863:103::-;-1:-1:-1;;1590:14:0;957:9:59:o;2866:108:1:-;-1:-1:-1;;;;;;;;;;;2943:24:1;;;;138:14752:70;;1590:14:0;;;;2943:24:1;;;;;138:14752:70;;;;;;-1:-1:-1;2943:24:1;;;-1:-1:-1;;;;;;;;;;;2943:24:1;;;;;;;;2866:108;:::o;6764:749:58:-;3256:31:33;;3304:55;;-1:-1:-1;;;;;138:14752:70;;;;2626:1:33;;;;3256:31;;2626:1;138:14752:70;3256:31:33;;;;:::i;:::-;3304:55;;:::i;:::-;138:14752:70;;7289:21:58;;7285:222;;6764:749;;:::o;7285:222::-;3256:31:33;7390:30:58;;;;;;;;;:::i;:::-;138:14752:70;;;6764:749:58:o;138:14752:70:-;;;-1:-1:-1;;;138:14752:70;;3256:31:33;138:14752:70;;;;;;;;;;;;;;-1:-1:-1;;;138:14752:70;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13228:134:1:-;-1:-1:-1;;;;;;;;;;;13326:29:1;;;;138:14752:70;;2117:44:65;138:14752:70;;;1590:14:0;;;;;;;;13326:29:1;;;;;138:14752:70;;;;;;;;;;;;;;;;:::i;:::-;13326:29:1;;-1:-1:-1;;;;;;;;;;;13326:29:1;;;;;;;;13228:134;:::o;:::-;;-1:-1:-1;;;;;;;;;;;13326:29:1;;;;;138:14752:70;13326:29:1;138:14752:70;;1590:14:0;;;;;;;;13326:29:1;;;;;;:::i;6598:121:15:-;1222:159;138:14752:70;6669:42:15;6598:121;;138:14752:70;;6669:42:15;;;;;;;;;;;;;;138:14752:70;;;;;;:::i;6669:42:15:-;1222:159;138:14752:70;;1222:159:15;;591:42;1222:159;;;6598:121::o;7546:145::-;1590:14:0;7629:54:15;1222:159;7546:145;;;;138:14752:70;;7629:54:15;;;;;;;;;;138:14752:70;7629:54:15;;;1590:14:0;;;;;;:::i;:::-;;;;;138:14752:70;7629:54:15;138:14752:70;;7629:54:15;;;;;;:::i;15596:134:1:-;;-1:-1:-1;;;;;;;;;;;15694:29:1;;;;;138:14752:70;15694:29:1;138:14752:70;;1590:14:0;;;;;;;;15694:29:1;;;;;;:::i;138:14752:70:-;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;138:14752:70;;;;;;;;;;;;-1:-1:-1;;;;;138:14752:70;;;;;;;;;;;;-1:-1:-1;;;;;138:14752:70;;;;;;;-1:-1:-1;;138:14752:70;;;;;;;;;-1:-1:-1;138:14752:70;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;:::o;7846:150:15:-;138:14752:70;7935:53:15;1222:159;7846:150;;138:14752:70;7846:150:15;;138:14752:70;;7935:53:15;;;;;;;;;;138:14752:70;7935:53:15;;;138:14752:70;;;;;;:::i;:::-;;;;-1:-1:-1;;138:14752:70;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::o;953:236:8:-;138:14752:70;1052:14:8;138:14752:70;;:::i;:::-;1052:14:8;;138:14752:70;;;;;;1109:10:8;138:14752:70;;;;;;1109:10:8;1077:1;138:14752:70;;1077:1:8;138:14752:70;;1077:1:8;138:14752:70;;;;;;;;;;;;;;:::i;:::-;;;523:5:65;;;;;;;138:14752:70;523:5:65;;;;;;;138:14752:70;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;1077:1:8;11360:3;138:14752:70;;11346:12:8;;;;;11391:4;;1109:10;11391:4;;;:::i;:::-;138:14752:70;;11456:84:8;523:5:65;11456:84:8;;;;;138:14752:70;11331:13:8;;11346:12;-1:-1:-1;11346:12:8;-1:-1:-1;1094:26:8:o;138:14752:70:-;;;;;1109:10:8;138:14752:70;;;;;;-1:-1:-1;138:14752:70;;;;;;;;1048:135:8;138:14752:70;;;;;;1052:14:8;138:14752:70;:::i;953:236:8:-;1052:14;;;138:14752:70;;;;;:::i;:::-;1052:21:8;;1109:10;;;;138:14752:70;;;;;;;;;;;;;;;1077:1:8;138:14752:70;;1077:1:8;138:14752:70;;1077:1:8;138:14752:70;;;;;;;;;;;;;;:::i;:::-;;;523:5:65;;;;;;;138:14752:70;523:5:65;;;;;;;138:14752:70;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;1077:1:8;11360:3;138:14752:70;;11346:12:8;;;;;11391:4;;1109:10;11391:4;;;:::i;:::-;138:14752:70;;11456:84:8;523:5:65;11456:84:8;;;;;138:14752:70;11331:13:8;;138:14752:70;;;;;1109:10:8;138:14752:70;;;;;;-1:-1:-1;138:14752:70;;;;;;;;1048:135:8;138:14752:70;;;;;;;;;;;:::i;1251:343:8:-;-1:-1:-1;138:14752:70;1364:48:8;1381:9;138:14752:70;1590:14:0;;1364:48:8;138:14752:70;1392:19:8;27635:8:3;1392:19:8;:::i;:::-;138:14752:70;;1364:48:8;;;;;;138:14752:70;;;;;;;;;;;;;;;;;;;;;;;;1364:48:8;;138:14752:70;;1364:48:8;;;;;;:::i;:::-;1458:12;138:14752:70;1458:29:8;;;-1:-1:-1;;;;;138:14752:70;1458:29:8;;;;;:::i;:::-;1540:11;138:14752:70;;;;523:5:65;;;;;-1:-1:-1;;;;;523:5:65;;;;;-1:-1:-1;138:14752:70;;;1364:48:8;11010:13;;:29;1364:48;;;11010:29;1364:48;11010:29;;-1:-1:-1;11049:106:8;11069:7;;;;;;1563:24;;;;;1251:343;:::o;11078:3::-;11114:10;;;;;;;;:::i;:::-;138:14752:70;;;;;;;;;1364:48:8;138:14752:70;;1540:11:8;523:5:65;;;;;-1:-1:-1;;;;;;138:14752:70;523:5:65;;11142:1:8;523:5:65;;;;;;;;138:14752:70;;;11097:47:8;11078:3;138:14752:70;11054:13:8;;;;;11010:29;;;;1251:343;;-1:-1:-1;1381:9:8;1364:48;1381:9;;;138:14752:70;1590:14:0;;1364:48:8;138:14752:70;1392:19:8;;;:::i;1364:48::-;138:14752:70;1458:12:8;;138:14752:70;1458:29:8;;;-1:-1:-1;;;;;138:14752:70;1458:29:8;;1540:11;1458:29;;:::i;:::-;1540:11;;138:14752:70;523:5:65;;;;;-1:-1:-1;;;;;523:5:65;;;;;-1:-1:-1;138:14752:70;;;1364:48:8;11010:13;;:29;1364:48;;;11010:29;1364:48;11010:29;;-1:-1:-1;11049:106:8;11069:7;;;;;;1563:24;;;;;1251:343;:::o;11078:3::-;11114:10;;;;;;;;:::i;:::-;138:14752:70;;;;;;;;;1364:48:8;138:14752:70;;1540:11:8;523:5:65;;;;;-1:-1:-1;;;;;;138:14752:70;523:5:65;;11142:1:8;523:5:65;;;;;;;;138:14752:70;;;11097:47:8;11078:3;138:14752:70;11054:13:8;;;;;11010:29;;;;4421:582:33;;4593:8;;-1:-1:-1;138:14752:70;;5674:21:33;:17;;5846:142;;;;;;5670:385;6025:19;;;5694:1;6025:19;;5694:1;6025:19;4589:408;138:14752:70;;4841:22:33;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:33;4917:24;;;-1:-1:-1;;;;;138:14752:70;;;;4917:24:33;138:14752:70;;;4917:24:33;4841:49;4867:18;;;:23;4841:49;;643:59:8;;;;;;;;;;;;;;;:::i;:::-;138:14752:70;;;;;;;:::i;:::-;643:59:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;192::1;;643::8;;;;;;;;;;4249:2493;4361:12;138:14752:70;4397:9:8;138:14752:70;4438:11:8;138:14752:70;-1:-1:-1;;;;;138:14752:70;;;;;;1590:14:0;;4481:19:8;27635:8:3;4481:19:8;:::i;:::-;4551:15;138:14752:70;;;27635:8:3;138:14752:70;;;;;;;;;;;;;;;;;;;;;;4583:37:8;;;;;;;;;;:::i;:::-;138:14752:70;4573:48:8;;138:14752:70;;;;;4438:11:8;138:14752:70;;;4551:77:8;138:14752:70;;4547:255:8;;-1:-1:-1;;;;;;;;;;;4811:11:8;;;;138:14752:70;;-1:-1:-1;;;4811:11:8;;138:14752:70;;4361:12:8;138:14752:70;;-1:-1:-1;;;;;;;;;;;4811:11:8;;;;;;;;4249:2493;4857:16;;27635:8:3;4857:16:8;:::i;:::-;138:14752:70;;;;1590:14:0;;;4911:25:8;;;4361:12;4911:25;;138:14752:70;4911:25:8;;;;;-1:-1:-1;;;;;;;;;;;4911:25:8;;;;;;;;;;;4249:2493;-1:-1:-1;138:14752:70;;4951:12:8;;4984:74;138:14752:70;;12810:59:8;;;4984:74;;138:14752:70;4361:12:8;4984:74;;643:59;138:14752:70;4911:25:8;643:59;;138:14752:70;643:59:8;138:14752:70;;;643:59:8;;;;;;4984:74;4947:1461;5094:13;5127:3;138:14752:70;;5109:16:8;;;;;5178:8;138:14752:70;5178:8:8;;5165:22;5178:8;;:::i;:::-;138:14752:70;;;-1:-1:-1;;;5165:22:8;;-1:-1:-1;;;;;138:14752:70;;4361:12:8;5165:22;;138:14752:70;;;;;;;;;;;;;;;;;;5165:22:8;;;-1:-1:-1;;;;;;;;;;;5165:22:8;;;;;;;;;;;5127:3;5209:18;;;5205:114;;5127:3;5369:8;;;;:::i;:::-;138:14752:70;4361:12:8;138:14752:70;;;-1:-1:-1;;;1978:27:8;;-1:-1:-1;;;;;138:14752:70;;;4361:12:8;1978:27;;138:14752:70;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1978:27:8;;;;;;;;;;;5127:3;2057:16;;27635:8:3;2057:16:8;:::i;:::-;2102:65;;;:29;;:65;:29;;;-1:-1:-1;;1590:14:0;2102:65:8;-1:-1:-1;;;;;;;;;;;2177:37:8;;;;138:14752:70;;-1:-1:-1;;;2177:37:8;;-1:-1:-1;;;;;138:14752:70;;;;4361:12:8;2177:37;;138:14752:70;12810:59:8;;;138:14752:70;;;12810:59:8;;;138:14752:70;;;;;;12810:59:8;138:14752:70;;-1:-1:-1;;;;;;;;;;;2177:37:8;;;;;;;;;;;2102:65;2254:16;;;27635:8:3;2254:16:8;:::i;:::-;4361:12;138:14752:70;;;;-1:-1:-1;;;;;;138:14752:70;-1:-1:-1;;;;;;;;;;;2281:43:8;;;;138:14752:70;;-1:-1:-1;;;2281:43:8;;-1:-1:-1;;;;;138:14752:70;;;;4361:12:8;2281:43;;138:14752:70;12810:59:8;;;138:14752:70;;;;12810:59:8;;;138:14752:70;;;;;;12810:59:8;138:14752:70;;-1:-1:-1;;;;;;;;;;;2281:43:8;;;;;;;;;;;2102:65;2343:46;;;;;2102:65;5341:37;;;5337:92;;5447:50;;;138:14752:70;;5520:25:8;138:14752:70;;5516:256:8;;2102:65;12275:113;;;;;;;-1:-1:-1;;12275:113:8;;;5902:57;138:14752:70;;5998:29:8;;5994:84;;138:14752:70;;6319:8:8;138:14752:70;6101:89:8;643:59;138:14752:70;;6132:37:8;;138:14752:70;;;6132:37:8;;;138:14752:70;6132:37:8;;;;;:::i;:::-;138:14752:70;6122:48:8;;6180:8;;;;:::i;:::-;138:14752:70;;;;;;;643:59:8;138:14752:70;643:59:8;;138:14752:70;;643:59:8;;138:14752:70;643:59:8;;;138:14752:70;6101:89:8;6319:8;:::i;:::-;138:14752:70;;;;;643:59:8;138:14752:70;;;;;;-1:-1:-1;;;;;138:14752:70;;;;;4438:11:8;138:14752:70;;;;;;6302:58:8;;138:14752:70;;;;6302:58:8;;138:14752:70;;;643:59:8;6302:58;;643:59;138:14752:70;643:59:8;;138:14752:70;;;27635:8:3;138:14752:70;;;;;;;;;;;;;;;;6240:37:8;;;;;;;;;;:::i;:::-;138:14752:70;6230:48:8;;138:14752:70;;;;;;;;;643:59:8;;138:14752:70;;643:59:8;;;138:14752:70;4397:9:8;643:59;;;;;;138:14752:70;;;;;643:59:8;;;;;;;;5089:1309;138:14752:70;;;27635:8:3;138:14752:70;;;;;;;;;;;;;;;;6471:37:8;;;;;;;;;;:::i;:::-;138:14752:70;6461:48:8;;138:14752:70;;;;;4438:11:8;138:14752:70;;;6439:77:8;138:14752:70;;643:59:8;;;138:14752:70;6664:15:8;138:14752:70;;27635:8:3;138:14752:70;;;;;;;;;;6696:37:8;;138:14752:70;;;;;;6696:37:8;;;138:14752:70;6696:37:8;;;;;:::i;:::-;138:14752:70;6686:48:8;;138:14752:70;;;;;4249:2493:8;:::o;643:59::-;138:14752:70;;-1:-1:-1;;;643:59:8;;138:14752:70;4361:12:8;643:59;;;;4911:25;643:59;;138:14752:70;643:59:8;138:14752:70;;;643:59:8;-1:-1:-1;;;643:59:8;;;;;;;5994:84;6051:8;;;;138:14752:70;6051:8:8;5094:13;138:14752:70;5094:13:8;;5516:256;5654:8;;3216:27;5654:8;;;;;;:::i;:::-;138:14752:70;4361:12:8;138:14752:70;;;-1:-1:-1;;;3216:27:8;;-1:-1:-1;;;;;138:14752:70;;;4361:12:8;3216:27;;138:14752:70;;;;;;;;;;;;;;;;;;;;;;3216:27:8;;;-1:-1:-1;;;;;;;;;;;3216:27:8;;;;;;;;;;;5516:256;3293:28;;;27635:8:3;3293:28:8;:::i;:::-;3372:29;;;;;27635:8:3;3372:29:8;:::i;:::-;4361:12;138:14752:70;;;;;;-1:-1:-1;;;;;138:14752:70;-1:-1:-1;;;;;;;;;;;3497:43:8;;;;138:14752:70;;-1:-1:-1;;;3497:43:8;;-1:-1:-1;;;;;138:14752:70;;;;4361:12:8;3497:43;;138:14752:70;12810:59:8;;;138:14752:70;;;;12810:59:8;;;138:14752:70;;;;;;12810:59:8;138:14752:70;;-1:-1:-1;;;;;;;;;;;3497:43:8;;;;;;;;;;;5516:256;3558:23;;;;;5516:256;5601:62;;5689:6;5516:256;5685:69;5723:8;;;;;138:14752:70;5723:8:8;;;3558:23;;-1:-1:-1;3558:23:8;;;3497:43;;;;;:::i;:::-;138:14752:70;;3497:43:8;;;;138:14752:70;;;;3497:43:8;138:14752:70;;1590:14:0;138:14752:70;;1590:14:0;;;;3497:43:8;138:14752:70;;;3216:27:8;;;;138:14752:70;3216:27:8;;;;;;;;;1590:14:0;3216:27:8;;;:::i;:::-;;;1590:14:0;;;;;3216:27:8;;;;;;;-1:-1:-1;3216:27:8;;5337:92;5402:8;;138:14752:70;5402:8:8;;;2343:46;2355:33;;;-1:-1:-1;2343:46:8;;;;2281:43;;;;;:::i;:::-;138:14752:70;;2281:43:8;;;;;138:14752:70;;1590:14:0;138:14752:70;;1590:14:0;;;;2281:43:8;138:14752:70;;;2177:37:8;;;;;:::i;:::-;138:14752:70;;2177:37:8;;;;2102:65;;;;;1978:27;;;138:14752:70;1978:27:8;;;;;;;;;1590:14:0;1978:27:8;;;:::i;:::-;;;1590:14:0;;;;;1978:27:8;;;;;;-1:-1:-1;1978:27:8;;5205:114;5256:44;;5290:8;;;;:::i;:::-;138:14752:70;;;;-1:-1:-1;;;;;138:14752:70;;;;;;;;;;;;;;;;;;;5256:44:8;;;;5205:114;;5165:22;;;;138:14752:70;5165:22:8;;;;;;;;;1590:14:0;5165:22:8;;;:::i;:::-;;;1590:14:0;;;;;5165:22:8;;;;;;;-1:-1:-1;5165:22:8;;5109:16;;;;;;4911:25;;;;;;;;;;;;:::i;:::-;;;138:14752:70;643:59:8;;;;;;;;-1:-1:-1;;;;;643:59:8;;;;;;;;;;:::i;:::-;;138:14752:70;643:59:8;;;;-1:-1:-1;;;;;643:59:8;;;;;;;;;:::i;:::-;;4911:25;;;643:59;138:14752:70;;;4811:11:8;;;;;138:14752:70;4811:11:8;;:::i;:::-;138:14752:70;4811:11:8;;;;4547:255;4720:15;;;;;138:14752:70;;27635:8:3;138:14752:70;;;;;;;;;;4752:37:8;;138:14752:70;;;;;;4752:37:8;;;138:14752:70;4752:37:8;;;;;:::i;:::-;138:14752:70;4742:48:8;;138:14752:70;;;;;;;4713:78:8;:::o;11586:239::-;-1:-1:-1;;;;;1590:14:0;;11652:12:8;138:14752:70;1590:14:0;11652:12:8;138:14752:70;;;11681:9:8;138:14752:70;;11681:9:8;138:14752:70;11707:10:8;138:14752:70;11645:19:8;11707:10;138:14752:70;;;;11586:239:8;1590:14:0;11645:19:8;11734:11;1590:14:0;138:14752:70;;11762:25:8;138:14752:70;;11762:25:8;138:14752:70;;11804:14:8;138:14752:70;;:::i;:::-;;;;11586:239:8;:::o;138:14752:70:-;;;;;;;;;11645:19:8;11804:14;138:14752:70;11586:239:8:o;138:14752:70:-;11804:14:8;11645:19;138:14752:70;;;;;;;;1590:14:0;;;;;;138:14752:70;;11804:14:8;11645:19;138:14752:70;11645:19:8;138:14752:70;;;;11804:14:8;138:14752:70;;2270:110:1:o;1590:14:0:-;;;;;;;;138:14752:70;11707:10:8;11645:19;138:14752:70;;;;;;;;;;;;;;;;11645:19:8;1590:14:0;;11707:10:8;138:14752:70;;;2560:514:8;;;2695:1;2698:12;2707:3;2698:12;;;;3050:17;;;;2695:1;3050:17;2695:1;2560:514;:::o;2712:8::-;138:14752:70;2771:3:8;138:14752:70;2771:3:8;138:14752:70;;;;2824:12:8;;;138:14752:70;;1590:14:0;;;;-1:-1:-1;;;;;138:14752:70;-1:-1:-1;;;;;;;;;;;2815:49:8;;;;138:14752:70;;-1:-1:-1;;;2815:49:8;;-1:-1:-1;;;;;138:14752:70;;;;2824:12:8;2815:49;;138:14752:70;12810:59:8;;;138:14752:70;;;12810:59:8;;;138:14752:70;;;;-1:-1:-1;138:14752:70;12810:59:8;138:14752:70;-1:-1:-1;;;;;;;;;;;;2815:49:8;;;;;;;;2712:8;2910:16;;;;:::i;:::-;2945:30;;;2712:8;2941:90;;;138:14752:70;;2678:18:8;;2941:90;2995:21;;;138:14752:70;2995:21:8;;:::o;2945:30::-;2957:17;;;;2945:30;;;2815:49;2695:1;2815:49;;;:::i;:::-;;;;2560:514;;;4551:10;2698:12;2707:3;2698:12;;;;3050:17;;;;4551:10;3050:17;4551:10;2560:514;:::o;2712:8::-;2824:12;;;138:14752:70;;1590:14:0;;;-1:-1:-1;;;;;138:14752:70;-1:-1:-1;;;;;;;;;;;2815:49:8;;;;138:14752:70;;-1:-1:-1;;;2815:49:8;;-1:-1:-1;;;;;138:14752:70;;;;2824:12:8;2815:49;;138:14752:70;12810:59:8;;;138:14752:70;;;12810:59:8;;;138:14752:70;;;;-1:-1:-1;138:14752:70;12810:59:8;138:14752:70;-1:-1:-1;;;;;;;;;;;;2815:49:8;;;;;;;;2712:8;2910:16;;;;:::i;:::-;2945:30;;;2712:8;2941:90;;;138:14752:70;;2678:18:8;;2945:30;2957:17;;;;2945:30;;;2815:49;4551:10;2815:49;;;:::i;:::-;;;","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","fractionToInt((uint256,uint256))":"08c41745","runPoolBehaviourTest(address,bytes32[])":"d170c3cc","setUp()":"0a9254e4","stringPctgs(uint256)":"a00872f1","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testGetCapabilitiesCurveSwap(bytes32,address,address)":"1b928113","testGetLimitsCurveCryptoSwap()":"3584c58c","testGetLimitsCurveStableSwap()":"59f2cba1","testGetTokensCurveCryptoSwap()":"d4bdd179","testGetTokensCurveStableSwap()":"ad74a869","testSwapFuzzCurveCryptoSwap(uint256)":"91e2f3bf","testSwapFuzzCurveCryptoSwapUsingEth(uint256)":"642b929d","testSwapFuzzCurveStEthPool(uint256,bool)":"99dd5ff8","testSwapFuzzCurveStablePoolEthWithEth(uint256)":"2b23bee7","testSwapFuzzCurveStablePoolEthWithToken(uint256)":"444bb9ce","testSwapFuzzCurveStableSwap(uint256)":"27e10f5b","testSwapSellIncreasingSwapsCurve()":"3dbde0cc","testSwapsForAdditionalPools()":"21ce99d1"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"LimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"Unavailable\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"fsig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keysHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"SlotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"WARNING_UninitedSlot\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction\",\"name\":\"price\",\"type\":\"tuple\"}],\"name\":\"fractionToInt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISwapAdapter\",\"name\":\"adapter\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"poolIds\",\"type\":\"bytes32[]\"}],\"name\":\"runPoolBehaviourTest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"stringPctgs\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"pair\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"t0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"t1\",\"type\":\"address\"}],\"name\":\"testGetCapabilitiesCurveSwap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetLimitsCurveCryptoSwap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetLimitsCurveStableSwap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetTokensCurveCryptoSwap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetTokensCurveStableSwap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"}],\"name\":\"testSwapFuzzCurveCryptoSwap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"}],\"name\":\"testSwapFuzzCurveCryptoSwapUsingEth\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"invertedSides\",\"type\":\"bool\"}],\"name\":\"testSwapFuzzCurveStEthPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"}],\"name\":\"testSwapFuzzCurveStablePoolEthWithEth\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"}],\"name\":\"testSwapFuzzCurveStablePoolEthWithToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"}],\"name\":\"testSwapFuzzCurveStableSwap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSwapSellIncreasingSwapsCurve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSwapsForAdditionalPools\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"LimitExceeded(uint256)\":[{\"details\":\"The LimitExceeded error is thrown when a limit has been exceeded. E.g. the specified amount can't be traded safely.\"}],\"NotImplemented(string)\":[{\"details\":\"The NotImplemented error is thrown when a function is not implemented.\"}],\"Unavailable(string)\":[{\"details\":\"The Unavailable error is thrown when a pool or swap is not available for unexpected reason. E.g. it was paused due to a bug.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/CurveAdapter.t.sol\":\"CurveAdapterTest\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b\",\"dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54\",\"dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678\",\"dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdToml.sol\":{\"keccak256\":\"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d\",\"dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e\",\"dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a\",\"dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12\",\"dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/curve/CurveAdapter.sol\":{\"keccak256\":\"0x7b4cb321e3b307b8a0b538c098b31f0db01145f10f70377f90180fe0d400262f\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://925c32c4b0bd6620d2d9a0710c172a4a38a4a7862c8fc42c0676c0b999d4d913\",\"dweb:/ipfs/QmU23Jr4iVTH4mECJYxLbL3zX484T7J4t4aMRFvtochBmi\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/libraries/EfficientERC20.sol\":{\"keccak256\":\"0x825d7f6aa98465b3c5b5a08d24cadfbb0a06f44693beec4e00ad2fe2824b4ef0\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2a5b53d7d634f50f27a1e45ce9136a054f1f19efc3dcfc1f85c8b1bbeac735fa\",\"dweb:/ipfs/QmQSeQyF86HLRnvKgQogia8W2eoWzncG2m1GkYMnp84DJZ\"]},\"src/libraries/FractionMath.sol\":{\"keccak256\":\"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c\",\"dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr\"]},\"test/AdapterTest.sol\":{\"keccak256\":\"0x56850be2bb3898eee065c3d77aadb6d181ee789da32f30b1d415d5521397fa43\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://8ca34143db16aa27c42ee3f8566ee466095d4aedcc4ea1c7726aa9c593f4fbd0\",\"dweb:/ipfs/QmWBTLXZKbTuT5kVpAbyGCxKRdhsmzWRPZPiTqZMg9BXhd\"]},\"test/CurveAdapter.t.sol\":{\"keccak256\":\"0x63aaa434cf4995c0813d74643ae00eb1d9dbbd1a38d501f6bfe406f491803464\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f7ed46eb61adabd20a491d72d2d465e176a82a2264398f79088a877ba3b652b\",\"dweb:/ipfs/QmRi5CN1J1rdbcgat7xg1bo2T2y64b6hSoh7y6ApCz8DTk\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"type":"error","name":"LimitExceeded"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"NotImplemented"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"Unavailable"},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"bytes4","name":"fsig","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"keysHash","type":"bytes32","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"SlotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"WARNING_UninitedSlot","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct ISwapAdapterTypes.Fraction","name":"price","type":"tuple","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}],"stateMutability":"pure","type":"function","name":"fractionToInt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"contract ISwapAdapter","name":"adapter","type":"address"},{"internalType":"bytes32[]","name":"poolIds","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"runPoolBehaviourTest"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"stringPctgs","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[{"internalType":"bytes32","name":"pair","type":"bytes32"},{"internalType":"address","name":"t0","type":"address"},{"internalType":"address","name":"t1","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"testGetCapabilitiesCurveSwap"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testGetLimitsCurveCryptoSwap"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testGetLimitsCurveStableSwap"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testGetTokensCurveCryptoSwap"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testGetTokensCurveStableSwap"},{"inputs":[{"internalType":"uint256","name":"specifiedAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testSwapFuzzCurveCryptoSwap"},{"inputs":[{"internalType":"uint256","name":"specifiedAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testSwapFuzzCurveCryptoSwapUsingEth"},{"inputs":[{"internalType":"uint256","name":"specifiedAmount","type":"uint256"},{"internalType":"bool","name":"invertedSides","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"testSwapFuzzCurveStEthPool"},{"inputs":[{"internalType":"uint256","name":"specifiedAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testSwapFuzzCurveStablePoolEthWithEth"},{"inputs":[{"internalType":"uint256","name":"specifiedAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testSwapFuzzCurveStablePoolEthWithToken"},{"inputs":[{"internalType":"uint256","name":"specifiedAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testSwapFuzzCurveStableSwap"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testSwapSellIncreasingSwapsCurve"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testSwapsForAdditionalPools"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/CurveAdapter.t.sol":"CurveAdapterTest"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef","urls":["bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b","dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d","urls":["bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54","dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3","urls":["bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678","dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdToml.sol":{"keccak256":"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab","urls":["bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d","dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe","urls":["bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e","dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456","urls":["bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a","dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb","urls":["bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12","dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/curve/CurveAdapter.sol":{"keccak256":"0x7b4cb321e3b307b8a0b538c098b31f0db01145f10f70377f90180fe0d400262f","urls":["bzz-raw://925c32c4b0bd6620d2d9a0710c172a4a38a4a7862c8fc42c0676c0b999d4d913","dweb:/ipfs/QmU23Jr4iVTH4mECJYxLbL3zX484T7J4t4aMRFvtochBmi"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/libraries/EfficientERC20.sol":{"keccak256":"0x825d7f6aa98465b3c5b5a08d24cadfbb0a06f44693beec4e00ad2fe2824b4ef0","urls":["bzz-raw://2a5b53d7d634f50f27a1e45ce9136a054f1f19efc3dcfc1f85c8b1bbeac735fa","dweb:/ipfs/QmQSeQyF86HLRnvKgQogia8W2eoWzncG2m1GkYMnp84DJZ"],"license":"UNLICENSED"},"src/libraries/FractionMath.sol":{"keccak256":"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735","urls":["bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c","dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr"],"license":"AGPL-3.0-or-later"},"test/AdapterTest.sol":{"keccak256":"0x56850be2bb3898eee065c3d77aadb6d181ee789da32f30b1d415d5521397fa43","urls":["bzz-raw://8ca34143db16aa27c42ee3f8566ee466095d4aedcc4ea1c7726aa9c593f4fbd0","dweb:/ipfs/QmWBTLXZKbTuT5kVpAbyGCxKRdhsmzWRPZPiTqZMg9BXhd"],"license":"AGPL-3.0-or-later"},"test/CurveAdapter.t.sol":{"keccak256":"0x63aaa434cf4995c0813d74643ae00eb1d9dbbd1a38d501f6bfe406f491803464","urls":["bzz-raw://1f7ed46eb61adabd20a491d72d2d465e176a82a2264398f79088a877ba3b652b","dweb:/ipfs/QmRi5CN1J1rdbcgat7xg1bo2T2y64b6hSoh7y6ApCz8DTk"],"license":"AGPL-3.0-or-later"}},"version":1},"id":70} \ No newline at end of file diff --git a/evm/out/CurveAdapter.t.sol/IwstETH.json b/evm/out/CurveAdapter.t.sol/IwstETH.json deleted file mode 100644 index b81b61d..0000000 --- a/evm/out/CurveAdapter.t.sol/IwstETH.json +++ /dev/null @@ -1 +0,0 @@ -{"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":"getStETHByWstETH","inputs":[{"name":"_wstETHAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"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":"function","name":"unwrap","inputs":[{"name":"_wstETHAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"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}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getStETHByWstETH(uint256)":"bb2952fc","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","unwrap(uint256)":"de0e9a3e"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":[{\"internalType\":\"uint256\",\"name\":\"_wstETHAmount\",\"type\":\"uint256\"}],\"name\":\"getStETHByWstETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_wstETHAmount\",\"type\":\"uint256\"}],\"name\":\"unwrap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"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\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/CurveAdapter.t.sol\":\"IwstETH\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b\",\"dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54\",\"dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678\",\"dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdToml.sol\":{\"keccak256\":\"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d\",\"dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e\",\"dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a\",\"dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12\",\"dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/curve/CurveAdapter.sol\":{\"keccak256\":\"0x7b4cb321e3b307b8a0b538c098b31f0db01145f10f70377f90180fe0d400262f\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://925c32c4b0bd6620d2d9a0710c172a4a38a4a7862c8fc42c0676c0b999d4d913\",\"dweb:/ipfs/QmU23Jr4iVTH4mECJYxLbL3zX484T7J4t4aMRFvtochBmi\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/libraries/EfficientERC20.sol\":{\"keccak256\":\"0x825d7f6aa98465b3c5b5a08d24cadfbb0a06f44693beec4e00ad2fe2824b4ef0\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2a5b53d7d634f50f27a1e45ce9136a054f1f19efc3dcfc1f85c8b1bbeac735fa\",\"dweb:/ipfs/QmQSeQyF86HLRnvKgQogia8W2eoWzncG2m1GkYMnp84DJZ\"]},\"src/libraries/FractionMath.sol\":{\"keccak256\":\"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c\",\"dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr\"]},\"test/AdapterTest.sol\":{\"keccak256\":\"0x56850be2bb3898eee065c3d77aadb6d181ee789da32f30b1d415d5521397fa43\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://8ca34143db16aa27c42ee3f8566ee466095d4aedcc4ea1c7726aa9c593f4fbd0\",\"dweb:/ipfs/QmWBTLXZKbTuT5kVpAbyGCxKRdhsmzWRPZPiTqZMg9BXhd\"]},\"test/CurveAdapter.t.sol\":{\"keccak256\":\"0x63aaa434cf4995c0813d74643ae00eb1d9dbbd1a38d501f6bfe406f491803464\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f7ed46eb61adabd20a491d72d2d465e176a82a2264398f79088a877ba3b652b\",\"dweb:/ipfs/QmRi5CN1J1rdbcgat7xg1bo2T2y64b6hSoh7y6ApCz8DTk\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"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":[{"internalType":"uint256","name":"_wstETHAmount","type":"uint256"}],"stateMutability":"view","type":"function","name":"getStETHByWstETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"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"}]},{"inputs":[{"internalType":"uint256","name":"_wstETHAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unwrap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"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":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/CurveAdapter.t.sol":"IwstETH"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef","urls":["bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b","dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d","urls":["bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54","dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3","urls":["bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678","dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdToml.sol":{"keccak256":"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab","urls":["bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d","dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe","urls":["bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e","dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456","urls":["bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a","dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb","urls":["bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12","dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/curve/CurveAdapter.sol":{"keccak256":"0x7b4cb321e3b307b8a0b538c098b31f0db01145f10f70377f90180fe0d400262f","urls":["bzz-raw://925c32c4b0bd6620d2d9a0710c172a4a38a4a7862c8fc42c0676c0b999d4d913","dweb:/ipfs/QmU23Jr4iVTH4mECJYxLbL3zX484T7J4t4aMRFvtochBmi"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/libraries/EfficientERC20.sol":{"keccak256":"0x825d7f6aa98465b3c5b5a08d24cadfbb0a06f44693beec4e00ad2fe2824b4ef0","urls":["bzz-raw://2a5b53d7d634f50f27a1e45ce9136a054f1f19efc3dcfc1f85c8b1bbeac735fa","dweb:/ipfs/QmQSeQyF86HLRnvKgQogia8W2eoWzncG2m1GkYMnp84DJZ"],"license":"UNLICENSED"},"src/libraries/FractionMath.sol":{"keccak256":"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735","urls":["bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c","dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr"],"license":"AGPL-3.0-or-later"},"test/AdapterTest.sol":{"keccak256":"0x56850be2bb3898eee065c3d77aadb6d181ee789da32f30b1d415d5521397fa43","urls":["bzz-raw://8ca34143db16aa27c42ee3f8566ee466095d4aedcc4ea1c7726aa9c593f4fbd0","dweb:/ipfs/QmWBTLXZKbTuT5kVpAbyGCxKRdhsmzWRPZPiTqZMg9BXhd"],"license":"AGPL-3.0-or-later"},"test/CurveAdapter.t.sol":{"keccak256":"0x63aaa434cf4995c0813d74643ae00eb1d9dbbd1a38d501f6bfe406f491803464","urls":["bzz-raw://1f7ed46eb61adabd20a491d72d2d465e176a82a2264398f79088a877ba3b652b","dweb:/ipfs/QmRi5CN1J1rdbcgat7xg1bo2T2y64b6hSoh7y6ApCz8DTk"],"license":"AGPL-3.0-or-later"}},"version":1},"id":70} \ No newline at end of file diff --git a/evm/out/CustomBytesAppend.sol/CustomBytesAppend.json b/evm/out/CustomBytesAppend.sol/CustomBytesAppend.json deleted file mode 100644 index 968a51d..0000000 --- a/evm/out/CustomBytesAppend.sol/CustomBytesAppend.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"extractAddress","inputs":[{"name":"input","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"extractedAddress","type":"address","internalType":"address"}],"stateMutability":"pure"}],"bytecode":{"object":"0x60808060405234601957610464908161001e823930815050f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c63637083f914610024575f80fd5b60203660031901126101095760043560a05260206080526100456040610121565b610056610050610187565b516102ff565b60208151910120610065610187565b60208151910120145f146100ad576100a961008f61008a610084610187565b5161038c565b6103e0565b6040516001600160a01b0390911681529081906020820190565b0390f35b6100b56101c1565b156100cd576100a96100c861008a610344565b61008f565b60405162461bcd60e51b8152602060048201526014602482015273125b9d985b1a59081a5b9c1d5d08199bdc9b585d60621b6044820152606490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b601f80199101166080016080811067ffffffffffffffff82111761014457604052565b61010d565b90601f8019910116810190811067ffffffffffffffff82111761014457604052565b67ffffffffffffffff811161014457601f01601f191660200190565b60405190610196604083610149565b60088252675f435553544f4d5f60c01b6020830152565b634e487b7160e01b5f52601160045260245ffd5b608051906101cd610187565b518203918211610296576101df610187565b51608051818401908185116102965710610261576101fc816102a8565b905f5b818110610226575050805160209091012090915061021b610187565b602081519101201490565b8061024e6102406102396001948961029b565b60806102da565b516001600160f81b03191690565b5f1a61025a82866102da565b53016101ff565b60405162461bcd60e51b815260206004820152600d60248201526c496e76616c696420736c69636560981b6044820152606490fd5b6101ad565b9190820180921161029657565b906102b28261016b565b6102bf6040519182610149565b82815280926102d0601f199161016b565b0190602036910137565b9081518110156102eb570160200190565b634e487b7160e01b5f52603260045260245ffd5b806080511061026157610311816102a8565b905f5b81811061032057505090565b8061033161024060019360806102da565b5f1a61033d82866102da565b5301610314565b6014608051106102615761035860146102a8565b5f5b60148110610366575090565b806103796102406102396001945f61029b565b5f1a61038582856102da565b530161035a565b9060805160148301908184116102965710610261576103ab60146102a8565b5f5b601481106103ba57509150565b806103cd6102406102396001948861029b565b5f1a6103d982856102da565b53016103ad565b60148151036103f0576014015190565b60405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840c2c8c8e4cae6e640d8cadccee8d60531b6044820152606490fdfea264697066735822122003145e20d541a8018273b67ee72c5ec7f33640598b59e53e4333b93768bec03c64736f6c634300081b0033","sourceMap":"57:3733:57:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c63637083f914610024575f80fd5b60203660031901126101095760043560a05260206080526100456040610121565b610056610050610187565b516102ff565b60208151910120610065610187565b60208151910120145f146100ad576100a961008f61008a610084610187565b5161038c565b6103e0565b6040516001600160a01b0390911681529081906020820190565b0390f35b6100b56101c1565b156100cd576100a96100c861008a610344565b61008f565b60405162461bcd60e51b8152602060048201526014602482015273125b9d985b1a59081a5b9c1d5d08199bdc9b585d60621b6044820152606490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b601f80199101166080016080811067ffffffffffffffff82111761014457604052565b61010d565b90601f8019910116810190811067ffffffffffffffff82111761014457604052565b67ffffffffffffffff811161014457601f01601f191660200190565b60405190610196604083610149565b60088252675f435553544f4d5f60c01b6020830152565b634e487b7160e01b5f52601160045260245ffd5b608051906101cd610187565b518203918211610296576101df610187565b51608051818401908185116102965710610261576101fc816102a8565b905f5b818110610226575050805160209091012090915061021b610187565b602081519101201490565b8061024e6102406102396001948961029b565b60806102da565b516001600160f81b03191690565b5f1a61025a82866102da565b53016101ff565b60405162461bcd60e51b815260206004820152600d60248201526c496e76616c696420736c69636560981b6044820152606490fd5b6101ad565b9190820180921161029657565b906102b28261016b565b6102bf6040519182610149565b82815280926102d0601f199161016b565b0190602036910137565b9081518110156102eb570160200190565b634e487b7160e01b5f52603260045260245ffd5b806080511061026157610311816102a8565b905f5b81811061032057505090565b8061033161024060019360806102da565b5f1a61033d82866102da565b5301610314565b6014608051106102615761035860146102a8565b5f5b60148110610366575090565b806103796102406102396001945f61029b565b5f1a61038582856102da565b530161035a565b9060805160148301908184116102965710610261576103ab60146102a8565b5f5b601481106103ba57509150565b806103cd6102406102396001948861029b565b5f1a6103d982856102da565b53016103ad565b60148151036103f0576014015190565b60405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840c2c8c8e4cae6e640d8cadccee8d60531b6044820152606490fdfea264697066735822122003145e20d541a8018273b67ee72c5ec7f33640598b59e53e4333b93768bec03c64736f6c634300081b0033","sourceMap":"57:3733:57:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;57:3733:57;;;;;;723:23;57:3733;;;723:23;;57:3733;723:23;:::i;:::-;1802:36;57:3733;;:::i;:::-;188:10;1802:36;:::i;:::-;57:3733;188:10;;57:3733;;1792:47;57:3733;;:::i;:::-;;188:10;;57:3733;;1855:24;1792:87;813:599;1855:24;;;57:3733;970:59;985:43;57:3733;;:::i;:::-;188:10;985:43;:::i;:::-;970:59;:::i;:::-;57:3733;;-1:-1:-1;;;;;57:3733:57;;;;;;;;;;;;;;;;;813:599;1114:21;;:::i;:::-;;;;57:3733;1240:40;1255:24;;:::i;1240:40::-;813:599;;1110:302;57:3733;;-1:-1:-1;;;1371:30:57;;57:3733;;1371:30;;57:3733;;;;;;-1:-1:-1;;;57:3733:57;;;;;;1371:30;57:3733;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;57:3733:57;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;57:3733:57;;;;:::o;:::-;;;;;;;;;;;;2073:353;57:3733;188:10;57:3733;;;:::i;:::-;188:10;57:3733;;;;;;;;;:::i;:::-;188:10;57:3733;188:10;57:3733;;;;;;;;;2891:29;57:3733;;3031:17;;;:::i;:::-;3063:13;-1:-1:-1;3078:10:57;;;;;;-1:-1:-1;;188:10:57;;57:3733;;;;2259:132;3156:13;;-1:-1:-1;57:3733:57;;:::i;:::-;;188:10;;57:3733;;2395:24;2259:160;2073:353;:::o;3090:3::-;3126:9;3121:15;;3126:9;57:3733;3126:9;;;:::i;:::-;57:3733;3121:15;:::i;:::-;57:3733;-1:-1:-1;;;;;;57:3733:57;;;3121:15;-1:-1:-1;3109:27:57;;;;;:::i;:::-;;57:3733;3063:13;;57:3733;;;-1:-1:-1;;;57:3733:57;;;;;;;;;;;;-1:-1:-1;;;57:3733:57;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;188:10;;57:3733;;;;;;;;;:::o;:::-;;;;;;;;;;;;2665:511;188:10;57:3733;188:10;2891:29;57:3733;;3031:17;;;:::i;:::-;3063:13;-1:-1:-1;3078:10:57;;;;;;3156:13;;2665:511;:::o;3090:3::-;57:3733;3121:15;;57:3733;3121:15;57:3733;3121:15;:::i;:::-;-1:-1:-1;3109:27:57;;;;;:::i;:::-;;57:3733;3063:13;;2665:511;1276:2;57:3733;188:10;2891:29;57:3733;;3031:17;1276:2;3031:17;:::i;:::-;-1:-1:-1;3078:10:57;1276:2;3078:10;;;;3156:13;2665:511;:::o;3090:3::-;3126:9;3121:15;;3126:9;57:3733;3126:9;-1:-1:-1;3126:9:57;:::i;3121:15::-;-1:-1:-1;3109:27:57;;;;;:::i;:::-;;57:3733;3063:13;;2665:511;;57:3733;188:10;1025:2;57:3733;;;;;;;;2891:29;57:3733;;3031:17;1025:2;3031:17;:::i;:::-;-1:-1:-1;3078:10:57;1025:2;3078:10;;;;-1:-1:-1;3156:13:57;-1:-1:-1;2665:511:57:o;3090:3::-;3126:9;3121:15;;3126:9;57:3733;3126:9;;;:::i;3121:15::-;-1:-1:-1;3109:27:57;;;;;:::i;:::-;;57:3733;3063:13;;3366:422;3603:2;188:10;;3588:17;57:3733;;3603:2;3721:61;;3366:422;:::o;57:3733::-;;;-1:-1:-1;;;57:3733:57;;;;;;;;;;;;-1:-1:-1;;;57:3733:57;;;;;;","linkReferences":{}},"methodIdentifiers":{"extractAddress(bytes32)":"637083f9"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"input\",\"type\":\"bytes32\"}],\"name\":\"extractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"extractedAddress\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"extractAddress(bytes32)\":{\"details\":\"Extracts an address from a bytes32 input, assuming it is either prepended or appended with `_CUSTOM_`.\",\"params\":{\"input\":\"The bytes32 input containing the address and custom prefix/suffix.\"},\"returns\":{\"extractedAddress\":\"The extracted address.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/CustomBytesAppend.sol\":\"CustomBytesAppend\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/libraries/CustomBytesAppend.sol\":{\"keccak256\":\"0x744de639d3f68d46b09e6f5f81ac003f92616f270007cc28778538894723276d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9278b5ff65908b5377e7b875151204ca6de587091c7bdd9f2f4f7d75b3d4d9e5\",\"dweb:/ipfs/QmPopj1aEWXtPg6CwKKAeEWBg1FBydPpQUM7VaFSvKvPU5\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes32","name":"input","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"extractAddress","outputs":[{"internalType":"address","name":"extractedAddress","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"extractAddress(bytes32)":{"details":"Extracts an address from a bytes32 input, assuming it is either prepended or appended with `_CUSTOM_`.","params":{"input":"The bytes32 input containing the address and custom prefix/suffix."},"returns":{"extractedAddress":"The extracted address."}}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/libraries/CustomBytesAppend.sol":"CustomBytesAppend"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/libraries/CustomBytesAppend.sol":{"keccak256":"0x744de639d3f68d46b09e6f5f81ac003f92616f270007cc28778538894723276d","urls":["bzz-raw://9278b5ff65908b5377e7b875151204ca6de587091c7bdd9f2f4f7d75b3d4d9e5","dweb:/ipfs/QmPopj1aEWXtPg6CwKKAeEWBg1FBydPpQUM7VaFSvKvPU5"],"license":"MIT"}},"version":1},"id":57} \ No newline at end of file diff --git a/evm/out/ERC20.sol/ERC20.json b/evm/out/ERC20.sol/ERC20.json deleted file mode 100644 index c46bc71..0000000 --- a/evm/out/ERC20.sol/ERC20.json +++ /dev/null @@ -1 +0,0 @@ -{"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.27+commit.40a35a09\"},\"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\":\"See {IERC20-allowance}.\"},\"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\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. All two of these 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\":\"See {IERC20-totalSupply}.\"},\"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\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12\",\"dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"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":"See {IERC20-allowance}."},"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":"See {IERC20-balanceOf}."},"constructor":{"details":"Sets the values for {name} and {symbol}. All two of these 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":"See {IERC20-totalSupply}."},"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/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":"ERC20"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb","urls":["bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12","dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"}},"version":1},"id":28} \ No newline at end of file diff --git a/evm/out/ERC20/IERC20.sol/IERC20.json b/evm/out/ERC20/IERC20.sol/IERC20.json deleted file mode 100644 index 624e3ab..0000000 --- a/evm/out/ERC20/IERC20.sol/IERC20.json +++ /dev/null @@ -1 +0,0 @@ -{"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":"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}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"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\":\"Interface of the ERC-20 standard as defined in the ERC.\",\"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\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"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":"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":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":"IERC20"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"}},"version":1},"id":29} \ No newline at end of file diff --git a/evm/out/ERC4626.sol/ERC4626.json b/evm/out/ERC4626.sol/ERC4626.json deleted file mode 100644 index 3f937c6..0000000 --- a/evm/out/ERC4626.sol/ERC4626.json +++ /dev/null @@ -1 +0,0 @@ -{"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":"asset","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"convertToAssets","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"convertToShares","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"maxDeposit","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxMint","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxRedeem","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxWithdraw","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"previewDeposit","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"previewMint","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"previewRedeem","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"previewWithdraw","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"redeem","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalAssets","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"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":"function","name":"withdraw","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"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":"Deposit","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"assets","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"shares","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":"event","name":"Withdraw","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"assets","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"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"}]},{"type":"error","name":"ERC4626ExceededMaxDeposit","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"assets","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC4626ExceededMaxMint","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC4626ExceededMaxRedeem","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC4626ExceededMaxWithdraw","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"assets","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","asset()":"38d52e0f","balanceOf(address)":"70a08231","convertToAssets(uint256)":"07a2d13a","convertToShares(uint256)":"c6e6f592","decimals()":"313ce567","deposit(uint256,address)":"6e553f65","maxDeposit(address)":"402d267d","maxMint(address)":"c63d75b6","maxRedeem(address)":"d905777e","maxWithdraw(address)":"ce96cb77","mint(uint256,address)":"94bf804d","name()":"06fdde03","previewDeposit(uint256)":"ef8b30f7","previewMint(uint256)":"b3d7f6b9","previewRedeem(uint256)":"4cdad506","previewWithdraw(uint256)":"0a28a477","redeem(uint256,address,address)":"ba087652","symbol()":"95d89b41","totalAssets()":"01e1d114","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256,address,address)":"b460af94"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxDeposit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxMint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxRedeem\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxWithdraw\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"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\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"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\":[],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"convertToAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"convertToShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the ERC-4626 \\\"Tokenized Vault Standard\\\" as defined in https://eips.ethereum.org/EIPS/eip-4626[ERC-4626]. This extension allows the minting and burning of \\\"shares\\\" (represented using the ERC-20 inheritance) in exchange for underlying \\\"assets\\\" through standardized {deposit}, {mint}, {redeem} and {burn} workflows. This contract extends the ERC-20 standard. Any additional extensions included along it would affect the \\\"shares\\\" token represented by this contract and not the \\\"assets\\\" token which is an independent contract. [CAUTION] ==== In empty (or nearly empty) ERC-4626 vaults, deposits are at high risk of being stolen through frontrunning with a \\\"donation\\\" to the vault that inflates the price of a share. This is variously known as a donation or inflation attack and is essentially a problem of slippage. Vault deployers can protect against this attack by making an initial deposit of a non-trivial amount of the asset, such that price manipulation becomes infeasible. Withdrawals may similarly be affected by slippage. Users can protect against this attack as well as unexpected slippage in general by verifying the amount received is as expected, using a wrapper that performs these checks such as https://github.com/fei-protocol/ERC4626#erc4626router-and-base[ERC4626Router]. Since v4.9, this implementation introduces configurable virtual assets and shares to help developers mitigate that risk. The `_decimalsOffset()` corresponds to an offset in the decimal representation between the underlying asset's decimals and the vault decimals. This offset also determines the rate of virtual shares to virtual assets in the vault, which itself determines the initial exchange rate. While not fully preventing the attack, analysis shows that the default offset (0) makes it non-profitable even if an attacker is able to capture value from multiple user deposits, as a result of the value being captured by the virtual shares (out of the attacker's donation) matching the attacker's expected gains. With a larger offset, the attack becomes orders of magnitude more expensive than it is profitable. More details about the underlying math can be found xref:erc4626.adoc#inflation-attack[here]. The drawback of this approach is that the virtual shares do capture (a very small) part of the value being accrued to the vault. Also, if the vault experiences losses, the users try to exit the vault, the virtual shares and assets will cause the first user to exit to experience reduced losses in detriment to the last users that will experience bigger losses. Developers willing to revert back to the pre-v4.9 behavior just need to override the `_convertToShares` and `_convertToAssets` functions. To learn more, check out our xref:ROOT:erc4626.adoc[ERC-4626 guide]. ====\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"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.\"}}],\"ERC4626ExceededMaxDeposit(address,uint256,uint256)\":[{\"details\":\"Attempted to deposit more assets than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxMint(address,uint256,uint256)\":[{\"details\":\"Attempted to mint more shares than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxRedeem(address,uint256,uint256)\":[{\"details\":\"Attempted to redeem more shares than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxWithdraw(address,uint256,uint256)\":[{\"details\":\"Attempted to withdraw more assets than the max amount for `receiver`.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"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\":\"See {IERC20-allowance}.\"},\"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.\"},\"asset()\":{\"details\":\"See {IERC4626-asset}. \"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Set the underlying asset contract. This must be an ERC20-compatible contract (ERC-20 or ERC-777).\"},\"convertToAssets(uint256)\":{\"details\":\"See {IERC4626-convertToAssets}. \"},\"convertToShares(uint256)\":{\"details\":\"See {IERC4626-convertToShares}. \"},\"decimals()\":{\"details\":\"Decimals are computed by adding the decimal offset on top of the underlying asset's decimals. This \\\"original\\\" value is cached during construction of the vault contract. If this read operation fails (e.g., the asset has not been created yet), a default of 18 is used to represent the underlying asset's decimals. See {IERC20Metadata-decimals}.\"},\"deposit(uint256,address)\":{\"details\":\"See {IERC4626-deposit}. \"},\"maxDeposit(address)\":{\"details\":\"See {IERC4626-maxDeposit}. \"},\"maxMint(address)\":{\"details\":\"See {IERC4626-maxMint}. \"},\"maxRedeem(address)\":{\"details\":\"See {IERC4626-maxRedeem}. \"},\"maxWithdraw(address)\":{\"details\":\"See {IERC4626-maxWithdraw}. \"},\"mint(uint256,address)\":{\"details\":\"See {IERC4626-mint}. \"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"previewDeposit(uint256)\":{\"details\":\"See {IERC4626-previewDeposit}. \"},\"previewMint(uint256)\":{\"details\":\"See {IERC4626-previewMint}. \"},\"previewRedeem(uint256)\":{\"details\":\"See {IERC4626-previewRedeem}. \"},\"previewWithdraw(uint256)\":{\"details\":\"See {IERC4626-previewWithdraw}. \"},\"redeem(uint256,address,address)\":{\"details\":\"See {IERC4626-redeem}. \"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalAssets()\":{\"details\":\"See {IERC4626-totalAssets}. \"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"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`.\"},\"withdraw(uint256,address,address)\":{\"details\":\"See {IERC4626-withdraw}. \"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC4626.sol\":\"ERC4626\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf\",\"dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12\",\"dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC4626.sol\":{\"keccak256\":\"0xf171181c69e4560fbe3c575b8b0457ee4077cf22514c29c1b2cfcd3d9ad515cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66ff4f5325f725be9dd654b2e31c94a621261ff93295cdae03e85f8bd6bee4f2\",\"dweb:/ipfs/QmefUEsDJvdCeX6mehjE645tM9j9PHxfQzoGwZE3mArsZh\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0x29074fe5a74bb024c57b3570abf6c74d8bceed3438694d470fd0166a3ecd196a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f4f8435ccbc56e384f4cc9ac9ff491cf30a82f2beac00e33ccc2cf8af3f77cc3\",\"dweb:/ipfs/QmUKJXxTe6nn1qfgnX8xbnboNNAPUuEmJyGqMZCKNiFBgn\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x6fe40ce2addf1fe91a86c334b51ef5abe9c3b831d5d4d74ecae1d9c7d06cdccb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5027588e408027935ac78e32d9e813fda6bf33349b8a5be5c6c936273743369f\",\"dweb:/ipfs/QmZwSzs94V9u7VSdhw2bhbrogWZ37wvrQFBz6QNJTmKokE\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x8cd59334ed58b8884cd1f775afc9400db702e674e5d6a7a438c655b9de788d7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99e62c7de7318f413b6352e3f2704ca23e7725ff144e43c8bd574d12dbf29047\",\"dweb:/ipfs/QmSEXG2rBx1VxU2uFTWdiChjDvA4osEY2mesjmoVeVhHko\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"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":"receiver","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"ERC4626ExceededMaxDeposit"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"ERC4626ExceededMaxMint"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"ERC4626ExceededMaxRedeem"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"ERC4626ExceededMaxWithdraw"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"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":"sender","type":"address","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"uint256","name":"assets","type":"uint256","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"Deposit","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":"sender","type":"address","indexed":true},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"uint256","name":"assets","type":"uint256","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"Withdraw","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":[],"stateMutability":"view","type":"function","name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function","name":"convertToAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function","name":"convertToShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"maxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"maxMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"maxRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function","name":"previewDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function","name":"previewMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function","name":"previewRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function","name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"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"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"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."},"asset()":{"details":"See {IERC4626-asset}. "},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"constructor":{"details":"Set the underlying asset contract. This must be an ERC20-compatible contract (ERC-20 or ERC-777)."},"convertToAssets(uint256)":{"details":"See {IERC4626-convertToAssets}. "},"convertToShares(uint256)":{"details":"See {IERC4626-convertToShares}. "},"decimals()":{"details":"Decimals are computed by adding the decimal offset on top of the underlying asset's decimals. This \"original\" value is cached during construction of the vault contract. If this read operation fails (e.g., the asset has not been created yet), a default of 18 is used to represent the underlying asset's decimals. See {IERC20Metadata-decimals}."},"deposit(uint256,address)":{"details":"See {IERC4626-deposit}. "},"maxDeposit(address)":{"details":"See {IERC4626-maxDeposit}. "},"maxMint(address)":{"details":"See {IERC4626-maxMint}. "},"maxRedeem(address)":{"details":"See {IERC4626-maxRedeem}. "},"maxWithdraw(address)":{"details":"See {IERC4626-maxWithdraw}. "},"mint(uint256,address)":{"details":"See {IERC4626-mint}. "},"name()":{"details":"Returns the name of the token."},"previewDeposit(uint256)":{"details":"See {IERC4626-previewDeposit}. "},"previewMint(uint256)":{"details":"See {IERC4626-previewMint}. "},"previewRedeem(uint256)":{"details":"See {IERC4626-previewRedeem}. "},"previewWithdraw(uint256)":{"details":"See {IERC4626-previewWithdraw}. "},"redeem(uint256,address,address)":{"details":"See {IERC4626-redeem}. "},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalAssets()":{"details":"See {IERC4626-totalAssets}. "},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"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`."},"withdraw(uint256,address,address)":{"details":"See {IERC4626-withdraw}. "}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC4626.sol":"ERC4626"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol":{"keccak256":"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06","urls":["bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf","dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb","urls":["bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12","dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC4626.sol":{"keccak256":"0xf171181c69e4560fbe3c575b8b0457ee4077cf22514c29c1b2cfcd3d9ad515cf","urls":["bzz-raw://66ff4f5325f725be9dd654b2e31c94a621261ff93295cdae03e85f8bd6bee4f2","dweb:/ipfs/QmefUEsDJvdCeX6mehjE645tM9j9PHxfQzoGwZE3mArsZh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0x29074fe5a74bb024c57b3570abf6c74d8bceed3438694d470fd0166a3ecd196a","urls":["bzz-raw://f4f8435ccbc56e384f4cc9ac9ff491cf30a82f2beac00e33ccc2cf8af3f77cc3","dweb:/ipfs/QmUKJXxTe6nn1qfgnX8xbnboNNAPUuEmJyGqMZCKNiFBgn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x6fe40ce2addf1fe91a86c334b51ef5abe9c3b831d5d4d74ecae1d9c7d06cdccb","urls":["bzz-raw://5027588e408027935ac78e32d9e813fda6bf33349b8a5be5c6c936273743369f","dweb:/ipfs/QmZwSzs94V9u7VSdhw2bhbrogWZ37wvrQFBz6QNJTmKokE"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x8cd59334ed58b8884cd1f775afc9400db702e674e5d6a7a438c655b9de788d7e","urls":["bzz-raw://99e62c7de7318f413b6352e3f2704ca23e7725ff144e43c8bd574d12dbf29047","dweb:/ipfs/QmSEXG2rBx1VxU2uFTWdiChjDvA4osEY2mesjmoVeVhHko"],"license":"MIT"}},"version":1},"id":30} \ No newline at end of file diff --git a/evm/out/EfficientERC20.sol/EfficientERC20.json b/evm/out/EfficientERC20.sol/EfficientERC20.json deleted file mode 100644 index 7d635f0..0000000 --- a/evm/out/EfficientERC20.sol/EfficientERC20.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"TransferFailed","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransferFromFailed","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220dee99b91f30bb724d6f6717c5fefe301844a87779613221b1762ae66e08f184364736f6c634300081b0033","sourceMap":"552:11213:58:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea2646970667358221220dee99b91f30bb724d6f6717c5fefe301844a87779613221b1762ae66e08f184364736f6c634300081b0033","sourceMap":"552:11213:58:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferFromFailed\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"PropellerHeads Developers\",\"details\":\"Gas-efficient version of Openzeppelin's SafeERC20 contract. This is a mix between SafeERC20 and GPv2SafeERC20 libraries. It provides efficient transfers optimised for router contracts, while keeping the Openzeppelins compatibility for approvals.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Propellerheads Safe ERC20 Transfer Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/EfficientERC20.sol\":\"EfficientERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"src/libraries/EfficientERC20.sol\":{\"keccak256\":\"0x825d7f6aa98465b3c5b5a08d24cadfbb0a06f44693beec4e00ad2fe2824b4ef0\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2a5b53d7d634f50f27a1e45ce9136a054f1f19efc3dcfc1f85c8b1bbeac735fa\",\"dweb:/ipfs/QmQSeQyF86HLRnvKgQogia8W2eoWzncG2m1GkYMnp84DJZ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"type":"error","name":"TransferFailed"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"type":"error","name":"TransferFromFailed"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/libraries/EfficientERC20.sol":"EfficientERC20"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"src/libraries/EfficientERC20.sol":{"keccak256":"0x825d7f6aa98465b3c5b5a08d24cadfbb0a06f44693beec4e00ad2fe2824b4ef0","urls":["bzz-raw://2a5b53d7d634f50f27a1e45ce9136a054f1f19efc3dcfc1f85c8b1bbeac735fa","dweb:/ipfs/QmQSeQyF86HLRnvKgQogia8W2eoWzncG2m1GkYMnp84DJZ"],"license":"UNLICENSED"}},"version":1},"id":58} \ No newline at end of file diff --git a/evm/out/Errors.sol/Errors.json b/evm/out/Errors.sol/Errors.json deleted file mode 100644 index 85d4130..0000000 --- a/evm/out/Errors.sol/Errors.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"FailedDeployment","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea264697066735822122099273c4480cbfe5f59513dd10a2450c395a7219d32b09541e53b0b6a8cdba1ab64736f6c634300081b0033","sourceMap":"314:382:35:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea264697066735822122099273c4480cbfe5f59513dd10a2450c395a7219d32b09541e53b0b6a8cdba1ab64736f6c634300081b0033","sourceMap":"314:382:35:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of common custom errors used in multiple contracts IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library. It is recommended to avoid relying on the error API for critical functionality.\",\"errors\":{\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"FailedDeployment()\":[{\"details\":\"The deployment failed.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":\"Errors\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"FailedDeployment"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/Errors.sol":"Errors"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"}},"version":1},"id":35} \ No newline at end of file diff --git a/evm/out/EtherfiAdapter.sol/EtherfiAdapter.json b/evm/out/EtherfiAdapter.sol/EtherfiAdapter.json deleted file mode 100644 index 58b881a..0000000 --- a/evm/out/EtherfiAdapter.sol/EtherfiAdapter.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_weEth","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"getCapabilities","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"capabilities","type":"uint8[]","internalType":"enum ISwapAdapterTypes.Capability[]"}],"stateMutability":"pure"},{"type":"function","name":"getLimits","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"}],"outputs":[{"name":"limits","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getPoolIds","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"ids","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"getTokens","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"price","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"},{"name":"specifiedAmounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"prices","type":"tuple[]","internalType":"struct ISwapAdapterTypes.Fraction[]","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"swap","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"},{"name":"side","type":"uint8","internalType":"enum ISwapAdapterTypes.OrderSide"},{"name":"specifiedAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"trade","type":"tuple","internalType":"struct ISwapAdapterTypes.Trade","components":[{"name":"calculatedAmount","type":"uint256","internalType":"uint256"},{"name":"gasUsed","type":"uint256","internalType":"uint256"},{"name":"price","type":"tuple","internalType":"struct ISwapAdapterTypes.Fraction","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"nonpayable"},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LimitExceeded","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotImplemented","inputs":[{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"Unavailable","inputs":[{"name":"reason","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x60e0806040523461023e57602081612174803803809161001f8285610298565b83398101031261023e57516001600160a01b0381169081900361023e57602081600492608052604051928380926306f1b8f160e11b82525afa90811561024a575f91610255575b5060a081905260405163332d08e560e11b815290602090829060049082906001600160a01b03165afa90811561024a575f91610204575b5060c052604051611ea490816102d0823960805181818160ce015281816101ea015281816105c8015281816108d301528181610e8e01528181610f6501528181611112015281816111ee015281816112d00152818161142401528181611b230152611b7b015260a051818181609a015281816102cf015281816105250152818161056301528181610741015281816107dd0152818161081b015281816109580152818161099601528181610c8501528181610d2b01528181610dee01528181610eb401528181610fda0152818161113c015281816111b801528181611295015281816114a1015281816115c701528181611649015281816116e10152818161176c015281816117db015281816118d301528181611a550152611ad6015260c05181818161028001528181610abb01528181610cdc0152818161131d015281816113e9015281816114ed0152818161157a01528181611917015281816119980152611a990152f35b90506020813d602011610242575b8161021f60209383610298565b8101031261023e57516001600160a01b038116810361023e575f61009d565b5f80fd5b3d9150610212565b6040513d5f823e3d90fd5b90506020813d602011610290575b8161027060209383610298565b8101031261023e57516001600160a01b038116810361023e576020610066565b3d9150610263565b601f909101601f19168101906001600160401b038211908210176102bb57604052565b634e487b7160e01b5f52604160045260245ffdfe6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c806323eeca0114610a8957806348bd7dfd146109dc5780638307c6551461084d578063a9270fbe146105a3578063aad6e4881461014f5763ecbbc0330361000e573461014b57602036600319011261014b5760405161007f608082610bb7565b60038152602081019060603683375f61009782610bf1565b527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166100cb82610c12565b527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166100ff82610c22565b52604051918291602083019060208452518091526040830191905f5b818110610129575050500390f35b82516001600160a01b031684528594506020938401939092019160010161011b565b5f80fd5b3461014b57608036600319011261014b57610168610b35565b610170610b4b565b9060643567ffffffffffffffff811161014b573660238201121561014b5780600401359061019d82610bd9565b916101ab6040519384610bb7565b8083526024602084019160051b8301019136831161014b57602401905b828210610593575050506001600160a01b038281169290841683811461049f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168481141580610560575b80610557575b61049f578114159081610523575b5061049f5781519361024185610bd9565b9461024f6040519687610bb7565b80865261025e601f1991610bd9565b015f5b81811061047c575050604051631be7ed6560e11b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561043d575f92610448575b50604051633a98ef3960e01b8152916020836004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa92831561043d575f93610409575b505f9515955b85518110156103b8576001908715610386576103696103378685610331858c610c32565b51611821565b610341838a610c32565b519061036161035a610353868d610c32565b5188610e66565b9189610e66565b91878a611735565b610373828b610c32565b5261037e818a610c32565b505b0161030d565b61039d8584610395848b610c32565b51878a611735565b6103a7828b610c32565b526103b2818a610c32565b50610380565b876040518091602082016020835281518091526020604084019201905f5b8181106103e4575050500390f35b82518051855260209081015181860152869550604090940193909201916001016103d6565b9092506020813d602011610435575b8161042560209383610bb7565b8101031261014b57519187610307565b3d9150610418565b6040513d5f823e3d90fd5b9091506020813d602011610474575b8161046460209383610bb7565b8101031261014b575190866102b8565b3d9150610457565b60209060405161048b81610b9b565b5f81525f8382015282828a01015201610261565b60405163643c60f360e01b81528061051f6004820160a09060208152604460208201527f5468697320706f6f6c206f6e6c7920737570706f727473204554482d3e65455460408201527f482c2077654554483c2d3e6545544820616e64204554482d3e776545544820736060820152637761707360e01b60808201520190565b0390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161415905085610230565b50841515610222565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031685141561021c565b81358152602091820191016101c8565b3461014b576105b136610b61565b6001600160a01b0390811692501680821461049f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681811491821590819081610819575b8161080f575b5061049f5781841493841590816107db575b5061049f576040519361062b606086610bb7565b6002855260208501936040368637916107d3575b501561072b576020600491604051928380926318160ddd60e01b82525afa90811561043d575f916106f9575b50605a810290808204605a14901517156106e5576064900461068c83610bf1565b52905b61069881610bf1565b516106a282610c12565b52604051918291602083019060208452518091526040830191905f5b8181106106cc575050500390f35b82518452859450602093840193909201916001016106be565b634e487b7160e01b5f52601160045260245ffd5b90506020813d602011610723575b8161071460209383610bb7565b8101031261014b57518361066b565b3d9150610707565b506040516318160ddd60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561043d575f916107a1575b50605a810290808204605a14901517156106e5576064900461079a83610bf1565b529061068f565b90506020813d6020116107cb575b816107bc60209383610bb7565b8101031261014b575183610779565b3d91506107af565b90508461063f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161415905085610617565b9050151585610605565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681141591506105ff565b3461014b5760a036600319011261014b57610866610b35565b61086e610b4b565b90606435600281101561014b57604051906060820182811067ffffffffffffffff8211176109c8576040525f82525f60208301526040516108ae81610b9b565b5f808252602082015260408301526001600160a01b0384811690841680821461049f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690808214159081610994575b8161098a575b5061049f578114159081610956575b5061049f576080936109319360843593610c53565b6020604080519280518452828101518385015201518051604084015201516060820152f35b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141590508561091c565b905015158761090d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168114159150610907565b634e487b7160e01b5f52604160045260245ffd5b3461014b576109ea36610b61565b5050506040516109fb608082610bb7565b600381526020810160603682376001610a1383610bf1565b526002610a1f83610c12565b526003610a2b83610c22565b52604051906020820192602083525180935260408201905f935b808510610a525783830384f35b9091825190600a821015610a755760208160019382935201930194019390610a45565b634e487b7160e01b5f52602160045260245ffd5b3461014b57604036600319011261014b576040805190610aa98183610bb7565b6001825260208201601f1982013682377f000000000000000000000000000000000000000000000000000000000000000060601b6bffffffffffffffffffffffff1916610af584610bf1565b52815192839260208401916020855251809252830191905f5b818110610b1c575050500390f35b8251845285945060209384019390920191600101610b0e565b602435906001600160a01b038216820361014b57565b604435906001600160a01b038216820361014b57565b606090600319011261014b57600435906024356001600160a01b038116810361014b57906044356001600160a01b038116810361014b5790565b6040810190811067ffffffffffffffff8211176109c857604052565b90601f8019910116810190811067ffffffffffffffff8211176109c857604052565b67ffffffffffffffff81116109c85760051b60200190565b805115610bfe5760200190565b634e487b7160e01b5f52603260045260245ffd5b805160011015610bfe5760400190565b805160021015610bfe5760600190565b8051821015610bfe5760209160051b010190565b919082039182116106e557565b949392909192858115610e2d575090610cbf915a916001600160a01b03851680610dec57506001600160a01b038681167f000000000000000000000000000000000000000000000000000000000000000090911603610ddc57610cb59161148e565b86525b5a90610c46565b602085810191909152604051631be7ed6560e11b815290816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561043d575f91610daa575b50604051633a98ef3960e01b8152926020846004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa92831561043d575f93610d74575b610d6d9450611617565b6040830152565b92506020843d602011610da2575b81610d8f60209383610bb7565b8101031261014b57610d6d935192610d63565b3d9150610d82565b90506020813d602011610dd4575b81610dc560209383610bb7565b8101031261014b57515f610d14565b3d9150610db8565b610de591611292565b8652610cb8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031603610e2457610de5916110f7565b610de591610e73565b955050505050565b818102929181159184041417156106e557565b8115610e52570490565b634e487b7160e01b5f52601260045260245ffd5b919082018092116106e557565b906002811015610a7557600103610f5e576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116915f917f00000000000000000000000000000000000000000000000000000000000000001690602090610ee3908386611a39565b93610ef08530338461183f565b602460405180958193636f074d1f60e11b83528860048401525af190811561043d575f91610f28575b610f259250339061188a565b90565b90506020823d602011610f56575b81610f4360209383610bb7565b8101031261014b57610f25915190610f19565b3d9150610f36565b5f906020907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602490610f9d8130338661183f565b6040519485938492636f074d1f60e11b845260048401525af190811561043d575f916110c5575b506040516370a0823160e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691602082602481865afa91821561043d575f92611090575b5060249261102b602092338361188a565b6040516370a0823160e01b815233600482015293849182905afa801561043d575f9061105c575b610f259250610c46565b506020823d602011611088575b8161107660209383610bb7565b8101031261014b57610f259151611052565b3d9150611069565b9091506020813d6020116110bd575b816110ac60209383610bb7565b8101031261014b575190602461101a565b3d915061109f565b90506020813d6020116110ef575b816110e060209383610bb7565b8101031261014b57515f610fc4565b3d91506110d3565b906002811015610a75576001036111b6576001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691829161117e917f00000000000000000000000000000000000000000000000000000000000000009091169061116a908483611a39565b9384916111798330338461183f565b611bb6565b604051630ea598cb60e41b815260048101839052906020826024815f855af190811561043d575f91610f2857610f259250339061188a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166111ec8230338461183f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906112249083908390611bb6565b60405191630ea598cb60e41b835260048301526020826024815f855af191821561043d575f9261125c575b5081610f2591339061188a565b9091506020813d60201161128a575b8161127860209383610bb7565b8101031261014b575190610f2561124f565b3d915061126b565b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906002811015610a75576001036113cf577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169161130390836118c6565b604051630d0e30db60e41b815290929091602083600481877f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af192831561043d575f93611397575b50828261136192611bb6565b60405191630ea598cb60e41b835260048301526020826024815f855af190811561043d575f91610f2857610f259250339061188a565b909192506020813d6020116113c7575b816113b460209383610bb7565b8101031261014b57519190611361611355565b3d91506113a7565b604051630d0e30db60e41b815291602090839060049082907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af191821561043d575f9261145a575b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906112249083908390611bb6565b9091506020813d602011611486575b8161147660209383610bb7565b8101031261014b5751905f611421565b3d9150611469565b906002811015610a7557600103611560577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114d382826118c6565b604051630d0e30db60e41b815290929091602083600481877f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1801561043d5761152d57610f259250339061188a565b6020833d602011611558575b8161154660209383610bb7565b8101031261014b57610f259250610f19565b3d9150611539565b604051630d0e30db60e41b815290602090829060049082907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af190811561043d575f916110c557506040516370a0823160e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691602082602481865afa91821561043d575f92611090575060249261102b602092338361188a565b60405161162381610b9b565b5f8082526020909101526001600160a01b0316806116dc57506001600160a01b039081167f0000000000000000000000000000000000000000000000000000000000000000909116036116a3579061168391670de0b6b3a7640000611821565b6040519061169082610b9b565b8152670de0b6b3a7640000602082015290565b6116b68282670de0b6b3a7640000611821565b90670de0b6b3a764000081018091116106e5576116d68261168394610e66565b91611d3b565b9192917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141590506117235761168391670de0b6b3a7640000611d3b565b61168391670de0b6b3a7640000611d1e565b908294929160405161174681610b9b565b5f8082526020909101526001600160a01b0316806117d957506001600160a01b039081167f0000000000000000000000000000000000000000000000000000000000000000909116036117b5579161179d92611821565b90604051916117ab83610b9b565b8252602082015290565b906116d6836117d36117cb8461179d9787611821565b948592610e66565b92610e66565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161415915061181790505761179d9183611d3b565b61179d9183611d1e565b91811561183a5761183590610f2593610e35565b610e48565b505090565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815261188891611883608483610bb7565b611d66565b565b60405163a9059cbb60e01b60208201526001600160a01b0392909216602483015260448083019390935291815261188891611883606483610bb7565b6001600160a01b039081167f00000000000000000000000000000000000000000000000000000000000000009091160361198157604051630ac37bbf60e31b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561043d575f91611952575090565b90506020813d602011611979575b8161196d60209383610bb7565b8101031261014b575190565b3d9150611960565b604051630ac37bbf60e31b815260048101919091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602081602481855afa801561043d575f90611a06575b60209150602460405180948193630ac37bbf60e31b835260048301525afa90811561043d575f91611952575090565b506020813d602011611a31575b81611a2060209383610bb7565b8101031261014b57602090516119d7565b3d9150611a13565b6001600160a01b031680611ad457506001600160a01b039081167f00000000000000000000000000000000000000000000000000000000000000009091160361198157604051630ac37bbf60e31b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561043d575f91611952575090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614159050611b5e57604051632518981160e21b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561043d575f91611952575090565b60405163d044fe9b60e01b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561043d575f91611952575090565b604051636eb1769f60e11b81523060048201526001600160a01b03838116602483018190529490831691602081604481865afa90811561043d575f91611cea575b50611c3f94611c4d611c0b5f948594610e66565b60405163095ea7b360e01b602082019081526001600160a01b03909416602482015260448101919091529687906064820190565b03601f198101885287610bb7565b85519082855af190611c5d611dd1565b82611cb8575b5081611cad575b5015611c7557505050565b611883611888936040519063095ea7b360e01b602083015260248201525f604482015260448152611ca7606482610bb7565b82611d66565b90503b15155f611c6a565b80519192508115918215611cd0575b5050905f611c63565b611ce39250602080918301019101611d4e565b5f80611cc7565b90506020813d602011611d16575b81611d0560209383610bb7565b8101031261014b5751611c3f611bf7565b3d9150611cf8565b9190918115611d3457610f259261183591610e35565b5050505f90565b8115611d3457610f259261183591610e35565b9081602091031261014b5751801515810361014b5790565b5f80611d8e9260018060a01b03169360208151910182865af1611d87611dd1565b9083611e10565b8051908115159182611db6575b5050611da45750565b635274afe760e01b5f5260045260245ffd5b611dc99250602080918301019101611d4e565b155f80611d9b565b3d15611e0b573d9067ffffffffffffffff82116109c85760405191611e00601f8201601f191660200184610bb7565b82523d5f602084013e565b606090565b90611e345750805115611e2557805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580611e65575b611e45575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15611e3d56fea264697066735822122031cbba3d0f67fa9960c80e8dde35d7d3550b9bced9b39c9333a70f3eae803fd664736f6c634300081b0033","sourceMap":"465:13920:51:-:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;465:13920:51;;;;;;;;;728:22;767:12;728:22;;;465:13920;;;;;;;;;767:12;;;;;;;;;-1:-1:-1;767:12:51;;;-1:-1:-1;;760:19:51;;;;465:13920;;-1:-1:-1;;;805:20:51;;465:13920;;;;;767:12;;465:13920;;-1:-1:-1;;;;;465:13920:51;805:20;;;;;;;-1:-1:-1;805:20:51;;;-1:-1:-1;789:36:51;;;465:13920;;;;;;;;728:22;465:13920;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;760:19;465:13920;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;789:36;465:13920;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;805:20;;;465:13920;805:20;;465:13920;805:20;;;;;;465:13920;805:20;;;:::i;:::-;;;465:13920;;;;;-1:-1:-1;;;;;465:13920:51;;;;;;805:20;;;465:13920;-1:-1:-1;465:13920:51;;805:20;;;-1:-1:-1;805:20:51;;;465:13920;;;-1:-1:-1;465:13920:51;;;;;767:12;;;465:13920;767:12;;465:13920;767:12;;;;;;465:13920;767:12;;;:::i;:::-;;;465:13920;;;;;-1:-1:-1;;;;;465:13920:51;;;;;;;767:12;;;;;-1:-1:-1;767:12:51;;465:13920;;;;;-1:-1:-1;;465:13920:51;;;;-1:-1:-1;;;;;465:13920:51;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;465:13920:51;;;;;-1:-1:-1;465:13920:51","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c806323eeca0114610a8957806348bd7dfd146109dc5780638307c6551461084d578063a9270fbe146105a3578063aad6e4881461014f5763ecbbc0330361000e573461014b57602036600319011261014b5760405161007f608082610bb7565b60038152602081019060603683375f61009782610bf1565b527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166100cb82610c12565b527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166100ff82610c22565b52604051918291602083019060208452518091526040830191905f5b818110610129575050500390f35b82516001600160a01b031684528594506020938401939092019160010161011b565b5f80fd5b3461014b57608036600319011261014b57610168610b35565b610170610b4b565b9060643567ffffffffffffffff811161014b573660238201121561014b5780600401359061019d82610bd9565b916101ab6040519384610bb7565b8083526024602084019160051b8301019136831161014b57602401905b828210610593575050506001600160a01b038281169290841683811461049f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168481141580610560575b80610557575b61049f578114159081610523575b5061049f5781519361024185610bd9565b9461024f6040519687610bb7565b80865261025e601f1991610bd9565b015f5b81811061047c575050604051631be7ed6560e11b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561043d575f92610448575b50604051633a98ef3960e01b8152916020836004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa92831561043d575f93610409575b505f9515955b85518110156103b8576001908715610386576103696103378685610331858c610c32565b51611821565b610341838a610c32565b519061036161035a610353868d610c32565b5188610e66565b9189610e66565b91878a611735565b610373828b610c32565b5261037e818a610c32565b505b0161030d565b61039d8584610395848b610c32565b51878a611735565b6103a7828b610c32565b526103b2818a610c32565b50610380565b876040518091602082016020835281518091526020604084019201905f5b8181106103e4575050500390f35b82518051855260209081015181860152869550604090940193909201916001016103d6565b9092506020813d602011610435575b8161042560209383610bb7565b8101031261014b57519187610307565b3d9150610418565b6040513d5f823e3d90fd5b9091506020813d602011610474575b8161046460209383610bb7565b8101031261014b575190866102b8565b3d9150610457565b60209060405161048b81610b9b565b5f81525f8382015282828a01015201610261565b60405163643c60f360e01b81528061051f6004820160a09060208152604460208201527f5468697320706f6f6c206f6e6c7920737570706f727473204554482d3e65455460408201527f482c2077654554483c2d3e6545544820616e64204554482d3e776545544820736060820152637761707360e01b60808201520190565b0390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161415905085610230565b50841515610222565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031685141561021c565b81358152602091820191016101c8565b3461014b576105b136610b61565b6001600160a01b0390811692501680821461049f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681811491821590819081610819575b8161080f575b5061049f5781841493841590816107db575b5061049f576040519361062b606086610bb7565b6002855260208501936040368637916107d3575b501561072b576020600491604051928380926318160ddd60e01b82525afa90811561043d575f916106f9575b50605a810290808204605a14901517156106e5576064900461068c83610bf1565b52905b61069881610bf1565b516106a282610c12565b52604051918291602083019060208452518091526040830191905f5b8181106106cc575050500390f35b82518452859450602093840193909201916001016106be565b634e487b7160e01b5f52601160045260245ffd5b90506020813d602011610723575b8161071460209383610bb7565b8101031261014b57518361066b565b3d9150610707565b506040516318160ddd60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561043d575f916107a1575b50605a810290808204605a14901517156106e5576064900461079a83610bf1565b529061068f565b90506020813d6020116107cb575b816107bc60209383610bb7565b8101031261014b575183610779565b3d91506107af565b90508461063f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161415905085610617565b9050151585610605565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681141591506105ff565b3461014b5760a036600319011261014b57610866610b35565b61086e610b4b565b90606435600281101561014b57604051906060820182811067ffffffffffffffff8211176109c8576040525f82525f60208301526040516108ae81610b9b565b5f808252602082015260408301526001600160a01b0384811690841680821461049f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690808214159081610994575b8161098a575b5061049f578114159081610956575b5061049f576080936109319360843593610c53565b6020604080519280518452828101518385015201518051604084015201516060820152f35b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141590508561091c565b905015158761090d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168114159150610907565b634e487b7160e01b5f52604160045260245ffd5b3461014b576109ea36610b61565b5050506040516109fb608082610bb7565b600381526020810160603682376001610a1383610bf1565b526002610a1f83610c12565b526003610a2b83610c22565b52604051906020820192602083525180935260408201905f935b808510610a525783830384f35b9091825190600a821015610a755760208160019382935201930194019390610a45565b634e487b7160e01b5f52602160045260245ffd5b3461014b57604036600319011261014b576040805190610aa98183610bb7565b6001825260208201601f1982013682377f000000000000000000000000000000000000000000000000000000000000000060601b6bffffffffffffffffffffffff1916610af584610bf1565b52815192839260208401916020855251809252830191905f5b818110610b1c575050500390f35b8251845285945060209384019390920191600101610b0e565b602435906001600160a01b038216820361014b57565b604435906001600160a01b038216820361014b57565b606090600319011261014b57600435906024356001600160a01b038116810361014b57906044356001600160a01b038116810361014b5790565b6040810190811067ffffffffffffffff8211176109c857604052565b90601f8019910116810190811067ffffffffffffffff8211176109c857604052565b67ffffffffffffffff81116109c85760051b60200190565b805115610bfe5760200190565b634e487b7160e01b5f52603260045260245ffd5b805160011015610bfe5760400190565b805160021015610bfe5760600190565b8051821015610bfe5760209160051b010190565b919082039182116106e557565b949392909192858115610e2d575090610cbf915a916001600160a01b03851680610dec57506001600160a01b038681167f000000000000000000000000000000000000000000000000000000000000000090911603610ddc57610cb59161148e565b86525b5a90610c46565b602085810191909152604051631be7ed6560e11b815290816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561043d575f91610daa575b50604051633a98ef3960e01b8152926020846004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa92831561043d575f93610d74575b610d6d9450611617565b6040830152565b92506020843d602011610da2575b81610d8f60209383610bb7565b8101031261014b57610d6d935192610d63565b3d9150610d82565b90506020813d602011610dd4575b81610dc560209383610bb7565b8101031261014b57515f610d14565b3d9150610db8565b610de591611292565b8652610cb8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031603610e2457610de5916110f7565b610de591610e73565b955050505050565b818102929181159184041417156106e557565b8115610e52570490565b634e487b7160e01b5f52601260045260245ffd5b919082018092116106e557565b906002811015610a7557600103610f5e576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116915f917f00000000000000000000000000000000000000000000000000000000000000001690602090610ee3908386611a39565b93610ef08530338461183f565b602460405180958193636f074d1f60e11b83528860048401525af190811561043d575f91610f28575b610f259250339061188a565b90565b90506020823d602011610f56575b81610f4360209383610bb7565b8101031261014b57610f25915190610f19565b3d9150610f36565b5f906020907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602490610f9d8130338661183f565b6040519485938492636f074d1f60e11b845260048401525af190811561043d575f916110c5575b506040516370a0823160e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691602082602481865afa91821561043d575f92611090575b5060249261102b602092338361188a565b6040516370a0823160e01b815233600482015293849182905afa801561043d575f9061105c575b610f259250610c46565b506020823d602011611088575b8161107660209383610bb7565b8101031261014b57610f259151611052565b3d9150611069565b9091506020813d6020116110bd575b816110ac60209383610bb7565b8101031261014b575190602461101a565b3d915061109f565b90506020813d6020116110ef575b816110e060209383610bb7565b8101031261014b57515f610fc4565b3d91506110d3565b906002811015610a75576001036111b6576001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691829161117e917f00000000000000000000000000000000000000000000000000000000000000009091169061116a908483611a39565b9384916111798330338461183f565b611bb6565b604051630ea598cb60e41b815260048101839052906020826024815f855af190811561043d575f91610f2857610f259250339061188a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166111ec8230338461183f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906112249083908390611bb6565b60405191630ea598cb60e41b835260048301526020826024815f855af191821561043d575f9261125c575b5081610f2591339061188a565b9091506020813d60201161128a575b8161127860209383610bb7565b8101031261014b575190610f2561124f565b3d915061126b565b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906002811015610a75576001036113cf577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169161130390836118c6565b604051630d0e30db60e41b815290929091602083600481877f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af192831561043d575f93611397575b50828261136192611bb6565b60405191630ea598cb60e41b835260048301526020826024815f855af190811561043d575f91610f2857610f259250339061188a565b909192506020813d6020116113c7575b816113b460209383610bb7565b8101031261014b57519190611361611355565b3d91506113a7565b604051630d0e30db60e41b815291602090839060049082907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af191821561043d575f9261145a575b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906112249083908390611bb6565b9091506020813d602011611486575b8161147660209383610bb7565b8101031261014b5751905f611421565b3d9150611469565b906002811015610a7557600103611560577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114d382826118c6565b604051630d0e30db60e41b815290929091602083600481877f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1801561043d5761152d57610f259250339061188a565b6020833d602011611558575b8161154660209383610bb7565b8101031261014b57610f259250610f19565b3d9150611539565b604051630d0e30db60e41b815290602090829060049082907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af190811561043d575f916110c557506040516370a0823160e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691602082602481865afa91821561043d575f92611090575060249261102b602092338361188a565b60405161162381610b9b565b5f8082526020909101526001600160a01b0316806116dc57506001600160a01b039081167f0000000000000000000000000000000000000000000000000000000000000000909116036116a3579061168391670de0b6b3a7640000611821565b6040519061169082610b9b565b8152670de0b6b3a7640000602082015290565b6116b68282670de0b6b3a7640000611821565b90670de0b6b3a764000081018091116106e5576116d68261168394610e66565b91611d3b565b9192917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141590506117235761168391670de0b6b3a7640000611d3b565b61168391670de0b6b3a7640000611d1e565b908294929160405161174681610b9b565b5f8082526020909101526001600160a01b0316806117d957506001600160a01b039081167f0000000000000000000000000000000000000000000000000000000000000000909116036117b5579161179d92611821565b90604051916117ab83610b9b565b8252602082015290565b906116d6836117d36117cb8461179d9787611821565b948592610e66565b92610e66565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161415915061181790505761179d9183611d3b565b61179d9183611d1e565b91811561183a5761183590610f2593610e35565b610e48565b505090565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815261188891611883608483610bb7565b611d66565b565b60405163a9059cbb60e01b60208201526001600160a01b0392909216602483015260448083019390935291815261188891611883606483610bb7565b6001600160a01b039081167f00000000000000000000000000000000000000000000000000000000000000009091160361198157604051630ac37bbf60e31b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561043d575f91611952575090565b90506020813d602011611979575b8161196d60209383610bb7565b8101031261014b575190565b3d9150611960565b604051630ac37bbf60e31b815260048101919091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602081602481855afa801561043d575f90611a06575b60209150602460405180948193630ac37bbf60e31b835260048301525afa90811561043d575f91611952575090565b506020813d602011611a31575b81611a2060209383610bb7565b8101031261014b57602090516119d7565b3d9150611a13565b6001600160a01b031680611ad457506001600160a01b039081167f00000000000000000000000000000000000000000000000000000000000000009091160361198157604051630ac37bbf60e31b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561043d575f91611952575090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614159050611b5e57604051632518981160e21b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561043d575f91611952575090565b60405163d044fe9b60e01b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561043d575f91611952575090565b604051636eb1769f60e11b81523060048201526001600160a01b03838116602483018190529490831691602081604481865afa90811561043d575f91611cea575b50611c3f94611c4d611c0b5f948594610e66565b60405163095ea7b360e01b602082019081526001600160a01b03909416602482015260448101919091529687906064820190565b03601f198101885287610bb7565b85519082855af190611c5d611dd1565b82611cb8575b5081611cad575b5015611c7557505050565b611883611888936040519063095ea7b360e01b602083015260248201525f604482015260448152611ca7606482610bb7565b82611d66565b90503b15155f611c6a565b80519192508115918215611cd0575b5050905f611c63565b611ce39250602080918301019101611d4e565b5f80611cc7565b90506020813d602011611d16575b81611d0560209383610bb7565b8101031261014b5751611c3f611bf7565b3d9150611cf8565b9190918115611d3457610f259261183591610e35565b5050505f90565b8115611d3457610f259261183591610e35565b9081602091031261014b5751801515810361014b5790565b5f80611d8e9260018060a01b03169360208151910182865af1611d87611dd1565b9083611e10565b8051908115159182611db6575b5050611da45750565b635274afe760e01b5f5260045260245ffd5b611dc99250602080918301019101611d4e565b155f80611d9b565b3d15611e0b573d9067ffffffffffffffff82116109c85760405191611e00601f8201601f191660200184610bb7565b82523d5f602084013e565b606090565b90611e345750805115611e2557805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580611e65575b611e45575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15611e3d56fea264697066735822122031cbba3d0f67fa9960c80e8dde35d7d3550b9bced9b39c9333a70f3eae803fd664736f6c634300081b0033","sourceMap":"465:13920:51:-:0;;;;;;;;;-1:-1:-1;465:13920:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;465:13920:51;;;;;;;;;;:::i;:::-;5907:1;465:13920;;;;;;;;;;;5919:22;;;:::i;:::-;465:13920;5971:4;-1:-1:-1;;;;;465:13920:51;5951:25;;;:::i;:::-;465:13920;6006:5;-1:-1:-1;;;;;465:13920:51;5986:26;;;:::i;:::-;465:13920;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;465:13920:51;;;;;-1:-1:-1;465:13920:51;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;465:13920:51;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;465:13920:51;;;;;;;1020:21;;;1016:172;;1235:5;-1:-1:-1;;;;;465:13920:51;1214:27;;;;;:57;;465:13920;1214:100;;;465:13920;1197:273;;1483:26;;;:55;;;;465:13920;1479:206;;;465:13920;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;465:13920:51;;-1:-1:-1;;;2203:35:51;;465:13920;;;;;2203:13;-1:-1:-1;;;;;465:13920:51;2203:35;;;;;;;465:13920;2203:35;;;465:13920;-1:-1:-1;465:13920:51;;-1:-1:-1;;;2274:18:51;;465:13920;;;;;2274:4;-1:-1:-1;;;;;465:13920:51;2274:18;;;;;;;465:13920;2274:18;;;465:13920;2308:13;465:13920;2375:23;;2303:828;2352:3;465:13920;;2323:27;;;;;465:13920;;2375:23;;;;2598:252;2451:117;2496:19;;;;;;:::i;:::-;465:13920;2451:117;:::i;:::-;2691:19;;;;:::i;:::-;465:13920;2751:19;2792:40;2732:38;2751:19;;;;:::i;:::-;465:13920;2732:38;;:::i;:::-;2792:40;;;:::i;:::-;2598:252;;;;:::i;:::-;2586:264;;;;:::i;:::-;;;;;;:::i;:::-;;2371:750;465:13920;2308:13;;2371:750;2901:205;2994:19;;;;;;:::i;:::-;465:13920;2901:205;;;:::i;:::-;2889:217;;;;:::i;:::-;;;;;;:::i;:::-;;2371:750;;2323:27;;465:13920;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;465:13920:51;;;;;;;;;;;;;2274:18;;;;465:13920;2274:18;;465:13920;2274:18;;;;;;576:8;2274:18;;;:::i;:::-;;;576:8;;;;;2274:18;;;;;;;-1:-1:-1;2274:18:51;;;465:13920;;576:8;465:13920;576:8;;;;;2203:35;;;;465:13920;2203:35;;465:13920;2203:35;;;;;;576:8;2203:35;;;:::i;:::-;;;576:8;;;;;2203:35;;;;;;;-1:-1:-1;2203:35:51;;465:13920;;;;;;;;:::i;:::-;-1:-1:-1;465:13920:51;;-1:-1:-1;465:13920:51;;;;;;;;;;;;;1479:206;465:13920;;-1:-1:-1;;;1561:113:51;;465:13920;1561:113;465:13920;1561:113;;465:13920;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;465:13920:51;;;;;;;1561:113;;;;1483:55;1533:4;-1:-1:-1;;;;;465:13920:51;1513:25;;;-1:-1:-1;1483:55:51;;;1214:100;1291:23;;;;1214:100;;:57;-1:-1:-1;1266:4:51;-1:-1:-1;;;;;465:13920:51;1245:26;;;1214:57;;465:13920;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;465:13920:51;;;;-1:-1:-1;465:13920:51;1020:21;;;1016:172;;1235:5;-1:-1:-1;;;;;465:13920:51;1214:27;;;;;;;;;;:57;;465:13920;1214:100;;;465:13920;1197:273;;;1483:26;;;;;;:55;;;;465:13920;1479:206;;;465:13920;;;;;;;:::i;:::-;4897:1;465:13920;;;;;;;;;;5054:57;;;465:13920;-1:-1:-1;5050:236:51;;;465:13920;;;;;576:8;;;;;;;5139:36;;;;;;;;;465:13920;5139:36;;;5050:236;465:13920;5178:2;465:13920;;;;;;5178:2;465:13920;;;;;;;5183:3;465:13920;;5127:59;;;:::i;:::-;465:13920;5050:236;;5307:9;;;:::i;:::-;465:13920;5295:21;;;:::i;:::-;465:13920;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;465:13920:51;;;;;;;;;5302:1;465:13920;;;;;;;;;;;;;;;5139:36;;;465:13920;5139:36;;465:13920;5139:36;;;;;;576:8;5139:36;;;:::i;:::-;;;576:8;;;;;5139:36;;;;;;-1:-1:-1;5139:36:51;;5050:236;-1:-1:-1;465:13920:51;;-1:-1:-1;;;5229:35:51;;465:13920;;;;5244:4;-1:-1:-1;;;;;465:13920:51;5229:35;;;;;;;465:13920;5229:35;;;5050:236;465:13920;5267:2;465:13920;;;;;;5267:2;465:13920;;;;;;;5272:3;465:13920;;5217:58;;;:::i;:::-;465:13920;5050:236;;;5229:35;;;465:13920;5229:35;;465:13920;5229:35;;;;;;576:8;5229:35;;;:::i;:::-;;;576:8;;;;;5229:35;;;;;;-1:-1:-1;5229:35:51;;5054:57;;;;;;1483:55;1533:4;-1:-1:-1;;;;;465:13920:51;1513:25;;;-1:-1:-1;1483:55:51;;;1214:100;1291:23;;;;1214:100;;;:57;1266:4;-1:-1:-1;;;;;465:13920:51;1245:26;;;;-1:-1:-1;1214:57:51;;465:13920;;;;;;-1:-1:-1;;465:13920:51;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;465:13920:51;;;;;;;;;;;-1:-1:-1;;;;;465:13920:51;;;;;;1020:21;;;1016:172;;1235:5;-1:-1:-1;;;;;465:13920:51;;1214:27;;;;;;:57;;465:13920;1214:100;;;465:13920;1197:273;;;1483:26;;;:55;;;;465:13920;1479:206;;;465:13920;;3176:1445;465:13920;;;3176:1445;;:::i;:::-;465:13920;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1483:55;1533:4;-1:-1:-1;;;;;465:13920:51;1513:25;;;-1:-1:-1;1483:55:51;;;1214:100;1291:23;;;;1214:100;;;:57;1266:4;-1:-1:-1;;;;;465:13920:51;1245:26;;;;-1:-1:-1;1214:57:51;;465:13920;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;5558:1;465:13920;;;;;;;;;5588:20;5570:38;;;:::i;:::-;465:13920;5636:19;5618:37;;;:::i;:::-;465:13920;5558:1;5665:42;;;:::i;:::-;465:13920;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5588:20;465:13920;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;465:13920:51;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;465:13920:51;;;;;6253:13;465:13920;;-1:-1:-1;;465:13920:51;6228:40;;;:::i;:::-;465:13920;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;465:13920:51;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;465:13920:51;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;465:13920:51;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;465:13920:51;;;;;;;;;-1:-1:-1;;;;;465:13920:51;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;5588:20;465:13920;;;;;;;:::o;:::-;;;5636:19;465:13920;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;3176:1445::-;;;;;;;;3458:20;;3454:63;;3546:9;;4133:21;3546:9;;465:13920;-1:-1:-1;;;;;465:13920:51;;3569:23;;;-1:-1:-1;;;;;;465:13920:51;;;3632:4;465:13920;;;3612:25;465:13920;;3682:37;;;:::i;:::-;465:13920;;3608:228;4145:9;4133:21;;:::i;:::-;4117:13;;;;465:13920;;;;;;-1:-1:-1;;;4537:35:51;;465:13920;;4537:35;465:13920;4537:13;-1:-1:-1;;;;;465:13920:51;4537:35;;;;;;;3477:1;4537:35;;;3565:543;-1:-1:-1;465:13920:51;;-1:-1:-1;;;4586:18:51;;465:13920;4117:13;465:13920;4537:35;465:13920;4586:4;-1:-1:-1;;;;;465:13920:51;4586:18;;;;;;;3477:1;4586:18;;;3565:543;4442:172;;;;:::i;:::-;465:13920;4428:11;;:186;3176:1445::o;4586:18::-;;;4117:13;4586:18;;4117:13;4586:18;;;;;;576:8;4586:18;;;:::i;:::-;;;576:8;;;;4442:172;576:8;;4586:18;;;;;;-1:-1:-1;4586:18:51;;4537:35;;;4117:13;4537:35;;4117:13;4537:35;;;;;;576:8;4537:35;;;:::i;:::-;;;576:8;;;;;4537:35;;;;;;-1:-1:-1;4537:35:51;;3608:228;3783:38;;;:::i;:::-;465:13920;;3608:228;;3565:543;3891:4;-1:-1:-1;;;;;465:13920:51;3870:26;465:13920;;3941:39;;;:::i;3866:232::-;4044:39;;;:::i;3454:63::-;3494:12;-1:-1:-1;;;;;3494:12:51:o;465:13920::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;9660:1064::-;;465:13920;;;;;;9787:13;9779:21;9787:13;;-1:-1:-1;;;;;9871:5:51;465:13920;;;;;9887:4;465:13920;;;;9851:50;;465:13920;;9851:50;:::i;:::-;9992:4;9999:8;9992:4;;9972:10;9999:8;;:::i;:::-;10060:22;465:13920;;576:8;;;;;;;10060:22;;;;;;465:13920;10060:22;;;;;;;465:13920;10060:22;;;9775:943;10169:14;9972:10;;;10169:14;;:::i;:::-;10211:15;:::o;10060:22::-;;;465:13920;10060:22;;465:13920;10060:22;;;;;;576:8;10060:22;;;:::i;:::-;;;576:8;;;;10169:14;576:8;;10060:22;;;;;;-1:-1:-1;10060:22:51;;9775:943;465:13920;;;;10272:5;-1:-1:-1;;;;;465:13920:51;;10400:20;;10341:6;465:13920;10334:4;10314:10;465:13920;10341:6;:::i;:::-;465:13920;;576:8;;;;;;;;10400:20;;;;;465:13920;10400:20;;;;;;;465:13920;10400:20;;;9775:943;-1:-1:-1;465:13920:51;;-1:-1:-1;;;10474:52:51;;10314:10;10400:20;10474:52;;465:13920;10489:4;-1:-1:-1;;;;;465:13920:51;;;;10400:20;465:13920;;10474:52;;;;;;;465:13920;10474:52;;;9775:943;10314:10;10400:20;10314:10;10587:14;465:13920;10314:10;;10587:14;;:::i;:::-;465:13920;;-1:-1:-1;;;10623:52:51;;10314:10;10400:20;10623:52;;465:13920;;;;;;10623:52;;;;;;465:13920;10623:52;;;9775:943;10623:84;;;;:::i;:52::-;;465:13920;10623:52;;465:13920;10623:52;;;;;;576:8;10623:52;;;:::i;:::-;;;576:8;;;;10623:84;576:8;;10623:52;;;;;-1:-1:-1;10623:52:51;;10474;;;;465:13920;10474:52;;465:13920;10474:52;;;;;;576:8;10474:52;;;:::i;:::-;;;576:8;;;;;;10400:20;10474:52;;;;;-1:-1:-1;10474:52:51;;10400:20;;;465:13920;10400:20;;465:13920;10400:20;;;;;;576:8;10400:20;;;:::i;:::-;;;576:8;;;;;10400:20;;;;;;-1:-1:-1;10400:20:51;;8435:1121;;465:13920;;;;;;8562:13;8554:21;8562:13;;-1:-1:-1;;;;;8661:5:51;465:13920;;;;;8886:8;;8646:4;465:13920;;;;8626:50;;465:13920;;8626:50;:::i;:::-;8766:4;;;8773:8;8766:4;;8746:10;8773:8;;:::i;:::-;8886;:::i;:::-;465:13920;;-1:-1:-1;;;8948:20:51;;;;;465:13920;;;;;;8948:20;465:13920;-1:-1:-1;576:8:51;8948:20;;;;;;;465:13920;8948:20;;;9057:14;8746:10;;;9057:14;;:::i;8550:1000::-;9161:4;-1:-1:-1;;;;;465:13920:51;9229:6;9222:4;;9202:10;465:13920;9229:6;:::i;:::-;9315:5;-1:-1:-1;;;;;465:13920:51;;9323:6;;465:13920;;;;9323:6;:::i;:::-;465:13920;;576:8;;;;9369:18;;;;;465:13920;;9369:18;;;465:13920;9369:18;;;;;;;;465:13920;9369:18;;;8550:1000;9202:10;;9476:14;9202:10;;9476:14;;:::i;9369:18::-;;;;465:13920;9369:18;;465:13920;9369:18;;;;;;576:8;9369:18;;;:::i;:::-;;;576:8;;;;;;9476:14;9369:18;;;;;-1:-1:-1;9369:18:51;;7257:1074;;7401:4;-1:-1:-1;;;;;465:13920:51;;;;;;;;7429:13;7421:21;7429:13;;7509:5;-1:-1:-1;;;;;465:13920:51;;7477:47;;465:13920;7477:47;:::i;:::-;465:13920;;-1:-1:-1;;;7584:40:51;;465:13920;;;;7584:40;465:13920;7584:40;465:13920;;7584:13;-1:-1:-1;;;;;465:13920:51;7584:40;;;;;;;465:13920;7584:40;;;7417:908;7682:18;;;;;;:::i;:::-;465:13920;;576:8;;;;7740:30;;7584:40;7740:30;;465:13920;7584:40;7740:30;;;465:13920;7740:30;;;;;;;;465:13920;7740:30;;;7859:14;7846:10;;;7859:14;;:::i;7584:40::-;;;;;;;;;;;;;;;576:8;7584:40;;;:::i;:::-;;;576:8;;;;;;;7682:18;7584:40;;;;;-1:-1:-1;7584:40:51;;7417:908;465:13920;;-1:-1:-1;;;7977:38:51;;465:13920;7977:38;;465:13920;;7977:38;;465:13920;;7977:13;-1:-1:-1;;;;;465:13920:51;7977:38;;;;;;;465:13920;7977:38;;;7417:908;-1:-1:-1;8065:5:51;-1:-1:-1;;;;;465:13920:51;;8073:18;;465:13920;;;;8073:18;:::i;7977:38::-;;;;;;;;;;;;;;576:8;7977:38;;;:::i;:::-;;;576:8;;;;;7977:38;;;;;;;-1:-1:-1;7977:38:51;;6377:777;;465:13920;;;;;;6502:13;6494:21;6502:13;;6582:4;-1:-1:-1;;;;;465:13920:51;6550:46;;465:13920;6550:46;:::i;:::-;465:13920;;-1:-1:-1;;;6610:40:51;;465:13920;;;;6610:40;465:13920;6610:40;465:13920;;6610:13;-1:-1:-1;;;;;465:13920:51;6610:40;;;;;;;;6720:6;6707:10;;;6720:6;;:::i;6610:40::-;;;;;;;;;;;576:8;6610:40;;;:::i;:::-;;;576:8;;;;6720:6;;-1:-1:-1;6610:40:51;;;;;-1:-1:-1;6610:40:51;;6490:658;465:13920;;-1:-1:-1;;;6812:38:51;;465:13920;6812:38;;465:13920;;6812:38;;465:13920;;6812:13;-1:-1:-1;;;;;465:13920:51;6812:38;;;;;;;465:13920;6812:38;;;-1:-1:-1;465:13920:51;;-1:-1:-1;;;6904:52:51;;6944:10;6812:38;6904:52;;465:13920;6919:4;-1:-1:-1;;;;;465:13920:51;;6812:38;465:13920;6904:52;465:13920;;6904:52;;;;;;;465:13920;6904:52;;;6944:10;6904:52;6944:10;7017:14;6812:38;6944:10;;7017:14;;:::i;12248:1324::-;465:13920;;;;;:::i;:::-;-1:-1:-1;465:13920:51;;;;;;;;-1:-1:-1;;;;;465:13920:51;12472:23;;;-1:-1:-1;;;;;;465:13920:51;;;12535:4;465:13920;;;12515:25;465:13920;;12597:112;;;576:8;12597:112;:::i;:::-;465:13920;;;;;;:::i;:::-;;;576:8;12567:188;;;465:13920;12560:195;:::o;12511:693::-;12812:104;;;576:8;12812:104;:::i;:::-;13045:25;576:8;465:13920;;;;;;;13096:25;;12971:172;13096:25;;:::i;:::-;12971:172;;:::i;12468:1098::-;465:13920;;;13245:4;-1:-1:-1;;;;;465:13920:51;13224:26;465:13920;;-1:-1:-1;465:13920:51;;13299:58;;576:8;13299:58;:::i;13220:346::-;13459:58;;576:8;13459:58;:::i;12248:1324::-;;;;;;465:13920;;;;;:::i;:::-;-1:-1:-1;465:13920:51;;;;;;;;-1:-1:-1;;;;;465:13920:51;12472:23;;;-1:-1:-1;;;;;;465:13920:51;;;12535:4;465:13920;;;12515:25;465:13920;;12597:112;;;;:::i;:::-;465:13920;;;;;;;:::i;:::-;;;12567:188;;;465:13920;12560:195;:::o;12511:693::-;12812:104;13096:25;12812:104;13045:25;12812:104;;12971:172;12812:104;;;:::i;:::-;13045:25;;;;:::i;:::-;13096;;:::i;12468:1098::-;13245:4;-1:-1:-1;;;;;465:13920:51;13224:26;465:13920;;-1:-1:-1;465:13920:51;;-1:-1:-1;465:13920:51;13299:58;;;;:::i;13220:346::-;13459:58;;;;:::i;10847:334::-;;11033:22;;11029:74;;11120:33;;11119:55;11120:33;;:::i;:::-;11119:55;:::i;11029:74::-;11071:21;;;:::o;1702:188:32:-;465:13920:51;;-1:-1:-1;;;1829:53:32;;;;-1:-1:-1;;;;;465:13920:51;;;1829:53:32;;;465:13920:51;;;;;;;;;;;;;;;;;1829:53:32;;;;;;;465:13920:51;1829:53:32;:::i;:::-;;:::i;:::-;1702:188::o;1303:160::-;465:13920:51;;-1:-1:-1;;;1412:43:32;;;;-1:-1:-1;;;;;465:13920:51;;;;1412:43:32;;;465:13920:51;;;;;;;;;1412:43:32;;;;;;465:13920:51;;1412:43:32;:::i;13645:738:51:-;-1:-1:-1;;;;;465:13920:51;;;13859:4;465:13920;;;13839:25;465:13920;;;;-1:-1:-1;;;13891:39:51;;;;;465:13920;;;;;;13891:39;465:13920;13891:13;-1:-1:-1;;;;;465:13920:51;13891:39;;;;;;;465:13920;13891:39;;;13884:46;;:::o;13891:39::-;;;465:13920;13891:39;;465:13920;13891:39;;;;;;576:8;13891:39;;;:::i;:::-;;;576:8;;;;;13884:46;:::o;13891:39::-;;;-1:-1:-1;13891:39:51;;13835:310;465:13920;;-1:-1:-1;;;14018:39:51;;;;;465:13920;;;;14018:13;-1:-1:-1;;;;;465:13920:51;;;;14018:39;465:13920;;14018:39;;;;;;465:13920;14018:39;;;13835:310;465:13920;;;14018:39;465:13920;;576:8;;;;;;;14082:48;;14018:39;14082:48;;465:13920;14082:48;;;;;;;465:13920;14082:48;;;14075:55;;:::o;14018:39::-;;465:13920;14018:39;;465:13920;14018:39;;;;;;576:8;14018:39;;;:::i;:::-;;;576:8;;;;465:13920;576:8;;14018:39;;;;;-1:-1:-1;14018:39:51;;13645:738;-1:-1:-1;;;;;465:13920:51;13796:23;;;-1:-1:-1;;;;;;465:13920:51;;;13859:4;465:13920;;;13839:25;465:13920;;;;-1:-1:-1;;;13891:39:51;;;;;465:13920;;;;;;13891:39;465:13920;13891:13;-1:-1:-1;;;;;465:13920:51;13891:39;;;;;;;465:13920;13891:39;;;13884:46;;:::o;13792:585::-;14186:4;-1:-1:-1;;;;;465:13920:51;14165:26;465:13920;;-1:-1:-1;465:13920:51;;;;-1:-1:-1;;;14240:31:51;;;;;465:13920;;;;;;14240:31;465:13920;14240:5;-1:-1:-1;;;;;465:13920:51;14240:31;;;;;;;465:13920;14240:31;;;14233:38;;:::o;14161:216::-;465:13920;;-1:-1:-1;;;14335:31:51;;;;;465:13920;;;;;;14335:31;465:13920;14335:5;-1:-1:-1;;;;;465:13920:51;14335:31;;;;;;;465:13920;14335:31;;;14328:38;;:::o;2081:225:32:-;465:13920:51;;-1:-1:-1;;;2200:39:32;;2224:4;2200:39;;;465:13920:51;-1:-1:-1;;;;;465:13920:51;;;;;;;;;;;;;;;;2200:39:32;465:13920:51;;2200:39:32;;;;;;;-1:-1:-1;2200:39:32;;;2081:225;2278:20;3411:47;2278:20;3411:47;2278:20;-1:-1:-1;2278:20:32;;;;:::i;:::-;465:13920:51;;-1:-1:-1;;;465:13920:51;3411:47:32;;;;;-1:-1:-1;;;;;465:13920:51;;;;3411:47:32;;465:13920:51;;;;;;;;;;;;;;;;3411:47:32;;465:13920:51;;3411:47:32;;;;;;:::i;:::-;8024:25;;;;;;;;;;:::i;:::-;8066:69;;;2081:225;8066:103;;;;2081:225;3473:45;;3469:201;;2081:225;;;:::o;3469:201::-;3561:43;3646:12;465:13920:51;;;576:8;;;;465:13920;3561:43:32;;;465:13920:51;3561:43:32;;465:13920:51;-1:-1:-1;2200:39:32;465:13920:51;;;2200:39:32;3561:43;;;;;;:::i;:::-;;;:::i;8066:103::-;8139:26;;;:30;;8066:103;;;:69;465:13920:51;;;;-1:-1:-1;8078:22:32;;;:56;;;;8066:69;;;;;;;8078:56;8104:30;;;465:13920:51;8104:30:32;;;;;;;;:::i;:::-;8078:56;;;;2200:39;;;465:13920:51;2200:39:32;;465:13920:51;2200:39:32;;;;;;576:8:51;2200:39:32;;;:::i;:::-;;;576:8:51;;;;;3411:47:32;2200:39;;;;;-1:-1:-1;2200:39:32;;11636:312:51;;;;11814:21;;11810:60;;11886:55;11887:34;;;;:::i;11810:60::-;11851:8;;;465:13920;11851:8;:::o;11252:313::-;11430:22;;11426:61;;11503:55;11504:33;;;;:::i;465:13920::-;;;;;;;;;;;;;;;;;;:::o;6468:629:32:-;2626:1:33;6468:629:32;3304:55:33;6468:629:32;465:13920:51;;;;;;3256:31:33;;;;;;;;;;;;:::i;:::-;3304:55;;;:::i;:::-;465:13920:51;;6960:22:32;;;;:57;;;;6468:629;6956:135;;;;6468:629;:::o;6956:135::-;7040:40;;;2626:1:33;7040:40:32;;465:13920:51;;2626:1:33;7040:40:32;6960:57;6987:30;;;3256:31:33;6987:30:32;;;;;;;;:::i;:::-;6986:31;6960:57;;;;465:13920:51;;;;;;;;;;;;;;;;;;;-1:-1:-1;;465:13920:51;;;;;:::i;:::-;;;;-1:-1:-1;465:13920:51;;;;:::o;:::-;;;:::o;4421:582:33:-;;4593:8;;-1:-1:-1;465:13920:51;;5674:21:33;:17;;5846:142;;;;;;5670:385;6025:19;;;5694:1;6025:19;;5694:1;6025:19;4589:408;465:13920:51;;4841:22:33;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:33;4917:24;;;-1:-1:-1;;;;;465:13920:51;;;;4917:24:33;465:13920:51;;;4917:24:33;4841:49;4867:18;;;:23;4841:49;","linkReferences":{},"immutableReferences":{"62281":[{"start":206,"length":32},{"start":490,"length":32},{"start":1480,"length":32},{"start":2259,"length":32},{"start":3726,"length":32},{"start":3941,"length":32},{"start":4370,"length":32},{"start":4590,"length":32},{"start":4816,"length":32},{"start":5156,"length":32},{"start":6947,"length":32},{"start":7035,"length":32}],"62284":[{"start":154,"length":32},{"start":719,"length":32},{"start":1317,"length":32},{"start":1379,"length":32},{"start":1857,"length":32},{"start":2013,"length":32},{"start":2075,"length":32},{"start":2392,"length":32},{"start":2454,"length":32},{"start":3205,"length":32},{"start":3371,"length":32},{"start":3566,"length":32},{"start":3764,"length":32},{"start":4058,"length":32},{"start":4412,"length":32},{"start":4536,"length":32},{"start":4757,"length":32},{"start":5281,"length":32},{"start":5575,"length":32},{"start":5705,"length":32},{"start":5857,"length":32},{"start":5996,"length":32},{"start":6107,"length":32},{"start":6355,"length":32},{"start":6741,"length":32},{"start":6870,"length":32}],"62287":[{"start":640,"length":32},{"start":2747,"length":32},{"start":3292,"length":32},{"start":4893,"length":32},{"start":5097,"length":32},{"start":5357,"length":32},{"start":5498,"length":32},{"start":6423,"length":32},{"start":6552,"length":32},{"start":6809,"length":32}]}},"methodIdentifiers":{"getCapabilities(bytes32,address,address)":"48bd7dfd","getLimits(bytes32,address,address)":"a9270fbe","getPoolIds(uint256,uint256)":"23eeca01","getTokens(bytes32)":"ecbbc033","price(bytes32,address,address,uint256[])":"aad6e488","swap(bytes32,address,address,uint8,uint256)":"8307c655"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_weEth\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"LimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"Unavailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getCapabilities\",\"outputs\":[{\"internalType\":\"enum ISwapAdapterTypes.Capability[]\",\"name\":\"capabilities\",\"type\":\"uint8[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"}],\"name\":\"getLimits\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"limits\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getPoolIds\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"ids\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"getTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"specifiedAmounts\",\"type\":\"uint256[]\"}],\"name\":\"price\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction[]\",\"name\":\"prices\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"enum ISwapAdapterTypes.OrderSide\",\"name\":\"side\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"calculatedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction\",\"name\":\"price\",\"type\":\"tuple\"}],\"internalType\":\"struct ISwapAdapterTypes.Trade\",\"name\":\"trade\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract supports the following swaps: ETH->eETH, weETH<->eETH, ETH->weETH\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"LimitExceeded(uint256)\":[{\"details\":\"The LimitExceeded error is thrown when a limit has been exceeded. E.g. the specified amount can't be traded safely.\"}],\"NotImplemented(string)\":[{\"details\":\"The NotImplemented error is thrown when a function is not implemented.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}],\"Unavailable(string)\":[{\"details\":\"The Unavailable error is thrown when a pool or swap is not available for unexpected reason. E.g. it was paused due to a bug.\"}]},\"kind\":\"dev\",\"methods\":{\"getCapabilities(bytes32,address,address)\":{\"params\":{\"poolId\":\"The ID of the trading pool.\"},\"returns\":{\"capabilities\":\"An array of Capability.\"}},\"getLimits(bytes32,address,address)\":{\"details\":\"Retrieve the maximum limits of a token that can be traded. The limit is reached when the change in the received amounts is zero or close to zero or when the swap fails because of the pools restrictions. Overestimate if in doubt rather than underestimate. The swap function should not error with `LimitExceeded` if called with amounts below the limit.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\"},\"returns\":{\"limits\":\"An array of size two indicating the limit amount for the sell token (maximum the pool is willing to buy in sell token) as well as the limit amount of the buy token (maximum the pool is willing to sell in buy token).\"}},\"getPoolIds(uint256,uint256)\":{\"details\":\"Mainly used for testing. It is alright to not return all available pools here. Nevertheless, this is useful to test against the substreams implementation. If implemented, it saves time writing custom tests.\",\"params\":{\"limit\":\"The maximum number of pool IDs to retrieve.\",\"offset\":\"The starting index from which to retrieve pool IDs.\"},\"returns\":{\"ids\":\"An array of pool IDs.\"}},\"getTokens(bytes32)\":{\"details\":\"Mainly used for testing as this is redundant with the required substreams implementation.\",\"params\":{\"poolId\":\"The ID of the trading pool.\"},\"returns\":{\"tokens\":\"An array of address contracts.\"}},\"price(bytes32,address,address,uint256[])\":{\"details\":\"The returned prices should include all dex fees. In case the fee is dynamic on the amount traded, the returned price is expected to include the minimum fee. Note that the returned price should be the marginal price which is distinct from the executed price `swap(amount_in) / amount_in`! The marginal price is defined as the price to trade an arbitrarily small (almost zero) amount after the trade of (amount). E.g. the marginal price of a uniswap v2 pool at amount=0 is `reserve0/reserve1`. Ideally this method should be implemented, although it is optional as the price function can be numerically derived from the swap function. In case it is not available, it should be flagged via capabilities and calling it should revert using the `NotImplemented` error. The method needs to be implemented as view as this is usually more efficient and can be run in parallel.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\",\"specifiedAmounts\":\"Amounts to calculate marginal prices at.\"},\"returns\":{\"prices\":\"array of prices as fractions corresponding to the provided amounts.\"}},\"swap(bytes32,address,address,uint8,uint256)\":{\"details\":\"This function should be state modifying, meaning it should actually execute the swap and change the state of the EVM accordingly. Please include a gas usage estimate for each amount. This can be achieved e.g. by using the `gasleft()` function. The return type `Trade` has an attribute called price which should contain the value of `price(specifiedAmount)`. As this is optional, defined via `Capability.PriceFunction`, it is valid to return a Fraction(0, 0) value for this price. In that case the price will be estimated numerically.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\",\"side\":\"The side of the trade (Sell or Buy).\",\"specifiedAmount\":\"The amount to be traded.\"},\"returns\":{\"trade\":\"Trade struct representing the executed trade.\"}}},\"title\":\"Etherfi Adapter\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCapabilities(bytes32,address,address)\":{\"notice\":\"Retrieves the capabilities of the selected pool.\"},\"getLimits(bytes32,address,address)\":{\"notice\":\"Retrieves the limits for each token.\"},\"getPoolIds(uint256,uint256)\":{\"notice\":\"Retrieves a range of pool IDs.\"},\"getTokens(bytes32)\":{\"notice\":\"Retrieves the tokens in the selected pool.\"},\"price(bytes32,address,address,uint256[])\":{\"notice\":\"Calculates marginal prices for specified amounts (optional).\"},\"swap(bytes32,address,address,uint8,uint256)\":{\"notice\":\"Simulates swapping tokens on a given pool.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/etherfi/EtherfiAdapter.sol\":\"EtherfiAdapter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/etherfi/EtherfiAdapter.sol\":{\"keccak256\":\"0xc4f85bd8d63c6f5f958af4312225342fff7f3088a079ea4e23f6f9574dfd0e7b\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f67397f3b22a736484a0c4a81d1642d5458dc34501bf1caefb9d1773bf18a1d0\",\"dweb:/ipfs/QmR3EwEjG6XoFxm48TftNxyRmTWJwk6qT4eQ4cjeVk8RK9\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_weEth","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"type":"error","name":"LimitExceeded"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"NotImplemented"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"Unavailable"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function","name":"getCapabilities","outputs":[{"internalType":"enum ISwapAdapterTypes.Capability[]","name":"capabilities","type":"uint8[]"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"}],"stateMutability":"view","type":"function","name":"getLimits","outputs":[{"internalType":"uint256[]","name":"limits","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPoolIds","outputs":[{"internalType":"bytes32[]","name":"ids","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getTokens","outputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"},{"internalType":"uint256[]","name":"specifiedAmounts","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"price","outputs":[{"internalType":"struct ISwapAdapterTypes.Fraction[]","name":"prices","type":"tuple[]","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"},{"internalType":"enum ISwapAdapterTypes.OrderSide","name":"side","type":"uint8"},{"internalType":"uint256","name":"specifiedAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swap","outputs":[{"internalType":"struct ISwapAdapterTypes.Trade","name":"trade","type":"tuple","components":[{"internalType":"uint256","name":"calculatedAmount","type":"uint256"},{"internalType":"uint256","name":"gasUsed","type":"uint256"},{"internalType":"struct ISwapAdapterTypes.Fraction","name":"price","type":"tuple","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"getCapabilities(bytes32,address,address)":{"params":{"poolId":"The ID of the trading pool."},"returns":{"capabilities":"An array of Capability."}},"getLimits(bytes32,address,address)":{"details":"Retrieve the maximum limits of a token that can be traded. The limit is reached when the change in the received amounts is zero or close to zero or when the swap fails because of the pools restrictions. Overestimate if in doubt rather than underestimate. The swap function should not error with `LimitExceeded` if called with amounts below the limit.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold."},"returns":{"limits":"An array of size two indicating the limit amount for the sell token (maximum the pool is willing to buy in sell token) as well as the limit amount of the buy token (maximum the pool is willing to sell in buy token)."}},"getPoolIds(uint256,uint256)":{"details":"Mainly used for testing. It is alright to not return all available pools here. Nevertheless, this is useful to test against the substreams implementation. If implemented, it saves time writing custom tests.","params":{"limit":"The maximum number of pool IDs to retrieve.","offset":"The starting index from which to retrieve pool IDs."},"returns":{"ids":"An array of pool IDs."}},"getTokens(bytes32)":{"details":"Mainly used for testing as this is redundant with the required substreams implementation.","params":{"poolId":"The ID of the trading pool."},"returns":{"tokens":"An array of address contracts."}},"price(bytes32,address,address,uint256[])":{"details":"The returned prices should include all dex fees. In case the fee is dynamic on the amount traded, the returned price is expected to include the minimum fee. Note that the returned price should be the marginal price which is distinct from the executed price `swap(amount_in) / amount_in`! The marginal price is defined as the price to trade an arbitrarily small (almost zero) amount after the trade of (amount). E.g. the marginal price of a uniswap v2 pool at amount=0 is `reserve0/reserve1`. Ideally this method should be implemented, although it is optional as the price function can be numerically derived from the swap function. In case it is not available, it should be flagged via capabilities and calling it should revert using the `NotImplemented` error. The method needs to be implemented as view as this is usually more efficient and can be run in parallel.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold.","specifiedAmounts":"Amounts to calculate marginal prices at."},"returns":{"prices":"array of prices as fractions corresponding to the provided amounts."}},"swap(bytes32,address,address,uint8,uint256)":{"details":"This function should be state modifying, meaning it should actually execute the swap and change the state of the EVM accordingly. Please include a gas usage estimate for each amount. This can be achieved e.g. by using the `gasleft()` function. The return type `Trade` has an attribute called price which should contain the value of `price(specifiedAmount)`. As this is optional, defined via `Capability.PriceFunction`, it is valid to return a Fraction(0, 0) value for this price. In that case the price will be estimated numerically.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold.","side":"The side of the trade (Sell or Buy).","specifiedAmount":"The amount to be traded."},"returns":{"trade":"Trade struct representing the executed trade."}}},"version":1},"userdoc":{"kind":"user","methods":{"getCapabilities(bytes32,address,address)":{"notice":"Retrieves the capabilities of the selected pool."},"getLimits(bytes32,address,address)":{"notice":"Retrieves the limits for each token."},"getPoolIds(uint256,uint256)":{"notice":"Retrieves a range of pool IDs."},"getTokens(bytes32)":{"notice":"Retrieves the tokens in the selected pool."},"price(bytes32,address,address,uint256[])":{"notice":"Calculates marginal prices for specified amounts (optional)."},"swap(bytes32,address,address,uint8,uint256)":{"notice":"Simulates swapping tokens on a given pool."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/etherfi/EtherfiAdapter.sol":"EtherfiAdapter"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/etherfi/EtherfiAdapter.sol":{"keccak256":"0xc4f85bd8d63c6f5f958af4312225342fff7f3088a079ea4e23f6f9574dfd0e7b","urls":["bzz-raw://f67397f3b22a736484a0c4a81d1642d5458dc34501bf1caefb9d1773bf18a1d0","dweb:/ipfs/QmR3EwEjG6XoFxm48TftNxyRmTWJwk6qT4eQ4cjeVk8RK9"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"}},"version":1},"id":51} \ No newline at end of file diff --git a/evm/out/EtherfiAdapter.sol/ILiquidityPool.json b/evm/out/EtherfiAdapter.sol/ILiquidityPool.json deleted file mode 100644 index 9607220..0000000 --- a/evm/out/EtherfiAdapter.sol/ILiquidityPool.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"amountForShare","inputs":[{"name":"_share","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"deposit","inputs":[{"name":"_referral","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"deposit","inputs":[{"name":"_user","type":"address","internalType":"address"},{"name":"_referral","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"getTotalEtherClaimOf","inputs":[{"name":"_user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTotalPooledEther","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"numPendingDeposits","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"requestWithdraw","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"sharesForAmount","inputs":[{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"sharesForWithdrawalAmount","inputs":[{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalValueInLp","inputs":[],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"totalValueOutOfLp","inputs":[],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"amountForShare(uint256)":"561bddf8","deposit()":"d0e30db0","deposit(address)":"f340fa01","deposit(address,address)":"f9609f08","getTotalEtherClaimOf(address)":"51199700","getTotalPooledEther()":"37cfdaca","numPendingDeposits()":"e4537934","requestWithdraw(address,uint256)":"397a1b28","sharesForAmount(uint256)":"3a53acb0","sharesForWithdrawalAmount(uint256)":"917266fa","totalValueInLp()":"7c90fbf0","totalValueOutOfLp()":"456a23a6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_share\",\"type\":\"uint256\"}],\"name\":\"amountForShare\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_referral\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_referral\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getTotalEtherClaimOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalPooledEther\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"numPendingDeposits\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"requestWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"sharesForAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"sharesForWithdrawalAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalValueInLp\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalValueOutOfLp\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/etherfi/EtherfiAdapter.sol\":\"ILiquidityPool\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/etherfi/EtherfiAdapter.sol\":{\"keccak256\":\"0xc4f85bd8d63c6f5f958af4312225342fff7f3088a079ea4e23f6f9574dfd0e7b\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f67397f3b22a736484a0c4a81d1642d5458dc34501bf1caefb9d1773bf18a1d0\",\"dweb:/ipfs/QmR3EwEjG6XoFxm48TftNxyRmTWJwk6qT4eQ4cjeVk8RK9\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"_share","type":"uint256"}],"stateMutability":"view","type":"function","name":"amountForShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"payable","type":"function","name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_referral","type":"address"}],"stateMutability":"payable","type":"function","name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_referral","type":"address"}],"stateMutability":"payable","type":"function","name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"stateMutability":"view","type":"function","name":"getTotalEtherClaimOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getTotalPooledEther","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"numPendingDeposits","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"requestWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"view","type":"function","name":"sharesForAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"view","type":"function","name":"sharesForWithdrawalAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalValueInLp","outputs":[{"internalType":"uint128","name":"","type":"uint128"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalValueOutOfLp","outputs":[{"internalType":"uint128","name":"","type":"uint128"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/etherfi/EtherfiAdapter.sol":"ILiquidityPool"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/etherfi/EtherfiAdapter.sol":{"keccak256":"0xc4f85bd8d63c6f5f958af4312225342fff7f3088a079ea4e23f6f9574dfd0e7b","urls":["bzz-raw://f67397f3b22a736484a0c4a81d1642d5458dc34501bf1caefb9d1773bf18a1d0","dweb:/ipfs/QmR3EwEjG6XoFxm48TftNxyRmTWJwk6qT4eQ4cjeVk8RK9"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"}},"version":1},"id":51} \ No newline at end of file diff --git a/evm/out/EtherfiAdapter.sol/IWeEth.json b/evm/out/EtherfiAdapter.sol/IWeEth.json deleted file mode 100644 index 019dc8a..0000000 --- a/evm/out/EtherfiAdapter.sol/IWeEth.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"eETH","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IeEth"}],"stateMutability":"view"},{"type":"function","name":"getEETHByWeETH","inputs":[{"name":"_weETHAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getWeETHByeETH","inputs":[{"name":"_eETHAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"unwrap","inputs":[{"name":"_weETHAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"wrap","inputs":[{"name":"_eETHAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"eETH()":"0de371e2","getEETHByWeETH(uint256)":"94626044","getWeETHByeETH(uint256)":"d044fe9b","unwrap(uint256)":"de0e9a3e","wrap(uint256)":"ea598cb0"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"eETH\",\"outputs\":[{\"internalType\":\"contract IeEth\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_weETHAmount\",\"type\":\"uint256\"}],\"name\":\"getEETHByWeETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_eETHAmount\",\"type\":\"uint256\"}],\"name\":\"getWeETHByeETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_weETHAmount\",\"type\":\"uint256\"}],\"name\":\"unwrap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_eETHAmount\",\"type\":\"uint256\"}],\"name\":\"wrap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/etherfi/EtherfiAdapter.sol\":\"IWeEth\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/etherfi/EtherfiAdapter.sol\":{\"keccak256\":\"0xc4f85bd8d63c6f5f958af4312225342fff7f3088a079ea4e23f6f9574dfd0e7b\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f67397f3b22a736484a0c4a81d1642d5458dc34501bf1caefb9d1773bf18a1d0\",\"dweb:/ipfs/QmR3EwEjG6XoFxm48TftNxyRmTWJwk6qT4eQ4cjeVk8RK9\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"eETH","outputs":[{"internalType":"contract IeEth","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_weETHAmount","type":"uint256"}],"stateMutability":"view","type":"function","name":"getEETHByWeETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_eETHAmount","type":"uint256"}],"stateMutability":"view","type":"function","name":"getWeETHByeETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_weETHAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unwrap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_eETHAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"wrap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/etherfi/EtherfiAdapter.sol":"IWeEth"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/etherfi/EtherfiAdapter.sol":{"keccak256":"0xc4f85bd8d63c6f5f958af4312225342fff7f3088a079ea4e23f6f9574dfd0e7b","urls":["bzz-raw://f67397f3b22a736484a0c4a81d1642d5458dc34501bf1caefb9d1773bf18a1d0","dweb:/ipfs/QmR3EwEjG6XoFxm48TftNxyRmTWJwk6qT4eQ4cjeVk8RK9"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"}},"version":1},"id":51} \ No newline at end of file diff --git a/evm/out/EtherfiAdapter.sol/IeEth.json b/evm/out/EtherfiAdapter.sol/IeEth.json deleted file mode 100644 index b99778b..0000000 --- a/evm/out/EtherfiAdapter.sol/IeEth.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"liquidityPool","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ILiquidityPool"}],"stateMutability":"view"},{"type":"function","name":"shares","inputs":[{"name":"_user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalShares","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"liquidityPool()":"665a11ca","shares(address)":"ce7c2ac2","totalShares()":"3a98ef39"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"liquidityPool\",\"outputs\":[{\"internalType\":\"contract ILiquidityPool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"shares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/etherfi/EtherfiAdapter.sol\":\"IeEth\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/etherfi/EtherfiAdapter.sol\":{\"keccak256\":\"0xc4f85bd8d63c6f5f958af4312225342fff7f3088a079ea4e23f6f9574dfd0e7b\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f67397f3b22a736484a0c4a81d1642d5458dc34501bf1caefb9d1773bf18a1d0\",\"dweb:/ipfs/QmR3EwEjG6XoFxm48TftNxyRmTWJwk6qT4eQ4cjeVk8RK9\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"liquidityPool","outputs":[{"internalType":"contract ILiquidityPool","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"stateMutability":"view","type":"function","name":"shares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/etherfi/EtherfiAdapter.sol":"IeEth"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/etherfi/EtherfiAdapter.sol":{"keccak256":"0xc4f85bd8d63c6f5f958af4312225342fff7f3088a079ea4e23f6f9574dfd0e7b","urls":["bzz-raw://f67397f3b22a736484a0c4a81d1642d5458dc34501bf1caefb9d1773bf18a1d0","dweb:/ipfs/QmR3EwEjG6XoFxm48TftNxyRmTWJwk6qT4eQ4cjeVk8RK9"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"}},"version":1},"id":51} \ No newline at end of file diff --git a/evm/out/EtherfiAdapter.t.sol/EtherfiAdapterTest.json b/evm/out/EtherfiAdapter.t.sol/EtherfiAdapterTest.json deleted file mode 100644 index 22c1f16..0000000 --- a/evm/out/EtherfiAdapter.t.sol/EtherfiAdapterTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"receive","stateMutability":"payable"},{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testGetCapabilitiesEtherfi","inputs":[{"name":"pair","type":"bytes32","internalType":"bytes32"},{"name":"t0","type":"address","internalType":"address"},{"name":"t1","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"testGetLimitsEtherfi","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"testGetTokensEtherfi","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"testPriceFuzzEtherfi","inputs":[{"name":"amount0","type":"uint256","internalType":"uint256"},{"name":"amount1","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"testSwapBuyIncreasingEtherfi","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapFuzzEtherfiEethWeEth","inputs":[{"name":"specifiedAmount","type":"uint256","internalType":"uint256"},{"name":"isBuy","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapFuzzEtherfiEthEeth","inputs":[{"name":"specifiedAmount","type":"uint256","internalType":"uint256"},{"name":"isBuy","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapFuzzEtherfiEthWeEth","inputs":[{"name":"specifiedAmount","type":"uint256","internalType":"uint256"},{"name":"isBuy","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapFuzzEtherfiWeEthEeth","inputs":[{"name":"specifiedAmount","type":"uint256","internalType":"uint256"},{"name":"isBuy","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapSellIncreasingEtherfi","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"LimitExceeded","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotImplemented","inputs":[{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"Unavailable","inputs":[{"name":"reason","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x60808060405234605457600160ff19600c541617600c55600160ff19601e541617601e5573cd5fe23c85820f7b72d0926fc9b05b43e359b7ee60018060a01b0319601f541617601f556176d090816100598239f35b5f80fdfe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c9081630a9254e4146139b4575080631d279786146135eb5780631ed7831c1461356d57806323faaaa914612d675780632ade388014612ba85780633e5e3c2314612b2a5780633f7286f414612aac57806348b4e4181461225357806366d9a9a0146120a5578063796f2c7514611d8e5780637f6f69f414611c67578063821a7e72146115e557806385226c8114611553578063916a17c6146112c7578063a9f992f014610dce578063b5508aa914610d35578063ba414fa614610d10578063c307553a14610c0a578063c6549c14146102c6578063d25f701e146101c9578063e20c9f711461013b5763fa7626d40361000f5734610138578060031936011261013857602060ff601e54166040519015158152f35b80fd5b503461013857806003193601126101385760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b8181106101aa576101a68561019a81870382613e76565b60405191829182613ccc565b0390f35b82546001600160a01b0316845260209093019260019283019201610183565b5034610138578060031936011261013857601e54602054601f5460405163549387df60e11b8152600481018590526001600160a01b03928316602482015290821660448201528392909183918391606491839160089190911c165afa9081156102965782916102a4575b50515f51602061767b5f395f51905f523b156102a1576040519063260a5b1560e21b825260048201526002602482015281816044815f51602061767b5f395f51905f525afa8015610296576102855750f35b8161028f91613e76565b6101385780f35b6040513d84823e3d90fd5b50fd5b6102c091503d8084833e6102b88183613e76565b810190613f3a565b5f610233565b5034610138578060031936011261013857610ca06040516102e78282613e76565b60648152601f19820180366020840137670de0b6b3a764000061030983613fb3565b5260015b60648110610bc557506103236040519384613e76565b60648352835b818110610b8957505060015b606481106103c057505060015b6063811061034e578280f35b6103588183613fe4565b515160018201908183116103ac57816103836103a69261037b6001969588613fe4565b5151906144be565b602061039d816103938689613fe4565b5101519287613fe4565b510151906144be565b01610342565b634e487b7160e01b85526011600452602485fd5b604051634b88b8ad60e11b815290602082600481885f51602061767b5f395f51905f525af1918215610801578592610b56575b50601f546001600160a01b031661047661040d8386613fe4565b5191878060405160208101906370a0823160e01b825230602482015260248152610438604482613e76565b5190845afa5061045861044961455c565b60208082518301019101613f14565b5060018060a01b03166001600160601b0360a01b6011541617601155565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015610b42576001810180600e55811015610b2e57600e8752307fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd9190910155601154600f5460105488926001600160a01b03169160e01b6104f26145a2565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908186526020526040852060405160208101906105448161053688888661458b565b03601f198101835282613e76565b519020865260205260ff60036040872001541615610b20575b6001600160a01b0384165f908152600d60205260409020908552602052610536610596604086209360405192839160208301958661458b565b51902083526020526040822060018101549360028201546105b78187614141565b6109b1575b8254604051630667f9d760e41b81526001600160a01b038616600482015260248101829052969091906020886044815f51602061767b5f395f51905f525afa9788156109a657879861096a575b506001908201610100031b5f1901811b198716915f51602061767b5f395f51905f523b15610966576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528481606481835f51602061767b5f395f51905f525af190811561080157859161094d575b505061069061475e565b919015918215610942575b505061086157505050506106ad615256565b601f54601e546107099160209160081c6001600160a01b0390811691166106d48588613fe4565b5160405163095ea7b360e01b81526001600160a01b0390931660048401526024830152909283919082908a9082906044820190565b03925af1801561083a57610845575b50601e54601f546020546001600160a01b0391821692608092899260089290921c8116911682610748878a613fe4565b519561076a60405197889687958694638307c65560e01b8652600486016140d1565b03925af190811561083a57869161080c575b506107878286613fe4565b526107928185613fe4565b5060405191631135fc2960e21b83526004830152602082602481885f51602061767b5f395f51905f525af1918215610801576001926107d3575b5001610335565b6107f39060203d81116107fa575b6107eb8183613e76565b810190614129565b505f6107cc565b503d6107e1565b6040513d87823e3d90fd5b61082d915060803d8111610833575b6108258183613e76565b810190614020565b5f61077c565b503d61081b565b6040513d88823e3d90fd5b61085c9060203d81116107fa576107eb8183613e76565b610718565b82945054905f51602061767b5f395f51905f523b1561093e576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810191909152604481019290925281606481835f51602061767b5f395f51905f525af1801561029657610929575b60405162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b610934828092613e76565b61013857806108c8565b8280fd5b141590505f8061069b565b8161095791613e76565b61096257835f610686565b8380fd5b8680fd5b965096506020863d821161099e575b8161098660209383613e76565b8101031261099a579451958b959081610609565b5f80fd5b3d9150610979565b6040513d89823e3d90fd5b90919293506109c08186614141565b610100036101008111610b0c5760ff8111610b0c5760405163348051d760e11b8152600190911b600482018190528b80836024815f51602061767b5f395f51905f525afa928315610aff5760209382606a92610aa19492610adb575b506040519586927f73746453746f726167652066696e642853746453746f72616765293a20506163828501527f6b656420736c6f742e2057652063616e2774206669742076616c756520677265604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f198101845283613e76565b831015610ab3575090899392916105bc565b60405162461bcd60e51b815260206004820152908190610ad7906024830190613d0e565b0390fd5b610af89192503d8084833e610af08183613e76565b810190613eb2565b905f610a1c565b50604051903d90823e3d90fd5b634e487b7160e01b8b52601160045260248bfd5b610b2861497a565b5061055d565b634e487b7160e01b87526032600452602487fd5b634e487b7160e01b87526041600452602487fd5b9091506020813d8211610b81575b81610b7160209383613e76565b8101031261099a5751905f6103f3565b3d9150610b64565b602090604051610b9881613e5b565b8681528683820152604051610bac81613e40565b8781528784820152604082015282828701015201610329565b80670de0b6b3a764000002670de0b6b3a764000081048203610bf65790600191610bef8286613fe4565b520161030d565b634e487b7160e01b86526011600452602486fd5b5034610138578060031936011261013857601e5460405163ecbbc03360e01b8152600481018390529082908290602490829060081c6001600160a01b03165afa8015610296578290610c65575b610c629150516143d0565b80f35b503d8083833e610c758183613e76565b81019060208183031261093e578051906001600160401b03821161096257019080601f8301121561093e57815190610cac82613f23565b92610cba6040519485613e76565b82845260208085019360051b820101918211610d0c57602001915b818310610ce857505050610c6290610c57565b82516001600160a01b0381168103610d0857815260209283019201610cd5565b8580fd5b8480fd5b50346101385780600319360112610138576020610d2b614207565b6040519015158152f35b5034610138578060031936011261013857601954610d5281613f23565b91610d606040519384613e76565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b838310610da257604051806101a68782613de1565b600160208192604051610dc081610db98189614186565b0382613e76565b815201920192019190610d8d565b503461013857610ddd36613cad565b156112c15760015b60018060a01b036020541660018060a01b03601e5460081c169160405163549387df60e11b81528560048201528560248201528260448201528581606481875afa90811561083a5786916112a7575b5060028210156112935785906001831494855f146111ff5750610e5690613fd4565b518510806111f5575b5f51602061767b5f395f51905f523b156111f157604051632631f2b160e11b8152901515600482015281816024815f51602061767b5f395f51905f525afa8015610296576111dc575b5050601e546040516318160ddd60e01b81529060081c6001600160a01b0316602082600481875afa9081156109a65787916111a6575b610ee89250614373565b601e546040516370a0823160e01b815230600482015260089190911c6001600160a01b031680319491939190602085602481865afa93841561119b5787958995611161575b5094608091610f54968a604051809981958294638307c65560e01b84528a60048501614059565b03925af19384156109a6578794611140575b508351610f71578680f35b156110a1576040516370a0823160e01b8152306004820152602081602481855afa80156109a6578391889161106a575b50610fb591610faf91614108565b8661446f565b6001198501948511610bf6576020602491604051928380926370a0823160e01b82523060048301525afa90811561083a578691611030575b5061102694611003611020949361100993614108565b906144be565b519160018060a01b03601e5460081c163190614108565b90614420565b5f80808080808680f35b929190506020833d602011611062575b8161104d60209383613e76565b8101031261099a579151909190611026610fed565b3d9150611040565b9150506020813d602011611099575b8161108660209383613e76565b8101031261099a57518290610fb5610fa1565b3d9150611079565b92916110c56020929561102060249560018060a01b03601e5460081c163190614108565b5192604051928380926370a0823160e01b82523060048301525afa908115611135578491611101575b506110fc9261102091614108565b611026565b90506020813d60201161112d575b8161111c60209383613e76565b8101031261099a57516110fc6110ee565b3d915061110f565b6040513d86823e3d90fd5b61115a91945060803d608011610833576108258183613e76565b925f610f66565b955093506020853d602011611193575b8161117e60209383613e76565b8101031261099a579351869490936080610f2d565b3d9150611171565b6040513d8a823e3d90fd5b90506020823d6020116111d4575b816111c160209383613e76565b8101031261099a57610ee8915190610ede565b3d91506111b4565b816111e691613e76565b610d0c57845f610ea8565b5080fd5b50600a8511610e5f565b915061120a90613fb3565b51851080611289575b5f51602061767b5f395f51905f523b1561096657604051632631f2b160e11b815290151560048201528680826024815f51602061767b5f395f51905f525afa918215610aff578792611270575b505061126b91614373565b610ee8565b8192509061127d91613e76565b610d085784865f611260565b50600a8511611213565b634e487b7160e01b86526021600452602486fd5b6112bb91503d8088833e6102b88183613e76565b5f610e34565b81610de5565b5034610138578060031936011261013857601c546112e481613f23565b906112f26040519283613e76565b808252601c8352827f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b83831061133557604051806101a68782613d32565b60405161134181613e40565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b8160078401106114b457846001979460029794602097946113cc945491818110611498575b81811061147c575b818110611460575b818110611444575b818110611428575b81811061140c575b8181106113f2575b106113de575b500382613e76565b83820152815201920192019190611320565b6001600160e01b031916815286015f6113c4565b828a1b6001600160e01b0319168452928901928b016113be565b604083901b6001600160e01b0319168452928901928b016113b6565b606083901b6001600160e01b0319168452928901928b016113ae565b608083901b6001600160e01b0319168452928901928b016113a6565b60a083901b6001600160e01b0319168452928901928b0161139e565b60c083901b6001600160e01b0319168452928901928b01611396565b60e083901b6001600160e01b0319168452928901928b0161138e565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e0820152019401920191611369565b5034610138578060031936011261013857601a5461157081613f23565b9161157e6040519384613e76565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b8383106115c057604051806101a68782613de1565b6001602081926040516115d781610db98189614186565b8152019201920191906115ab565b5034610138578060031936011261013857610ca06040516116068282613e76565b60648152601f19820180366020840137670de0b6b3a764000061162883613fb3565b5260015b60648110611c3657506116426040519384613e76565b60648352835b818110611bfa57505060015b606481106116a057505060015b6063811061166d578280f35b6116778183613fe4565b515160018201908183116103ac578161038361169a9261037b6001969588613fe4565b01611661565b604051634b88b8ad60e11b815290602082600481885f51602061767b5f395f51905f525af1918215610801578592611bc7575b50601f546001600160a01b03166116ed61040d8386613fe4565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015610b42576001810180600e55811015610b2e57600e8752307fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd9190910155601154600f5460105488926001600160a01b03169160e01b6117696145a2565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908186526020526040852060405160208101906117ad8161053688888661458b565b519020865260205260ff60036040872001541615611bb9575b6001600160a01b0384165f908152600d602052604090209085526020526105366117ff604086209360405192839160208301958661458b565b51902083526020526040822060018101549360028201546118208187614141565b611ab8575b8254604051630667f9d760e41b81526001600160a01b038616600482015260248101829052969091906020886044815f51602061767b5f395f51905f525afa9788156109a6578798611a80575b506001908201610100031b5f1901811b198716915f51602061767b5f395f51905f523b15610966576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528481606481835f51602061767b5f395f51905f525af1908115610801578591611a6b575b50506118f961475e565b919015918215611a60575b50506108615750505050611916615256565b601f54601e5461193d9160209160081c6001600160a01b0390811691166106d48588613fe4565b03925af1801561083a57611a44575b50601e54601f546020546001600160a01b039182169260809260019260089290921c811691168961197d878a613fe4565b519561199f60405197889687958694638307c65560e01b8652600486016140d1565b03925af190811561083a578691611a26575b506119bc8286613fe4565b526119c78185613fe4565b5060405191631135fc2960e21b83526004830152602082602481885f51602061767b5f395f51905f525af191821561080157600192611a08575b5001611654565b611a1f9060203d81116107fa576107eb8183613e76565b505f611a01565b611a3e915060803d8111610833576108258183613e76565b5f6119b1565b611a5b9060203d81116107fa576107eb8183613e76565b61194c565b141590505f80611904565b81611a7591613e76565b61096257835f6118ef565b965096506020863d8211611ab0575b81611a9c60209383613e76565b8101031261099a579451958b959081611872565b3d9150611a8f565b9091929350611ac78186614141565b610100036101008111610b0c5760ff8111610b0c5760405163348051d760e11b8152600190911b600482018190528b80836024815f51602061767b5f395f51905f525afa928315610aff5760209382606a92611ba79492610adb57506040519586927f73746453746f726167652066696e642853746453746f72616765293a20506163828501527f6b656420736c6f742e2057652063616e2774206669742076616c756520677265604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f198101845283613e76565b831015610ab357509089939291611825565b611bc161497a565b506117c6565b9091506020813d8211611bf2575b81611be260209383613e76565b8101031261099a5751905f6116d3565b3d9150611bd5565b602090604051611c0981613e5b565b8681528683820152604051611c1d81613e40565b8781528784820152604082015282828701015201611648565b80670de0b6b3a764000002670de0b6b3a764000081048203610bf65790600191611c608286613fe4565b520161162c565b5034610138576060366003190112610138576024356001600160a01b038116908190036111f157816044356001600160a01b038116908190036111f157606460018060a01b03601e5460081c169360405194859384926348bd7dfd60e01b84526004356004850152602484015260448301525afa8015610296578290611cf257610c629150516143d0565b503d8083833e611d028183613e76565b81019060208183031261093e578051906001600160401b03821161096257019080601f8301121561093e57815190611d3982613f23565b92611d476040519485613e76565b82845260208085019360051b820101918211610d0c57602001915b818310611d7557505050610c6290610c57565b8251600a811015610d0857815260209283019201611d62565b503461013857604036600319011261013857601e54601f5460205460405163549387df60e11b815260048181018690526001600160a01b03938416602483810182905293851660448401819052969560081c9094169390359290919035908581606481885afa90811561083a57869161208b575b50611e0c81613fb3565b51841080612082575b5f51602061767b5f395f51905f523b1561096657604051632631f2b160e11b8152901515600482015286816024815f51602061767b5f395f51905f525afa80156109a65790879161206d575b5050611e6c90613fd4565b51811080612064575b5f51602061767b5f395f51905f523b15610d0857604051632631f2b160e11b8152901515600482015285816024815f51602061767b5f395f51905f525afa801561083a5790869161204f575b5093915f969391965060405196611ed9606089613e76565b6002885260208801926040368537611ef089613fb3565b52611efa88613fd4565b5260405196879463155adc9160e31b8652608486019287600488015260248701526044860152608060648601525180915260a484019190855b8181106120335750505082809103915afa918215610aff578192611f96575b50805b8251811015611f925780611f75611f6e60019386613fe4565b515161450d565b611f8c6020611f848387613fe4565b51015161450d565b01611f55565b5080f35b9091503d8083833e611fa88183613e76565b81019060208183031261093e578051906001600160401b038211610962570181601f8201121561093e578051611fdd81613f23565b92611feb6040519485613e76565b81845260208085019260061b84010192818411610d0857602001915b8383106120195750505050905f611f52565b60206040916120288486613ff8565b815201920191612007565b8251845287965088955060209384019390920191600101611f33565b8161205991613e76565b610d0c57845f611ec1565b50801515611e75565b8161207791613e76565b610d0857855f611e61565b50831515611e15565b61209f91503d8088833e6102b88183613e76565b5f611e02565b5034610138578060031936011261013857601b546120c281613f23565b906120d06040519283613e76565b808252601b8352827f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1602084015b83831061211357604051806101a68782613d32565b60405161211f81613e40565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b8160078401106121b457846001979460029794602097946121a29454918181106114985781811061147c5781811061146057818110611444578181106114285781811061140c578181106113f257106113de57500382613e76565b838201528152019201920191906120fe565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e0820152019401920191612147565b50346101385761226236613cad565b15612aa5576001905b60208054601f546040516370a0823160e01b8152306004820152946001600160a01b0391821693929091169185602481865afa94851561083a578695612a71575b50601e5460405163549387df60e11b815260048101889052602481018590526044810184905260089190911c6001600160a01b0316948782606481895afa91821561119b578892612a55575b506002831015612a41579087916001841496875f146128dd575061231b82613fd4565b51811090816128d2575b505f51602061767b5f395f51905f523b1561093e57604051632631f2b160e11b8152901515600482015282816024815f51602061767b5f395f51905f525afa9081156128c75783916128b2575b5050601e546080916123ca916123939060081c6001600160a01b0316614318565b601e5460081c6001600160a01b0316906123ac90613fb3565b51604051948580948193638307c65560e01b83528b600484016140a3565b03925af180156109a657612895575b50601e5460405163095ea7b360e01b815260089190911c6001600160a01b031660048201525f1960248201526020816044818a885af180156109a657612876575b505b6040516370a0823160e01b815230600482015291602083602481845afa9283156109a6578793612842575b506040516370a0823160e01b815230600482015294602086602481885afa95861561119b57889661280a575b50612482869760809697614108565b601e54604051638307c65560e01b8152969194879160081c6001600160a01b03169082908c9082906124bb908a908a8f600486016140d1565b03925af194851561119b5788956127e9575b5084516124d8578780f35b1561267c576040516370a0823160e01b8152306004820152602081602481855afa801561119b5784918991612645575b5061251c9161251691614108565b8361446f565b6001198201918211612631576020602491604051928380926370a0823160e01b82523060048301525afa9081156109a65787916125fd575b506125629261100391614108565b516001198101919082116125e9576020602491604051928380926370a0823160e01b82523060048301525afa9081156111355784916125b5575b50611003906125aa93614108565b5f8080808080808780f35b90506020813d6020116125e1575b816125d060209383613e76565b8101031261099a57516125aa61259c565b3d91506125c3565b634e487b7160e01b84526011600452602484fd5b90506020813d602011612629575b8161261860209383613e76565b8101031261099a5751612562612554565b3d915061260b565b634e487b7160e01b87526011600452602487fd5b9150506020813d602011612674575b8161266160209383613e76565b8101031261099a5751839061251c612508565b3d9150612654565b936020602491604097949751928380926370a0823160e01b82523060048301525afa9081156109a65787916127b5575b50611020906126ba93614108565b805160011981019081116103ac576040516370a0823160e01b8152306004820152602081602481875afa801561083a578591879161277d575b506020926110036024959361270793614108565b5192604051928380926370a0823160e01b82523060048301525afa908115611135578491612749575b506127449261273e91614108565b9061446f565b6125aa565b90506020813d602011612775575b8161276460209383613e76565b8101031261099a5751612744612730565b3d9150612757565b939150506020833d6020116127ad575b8161279a60209383613e76565b8101031261099a579151849060206126f3565b3d915061278d565b90506020813d6020116127e1575b816127d060209383613e76565b8101031261099a57516126ba6126ac565b3d91506127c3565b61280391955060803d608011610833576108258183613e76565b935f6124cd565b9495506020853d60201161283a575b8161282660209383613e76565b8101031261099a5793519493612482612473565b3d9150612819565b9092506020813d60201161286e575b8161285e60209383613e76565b8101031261099a5751915f612447565b3d9150612851565b61288e9060203d6020116107fa576107eb8183613e76565b505f61241a565b6128ad9060803d608011610833576108258183613e76565b6123d9565b816128bc91613e76565b6111f157815f612372565b6040513d85823e3d90fd5b60649150115f612325565b916128ea90939193613fb3565b51831080612a37575b5f51602061767b5f395f51905f523b156111f157604051632631f2b160e11b8152901515600482015281816024815f51602061767b5f395f51905f525afa801561029657612a1e575b5050612947906142a2565b601e54604051638307c65560e01b81529190608090839060081c6001600160a01b0316818b8161297b878c600484016140a3565b03925af190811561119b576129cb92602092612a01575b50601e5460405163095ea7b360e01b815260089190911c6001600160a01b03166004820152602481019190915291829081906044820190565b03818a885af180156109a6576129e2575b5061241c565b6129fa9060203d6020116107fa576107eb8183613e76565b505f6129dc565b612a199060803d608011610833576108258183613e76565b612992565b81612a2891613e76565b612a3357875f61293c565b8780fd5b50606483116128f3565b634e487b7160e01b88526021600452602488fd5b612a6a9192503d808a833e6102b88183613e76565b905f6122f8565b9094506020813d602011612a9d575b81612a8d60209383613e76565b8101031261099a5751935f6122ac565b3d9150612a80565b819061226b565b503461013857806003193601126101385760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b818110612b0b576101a68561019a81870382613e76565b82546001600160a01b0316845260209093019260019283019201612af4565b503461013857806003193601126101385760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b818110612b89576101a68561019a81870382613e76565b82546001600160a01b0316845260209093019260019283019201612b72565b5034610138578060031936011261013857601d54612bc581613f23565b612bd26040519182613e76565b818152601d83526020810191837f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f845b838310612cd65786858760405192839260208401906020855251809152604084019160408260051b8601019392815b838310612c3e5786860387f35b919395509193603f198782030183528551906020604082019260018060a01b0381511683520151916040602083015282518091526060820190602060608260051b850101940192855b828110612cab57505050505060208060019297019301930190928695949293612c31565b9091929394602080612cc9600193605f198782030189528951613d0e565b9701950193929101612c87565b604051612ce281613e40565b82546001600160a01b03168152600183018054612cfe81613f23565b91612d0c6040519384613e76565b8183528a526020808b20908b9084015b838210612d42575050505060019282602092836002950152815201920192019190612c02565b600160208192604051612d5981610db9818a614186565b815201930191019091612d1c565b503461013857612d7636613cad565b156135675760015b602054601f54601e5460405163549387df60e11b8152600481018790526001600160a01b03938416602482018190529284166044820181905294929360089290921c909116908681606481855afa9081156109a657879161354d575b5060028310156135395786906001841492835f146133ed5750612dfc81613fd4565b518710806133e3575b5f51602061767b5f395f51905f523b1561093e57604051632631f2b160e11b8152901515600482015282816024815f51602061767b5f395f51905f525afa9081156128c75783916133ce575b5050601e54608091612e72916123939060081c6001600160a01b0316614318565b03925af180156109a6576133b1575b50601e5460405163095ea7b360e01b815260089190911c6001600160a01b031660048201525f1960248201526020816044818a885af180156109a657613392575b505b6040516370a0823160e01b815230600482015293602085602481875afa9485156109a657879561335e575b506040516370a0823160e01b815230600482015291602083602481855afa93841561119b5787938995613325575b50601e54604051638307c65560e01b8152986080928a9260081c6001600160a01b03169183918d918391612f5791908a8e600486016140d1565b03925af196871561119b578897613304575b508651612f74578780f35b1561319d576040516370a0823160e01b8152306004820152602081602481855afa801561119b5784908990613167575b612fae9250614108565b6001198301908382116131535791612fca60209260249461446f565b6040516370a0823160e01b815230600482015292839182905afa9081156109a657879161311f575b506130059261300091614108565b6144be565b6040516370a0823160e01b8152306004820152602081602481855afa80156108015785906130eb575b613039915083614108565b83519060028201809211610bf65791613057602092602495946144be565b6040516370a0823160e01b815230600482015293849182905afa9081156111355784916130b5575b6130899250614108565b90515f198101919082116130a157906125aa9161446f565b634e487b7160e01b83526011600452602483fd5b90506020823d6020116130e3575b816130d060209383613e76565b8101031261099a5761308991519061307f565b3d91506130c3565b506020813d602011613117575b8161310560209383613e76565b8101031261099a57613039905161302e565b3d91506130f8565b90506020813d60201161314b575b8161313a60209383613e76565b8101031261099a5751613005612ff2565b3d915061312d565b634e487b7160e01b89526011600452602489fd5b50506020813d602011613195575b8161318260209383613e76565b8101031261099a5783612fae9151612fa4565b3d9150613175565b9390926040959295516370a0823160e01b8152306004820152602081602481855afa90811561119b5788916132d0575b506131db6131e19184614108565b8561446f565b600119840193841161263157906020602492604051938480926370a0823160e01b82523060048301525afa9182156109a6578792613299575b506024936110036020949361322e93614108565b5192604051928380926370a0823160e01b82523060048301525afa908115611135578491613265575b506127449261102091614108565b90506020813d602011613291575b8161328060209383613e76565b8101031261099a5751612744613257565b3d9150613273565b9291506020833d6020116132c8575b816132b560209383613e76565b8101031261099a5791519091602461321a565b3d91506132a8565b90506020813d6020116132fc575b816132eb60209383613e76565b8101031261099a57516131db6131cd565b3d91506132de565b61331e91975060803d608011610833576108258183613e76565b955f612f69565b935093506020833d602011613356575b8161334260209383613e76565b8101031261099a5760808793519490612f1d565b3d9150613335565b9094506020813d60201161338a575b8161337a60209383613e76565b8101031261099a5751935f612eef565b3d915061336d565b6133aa9060203d6020116107fa576107eb8183613e76565b505f612ec2565b6133c99060803d608011610833576108258183613e76565b612e81565b816133d891613e76565b6111f157815f612e51565b5060648711612e05565b91906133f890613fb3565b5187108061352f575b5f51602061767b5f395f51905f523b156111f157604051632631f2b160e11b8152901515600482015281816024815f51602061767b5f395f51905f525afa80156102965761351a575b5050613455906142a2565b601e54604051638307c65560e01b815290608090829060081c6001600160a01b0316818a816134888c8b600484016140a3565b03925af180156109a6576134fd575b50601e5460405163095ea7b360e01b815260089190911c6001600160a01b03166004820152602481018690526020816044818a885af180156109a6576134de575b50612ec4565b6134f69060203d6020116107fa576107eb8183613e76565b505f6134d8565b6135159060803d608011610833576108258183613e76565b613497565b8161352491613e76565b61096657865f61344a565b5060648711613401565b634e487b7160e01b87526021600452602487fd5b61356191503d8089833e6102b88183613e76565b5f612dda565b81612d7e565b503461013857806003193601126101385760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b8181106135cc576101a68561019a81870382613e76565b82546001600160a01b03168452602090930192600192830192016135b5565b5034610138576135fa36613cad565b156139ae5760015b60018060a01b03601f541660018060a01b03601e5460081c169160405163549387df60e11b81528560048201528560248201528260448201528581606481875afa90811561083a578691613994575b5060028210156112935785906001831494855f14613900575061367390613fd4565b518510806138f6575b5f51602061767b5f395f51905f523b156111f157604051632631f2b160e11b8152901515600482015281816024815f51602061767b5f395f51905f525afa8015610296576138e1575b5050601e546040516318160ddd60e01b81529060081c6001600160a01b0316602082600481875afa9081156109a65787916138ab575b6137059250614373565b601e546040516370a0823160e01b815230600482015260089190911c6001600160a01b031680319491939190602085602481865afa93841561119b5787958995613871575b5094608091613771968a604051809981958294638307c65560e01b84528a60048501614059565b03925af19384156109a6578794613850575b50835161378e578680f35b156110a1576040516370a0823160e01b8152306004820152602081602481855afa80156109a65783918891613819575b506137cc91610faf91614108565b6003198501948511610bf6576020602491604051928380926370a0823160e01b82523060048301525afa90811561083a578691611030575061102694611003611020949361100993614108565b9150506020813d602011613848575b8161383560209383613e76565b8101031261099a575182906137cc6137be565b3d9150613828565b61386a91945060803d608011610833576108258183613e76565b925f613783565b955093506020853d6020116138a3575b8161388e60209383613e76565b8101031261099a57935186949093608061374a565b3d9150613881565b90506020823d6020116138d9575b816138c660209383613e76565b8101031261099a576137059151906136fb565b3d91506138b9565b816138eb91613e76565b610d0c57845f6136c5565b50600a851161367c565b915061390b90613fb3565b5185108061398a575b5f51602061767b5f395f51905f523b1561096657604051632631f2b160e11b815290151560048201528680826024815f51602061767b5f395f51905f525afa918215610aff578792613971575b505061396c91614373565b613705565b8192509061397e91613e76565b610d085784865f613961565b50600a8511613914565b6139a891503d8088833e6102b88183613e76565b5f613651565b81613602565b90503461099a575f36600319011261099a5763975a6ce960e01b81526020600482015260076024820152661b585a5b9b995d60ca1b60448201525f816064815f51602061767b5f395f51905f525afa908115613c0357613a3b916020915f91613c93575b50604051809381926371ee464d60e01b8352604060048401526044830190613d0e565b630125403f602483015203815f5f51602061767b5f395f51905f525af18015613c0357613c64575b50601f54604051906001600160a01b03166121748083016001600160401b03811184821017613c50576020928492615507843981520301905ff08015613c0357601e8054610100600160a81b03191660089290921b610100600160a81b0316919091179055601f546040516306f1b8f160e11b81526001600160a01b039190911690602081600481855afa908115613c03575f91613c0e575b5060018060a01b03166001600160601b0360a01b60205416176020555f51602061767b5f395f51905f523b1561099a57604051906318caf8e360e31b825260048201526040602482015260056044820152640aeca8aa8960db1b60648201525f81608481835f51602061767b5f395f51905f525af18015613c0357613bf0575b5060205481906001600160a01b03165f51602061767b5f395f51905f523b156102a157604051906318caf8e360e31b825260048201526040602482015260046044820152630ca8aa8960e31b60648201528181608481835f51602061767b5f395f51905f525af18015610296576102855750f35b613bfc91505f90613e76565b5f5f613b7c565b6040513d5f823e3d90fd5b90506020813d602011613c48575b81613c2960209383613e76565b8101031261099a57516001600160a01b038116810361099a575f613afc565b3d9150613c1c565b634e487b7160e01b5f52604160045260245ffd5b6020813d602011613c8b575b81613c7d60209383613e76565b8101031261099a5751613a63565b3d9150613c70565b613ca791503d805f833e610af08183613e76565b5f613a18565b604090600319011261099a5760043590602435801515810361099a5790565b60206040818301928281528451809452019201905f5b818110613cef5750505090565b82516001600160a01b0316845260209384019390920191600101613ce2565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310613d6457505050505090565b9091929394603f1982820301835285516020606081604085019360018060a01b0381511686520151936040838201528451809452019201905f905b808210613dbe5750505060208060019297019301930191939290613d55565b82516001600160e01b031916845260209384019390920191600190910190613d9f565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310613e1357505050505090565b9091929394602080613e31600193603f198682030187528951613d0e565b97019301930191939290613e04565b604081019081106001600160401b03821117613c5057604052565b606081019081106001600160401b03821117613c5057604052565b90601f801991011681019081106001600160401b03821117613c5057604052565b6001600160401b038111613c5057601f01601f191660200190565b60208183031261099a578051906001600160401b03821161099a570181601f8201121561099a57805190613ee582613e97565b92613ef36040519485613e76565b8284526020838301011161099a57815f9260208093018386015e8301015290565b9081602091031261099a575190565b6001600160401b038111613c505760051b60200190565b60208183031261099a578051906001600160401b03821161099a57019080601f8301121561099a578151613f6d81613f23565b92613f7b6040519485613e76565b81845260208085019260051b82010192831161099a57602001905b828210613fa35750505090565b8151815260209182019101613f96565b805115613fc05760200190565b634e487b7160e01b5f52603260045260245ffd5b805160011015613fc05760400190565b8051821015613fc05760209160051b010190565b919082604091031261099a5760405161401081613e40565b6020808294805184520151910152565b9060808282031261099a5761405190604080519361403d85613e5b565b805185526020810151602086015201613ff8565b604082015290565b5f80825260208201526001600160a01b03909116604082015260a0810193929190600282101561408f5760809160608201520152565b634e487b7160e01b5f52602160045260245ffd5b5f80825260208201526001600160a01b03909116604082015260016060820152608081019190915260a00190565b5f81526001600160a01b0391821660208201529116604082015260a0810193929190600282101561408f5760809160608201520152565b9190820391821161411557565b634e487b7160e01b5f52601160045260245ffd5b9081602091031261099a5751801515810361099a5790565b9190820180921161411557565b90600182811c9216801561417c575b602083101461416857565b634e487b7160e01b5f52602260045260245ffd5b91607f169161415d565b5f92918154916141958361414e565b80835292600181169081156141ea57506001146141b157505050565b5f9081526020812093945091925b8383106141d0575060209250010190565b6001816020929493945483858701015201910191906141bf565b915050602093945060ff929192191683830152151560051b010190565b60085460ff1680156142165790565b50604051630667f9d760e41b81525f51602061767b5f395f51905f5260048201526519985a5b195960d21b60248201526020816044815f51602061767b5f395f51905f525afa908115613c03575f91614270575b50151590565b90506020813d60201161429a575b8161428b60209383613e76565b8101031261099a57515f61426a565b3d915061427e565b5f51602061767b5f395f51905f523b1561099a5760405163c88a5e6d60e01b81526001600160a01b0390911660048201526fffffffffffffffffffffffffffffffff60248201525f81604481835f51602061767b5f395f51905f525af18015613c035761430c5750565b5f61431691613e76565b565b5f51602061767b5f395f51905f523b1561099a5760405163c88a5e6d60e01b81526001600160a01b0390911660048201525f1960248201525f81604481835f51602061767b5f395f51905f525af18015613c035761430c5750565b5f51602061767b5f395f51905f523b1561099a5760405163c88a5e6d60e01b81526001600160a01b0391909116600482015260248101919091525f81604481835f51602061767b5f395f51905f525af18015613c035761430c5750565b5f51602061767b5f395f51905f523b1561099a576040519063260a5b1560e21b82526004820152600360248201525f816044815f51602061767b5f395f51905f525afa8015613c035761430c5750565b905f51602061767b5f395f51905f523b1561099a576040519163260a5b1560e21b8352600483015260248201525f816044815f51602061767b5f395f51905f525afa8015613c035761430c5750565b905f51602061767b5f395f51905f523b1561099a576040519163a8d4d1d960e01b8352600483015260248201525f816044815f51602061767b5f395f51905f525afa8015613c035761430c5750565b905f51602061767b5f395f51905f523b1561099a5760405191638466f41560e01b8352600483015260248201525f816044815f51602061767b5f395f51905f525afa8015613c035761430c5750565b5f51602061767b5f395f51905f523b1561099a5760405190636d83fe6960e11b825260048201525f60248201525f816044815f51602061767b5f395f51905f525afa8015613c035761430c5750565b3d15614586573d9061456d82613e97565b9161457b6040519384613e76565b82523d5f602084013e565b606090565b60209291908391805192839101825e019081520190565b6145ad60145461414e565b61466a576040519081826020600e549283815201600e5f5260205f20925f5b8181106146515750506145e192500383613e76565b81518060051b9080820460201490151715614115576145ff81613e97565b9061460d6040519283613e76565b80825261461c601f1991613e97565b013660208301375f5b835181101561464c578061463b60019286613fe4565b5160208260051b8501015201614625565b509150565b84548352600194850194879450602090930192016145cc565b60405161467c81610db9816014614186565b90565b600781019061468e825461414e565b61474a57600191500190604051808360208295549384815201905f5260205f20925f5b8181106147315750506146c692500383613e76565b81518060051b9080820460201490151715614115576146e481613e97565b906146f26040519283613e76565b808252614701601f1991613e97565b013660208301375f5b835181101561464c578061472060019286613fe4565b5160208260051b850101520161470a565b84548352600194850194879450602090930192016146b1565b5061467c610db99160405192838092614186565b5f806020600f5460e01b6147ac6024614777600d61467f565b6040519485918183019563ffffffff60e01b1686528051918291018484015e810186838201520301601f198101845283613e76565b6011549151916001600160a01b03165afa906147c661455c565b601054909290600581901b906001600160fb1b03811603614115575f938051602081115f1461485157506020905b5f925b82841061480657505050509190565b909192956148148783614141565b8351811015613fc057830160200151600388901b91906001600160f81b031916881560088a8504141715614115576001921c1796019291906147f7565b906147f4565b905f806020600285015460e01b61487260246147778861467f565b60048601549151916001600160a01b03165afa600361488f61455c565b930154600581901b906001600160fb1b03811603614115575f938051602081115f1461491757506020905b5f925b8284106148cc57505050509190565b909192956148da8783614141565b8351811015613fc057830160200151600388901b91906001600160f81b031916881560088a8504141715614115576001921c1796019291906148bd565b906148ba565b9080601f8301121561099a57815161493481613f23565b926149426040519485613e76565b81845260208085019260051b82010192831161099a57602001905b82821061496a5750505090565b815181526020918201910161495d565b601154600f546010546001600160a01b03909216915f9160e01b61499e600d61467f565b90845f52600d60205260405f209063ffffffff60e01b1690815f5260205260405f2060405160208101906149d78161053688888661458b565b5190205f5260205260ff600360405f20015416615215575f51602061767b5f395f51905f523b1561099a5760405163266cf10960e01b81525f81600481835f51602061767b5f395f51905f525af18015613c0357615200575b50614a3b600d614857565b90506040516365bc948160e01b81528660048201528581602481835f51602061767b5f395f51905f525af190811561083a57869161519c575b508051614ae557608460405162461bcd60e51b815260206004820152604060248201527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152fd5b855b815181101561519457816020614b0083614b3195613fe4565b51604051630667f9d760e41b81526001600160a01b038c166004820152602481019190915293849081906044820190565b03815f51602061767b5f395f51905f525afa92831561119b578893615161575b508215615109575b614b638282613fe4565b51601154604051630667f9d760e41b81526001600160a01b03909116600482018190526024820183905291906020816044815f51602061767b5f395f51905f525afa9081156150fe578b916150cd575b50614bbe600d614857565b91909382155f146150c6575f19905b5f51602061767b5f395f51905f523b156150ad576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810185905260448101919091528c81606481835f51602061767b5f395f51905f525af1801561502757908d916150b1575b5050614c3e600d614857565b601154909491506001600160a01b03165f51602061767b5f395f51905f523b156150ad576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528b81606481835f51602061767b5f395f51905f525af180156150a257908c91615089575b50508261507e575b505015615074578793889360ff60135416614eee575b6001868601610100031b5f1901851b16841c8103614ee0575090614d58917f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed60808b89610536614d2d8d60405192839160208301958661458b565b519020614d3a8686613fe4565b51906040519283528a602084015260408301526060820152a1613fe4565b519060405191608083018381106001600160401b03821117614ecc5790600393929160405282526020820193845260408201908152606082019360018552898952600d60205260408920868a52602052604089206040516020810190614dc3816105368d8d8661458b565b5190208a526020526040892092518355516001830155516002820155019051151560ff801983541691161790555b848452600d60205260408420818552602052604084206040516020810190614e1e8161053688888661458b565b519020855260205260ff60036040862001541615614e6f576040948452600d602052848420908452602052610536614e6385852093865192839160208301958661458b565b51902082526020522090565b60405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201526e3a143994903737ba103337bab7321760891b6064820152608490fd5b634e487b7160e01b89526041600452602489fd5b935091506001905b01614ae7565b9450614f399350614eff8383613fe4565b51601154604051630667f9d760e41b81526001600160a01b0390911660048201526024810182905290959094602090869081906044820190565b03815f51602061767b5f395f51905f525afa948515615069578a95615036575b50614f6586600d61536a565b959096614f7381600d615443565b60115490939192906001600160a01b03165f51602061767b5f395f51905f523b15615032576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528c81606481835f51602061767b5f395f51905f525af1801561502757908d9161500e575b505087615006575b509495614cd2575093509150600190614ee8565b96505f614ff2565b8161501891613e76565b615023578b5f614fea565b8b80fd5b6040513d8f823e3d90fd5b8e80fd5b9094506020813d8211615061575b8161505160209383613e76565b8101031261099a5751935f614f59565b3d9150615044565b6040513d8c823e3d90fd5b9150600190614ee8565b141590505f80614cbc565b8161509391613e76565b61509e578a5f614cb4565b8a80fd5b6040513d8e823e3d90fd5b8d80fd5b816150bb91613e76565b615023578b5f614c32565b8c90614bcd565b90506020813d82116150f6575b816150e760209383613e76565b8101031261099a57515f614bb3565b3d91506150da565b6040513d8d823e3d90fd5b7f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a56151596151378484613fe4565b51604080516001600160a01b038e168152602081019290925290918291820190565b0390a1614b59565b9092506020813d821161518c575b8161517c60209383613e76565b8101031261099a5751915f614b51565b3d915061516f565b505050614df1565b90503d8087833e6151ad8183613e76565b81016040828203126109665781516001600160401b038111612a3357816151d591840161491d565b916020810151906001600160401b0382116151fc576151f592910161491d565b505f614a74565b8880fd5b61520d9194505f90613e76565b5f925f614a30565b91939092505f52600d60205260405f20905f5260205261053661524760405f209360405192839160208301958661458b565b5190205f5260205260405f2090565b6001600160601b0360a01b6011541660115563ffffffff19600f5416600f55600e545f600e5580615328575b505f60105560ff196013541660135561529c60145461414e565b806152a45750565b601f81116001146152b657505f601455565b60145f52601f0160051c7fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec017fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ed5b81811061531d57505060145f525f602081208160145555565b5f8155600101615304565b600e5f527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd908101905b81811061535f5750615282565b5f8155600101615352565b91905f5b610100811061538157505090505f905f90565b8060ff0360ff8111614115576004850154600190911b906001600160a01b03165f51602061767b5f395f51905f523b1561099a576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f51602061767b5f395f51905f525af18015613c0357615433575b5061540d84614857565b81615429575b506154205760010161536e565b92505060019190565b905015155f615413565b5f61543d91613e76565b5f615403565b91905f5b610100811061545a57505090505f905f90565b60048401546001821b906001600160a01b03165f51602061767b5f395f51905f523b1561099a576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f51602061767b5f395f51905f525af18015613c03576154f6575b506154d984614857565b816154ec575b5061542057600101615447565b905015155f6154df565b5f61550091613e76565b5f6154cf56fe60e0806040523461023e57602081612174803803809161001f8285610298565b83398101031261023e57516001600160a01b0381169081900361023e57602081600492608052604051928380926306f1b8f160e11b82525afa90811561024a575f91610255575b5060a081905260405163332d08e560e11b815290602090829060049082906001600160a01b03165afa90811561024a575f91610204575b5060c052604051611ea490816102d0823960805181818160ce015281816101ea015281816105c8015281816108d301528181610e8e01528181610f6501528181611112015281816111ee015281816112d00152818161142401528181611b230152611b7b015260a051818181609a015281816102cf015281816105250152818161056301528181610741015281816107dd0152818161081b015281816109580152818161099601528181610c8501528181610d2b01528181610dee01528181610eb401528181610fda0152818161113c015281816111b801528181611295015281816114a1015281816115c701528181611649015281816116e10152818161176c015281816117db015281816118d301528181611a550152611ad6015260c05181818161028001528181610abb01528181610cdc0152818161131d015281816113e9015281816114ed0152818161157a01528181611917015281816119980152611a990152f35b90506020813d602011610242575b8161021f60209383610298565b8101031261023e57516001600160a01b038116810361023e575f61009d565b5f80fd5b3d9150610212565b6040513d5f823e3d90fd5b90506020813d602011610290575b8161027060209383610298565b8101031261023e57516001600160a01b038116810361023e576020610066565b3d9150610263565b601f909101601f19168101906001600160401b038211908210176102bb57604052565b634e487b7160e01b5f52604160045260245ffdfe6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c806323eeca0114610a8957806348bd7dfd146109dc5780638307c6551461084d578063a9270fbe146105a3578063aad6e4881461014f5763ecbbc0330361000e573461014b57602036600319011261014b5760405161007f608082610bb7565b60038152602081019060603683375f61009782610bf1565b527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166100cb82610c12565b527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166100ff82610c22565b52604051918291602083019060208452518091526040830191905f5b818110610129575050500390f35b82516001600160a01b031684528594506020938401939092019160010161011b565b5f80fd5b3461014b57608036600319011261014b57610168610b35565b610170610b4b565b9060643567ffffffffffffffff811161014b573660238201121561014b5780600401359061019d82610bd9565b916101ab6040519384610bb7565b8083526024602084019160051b8301019136831161014b57602401905b828210610593575050506001600160a01b038281169290841683811461049f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168481141580610560575b80610557575b61049f578114159081610523575b5061049f5781519361024185610bd9565b9461024f6040519687610bb7565b80865261025e601f1991610bd9565b015f5b81811061047c575050604051631be7ed6560e11b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561043d575f92610448575b50604051633a98ef3960e01b8152916020836004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa92831561043d575f93610409575b505f9515955b85518110156103b8576001908715610386576103696103378685610331858c610c32565b51611821565b610341838a610c32565b519061036161035a610353868d610c32565b5188610e66565b9189610e66565b91878a611735565b610373828b610c32565b5261037e818a610c32565b505b0161030d565b61039d8584610395848b610c32565b51878a611735565b6103a7828b610c32565b526103b2818a610c32565b50610380565b876040518091602082016020835281518091526020604084019201905f5b8181106103e4575050500390f35b82518051855260209081015181860152869550604090940193909201916001016103d6565b9092506020813d602011610435575b8161042560209383610bb7565b8101031261014b57519187610307565b3d9150610418565b6040513d5f823e3d90fd5b9091506020813d602011610474575b8161046460209383610bb7565b8101031261014b575190866102b8565b3d9150610457565b60209060405161048b81610b9b565b5f81525f8382015282828a01015201610261565b60405163643c60f360e01b81528061051f6004820160a09060208152604460208201527f5468697320706f6f6c206f6e6c7920737570706f727473204554482d3e65455460408201527f482c2077654554483c2d3e6545544820616e64204554482d3e776545544820736060820152637761707360e01b60808201520190565b0390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161415905085610230565b50841515610222565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031685141561021c565b81358152602091820191016101c8565b3461014b576105b136610b61565b6001600160a01b0390811692501680821461049f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681811491821590819081610819575b8161080f575b5061049f5781841493841590816107db575b5061049f576040519361062b606086610bb7565b6002855260208501936040368637916107d3575b501561072b576020600491604051928380926318160ddd60e01b82525afa90811561043d575f916106f9575b50605a810290808204605a14901517156106e5576064900461068c83610bf1565b52905b61069881610bf1565b516106a282610c12565b52604051918291602083019060208452518091526040830191905f5b8181106106cc575050500390f35b82518452859450602093840193909201916001016106be565b634e487b7160e01b5f52601160045260245ffd5b90506020813d602011610723575b8161071460209383610bb7565b8101031261014b57518361066b565b3d9150610707565b506040516318160ddd60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561043d575f916107a1575b50605a810290808204605a14901517156106e5576064900461079a83610bf1565b529061068f565b90506020813d6020116107cb575b816107bc60209383610bb7565b8101031261014b575183610779565b3d91506107af565b90508461063f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161415905085610617565b9050151585610605565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681141591506105ff565b3461014b5760a036600319011261014b57610866610b35565b61086e610b4b565b90606435600281101561014b57604051906060820182811067ffffffffffffffff8211176109c8576040525f82525f60208301526040516108ae81610b9b565b5f808252602082015260408301526001600160a01b0384811690841680821461049f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690808214159081610994575b8161098a575b5061049f578114159081610956575b5061049f576080936109319360843593610c53565b6020604080519280518452828101518385015201518051604084015201516060820152f35b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141590508561091c565b905015158761090d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168114159150610907565b634e487b7160e01b5f52604160045260245ffd5b3461014b576109ea36610b61565b5050506040516109fb608082610bb7565b600381526020810160603682376001610a1383610bf1565b526002610a1f83610c12565b526003610a2b83610c22565b52604051906020820192602083525180935260408201905f935b808510610a525783830384f35b9091825190600a821015610a755760208160019382935201930194019390610a45565b634e487b7160e01b5f52602160045260245ffd5b3461014b57604036600319011261014b576040805190610aa98183610bb7565b6001825260208201601f1982013682377f000000000000000000000000000000000000000000000000000000000000000060601b6bffffffffffffffffffffffff1916610af584610bf1565b52815192839260208401916020855251809252830191905f5b818110610b1c575050500390f35b8251845285945060209384019390920191600101610b0e565b602435906001600160a01b038216820361014b57565b604435906001600160a01b038216820361014b57565b606090600319011261014b57600435906024356001600160a01b038116810361014b57906044356001600160a01b038116810361014b5790565b6040810190811067ffffffffffffffff8211176109c857604052565b90601f8019910116810190811067ffffffffffffffff8211176109c857604052565b67ffffffffffffffff81116109c85760051b60200190565b805115610bfe5760200190565b634e487b7160e01b5f52603260045260245ffd5b805160011015610bfe5760400190565b805160021015610bfe5760600190565b8051821015610bfe5760209160051b010190565b919082039182116106e557565b949392909192858115610e2d575090610cbf915a916001600160a01b03851680610dec57506001600160a01b038681167f000000000000000000000000000000000000000000000000000000000000000090911603610ddc57610cb59161148e565b86525b5a90610c46565b602085810191909152604051631be7ed6560e11b815290816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561043d575f91610daa575b50604051633a98ef3960e01b8152926020846004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa92831561043d575f93610d74575b610d6d9450611617565b6040830152565b92506020843d602011610da2575b81610d8f60209383610bb7565b8101031261014b57610d6d935192610d63565b3d9150610d82565b90506020813d602011610dd4575b81610dc560209383610bb7565b8101031261014b57515f610d14565b3d9150610db8565b610de591611292565b8652610cb8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031603610e2457610de5916110f7565b610de591610e73565b955050505050565b818102929181159184041417156106e557565b8115610e52570490565b634e487b7160e01b5f52601260045260245ffd5b919082018092116106e557565b906002811015610a7557600103610f5e576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116915f917f00000000000000000000000000000000000000000000000000000000000000001690602090610ee3908386611a39565b93610ef08530338461183f565b602460405180958193636f074d1f60e11b83528860048401525af190811561043d575f91610f28575b610f259250339061188a565b90565b90506020823d602011610f56575b81610f4360209383610bb7565b8101031261014b57610f25915190610f19565b3d9150610f36565b5f906020907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602490610f9d8130338661183f565b6040519485938492636f074d1f60e11b845260048401525af190811561043d575f916110c5575b506040516370a0823160e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691602082602481865afa91821561043d575f92611090575b5060249261102b602092338361188a565b6040516370a0823160e01b815233600482015293849182905afa801561043d575f9061105c575b610f259250610c46565b506020823d602011611088575b8161107660209383610bb7565b8101031261014b57610f259151611052565b3d9150611069565b9091506020813d6020116110bd575b816110ac60209383610bb7565b8101031261014b575190602461101a565b3d915061109f565b90506020813d6020116110ef575b816110e060209383610bb7565b8101031261014b57515f610fc4565b3d91506110d3565b906002811015610a75576001036111b6576001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691829161117e917f00000000000000000000000000000000000000000000000000000000000000009091169061116a908483611a39565b9384916111798330338461183f565b611bb6565b604051630ea598cb60e41b815260048101839052906020826024815f855af190811561043d575f91610f2857610f259250339061188a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166111ec8230338461183f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906112249083908390611bb6565b60405191630ea598cb60e41b835260048301526020826024815f855af191821561043d575f9261125c575b5081610f2591339061188a565b9091506020813d60201161128a575b8161127860209383610bb7565b8101031261014b575190610f2561124f565b3d915061126b565b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906002811015610a75576001036113cf577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169161130390836118c6565b604051630d0e30db60e41b815290929091602083600481877f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af192831561043d575f93611397575b50828261136192611bb6565b60405191630ea598cb60e41b835260048301526020826024815f855af190811561043d575f91610f2857610f259250339061188a565b909192506020813d6020116113c7575b816113b460209383610bb7565b8101031261014b57519190611361611355565b3d91506113a7565b604051630d0e30db60e41b815291602090839060049082907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af191821561043d575f9261145a575b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906112249083908390611bb6565b9091506020813d602011611486575b8161147660209383610bb7565b8101031261014b5751905f611421565b3d9150611469565b906002811015610a7557600103611560577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114d382826118c6565b604051630d0e30db60e41b815290929091602083600481877f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1801561043d5761152d57610f259250339061188a565b6020833d602011611558575b8161154660209383610bb7565b8101031261014b57610f259250610f19565b3d9150611539565b604051630d0e30db60e41b815290602090829060049082907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af190811561043d575f916110c557506040516370a0823160e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691602082602481865afa91821561043d575f92611090575060249261102b602092338361188a565b60405161162381610b9b565b5f8082526020909101526001600160a01b0316806116dc57506001600160a01b039081167f0000000000000000000000000000000000000000000000000000000000000000909116036116a3579061168391670de0b6b3a7640000611821565b6040519061169082610b9b565b8152670de0b6b3a7640000602082015290565b6116b68282670de0b6b3a7640000611821565b90670de0b6b3a764000081018091116106e5576116d68261168394610e66565b91611d3b565b9192917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141590506117235761168391670de0b6b3a7640000611d3b565b61168391670de0b6b3a7640000611d1e565b908294929160405161174681610b9b565b5f8082526020909101526001600160a01b0316806117d957506001600160a01b039081167f0000000000000000000000000000000000000000000000000000000000000000909116036117b5579161179d92611821565b90604051916117ab83610b9b565b8252602082015290565b906116d6836117d36117cb8461179d9787611821565b948592610e66565b92610e66565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161415915061181790505761179d9183611d3b565b61179d9183611d1e565b91811561183a5761183590610f2593610e35565b610e48565b505090565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815261188891611883608483610bb7565b611d66565b565b60405163a9059cbb60e01b60208201526001600160a01b0392909216602483015260448083019390935291815261188891611883606483610bb7565b6001600160a01b039081167f00000000000000000000000000000000000000000000000000000000000000009091160361198157604051630ac37bbf60e31b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561043d575f91611952575090565b90506020813d602011611979575b8161196d60209383610bb7565b8101031261014b575190565b3d9150611960565b604051630ac37bbf60e31b815260048101919091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602081602481855afa801561043d575f90611a06575b60209150602460405180948193630ac37bbf60e31b835260048301525afa90811561043d575f91611952575090565b506020813d602011611a31575b81611a2060209383610bb7565b8101031261014b57602090516119d7565b3d9150611a13565b6001600160a01b031680611ad457506001600160a01b039081167f00000000000000000000000000000000000000000000000000000000000000009091160361198157604051630ac37bbf60e31b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561043d575f91611952575090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614159050611b5e57604051632518981160e21b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561043d575f91611952575090565b60405163d044fe9b60e01b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561043d575f91611952575090565b604051636eb1769f60e11b81523060048201526001600160a01b03838116602483018190529490831691602081604481865afa90811561043d575f91611cea575b50611c3f94611c4d611c0b5f948594610e66565b60405163095ea7b360e01b602082019081526001600160a01b03909416602482015260448101919091529687906064820190565b03601f198101885287610bb7565b85519082855af190611c5d611dd1565b82611cb8575b5081611cad575b5015611c7557505050565b611883611888936040519063095ea7b360e01b602083015260248201525f604482015260448152611ca7606482610bb7565b82611d66565b90503b15155f611c6a565b80519192508115918215611cd0575b5050905f611c63565b611ce39250602080918301019101611d4e565b5f80611cc7565b90506020813d602011611d16575b81611d0560209383610bb7565b8101031261014b5751611c3f611bf7565b3d9150611cf8565b9190918115611d3457610f259261183591610e35565b5050505f90565b8115611d3457610f259261183591610e35565b9081602091031261014b5751801515810361014b5790565b5f80611d8e9260018060a01b03169360208151910182865af1611d87611dd1565b9083611e10565b8051908115159182611db6575b5050611da45750565b635274afe760e01b5f5260045260245ffd5b611dc99250602080918301019101611d4e565b155f80611d9b565b3d15611e0b573d9067ffffffffffffffff82116109c85760405191611e00601f8201601f191660200184610bb7565b82523d5f602084013e565b606090565b90611e345750805115611e2557805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580611e65575b611e45575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15611e3d56fea264697066735822122031cbba3d0f67fa9960c80e8dde35d7d3550b9bced9b39c9333a70f3eae803fd664736f6c634300081b00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12da2646970667358221220d0565e0860cfcefc11a5df6fb41600543fe57059ead5fc200b2103205dd2724164736f6c634300081b0033","sourceMap":"296:14029:71:-:0;;;;;;;3166:4:2;296:14029:71;;3166:4:2;296:14029:71;;;3166:4:2;296:14029:71;3166:4:2;296:14029:71;;1038:4:12;296:14029:71;;;1038:4:12;296:14029:71;445:42;296:14029;;;;;;438:50;296:14029;;;438:50;296:14029;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c9081630a9254e4146139b4575080631d279786146135eb5780631ed7831c1461356d57806323faaaa914612d675780632ade388014612ba85780633e5e3c2314612b2a5780633f7286f414612aac57806348b4e4181461225357806366d9a9a0146120a5578063796f2c7514611d8e5780637f6f69f414611c67578063821a7e72146115e557806385226c8114611553578063916a17c6146112c7578063a9f992f014610dce578063b5508aa914610d35578063ba414fa614610d10578063c307553a14610c0a578063c6549c14146102c6578063d25f701e146101c9578063e20c9f711461013b5763fa7626d40361000f5734610138578060031936011261013857602060ff601e54166040519015158152f35b80fd5b503461013857806003193601126101385760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b8181106101aa576101a68561019a81870382613e76565b60405191829182613ccc565b0390f35b82546001600160a01b0316845260209093019260019283019201610183565b5034610138578060031936011261013857601e54602054601f5460405163549387df60e11b8152600481018590526001600160a01b03928316602482015290821660448201528392909183918391606491839160089190911c165afa9081156102965782916102a4575b50515f51602061767b5f395f51905f523b156102a1576040519063260a5b1560e21b825260048201526002602482015281816044815f51602061767b5f395f51905f525afa8015610296576102855750f35b8161028f91613e76565b6101385780f35b6040513d84823e3d90fd5b50fd5b6102c091503d8084833e6102b88183613e76565b810190613f3a565b5f610233565b5034610138578060031936011261013857610ca06040516102e78282613e76565b60648152601f19820180366020840137670de0b6b3a764000061030983613fb3565b5260015b60648110610bc557506103236040519384613e76565b60648352835b818110610b8957505060015b606481106103c057505060015b6063811061034e578280f35b6103588183613fe4565b515160018201908183116103ac57816103836103a69261037b6001969588613fe4565b5151906144be565b602061039d816103938689613fe4565b5101519287613fe4565b510151906144be565b01610342565b634e487b7160e01b85526011600452602485fd5b604051634b88b8ad60e11b815290602082600481885f51602061767b5f395f51905f525af1918215610801578592610b56575b50601f546001600160a01b031661047661040d8386613fe4565b5191878060405160208101906370a0823160e01b825230602482015260248152610438604482613e76565b5190845afa5061045861044961455c565b60208082518301019101613f14565b5060018060a01b03166001600160601b0360a01b6011541617601155565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015610b42576001810180600e55811015610b2e57600e8752307fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd9190910155601154600f5460105488926001600160a01b03169160e01b6104f26145a2565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908186526020526040852060405160208101906105448161053688888661458b565b03601f198101835282613e76565b519020865260205260ff60036040872001541615610b20575b6001600160a01b0384165f908152600d60205260409020908552602052610536610596604086209360405192839160208301958661458b565b51902083526020526040822060018101549360028201546105b78187614141565b6109b1575b8254604051630667f9d760e41b81526001600160a01b038616600482015260248101829052969091906020886044815f51602061767b5f395f51905f525afa9788156109a657879861096a575b506001908201610100031b5f1901811b198716915f51602061767b5f395f51905f523b15610966576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528481606481835f51602061767b5f395f51905f525af190811561080157859161094d575b505061069061475e565b919015918215610942575b505061086157505050506106ad615256565b601f54601e546107099160209160081c6001600160a01b0390811691166106d48588613fe4565b5160405163095ea7b360e01b81526001600160a01b0390931660048401526024830152909283919082908a9082906044820190565b03925af1801561083a57610845575b50601e54601f546020546001600160a01b0391821692608092899260089290921c8116911682610748878a613fe4565b519561076a60405197889687958694638307c65560e01b8652600486016140d1565b03925af190811561083a57869161080c575b506107878286613fe4565b526107928185613fe4565b5060405191631135fc2960e21b83526004830152602082602481885f51602061767b5f395f51905f525af1918215610801576001926107d3575b5001610335565b6107f39060203d81116107fa575b6107eb8183613e76565b810190614129565b505f6107cc565b503d6107e1565b6040513d87823e3d90fd5b61082d915060803d8111610833575b6108258183613e76565b810190614020565b5f61077c565b503d61081b565b6040513d88823e3d90fd5b61085c9060203d81116107fa576107eb8183613e76565b610718565b82945054905f51602061767b5f395f51905f523b1561093e576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810191909152604481019290925281606481835f51602061767b5f395f51905f525af1801561029657610929575b60405162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b610934828092613e76565b61013857806108c8565b8280fd5b141590505f8061069b565b8161095791613e76565b61096257835f610686565b8380fd5b8680fd5b965096506020863d821161099e575b8161098660209383613e76565b8101031261099a579451958b959081610609565b5f80fd5b3d9150610979565b6040513d89823e3d90fd5b90919293506109c08186614141565b610100036101008111610b0c5760ff8111610b0c5760405163348051d760e11b8152600190911b600482018190528b80836024815f51602061767b5f395f51905f525afa928315610aff5760209382606a92610aa19492610adb575b506040519586927f73746453746f726167652066696e642853746453746f72616765293a20506163828501527f6b656420736c6f742e2057652063616e2774206669742076616c756520677265604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f198101845283613e76565b831015610ab3575090899392916105bc565b60405162461bcd60e51b815260206004820152908190610ad7906024830190613d0e565b0390fd5b610af89192503d8084833e610af08183613e76565b810190613eb2565b905f610a1c565b50604051903d90823e3d90fd5b634e487b7160e01b8b52601160045260248bfd5b610b2861497a565b5061055d565b634e487b7160e01b87526032600452602487fd5b634e487b7160e01b87526041600452602487fd5b9091506020813d8211610b81575b81610b7160209383613e76565b8101031261099a5751905f6103f3565b3d9150610b64565b602090604051610b9881613e5b565b8681528683820152604051610bac81613e40565b8781528784820152604082015282828701015201610329565b80670de0b6b3a764000002670de0b6b3a764000081048203610bf65790600191610bef8286613fe4565b520161030d565b634e487b7160e01b86526011600452602486fd5b5034610138578060031936011261013857601e5460405163ecbbc03360e01b8152600481018390529082908290602490829060081c6001600160a01b03165afa8015610296578290610c65575b610c629150516143d0565b80f35b503d8083833e610c758183613e76565b81019060208183031261093e578051906001600160401b03821161096257019080601f8301121561093e57815190610cac82613f23565b92610cba6040519485613e76565b82845260208085019360051b820101918211610d0c57602001915b818310610ce857505050610c6290610c57565b82516001600160a01b0381168103610d0857815260209283019201610cd5565b8580fd5b8480fd5b50346101385780600319360112610138576020610d2b614207565b6040519015158152f35b5034610138578060031936011261013857601954610d5281613f23565b91610d606040519384613e76565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b838310610da257604051806101a68782613de1565b600160208192604051610dc081610db98189614186565b0382613e76565b815201920192019190610d8d565b503461013857610ddd36613cad565b156112c15760015b60018060a01b036020541660018060a01b03601e5460081c169160405163549387df60e11b81528560048201528560248201528260448201528581606481875afa90811561083a5786916112a7575b5060028210156112935785906001831494855f146111ff5750610e5690613fd4565b518510806111f5575b5f51602061767b5f395f51905f523b156111f157604051632631f2b160e11b8152901515600482015281816024815f51602061767b5f395f51905f525afa8015610296576111dc575b5050601e546040516318160ddd60e01b81529060081c6001600160a01b0316602082600481875afa9081156109a65787916111a6575b610ee89250614373565b601e546040516370a0823160e01b815230600482015260089190911c6001600160a01b031680319491939190602085602481865afa93841561119b5787958995611161575b5094608091610f54968a604051809981958294638307c65560e01b84528a60048501614059565b03925af19384156109a6578794611140575b508351610f71578680f35b156110a1576040516370a0823160e01b8152306004820152602081602481855afa80156109a6578391889161106a575b50610fb591610faf91614108565b8661446f565b6001198501948511610bf6576020602491604051928380926370a0823160e01b82523060048301525afa90811561083a578691611030575b5061102694611003611020949361100993614108565b906144be565b519160018060a01b03601e5460081c163190614108565b90614420565b5f80808080808680f35b929190506020833d602011611062575b8161104d60209383613e76565b8101031261099a579151909190611026610fed565b3d9150611040565b9150506020813d602011611099575b8161108660209383613e76565b8101031261099a57518290610fb5610fa1565b3d9150611079565b92916110c56020929561102060249560018060a01b03601e5460081c163190614108565b5192604051928380926370a0823160e01b82523060048301525afa908115611135578491611101575b506110fc9261102091614108565b611026565b90506020813d60201161112d575b8161111c60209383613e76565b8101031261099a57516110fc6110ee565b3d915061110f565b6040513d86823e3d90fd5b61115a91945060803d608011610833576108258183613e76565b925f610f66565b955093506020853d602011611193575b8161117e60209383613e76565b8101031261099a579351869490936080610f2d565b3d9150611171565b6040513d8a823e3d90fd5b90506020823d6020116111d4575b816111c160209383613e76565b8101031261099a57610ee8915190610ede565b3d91506111b4565b816111e691613e76565b610d0c57845f610ea8565b5080fd5b50600a8511610e5f565b915061120a90613fb3565b51851080611289575b5f51602061767b5f395f51905f523b1561096657604051632631f2b160e11b815290151560048201528680826024815f51602061767b5f395f51905f525afa918215610aff578792611270575b505061126b91614373565b610ee8565b8192509061127d91613e76565b610d085784865f611260565b50600a8511611213565b634e487b7160e01b86526021600452602486fd5b6112bb91503d8088833e6102b88183613e76565b5f610e34565b81610de5565b5034610138578060031936011261013857601c546112e481613f23565b906112f26040519283613e76565b808252601c8352827f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b83831061133557604051806101a68782613d32565b60405161134181613e40565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b8160078401106114b457846001979460029794602097946113cc945491818110611498575b81811061147c575b818110611460575b818110611444575b818110611428575b81811061140c575b8181106113f2575b106113de575b500382613e76565b83820152815201920192019190611320565b6001600160e01b031916815286015f6113c4565b828a1b6001600160e01b0319168452928901928b016113be565b604083901b6001600160e01b0319168452928901928b016113b6565b606083901b6001600160e01b0319168452928901928b016113ae565b608083901b6001600160e01b0319168452928901928b016113a6565b60a083901b6001600160e01b0319168452928901928b0161139e565b60c083901b6001600160e01b0319168452928901928b01611396565b60e083901b6001600160e01b0319168452928901928b0161138e565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e0820152019401920191611369565b5034610138578060031936011261013857601a5461157081613f23565b9161157e6040519384613e76565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b8383106115c057604051806101a68782613de1565b6001602081926040516115d781610db98189614186565b8152019201920191906115ab565b5034610138578060031936011261013857610ca06040516116068282613e76565b60648152601f19820180366020840137670de0b6b3a764000061162883613fb3565b5260015b60648110611c3657506116426040519384613e76565b60648352835b818110611bfa57505060015b606481106116a057505060015b6063811061166d578280f35b6116778183613fe4565b515160018201908183116103ac578161038361169a9261037b6001969588613fe4565b01611661565b604051634b88b8ad60e11b815290602082600481885f51602061767b5f395f51905f525af1918215610801578592611bc7575b50601f546001600160a01b03166116ed61040d8386613fe4565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015610b42576001810180600e55811015610b2e57600e8752307fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd9190910155601154600f5460105488926001600160a01b03169160e01b6117696145a2565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908186526020526040852060405160208101906117ad8161053688888661458b565b519020865260205260ff60036040872001541615611bb9575b6001600160a01b0384165f908152600d602052604090209085526020526105366117ff604086209360405192839160208301958661458b565b51902083526020526040822060018101549360028201546118208187614141565b611ab8575b8254604051630667f9d760e41b81526001600160a01b038616600482015260248101829052969091906020886044815f51602061767b5f395f51905f525afa9788156109a6578798611a80575b506001908201610100031b5f1901811b198716915f51602061767b5f395f51905f523b15610966576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528481606481835f51602061767b5f395f51905f525af1908115610801578591611a6b575b50506118f961475e565b919015918215611a60575b50506108615750505050611916615256565b601f54601e5461193d9160209160081c6001600160a01b0390811691166106d48588613fe4565b03925af1801561083a57611a44575b50601e54601f546020546001600160a01b039182169260809260019260089290921c811691168961197d878a613fe4565b519561199f60405197889687958694638307c65560e01b8652600486016140d1565b03925af190811561083a578691611a26575b506119bc8286613fe4565b526119c78185613fe4565b5060405191631135fc2960e21b83526004830152602082602481885f51602061767b5f395f51905f525af191821561080157600192611a08575b5001611654565b611a1f9060203d81116107fa576107eb8183613e76565b505f611a01565b611a3e915060803d8111610833576108258183613e76565b5f6119b1565b611a5b9060203d81116107fa576107eb8183613e76565b61194c565b141590505f80611904565b81611a7591613e76565b61096257835f6118ef565b965096506020863d8211611ab0575b81611a9c60209383613e76565b8101031261099a579451958b959081611872565b3d9150611a8f565b9091929350611ac78186614141565b610100036101008111610b0c5760ff8111610b0c5760405163348051d760e11b8152600190911b600482018190528b80836024815f51602061767b5f395f51905f525afa928315610aff5760209382606a92611ba79492610adb57506040519586927f73746453746f726167652066696e642853746453746f72616765293a20506163828501527f6b656420736c6f742e2057652063616e2774206669742076616c756520677265604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f198101845283613e76565b831015610ab357509089939291611825565b611bc161497a565b506117c6565b9091506020813d8211611bf2575b81611be260209383613e76565b8101031261099a5751905f6116d3565b3d9150611bd5565b602090604051611c0981613e5b565b8681528683820152604051611c1d81613e40565b8781528784820152604082015282828701015201611648565b80670de0b6b3a764000002670de0b6b3a764000081048203610bf65790600191611c608286613fe4565b520161162c565b5034610138576060366003190112610138576024356001600160a01b038116908190036111f157816044356001600160a01b038116908190036111f157606460018060a01b03601e5460081c169360405194859384926348bd7dfd60e01b84526004356004850152602484015260448301525afa8015610296578290611cf257610c629150516143d0565b503d8083833e611d028183613e76565b81019060208183031261093e578051906001600160401b03821161096257019080601f8301121561093e57815190611d3982613f23565b92611d476040519485613e76565b82845260208085019360051b820101918211610d0c57602001915b818310611d7557505050610c6290610c57565b8251600a811015610d0857815260209283019201611d62565b503461013857604036600319011261013857601e54601f5460205460405163549387df60e11b815260048181018690526001600160a01b03938416602483810182905293851660448401819052969560081c9094169390359290919035908581606481885afa90811561083a57869161208b575b50611e0c81613fb3565b51841080612082575b5f51602061767b5f395f51905f523b1561096657604051632631f2b160e11b8152901515600482015286816024815f51602061767b5f395f51905f525afa80156109a65790879161206d575b5050611e6c90613fd4565b51811080612064575b5f51602061767b5f395f51905f523b15610d0857604051632631f2b160e11b8152901515600482015285816024815f51602061767b5f395f51905f525afa801561083a5790869161204f575b5093915f969391965060405196611ed9606089613e76565b6002885260208801926040368537611ef089613fb3565b52611efa88613fd4565b5260405196879463155adc9160e31b8652608486019287600488015260248701526044860152608060648601525180915260a484019190855b8181106120335750505082809103915afa918215610aff578192611f96575b50805b8251811015611f925780611f75611f6e60019386613fe4565b515161450d565b611f8c6020611f848387613fe4565b51015161450d565b01611f55565b5080f35b9091503d8083833e611fa88183613e76565b81019060208183031261093e578051906001600160401b038211610962570181601f8201121561093e578051611fdd81613f23565b92611feb6040519485613e76565b81845260208085019260061b84010192818411610d0857602001915b8383106120195750505050905f611f52565b60206040916120288486613ff8565b815201920191612007565b8251845287965088955060209384019390920191600101611f33565b8161205991613e76565b610d0c57845f611ec1565b50801515611e75565b8161207791613e76565b610d0857855f611e61565b50831515611e15565b61209f91503d8088833e6102b88183613e76565b5f611e02565b5034610138578060031936011261013857601b546120c281613f23565b906120d06040519283613e76565b808252601b8352827f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1602084015b83831061211357604051806101a68782613d32565b60405161211f81613e40565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b8160078401106121b457846001979460029794602097946121a29454918181106114985781811061147c5781811061146057818110611444578181106114285781811061140c578181106113f257106113de57500382613e76565b838201528152019201920191906120fe565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e0820152019401920191612147565b50346101385761226236613cad565b15612aa5576001905b60208054601f546040516370a0823160e01b8152306004820152946001600160a01b0391821693929091169185602481865afa94851561083a578695612a71575b50601e5460405163549387df60e11b815260048101889052602481018590526044810184905260089190911c6001600160a01b0316948782606481895afa91821561119b578892612a55575b506002831015612a41579087916001841496875f146128dd575061231b82613fd4565b51811090816128d2575b505f51602061767b5f395f51905f523b1561093e57604051632631f2b160e11b8152901515600482015282816024815f51602061767b5f395f51905f525afa9081156128c75783916128b2575b5050601e546080916123ca916123939060081c6001600160a01b0316614318565b601e5460081c6001600160a01b0316906123ac90613fb3565b51604051948580948193638307c65560e01b83528b600484016140a3565b03925af180156109a657612895575b50601e5460405163095ea7b360e01b815260089190911c6001600160a01b031660048201525f1960248201526020816044818a885af180156109a657612876575b505b6040516370a0823160e01b815230600482015291602083602481845afa9283156109a6578793612842575b506040516370a0823160e01b815230600482015294602086602481885afa95861561119b57889661280a575b50612482869760809697614108565b601e54604051638307c65560e01b8152969194879160081c6001600160a01b03169082908c9082906124bb908a908a8f600486016140d1565b03925af194851561119b5788956127e9575b5084516124d8578780f35b1561267c576040516370a0823160e01b8152306004820152602081602481855afa801561119b5784918991612645575b5061251c9161251691614108565b8361446f565b6001198201918211612631576020602491604051928380926370a0823160e01b82523060048301525afa9081156109a65787916125fd575b506125629261100391614108565b516001198101919082116125e9576020602491604051928380926370a0823160e01b82523060048301525afa9081156111355784916125b5575b50611003906125aa93614108565b5f8080808080808780f35b90506020813d6020116125e1575b816125d060209383613e76565b8101031261099a57516125aa61259c565b3d91506125c3565b634e487b7160e01b84526011600452602484fd5b90506020813d602011612629575b8161261860209383613e76565b8101031261099a5751612562612554565b3d915061260b565b634e487b7160e01b87526011600452602487fd5b9150506020813d602011612674575b8161266160209383613e76565b8101031261099a5751839061251c612508565b3d9150612654565b936020602491604097949751928380926370a0823160e01b82523060048301525afa9081156109a65787916127b5575b50611020906126ba93614108565b805160011981019081116103ac576040516370a0823160e01b8152306004820152602081602481875afa801561083a578591879161277d575b506020926110036024959361270793614108565b5192604051928380926370a0823160e01b82523060048301525afa908115611135578491612749575b506127449261273e91614108565b9061446f565b6125aa565b90506020813d602011612775575b8161276460209383613e76565b8101031261099a5751612744612730565b3d9150612757565b939150506020833d6020116127ad575b8161279a60209383613e76565b8101031261099a579151849060206126f3565b3d915061278d565b90506020813d6020116127e1575b816127d060209383613e76565b8101031261099a57516126ba6126ac565b3d91506127c3565b61280391955060803d608011610833576108258183613e76565b935f6124cd565b9495506020853d60201161283a575b8161282660209383613e76565b8101031261099a5793519493612482612473565b3d9150612819565b9092506020813d60201161286e575b8161285e60209383613e76565b8101031261099a5751915f612447565b3d9150612851565b61288e9060203d6020116107fa576107eb8183613e76565b505f61241a565b6128ad9060803d608011610833576108258183613e76565b6123d9565b816128bc91613e76565b6111f157815f612372565b6040513d85823e3d90fd5b60649150115f612325565b916128ea90939193613fb3565b51831080612a37575b5f51602061767b5f395f51905f523b156111f157604051632631f2b160e11b8152901515600482015281816024815f51602061767b5f395f51905f525afa801561029657612a1e575b5050612947906142a2565b601e54604051638307c65560e01b81529190608090839060081c6001600160a01b0316818b8161297b878c600484016140a3565b03925af190811561119b576129cb92602092612a01575b50601e5460405163095ea7b360e01b815260089190911c6001600160a01b03166004820152602481019190915291829081906044820190565b03818a885af180156109a6576129e2575b5061241c565b6129fa9060203d6020116107fa576107eb8183613e76565b505f6129dc565b612a199060803d608011610833576108258183613e76565b612992565b81612a2891613e76565b612a3357875f61293c565b8780fd5b50606483116128f3565b634e487b7160e01b88526021600452602488fd5b612a6a9192503d808a833e6102b88183613e76565b905f6122f8565b9094506020813d602011612a9d575b81612a8d60209383613e76565b8101031261099a5751935f6122ac565b3d9150612a80565b819061226b565b503461013857806003193601126101385760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b818110612b0b576101a68561019a81870382613e76565b82546001600160a01b0316845260209093019260019283019201612af4565b503461013857806003193601126101385760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b818110612b89576101a68561019a81870382613e76565b82546001600160a01b0316845260209093019260019283019201612b72565b5034610138578060031936011261013857601d54612bc581613f23565b612bd26040519182613e76565b818152601d83526020810191837f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f845b838310612cd65786858760405192839260208401906020855251809152604084019160408260051b8601019392815b838310612c3e5786860387f35b919395509193603f198782030183528551906020604082019260018060a01b0381511683520151916040602083015282518091526060820190602060608260051b850101940192855b828110612cab57505050505060208060019297019301930190928695949293612c31565b9091929394602080612cc9600193605f198782030189528951613d0e565b9701950193929101612c87565b604051612ce281613e40565b82546001600160a01b03168152600183018054612cfe81613f23565b91612d0c6040519384613e76565b8183528a526020808b20908b9084015b838210612d42575050505060019282602092836002950152815201920192019190612c02565b600160208192604051612d5981610db9818a614186565b815201930191019091612d1c565b503461013857612d7636613cad565b156135675760015b602054601f54601e5460405163549387df60e11b8152600481018790526001600160a01b03938416602482018190529284166044820181905294929360089290921c909116908681606481855afa9081156109a657879161354d575b5060028310156135395786906001841492835f146133ed5750612dfc81613fd4565b518710806133e3575b5f51602061767b5f395f51905f523b1561093e57604051632631f2b160e11b8152901515600482015282816024815f51602061767b5f395f51905f525afa9081156128c75783916133ce575b5050601e54608091612e72916123939060081c6001600160a01b0316614318565b03925af180156109a6576133b1575b50601e5460405163095ea7b360e01b815260089190911c6001600160a01b031660048201525f1960248201526020816044818a885af180156109a657613392575b505b6040516370a0823160e01b815230600482015293602085602481875afa9485156109a657879561335e575b506040516370a0823160e01b815230600482015291602083602481855afa93841561119b5787938995613325575b50601e54604051638307c65560e01b8152986080928a9260081c6001600160a01b03169183918d918391612f5791908a8e600486016140d1565b03925af196871561119b578897613304575b508651612f74578780f35b1561319d576040516370a0823160e01b8152306004820152602081602481855afa801561119b5784908990613167575b612fae9250614108565b6001198301908382116131535791612fca60209260249461446f565b6040516370a0823160e01b815230600482015292839182905afa9081156109a657879161311f575b506130059261300091614108565b6144be565b6040516370a0823160e01b8152306004820152602081602481855afa80156108015785906130eb575b613039915083614108565b83519060028201809211610bf65791613057602092602495946144be565b6040516370a0823160e01b815230600482015293849182905afa9081156111355784916130b5575b6130899250614108565b90515f198101919082116130a157906125aa9161446f565b634e487b7160e01b83526011600452602483fd5b90506020823d6020116130e3575b816130d060209383613e76565b8101031261099a5761308991519061307f565b3d91506130c3565b506020813d602011613117575b8161310560209383613e76565b8101031261099a57613039905161302e565b3d91506130f8565b90506020813d60201161314b575b8161313a60209383613e76565b8101031261099a5751613005612ff2565b3d915061312d565b634e487b7160e01b89526011600452602489fd5b50506020813d602011613195575b8161318260209383613e76565b8101031261099a5783612fae9151612fa4565b3d9150613175565b9390926040959295516370a0823160e01b8152306004820152602081602481855afa90811561119b5788916132d0575b506131db6131e19184614108565b8561446f565b600119840193841161263157906020602492604051938480926370a0823160e01b82523060048301525afa9182156109a6578792613299575b506024936110036020949361322e93614108565b5192604051928380926370a0823160e01b82523060048301525afa908115611135578491613265575b506127449261102091614108565b90506020813d602011613291575b8161328060209383613e76565b8101031261099a5751612744613257565b3d9150613273565b9291506020833d6020116132c8575b816132b560209383613e76565b8101031261099a5791519091602461321a565b3d91506132a8565b90506020813d6020116132fc575b816132eb60209383613e76565b8101031261099a57516131db6131cd565b3d91506132de565b61331e91975060803d608011610833576108258183613e76565b955f612f69565b935093506020833d602011613356575b8161334260209383613e76565b8101031261099a5760808793519490612f1d565b3d9150613335565b9094506020813d60201161338a575b8161337a60209383613e76565b8101031261099a5751935f612eef565b3d915061336d565b6133aa9060203d6020116107fa576107eb8183613e76565b505f612ec2565b6133c99060803d608011610833576108258183613e76565b612e81565b816133d891613e76565b6111f157815f612e51565b5060648711612e05565b91906133f890613fb3565b5187108061352f575b5f51602061767b5f395f51905f523b156111f157604051632631f2b160e11b8152901515600482015281816024815f51602061767b5f395f51905f525afa80156102965761351a575b5050613455906142a2565b601e54604051638307c65560e01b815290608090829060081c6001600160a01b0316818a816134888c8b600484016140a3565b03925af180156109a6576134fd575b50601e5460405163095ea7b360e01b815260089190911c6001600160a01b03166004820152602481018690526020816044818a885af180156109a6576134de575b50612ec4565b6134f69060203d6020116107fa576107eb8183613e76565b505f6134d8565b6135159060803d608011610833576108258183613e76565b613497565b8161352491613e76565b61096657865f61344a565b5060648711613401565b634e487b7160e01b87526021600452602487fd5b61356191503d8089833e6102b88183613e76565b5f612dda565b81612d7e565b503461013857806003193601126101385760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b8181106135cc576101a68561019a81870382613e76565b82546001600160a01b03168452602090930192600192830192016135b5565b5034610138576135fa36613cad565b156139ae5760015b60018060a01b03601f541660018060a01b03601e5460081c169160405163549387df60e11b81528560048201528560248201528260448201528581606481875afa90811561083a578691613994575b5060028210156112935785906001831494855f14613900575061367390613fd4565b518510806138f6575b5f51602061767b5f395f51905f523b156111f157604051632631f2b160e11b8152901515600482015281816024815f51602061767b5f395f51905f525afa8015610296576138e1575b5050601e546040516318160ddd60e01b81529060081c6001600160a01b0316602082600481875afa9081156109a65787916138ab575b6137059250614373565b601e546040516370a0823160e01b815230600482015260089190911c6001600160a01b031680319491939190602085602481865afa93841561119b5787958995613871575b5094608091613771968a604051809981958294638307c65560e01b84528a60048501614059565b03925af19384156109a6578794613850575b50835161378e578680f35b156110a1576040516370a0823160e01b8152306004820152602081602481855afa80156109a65783918891613819575b506137cc91610faf91614108565b6003198501948511610bf6576020602491604051928380926370a0823160e01b82523060048301525afa90811561083a578691611030575061102694611003611020949361100993614108565b9150506020813d602011613848575b8161383560209383613e76565b8101031261099a575182906137cc6137be565b3d9150613828565b61386a91945060803d608011610833576108258183613e76565b925f613783565b955093506020853d6020116138a3575b8161388e60209383613e76565b8101031261099a57935186949093608061374a565b3d9150613881565b90506020823d6020116138d9575b816138c660209383613e76565b8101031261099a576137059151906136fb565b3d91506138b9565b816138eb91613e76565b610d0c57845f6136c5565b50600a851161367c565b915061390b90613fb3565b5185108061398a575b5f51602061767b5f395f51905f523b1561096657604051632631f2b160e11b815290151560048201528680826024815f51602061767b5f395f51905f525afa918215610aff578792613971575b505061396c91614373565b613705565b8192509061397e91613e76565b610d085784865f613961565b50600a8511613914565b6139a891503d8088833e6102b88183613e76565b5f613651565b81613602565b90503461099a575f36600319011261099a5763975a6ce960e01b81526020600482015260076024820152661b585a5b9b995d60ca1b60448201525f816064815f51602061767b5f395f51905f525afa908115613c0357613a3b916020915f91613c93575b50604051809381926371ee464d60e01b8352604060048401526044830190613d0e565b630125403f602483015203815f5f51602061767b5f395f51905f525af18015613c0357613c64575b50601f54604051906001600160a01b03166121748083016001600160401b03811184821017613c50576020928492615507843981520301905ff08015613c0357601e8054610100600160a81b03191660089290921b610100600160a81b0316919091179055601f546040516306f1b8f160e11b81526001600160a01b039190911690602081600481855afa908115613c03575f91613c0e575b5060018060a01b03166001600160601b0360a01b60205416176020555f51602061767b5f395f51905f523b1561099a57604051906318caf8e360e31b825260048201526040602482015260056044820152640aeca8aa8960db1b60648201525f81608481835f51602061767b5f395f51905f525af18015613c0357613bf0575b5060205481906001600160a01b03165f51602061767b5f395f51905f523b156102a157604051906318caf8e360e31b825260048201526040602482015260046044820152630ca8aa8960e31b60648201528181608481835f51602061767b5f395f51905f525af18015610296576102855750f35b613bfc91505f90613e76565b5f5f613b7c565b6040513d5f823e3d90fd5b90506020813d602011613c48575b81613c2960209383613e76565b8101031261099a57516001600160a01b038116810361099a575f613afc565b3d9150613c1c565b634e487b7160e01b5f52604160045260245ffd5b6020813d602011613c8b575b81613c7d60209383613e76565b8101031261099a5751613a63565b3d9150613c70565b613ca791503d805f833e610af08183613e76565b5f613a18565b604090600319011261099a5760043590602435801515810361099a5790565b60206040818301928281528451809452019201905f5b818110613cef5750505090565b82516001600160a01b0316845260209384019390920191600101613ce2565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310613d6457505050505090565b9091929394603f1982820301835285516020606081604085019360018060a01b0381511686520151936040838201528451809452019201905f905b808210613dbe5750505060208060019297019301930191939290613d55565b82516001600160e01b031916845260209384019390920191600190910190613d9f565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310613e1357505050505090565b9091929394602080613e31600193603f198682030187528951613d0e565b97019301930191939290613e04565b604081019081106001600160401b03821117613c5057604052565b606081019081106001600160401b03821117613c5057604052565b90601f801991011681019081106001600160401b03821117613c5057604052565b6001600160401b038111613c5057601f01601f191660200190565b60208183031261099a578051906001600160401b03821161099a570181601f8201121561099a57805190613ee582613e97565b92613ef36040519485613e76565b8284526020838301011161099a57815f9260208093018386015e8301015290565b9081602091031261099a575190565b6001600160401b038111613c505760051b60200190565b60208183031261099a578051906001600160401b03821161099a57019080601f8301121561099a578151613f6d81613f23565b92613f7b6040519485613e76565b81845260208085019260051b82010192831161099a57602001905b828210613fa35750505090565b8151815260209182019101613f96565b805115613fc05760200190565b634e487b7160e01b5f52603260045260245ffd5b805160011015613fc05760400190565b8051821015613fc05760209160051b010190565b919082604091031261099a5760405161401081613e40565b6020808294805184520151910152565b9060808282031261099a5761405190604080519361403d85613e5b565b805185526020810151602086015201613ff8565b604082015290565b5f80825260208201526001600160a01b03909116604082015260a0810193929190600282101561408f5760809160608201520152565b634e487b7160e01b5f52602160045260245ffd5b5f80825260208201526001600160a01b03909116604082015260016060820152608081019190915260a00190565b5f81526001600160a01b0391821660208201529116604082015260a0810193929190600282101561408f5760809160608201520152565b9190820391821161411557565b634e487b7160e01b5f52601160045260245ffd5b9081602091031261099a5751801515810361099a5790565b9190820180921161411557565b90600182811c9216801561417c575b602083101461416857565b634e487b7160e01b5f52602260045260245ffd5b91607f169161415d565b5f92918154916141958361414e565b80835292600181169081156141ea57506001146141b157505050565b5f9081526020812093945091925b8383106141d0575060209250010190565b6001816020929493945483858701015201910191906141bf565b915050602093945060ff929192191683830152151560051b010190565b60085460ff1680156142165790565b50604051630667f9d760e41b81525f51602061767b5f395f51905f5260048201526519985a5b195960d21b60248201526020816044815f51602061767b5f395f51905f525afa908115613c03575f91614270575b50151590565b90506020813d60201161429a575b8161428b60209383613e76565b8101031261099a57515f61426a565b3d915061427e565b5f51602061767b5f395f51905f523b1561099a5760405163c88a5e6d60e01b81526001600160a01b0390911660048201526fffffffffffffffffffffffffffffffff60248201525f81604481835f51602061767b5f395f51905f525af18015613c035761430c5750565b5f61431691613e76565b565b5f51602061767b5f395f51905f523b1561099a5760405163c88a5e6d60e01b81526001600160a01b0390911660048201525f1960248201525f81604481835f51602061767b5f395f51905f525af18015613c035761430c5750565b5f51602061767b5f395f51905f523b1561099a5760405163c88a5e6d60e01b81526001600160a01b0391909116600482015260248101919091525f81604481835f51602061767b5f395f51905f525af18015613c035761430c5750565b5f51602061767b5f395f51905f523b1561099a576040519063260a5b1560e21b82526004820152600360248201525f816044815f51602061767b5f395f51905f525afa8015613c035761430c5750565b905f51602061767b5f395f51905f523b1561099a576040519163260a5b1560e21b8352600483015260248201525f816044815f51602061767b5f395f51905f525afa8015613c035761430c5750565b905f51602061767b5f395f51905f523b1561099a576040519163a8d4d1d960e01b8352600483015260248201525f816044815f51602061767b5f395f51905f525afa8015613c035761430c5750565b905f51602061767b5f395f51905f523b1561099a5760405191638466f41560e01b8352600483015260248201525f816044815f51602061767b5f395f51905f525afa8015613c035761430c5750565b5f51602061767b5f395f51905f523b1561099a5760405190636d83fe6960e11b825260048201525f60248201525f816044815f51602061767b5f395f51905f525afa8015613c035761430c5750565b3d15614586573d9061456d82613e97565b9161457b6040519384613e76565b82523d5f602084013e565b606090565b60209291908391805192839101825e019081520190565b6145ad60145461414e565b61466a576040519081826020600e549283815201600e5f5260205f20925f5b8181106146515750506145e192500383613e76565b81518060051b9080820460201490151715614115576145ff81613e97565b9061460d6040519283613e76565b80825261461c601f1991613e97565b013660208301375f5b835181101561464c578061463b60019286613fe4565b5160208260051b8501015201614625565b509150565b84548352600194850194879450602090930192016145cc565b60405161467c81610db9816014614186565b90565b600781019061468e825461414e565b61474a57600191500190604051808360208295549384815201905f5260205f20925f5b8181106147315750506146c692500383613e76565b81518060051b9080820460201490151715614115576146e481613e97565b906146f26040519283613e76565b808252614701601f1991613e97565b013660208301375f5b835181101561464c578061472060019286613fe4565b5160208260051b850101520161470a565b84548352600194850194879450602090930192016146b1565b5061467c610db99160405192838092614186565b5f806020600f5460e01b6147ac6024614777600d61467f565b6040519485918183019563ffffffff60e01b1686528051918291018484015e810186838201520301601f198101845283613e76565b6011549151916001600160a01b03165afa906147c661455c565b601054909290600581901b906001600160fb1b03811603614115575f938051602081115f1461485157506020905b5f925b82841061480657505050509190565b909192956148148783614141565b8351811015613fc057830160200151600388901b91906001600160f81b031916881560088a8504141715614115576001921c1796019291906147f7565b906147f4565b905f806020600285015460e01b61487260246147778861467f565b60048601549151916001600160a01b03165afa600361488f61455c565b930154600581901b906001600160fb1b03811603614115575f938051602081115f1461491757506020905b5f925b8284106148cc57505050509190565b909192956148da8783614141565b8351811015613fc057830160200151600388901b91906001600160f81b031916881560088a8504141715614115576001921c1796019291906148bd565b906148ba565b9080601f8301121561099a57815161493481613f23565b926149426040519485613e76565b81845260208085019260051b82010192831161099a57602001905b82821061496a5750505090565b815181526020918201910161495d565b601154600f546010546001600160a01b03909216915f9160e01b61499e600d61467f565b90845f52600d60205260405f209063ffffffff60e01b1690815f5260205260405f2060405160208101906149d78161053688888661458b565b5190205f5260205260ff600360405f20015416615215575f51602061767b5f395f51905f523b1561099a5760405163266cf10960e01b81525f81600481835f51602061767b5f395f51905f525af18015613c0357615200575b50614a3b600d614857565b90506040516365bc948160e01b81528660048201528581602481835f51602061767b5f395f51905f525af190811561083a57869161519c575b508051614ae557608460405162461bcd60e51b815260206004820152604060248201527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152fd5b855b815181101561519457816020614b0083614b3195613fe4565b51604051630667f9d760e41b81526001600160a01b038c166004820152602481019190915293849081906044820190565b03815f51602061767b5f395f51905f525afa92831561119b578893615161575b508215615109575b614b638282613fe4565b51601154604051630667f9d760e41b81526001600160a01b03909116600482018190526024820183905291906020816044815f51602061767b5f395f51905f525afa9081156150fe578b916150cd575b50614bbe600d614857565b91909382155f146150c6575f19905b5f51602061767b5f395f51905f523b156150ad576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810185905260448101919091528c81606481835f51602061767b5f395f51905f525af1801561502757908d916150b1575b5050614c3e600d614857565b601154909491506001600160a01b03165f51602061767b5f395f51905f523b156150ad576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528b81606481835f51602061767b5f395f51905f525af180156150a257908c91615089575b50508261507e575b505015615074578793889360ff60135416614eee575b6001868601610100031b5f1901851b16841c8103614ee0575090614d58917f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed60808b89610536614d2d8d60405192839160208301958661458b565b519020614d3a8686613fe4565b51906040519283528a602084015260408301526060820152a1613fe4565b519060405191608083018381106001600160401b03821117614ecc5790600393929160405282526020820193845260408201908152606082019360018552898952600d60205260408920868a52602052604089206040516020810190614dc3816105368d8d8661458b565b5190208a526020526040892092518355516001830155516002820155019051151560ff801983541691161790555b848452600d60205260408420818552602052604084206040516020810190614e1e8161053688888661458b565b519020855260205260ff60036040862001541615614e6f576040948452600d602052848420908452602052610536614e6385852093865192839160208301958661458b565b51902082526020522090565b60405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201526e3a143994903737ba103337bab7321760891b6064820152608490fd5b634e487b7160e01b89526041600452602489fd5b935091506001905b01614ae7565b9450614f399350614eff8383613fe4565b51601154604051630667f9d760e41b81526001600160a01b0390911660048201526024810182905290959094602090869081906044820190565b03815f51602061767b5f395f51905f525afa948515615069578a95615036575b50614f6586600d61536a565b959096614f7381600d615443565b60115490939192906001600160a01b03165f51602061767b5f395f51905f523b15615032576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528c81606481835f51602061767b5f395f51905f525af1801561502757908d9161500e575b505087615006575b509495614cd2575093509150600190614ee8565b96505f614ff2565b8161501891613e76565b615023578b5f614fea565b8b80fd5b6040513d8f823e3d90fd5b8e80fd5b9094506020813d8211615061575b8161505160209383613e76565b8101031261099a5751935f614f59565b3d9150615044565b6040513d8c823e3d90fd5b9150600190614ee8565b141590505f80614cbc565b8161509391613e76565b61509e578a5f614cb4565b8a80fd5b6040513d8e823e3d90fd5b8d80fd5b816150bb91613e76565b615023578b5f614c32565b8c90614bcd565b90506020813d82116150f6575b816150e760209383613e76565b8101031261099a57515f614bb3565b3d91506150da565b6040513d8d823e3d90fd5b7f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a56151596151378484613fe4565b51604080516001600160a01b038e168152602081019290925290918291820190565b0390a1614b59565b9092506020813d821161518c575b8161517c60209383613e76565b8101031261099a5751915f614b51565b3d915061516f565b505050614df1565b90503d8087833e6151ad8183613e76565b81016040828203126109665781516001600160401b038111612a3357816151d591840161491d565b916020810151906001600160401b0382116151fc576151f592910161491d565b505f614a74565b8880fd5b61520d9194505f90613e76565b5f925f614a30565b91939092505f52600d60205260405f20905f5260205261053661524760405f209360405192839160208301958661458b565b5190205f5260205260405f2090565b6001600160601b0360a01b6011541660115563ffffffff19600f5416600f55600e545f600e5580615328575b505f60105560ff196013541660135561529c60145461414e565b806152a45750565b601f81116001146152b657505f601455565b60145f52601f0160051c7fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec017fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ed5b81811061531d57505060145f525f602081208160145555565b5f8155600101615304565b600e5f527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd908101905b81811061535f5750615282565b5f8155600101615352565b91905f5b610100811061538157505090505f905f90565b8060ff0360ff8111614115576004850154600190911b906001600160a01b03165f51602061767b5f395f51905f523b1561099a576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f51602061767b5f395f51905f525af18015613c0357615433575b5061540d84614857565b81615429575b506154205760010161536e565b92505060019190565b905015155f615413565b5f61543d91613e76565b5f615403565b91905f5b610100811061545a57505090505f905f90565b60048401546001821b906001600160a01b03165f51602061767b5f395f51905f523b1561099a576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f51602061767b5f395f51905f525af18015613c03576154f6575b506154d984614857565b816154ec575b5061542057600101615447565b905015155f6154df565b5f61550091613e76565b5f6154cf56fe60e0806040523461023e57602081612174803803809161001f8285610298565b83398101031261023e57516001600160a01b0381169081900361023e57602081600492608052604051928380926306f1b8f160e11b82525afa90811561024a575f91610255575b5060a081905260405163332d08e560e11b815290602090829060049082906001600160a01b03165afa90811561024a575f91610204575b5060c052604051611ea490816102d0823960805181818160ce015281816101ea015281816105c8015281816108d301528181610e8e01528181610f6501528181611112015281816111ee015281816112d00152818161142401528181611b230152611b7b015260a051818181609a015281816102cf015281816105250152818161056301528181610741015281816107dd0152818161081b015281816109580152818161099601528181610c8501528181610d2b01528181610dee01528181610eb401528181610fda0152818161113c015281816111b801528181611295015281816114a1015281816115c701528181611649015281816116e10152818161176c015281816117db015281816118d301528181611a550152611ad6015260c05181818161028001528181610abb01528181610cdc0152818161131d015281816113e9015281816114ed0152818161157a01528181611917015281816119980152611a990152f35b90506020813d602011610242575b8161021f60209383610298565b8101031261023e57516001600160a01b038116810361023e575f61009d565b5f80fd5b3d9150610212565b6040513d5f823e3d90fd5b90506020813d602011610290575b8161027060209383610298565b8101031261023e57516001600160a01b038116810361023e576020610066565b3d9150610263565b601f909101601f19168101906001600160401b038211908210176102bb57604052565b634e487b7160e01b5f52604160045260245ffdfe6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c806323eeca0114610a8957806348bd7dfd146109dc5780638307c6551461084d578063a9270fbe146105a3578063aad6e4881461014f5763ecbbc0330361000e573461014b57602036600319011261014b5760405161007f608082610bb7565b60038152602081019060603683375f61009782610bf1565b527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166100cb82610c12565b527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166100ff82610c22565b52604051918291602083019060208452518091526040830191905f5b818110610129575050500390f35b82516001600160a01b031684528594506020938401939092019160010161011b565b5f80fd5b3461014b57608036600319011261014b57610168610b35565b610170610b4b565b9060643567ffffffffffffffff811161014b573660238201121561014b5780600401359061019d82610bd9565b916101ab6040519384610bb7565b8083526024602084019160051b8301019136831161014b57602401905b828210610593575050506001600160a01b038281169290841683811461049f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168481141580610560575b80610557575b61049f578114159081610523575b5061049f5781519361024185610bd9565b9461024f6040519687610bb7565b80865261025e601f1991610bd9565b015f5b81811061047c575050604051631be7ed6560e11b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561043d575f92610448575b50604051633a98ef3960e01b8152916020836004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa92831561043d575f93610409575b505f9515955b85518110156103b8576001908715610386576103696103378685610331858c610c32565b51611821565b610341838a610c32565b519061036161035a610353868d610c32565b5188610e66565b9189610e66565b91878a611735565b610373828b610c32565b5261037e818a610c32565b505b0161030d565b61039d8584610395848b610c32565b51878a611735565b6103a7828b610c32565b526103b2818a610c32565b50610380565b876040518091602082016020835281518091526020604084019201905f5b8181106103e4575050500390f35b82518051855260209081015181860152869550604090940193909201916001016103d6565b9092506020813d602011610435575b8161042560209383610bb7565b8101031261014b57519187610307565b3d9150610418565b6040513d5f823e3d90fd5b9091506020813d602011610474575b8161046460209383610bb7565b8101031261014b575190866102b8565b3d9150610457565b60209060405161048b81610b9b565b5f81525f8382015282828a01015201610261565b60405163643c60f360e01b81528061051f6004820160a09060208152604460208201527f5468697320706f6f6c206f6e6c7920737570706f727473204554482d3e65455460408201527f482c2077654554483c2d3e6545544820616e64204554482d3e776545544820736060820152637761707360e01b60808201520190565b0390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161415905085610230565b50841515610222565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031685141561021c565b81358152602091820191016101c8565b3461014b576105b136610b61565b6001600160a01b0390811692501680821461049f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681811491821590819081610819575b8161080f575b5061049f5781841493841590816107db575b5061049f576040519361062b606086610bb7565b6002855260208501936040368637916107d3575b501561072b576020600491604051928380926318160ddd60e01b82525afa90811561043d575f916106f9575b50605a810290808204605a14901517156106e5576064900461068c83610bf1565b52905b61069881610bf1565b516106a282610c12565b52604051918291602083019060208452518091526040830191905f5b8181106106cc575050500390f35b82518452859450602093840193909201916001016106be565b634e487b7160e01b5f52601160045260245ffd5b90506020813d602011610723575b8161071460209383610bb7565b8101031261014b57518361066b565b3d9150610707565b506040516318160ddd60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561043d575f916107a1575b50605a810290808204605a14901517156106e5576064900461079a83610bf1565b529061068f565b90506020813d6020116107cb575b816107bc60209383610bb7565b8101031261014b575183610779565b3d91506107af565b90508461063f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161415905085610617565b9050151585610605565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681141591506105ff565b3461014b5760a036600319011261014b57610866610b35565b61086e610b4b565b90606435600281101561014b57604051906060820182811067ffffffffffffffff8211176109c8576040525f82525f60208301526040516108ae81610b9b565b5f808252602082015260408301526001600160a01b0384811690841680821461049f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690808214159081610994575b8161098a575b5061049f578114159081610956575b5061049f576080936109319360843593610c53565b6020604080519280518452828101518385015201518051604084015201516060820152f35b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141590508561091c565b905015158761090d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168114159150610907565b634e487b7160e01b5f52604160045260245ffd5b3461014b576109ea36610b61565b5050506040516109fb608082610bb7565b600381526020810160603682376001610a1383610bf1565b526002610a1f83610c12565b526003610a2b83610c22565b52604051906020820192602083525180935260408201905f935b808510610a525783830384f35b9091825190600a821015610a755760208160019382935201930194019390610a45565b634e487b7160e01b5f52602160045260245ffd5b3461014b57604036600319011261014b576040805190610aa98183610bb7565b6001825260208201601f1982013682377f000000000000000000000000000000000000000000000000000000000000000060601b6bffffffffffffffffffffffff1916610af584610bf1565b52815192839260208401916020855251809252830191905f5b818110610b1c575050500390f35b8251845285945060209384019390920191600101610b0e565b602435906001600160a01b038216820361014b57565b604435906001600160a01b038216820361014b57565b606090600319011261014b57600435906024356001600160a01b038116810361014b57906044356001600160a01b038116810361014b5790565b6040810190811067ffffffffffffffff8211176109c857604052565b90601f8019910116810190811067ffffffffffffffff8211176109c857604052565b67ffffffffffffffff81116109c85760051b60200190565b805115610bfe5760200190565b634e487b7160e01b5f52603260045260245ffd5b805160011015610bfe5760400190565b805160021015610bfe5760600190565b8051821015610bfe5760209160051b010190565b919082039182116106e557565b949392909192858115610e2d575090610cbf915a916001600160a01b03851680610dec57506001600160a01b038681167f000000000000000000000000000000000000000000000000000000000000000090911603610ddc57610cb59161148e565b86525b5a90610c46565b602085810191909152604051631be7ed6560e11b815290816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561043d575f91610daa575b50604051633a98ef3960e01b8152926020846004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa92831561043d575f93610d74575b610d6d9450611617565b6040830152565b92506020843d602011610da2575b81610d8f60209383610bb7565b8101031261014b57610d6d935192610d63565b3d9150610d82565b90506020813d602011610dd4575b81610dc560209383610bb7565b8101031261014b57515f610d14565b3d9150610db8565b610de591611292565b8652610cb8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031603610e2457610de5916110f7565b610de591610e73565b955050505050565b818102929181159184041417156106e557565b8115610e52570490565b634e487b7160e01b5f52601260045260245ffd5b919082018092116106e557565b906002811015610a7557600103610f5e576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116915f917f00000000000000000000000000000000000000000000000000000000000000001690602090610ee3908386611a39565b93610ef08530338461183f565b602460405180958193636f074d1f60e11b83528860048401525af190811561043d575f91610f28575b610f259250339061188a565b90565b90506020823d602011610f56575b81610f4360209383610bb7565b8101031261014b57610f25915190610f19565b3d9150610f36565b5f906020907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602490610f9d8130338661183f565b6040519485938492636f074d1f60e11b845260048401525af190811561043d575f916110c5575b506040516370a0823160e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691602082602481865afa91821561043d575f92611090575b5060249261102b602092338361188a565b6040516370a0823160e01b815233600482015293849182905afa801561043d575f9061105c575b610f259250610c46565b506020823d602011611088575b8161107660209383610bb7565b8101031261014b57610f259151611052565b3d9150611069565b9091506020813d6020116110bd575b816110ac60209383610bb7565b8101031261014b575190602461101a565b3d915061109f565b90506020813d6020116110ef575b816110e060209383610bb7565b8101031261014b57515f610fc4565b3d91506110d3565b906002811015610a75576001036111b6576001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691829161117e917f00000000000000000000000000000000000000000000000000000000000000009091169061116a908483611a39565b9384916111798330338461183f565b611bb6565b604051630ea598cb60e41b815260048101839052906020826024815f855af190811561043d575f91610f2857610f259250339061188a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166111ec8230338461183f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906112249083908390611bb6565b60405191630ea598cb60e41b835260048301526020826024815f855af191821561043d575f9261125c575b5081610f2591339061188a565b9091506020813d60201161128a575b8161127860209383610bb7565b8101031261014b575190610f2561124f565b3d915061126b565b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906002811015610a75576001036113cf577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169161130390836118c6565b604051630d0e30db60e41b815290929091602083600481877f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af192831561043d575f93611397575b50828261136192611bb6565b60405191630ea598cb60e41b835260048301526020826024815f855af190811561043d575f91610f2857610f259250339061188a565b909192506020813d6020116113c7575b816113b460209383610bb7565b8101031261014b57519190611361611355565b3d91506113a7565b604051630d0e30db60e41b815291602090839060049082907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af191821561043d575f9261145a575b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906112249083908390611bb6565b9091506020813d602011611486575b8161147660209383610bb7565b8101031261014b5751905f611421565b3d9150611469565b906002811015610a7557600103611560577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114d382826118c6565b604051630d0e30db60e41b815290929091602083600481877f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1801561043d5761152d57610f259250339061188a565b6020833d602011611558575b8161154660209383610bb7565b8101031261014b57610f259250610f19565b3d9150611539565b604051630d0e30db60e41b815290602090829060049082907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af190811561043d575f916110c557506040516370a0823160e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691602082602481865afa91821561043d575f92611090575060249261102b602092338361188a565b60405161162381610b9b565b5f8082526020909101526001600160a01b0316806116dc57506001600160a01b039081167f0000000000000000000000000000000000000000000000000000000000000000909116036116a3579061168391670de0b6b3a7640000611821565b6040519061169082610b9b565b8152670de0b6b3a7640000602082015290565b6116b68282670de0b6b3a7640000611821565b90670de0b6b3a764000081018091116106e5576116d68261168394610e66565b91611d3b565b9192917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141590506117235761168391670de0b6b3a7640000611d3b565b61168391670de0b6b3a7640000611d1e565b908294929160405161174681610b9b565b5f8082526020909101526001600160a01b0316806117d957506001600160a01b039081167f0000000000000000000000000000000000000000000000000000000000000000909116036117b5579161179d92611821565b90604051916117ab83610b9b565b8252602082015290565b906116d6836117d36117cb8461179d9787611821565b948592610e66565b92610e66565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161415915061181790505761179d9183611d3b565b61179d9183611d1e565b91811561183a5761183590610f2593610e35565b610e48565b505090565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815261188891611883608483610bb7565b611d66565b565b60405163a9059cbb60e01b60208201526001600160a01b0392909216602483015260448083019390935291815261188891611883606483610bb7565b6001600160a01b039081167f00000000000000000000000000000000000000000000000000000000000000009091160361198157604051630ac37bbf60e31b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561043d575f91611952575090565b90506020813d602011611979575b8161196d60209383610bb7565b8101031261014b575190565b3d9150611960565b604051630ac37bbf60e31b815260048101919091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602081602481855afa801561043d575f90611a06575b60209150602460405180948193630ac37bbf60e31b835260048301525afa90811561043d575f91611952575090565b506020813d602011611a31575b81611a2060209383610bb7565b8101031261014b57602090516119d7565b3d9150611a13565b6001600160a01b031680611ad457506001600160a01b039081167f00000000000000000000000000000000000000000000000000000000000000009091160361198157604051630ac37bbf60e31b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561043d575f91611952575090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614159050611b5e57604051632518981160e21b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561043d575f91611952575090565b60405163d044fe9b60e01b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561043d575f91611952575090565b604051636eb1769f60e11b81523060048201526001600160a01b03838116602483018190529490831691602081604481865afa90811561043d575f91611cea575b50611c3f94611c4d611c0b5f948594610e66565b60405163095ea7b360e01b602082019081526001600160a01b03909416602482015260448101919091529687906064820190565b03601f198101885287610bb7565b85519082855af190611c5d611dd1565b82611cb8575b5081611cad575b5015611c7557505050565b611883611888936040519063095ea7b360e01b602083015260248201525f604482015260448152611ca7606482610bb7565b82611d66565b90503b15155f611c6a565b80519192508115918215611cd0575b5050905f611c63565b611ce39250602080918301019101611d4e565b5f80611cc7565b90506020813d602011611d16575b81611d0560209383610bb7565b8101031261014b5751611c3f611bf7565b3d9150611cf8565b9190918115611d3457610f259261183591610e35565b5050505f90565b8115611d3457610f259261183591610e35565b9081602091031261014b5751801515810361014b5790565b5f80611d8e9260018060a01b03169360208151910182865af1611d87611dd1565b9083611e10565b8051908115159182611db6575b5050611da45750565b635274afe760e01b5f5260045260245ffd5b611dc99250602080918301019101611d4e565b155f80611d9b565b3d15611e0b573d9067ffffffffffffffff82116109c85760405191611e00601f8201601f191660200184610bb7565b82523d5f602084013e565b606090565b90611e345750805115611e2557805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580611e65575b611e45575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15611e3d56fea264697066735822122031cbba3d0f67fa9960c80e8dde35d7d3550b9bced9b39c9333a70f3eae803fd664736f6c634300081b00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12da2646970667358221220d0565e0860cfcefc11a5df6fb41600543fe57059ead5fc200b2103205dd2724164736f6c634300081b0033","sourceMap":"296:14029:71:-:0;;;;;;;;;;-1:-1:-1;296:14029:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1016:26:12;296:14029:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2421:18:5;296:14029:71;;;;;;;2421:18:5;296:14029:71;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;296:14029:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14225:7;296:14029;14257:4;1590:14:0;14272:5:71;1590:14:0;296:14029:71;;-1:-1:-1;;;14225:54:71;;296:14029;14225:54;;1590:14:0;;;-1:-1:-1;;;;;296:14029:71;;;;;;;;;;;;;;;;;;;;;;14225:54;;296:14029;;;;;;;;14225:54;;;;;;;;;;;296:14029;;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;296:14029:71;;1590:14:0;;;;2349:24:1;;296:14029:71;2349:24:1;;1590:14:0;14314:1:71;296:14029;;;1590:14:0;2349:24:1;;296:14029:71;2349:24:1;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;;;;;296:14029:71;;2349:24:1;;;;;:::i;:::-;296:14029:71;;2349:24:1;296:14029:71;2349:24:1;296:14029:71;;1590:14:0;296:14029:71;;1590:14:0;;;;2349:24:1;296:14029:71;;14225:54;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;296:14029;;;;;;;;;;;;;;;;1590:14:0;;;;:::i;:::-;546:3:71;296:14029;;-1:-1:-1;;296:14029:71;;;;;;;;12622:8;12708:28;;;:::i;:::-;296:14029;12763:1;12766:19;546:3;12766:19;;;;296:14029;1590:14:0;296:14029:71;;1590:14:0;;;:::i;:::-;546:3:71;296:14029;;546:3;;;;;;;12954:13;;12763:1;12969:19;546:3;12969:19;;;;13440:13;;12763:1;13455:23;296:14029;13455:23;;;;296:14029;;;13480:3;13508:9;;;;:::i;:::-;;296:14029;12763:1;296:14029;;;;;;;;13536:13;:30;13609:21;13536:13;;12763:1;13536:13;;;;:::i;:::-;;296:14029;13536:30;;:::i;:::-;296:14029;13609:13;13590:9;;;;;:::i;:::-;;:17;296:14029;;13609:13;;:::i;:::-;;:21;296:14029;13609:21;;:::i;:::-;296:14029;13440:13;;296:14029;-1:-1:-1;;;296:14029:71;;6854:12:8;296:14029:71;;27501:38:3;1590:14:0;296:14029:71;12990:3;296:14029;;-1:-1:-1;;;13022:13:71;;296:14029;;;;;13022:13;-1:-1:-1;;;;;;;;;;;13022:13:71;;;;;;;;;;;12990:3;-1:-1:-1;13063:5:71;1590:14:0;-1:-1:-1;;;;;296:14029:71;6854:22:8;13086:10:71;;;;:::i;:::-;296:14029;;;;;;;27501:38:3;;1590:14:0;;;;27501:38:3;;13079:4:71;27501:38:3;;;296:14029:71;27501:38:3;;;;;;;:::i;:::-;27484:56;;;;;;27568:30;27484:56;;:::i;:::-;296:14029:71;;;;27568:30:3;;;;;;:::i;:::-;;296:14029:71;;;;;;-1:-1:-1;;;;;1590:14:0;;6854:12:8;1590:14:0;;;6854:12:8;1590:14:0;;6854:22:8;27524:10:3;296:14029:71;;7009:9:8;296:14029:71;;;7009:9:8;296:14029:71;7505:10:8;296:14029:71;-1:-1:-1;;;296:14029:71;;;;;12763:1;296:14029;;;7505:10:8;296:14029:71;;;;;;7505:10:8;296:14029:71;;13079:4;296:14029;;;;;;6854:12:8;296:14029:71;7009:9:8;296:14029:71;15610:11:8;296:14029:71;;;-1:-1:-1;;;;;296:14029:71;;;1590:14:0;15653:34:8;;:::i;:::-;-1:-1:-1;;;;;296:14029:71;;;;;;27635:8:3;296:14029:71;;;;;15703:15:8;;296:14029:71;;;;;;;;;;;;;;;;15735:37:8;;;;;;;;;;:::i;:::-;;296:14029:71;;15735:37:8;;;;;;:::i;:::-;296:14029:71;15725:48:8;;296:14029:71;;;;;15610:11:8;296:14029:71;;;15703:77:8;296:14029:71;;15702:78:8;15698:126;;12990:3:71;-1:-1:-1;;;;;296:14029:71;;;;;;27635:8:3;296:14029:71;;;;;;;;;;15889:37:8;;296:14029:71;;;;;;15889:37:8;;;296:14029:71;15889:37:8;;;;;:::i;:::-;296:14029:71;15879:48:8;;296:14029:71;;;;;;;12763:1;15943:15:8;;296:14029:71;15961:16:8;7009:9;15961:16;;296:14029:71;15943:34:8;;;;:::i;:::-;15938:460;;12990:3:71;296:14029;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;296:14029:71;;;16424:32:8;;296:14029:71;;;;1590:14:0;;;296:14029:71;;;;;;;;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;12990:3:71;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;296:14029:71;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;296:14029:71;;;16587:43:8;;296:14029:71;12810:59:8;;;1590:14:0;;;;296:14029:71;;;;12656:92:8;;;;12810:59;;;1590:14:0;296:14029:71;;12810:59:8;296:14029:71;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;12990:3:71;16678:31:8;;;;:::i;:::-;16724:8;;;296:14029:71;;;16724:29:8;;12990:3:71;16720:176:8;;;;14785:4;;;;;;:::i;:::-;13063:5:71;1590:14:0;13150:7:71;296:14029;13111:60;;296:14029;;;;-1:-1:-1;;;;;296:14029:71;;;;;13160:10;;;;:::i;:::-;296:14029;;;-1:-1:-1;;;13111:60:71;;-1:-1:-1;;;;;296:14029:71;;;;13111:60;;296:14029;;;;1590:14:0;296:14029:71;;;;-1:-1:-1;296:14029:71;;;;;;;;;;;13111:60;;;;;;;;;;;12990:3;-1:-1:-1;13150:7:71;296:14029;13063:5;1590:14:0;296:14029:71;1590:14:0;-1:-1:-1;;;;;296:14029:71;;;;13198:179;;296:14029;;;;;;;;;;;;13353:10;;;;:::i;:::-;296:14029;;13198:179;296:14029;;1590:14:0;;;;;;;;;;13198:179:71;;296:14029;13198:179;;;:::i;:::-;;;;;;;;;;;;;;12990:3;13186:191;;;;;:::i;:::-;;;;;;:::i;:::-;;296:14029;;1590:14:0;;;;13391:23:71;;296:14029;13391:23;;1590:14:0;296:14029:71;13391:23;27501:38:3;13391:23:71;;-1:-1:-1;;;;;;;;;;;13391:23:71;;;;;;;12763:1;13391:23;;;12990:3;;296:14029;12954:13;;13391:23;;;296:14029;13391:23;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;296:14029;;1590:14:0;296:14029:71;;1590:14:0;;;;13198:179:71;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;296:14029;;1590:14:0;296:14029:71;;1590:14:0;;;;13111:60:71;;;296:14029;13111:60;;;;;;;;;:::i;:::-;;;16720:176:8;296:14029:71;;;;16769:41:8;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;296:14029:71;;-1:-1:-1;;;16769:41:8;;-1:-1:-1;;;;;296:14029:71;;;;;16769:41:8;;296:14029:71;12810:59:8;;;1590:14:0;;;;12810:59:8;;;1590:14:0;;;;296:14029:71;12810:59:8;296:14029:71;16769:41:8;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;;;;;16720:176;296:14029:71;;-1:-1:-1;;;16824:61:8;;296:14029:71;;16824:61:8;;12810:59;;27501:38:3;12810:59:8;;296:14029:71;12810:59:8;27501:38:3;296:14029:71;;12810:59:8;-1:-1:-1;;;546:3:71;12810:59:8;;;16824:61;;;16769:41;;;;;;:::i;:::-;296:14029:71;;16769:41:8;;;;296:14029:71;;;16724:29:8;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;296:14029:71;;16587:43:8;;;;296:14029:71;;;;16587:43:8;296:14029:71;;;16424:32:8;;;;;296:14029:71;16424:32:8;;;;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;1590:14:0;-1:-1:-1;296:14029:71;;16424:32:8;;;-1:-1:-1;16424:32:8;;;296:14029:71;;1590:14:0;296:14029:71;;1590:14:0;;;;15938:460:8;16028:34;;;;;;;;;:::i;:::-;16021:3;296:14029:71;16021:3:8;296:14029:71;;;;;;;;;;;-1:-1:-1;;;16314:19:8;;12763:1:71;296:14029;;;;16314:19:8;;1590:14:0;;;16314:19:8;;296:14029:71;27501:38:3;296:14029:71;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;296:14029:71;16314:19:8;;12810:59;16314:19;16170:185;16314:19;;;;15938:460;296:14029:71;;;16170:185:8;;;12810:59;16170:185;;;12810:59;;296:14029:71;12810:59:8;;;-1:-1:-1;;;546:3:71;12810:59:8;;;296:14029:71;;;;;;12810:59:8;;;296:14029:71;;;;;;;;16170:185:8;;296:14029:71;;16170:185:8;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;;;;;;12810:59;296:14029:71;;-1:-1:-1;;;12810:59:8;;296:14029:71;;12810:59:8;;;296:14029:71;;;12810:59:8;;27501:38:3;12810:59:8;;;;:::i;:::-;;;;16314:19;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;296:14029:71;;;1590:14:0;;;;;;;;296:14029:71;-1:-1:-1;;;296:14029:71;;6854:12:8;296:14029:71;;27501:38:3;1590:14:0;296:14029:71;15698:126:8;13208:33;;:::i;:::-;;15698:126;;296:14029:71;-1:-1:-1;;;296:14029:71;;;;;27501:38:3;1590:14:0;296:14029:71;;-1:-1:-1;;;1590:14:0;;;296:14029:71;1590:14:0;27501:38:3;1590:14:0;;13022:13:71;;;;296:14029;13022:13;;;;;;;;;1590:14:0;13022:13:71;;;:::i;:::-;;;1590:14:0;;;;;13022:13:71;;;;;;;-1:-1:-1;13022:13:71;;546:3;296:14029;;;;1590:14:0;;;:::i;:::-;546:3:71;;;;;;;;296:14029;;1590:14:0;;;:::i;:::-;546:3:71;;;;;;;;296:14029;546:3;;;;;;;;;;;;12787;546;12622:8;546:3;12622:8;546:3;;;;;;12806:32;12763:1;12806:32;;;;;:::i;:::-;296:14029;;12751:13;;546:3;-1:-1:-1;;;296:14029:71;;;;;;1590:14:0;296:14029:71;;;;;;;;;;;;;;14025:7;296:14029;;;-1:-1:-1;;;14025:23:71;;296:14029;14025:23;;1590:14:0;;;296:14029:71;;;;;14025:23;;296:14029;;;;-1:-1:-1;;;;;296:14029:71;14025:23;;;;;;;;;;296:14029;14059:26;296:14029;;;14059:26;:::i;:::-;296:14029;;14025:23;;;;;;;;;;;:::i;:::-;;;296:14029;;;;;;;;;;;-1:-1:-1;;;;;296:14029:71;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1590:14:0;296:14029:71;;1590:14:0;;;:::i;:::-;296:14029:71;;;;;;;;;;;;;;;;;;;;;;;;;;;14025:23;;;14059:26;14025:23;;;296:14029;;;-1:-1:-1;;;;;296:14029:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;2273:18:5;296:14029:71;;;;:::i;:::-;;1590:14:0;296:14029:71;;1590:14:0;;;:::i;:::-;296:14029:71;;;2273:18:5;296:14029:71;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;8443:38;;;8451:13;8443:38;296:14029;;;;;8557:4;1590:14:0;296:14029:71;;;;;;8634:7;296:14029;;;;;;;1590:14:0;;;8634:45:71;;;296:14029;8634:45;;1590:14:0;296:14029:71;;;;;;;;;;8634:45;;;;;;;;;;;;;;;;8443:38;296:14029;;;;;;;8694:21;;8702:13;8694:21;;8690:319;;;8694:21;;;8759:9;;;;:::i;:::-;296:14029;8741:27;;:51;;;8690:319;-1:-1:-1;;;;;;;;;;;8731:62:71;;;;296:14029;;-1:-1:-1;;;8731:62:71;;296:14029;;;;8731:62;;296:14029;8731:62;296:14029;;;-1:-1:-1;;;;;;;;;;;8731:62:71;;;;;;;;8690:319;-1:-1:-1;;8634:7:71;296:14029;;;-1:-1:-1;;;8831:19:71;;296:14029;;;-1:-1:-1;;;;;296:14029:71;8557:4;296:14029;;;8831:19;;;;;;;;;;;;8690:319;8831:19;;;;:::i;:::-;8634:7;296:14029;;;-1:-1:-1;;;9098:30:71;;9122:4;296:14029;9098:30;;296:14029;;;;;;-1:-1:-1;;;;;296:14029:71;9041:24;;;296:14029;;9041:24;296:14029;8557:4;296:14029;;;9041:24;9098:30;;;;;;;;;;;;;8690:319;296:14029;;9172:63;296:14029;9172:63;296:14029;;;;1590:14:0;;;;;;;;;9172:63:71;;;296:14029;9172:63;;;:::i;:::-;;;;;;;;;;;;;;8690:319;296:14029;;;9246:1025;;296:14029;;;9246:1025;9296:21;;;296:14029;;-1:-1:-1;;;9404:30:71;;9122:4;296:14029;9404:30;;296:14029;8557:4;296:14029;;;9404:30;;;;;;;;;;;;;9292:969;9404:45;;;;;;:::i;:::-;;;:::i;:::-;-1:-1:-1;;296:14029:71;;;;;;;8557:4;296:14029;;;;1590:14:0;;;;;;;9738:30:71;;9122:4;296:14029;9738:30;;296:14029;9738:30;;;;;;;;;;;9292:969;9738:45;9893:38;9738:45;;9893:38;9738:45;;;;;:::i;:::-;;;:::i;:::-;296:14029;;;;;;;8634:7;296:14029;;;;9907:24;9893:38;;:::i;:::-;;;:::i;:::-;9246:1025;;;;;;296:14029;;;9738:30;;;;;8557:4;9738:30;;8557:4;9738:30;;;;;;1590:14:0;9738:30:71;;;:::i;:::-;;;1590:14:0;;;;;;9738:30:71;;1590:14:0;9893:38:71;9738:30;;;;;-1:-1:-1;9738:30:71;;9404;;;;8557:4;9404:30;;8557:4;9404:30;;;;;;1590:14:0;9404:30:71;;;:::i;:::-;;;1590:14:0;;;;;;;9404:45:71;:30;;;;;-1:-1:-1;9404:30:71;;9292:969;296:14029;;10035:38;8557:4;296:14029;;10035:38;296:14029;;;;;;;8634:7;296:14029;;;;10049:24;10035:38;;:::i;:::-;296:14029;;;;1590:14:0;;;;;;;10183:30:71;;9122:4;296:14029;10183:30;;296:14029;10183:30;;;;;;;;;;;9292:969;10183:45;;;;;;:::i;:::-;9292:969;;10183:30;;;8557:4;10183:30;;8557:4;10183:30;;;;;;1590:14:0;10183:30:71;;;:::i;:::-;;;1590:14:0;;;;;10183:45:71;:30;;;;;-1:-1:-1;10183:30:71;;;296:14029;;1590:14:0;296:14029:71;;1590:14:0;;;;9172:63:71;;;;;;;;;;;;;;;:::i;:::-;;;;;9098:30;;;;;8557:4;9098:30;;8557:4;9098:30;;;;;;1590:14:0;9098:30:71;;;:::i;:::-;;;1590:14:0;;;;;;;;;;9172:63:71;9098:30;;;;;-1:-1:-1;9098:30:71;;;296:14029;;1590:14:0;296:14029:71;;1590:14:0;;;;8831:19:71;;;8557:4;8831:19;;8557:4;8831:19;;;;;;1590:14:0;8831:19:71;;;:::i;:::-;;;1590:14:0;;;;8831:19:71;1590:14:0;;8831:19:71;;;;;;-1:-1:-1;8831:19:71;;8731:62;;;;;:::i;:::-;296:14029;;8731:62;;;;;296:14029;;;8741:51;8772:20;8790:2;8772:20;;8741:51;;8690:319;8910:9;;;;;:::i;:::-;296:14029;8892:27;;:51;;;8690:319;-1:-1:-1;;;;;;;;;;;8882:62:71;;;;296:14029;;-1:-1:-1;;;8882:62:71;;296:14029;;;;8882:62;;296:14029;8882:62;;296:14029;;;-1:-1:-1;;;;;;;;;;;8882:62:71;;;;;;;;;;;8690:319;8982:15;;;;;:::i;:::-;8690:319;;8882:62;;;;;;;;:::i;:::-;296:14029;;8882:62;;;;;8892:51;8923:20;8941:2;8923:20;;8892:51;;296:14029;-1:-1:-1;;;296:14029:71;;;;;;1590:14:0;296:14029:71;8634:45;;;;;;;;;;;;;:::i;:::-;;;;8443:38;;;;296:14029;;;;;;;;;;;;;3190:18:5;296:14029:71;;;;:::i;:::-;;1590:14:0;296:14029:71;;1590:14:0;;;:::i;:::-;296:14029:71;;;3190:18:5;296:14029:71;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;1590:14:0;;;:::i;:::-;296:14029:71;;-1:-1:-1;;;;;296:14029:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1590:14:0;296:14029:71;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;296:14029:71;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;296:14029:71;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;296:14029:71;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;296:14029:71;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;296:14029:71;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;296:14029:71;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;296:14029:71;;;;;;;;;;;;;;;;;;;;;;1590:14:0;296:14029:71;1590:14:0;296:14029:71;;;;;;1590:14:0;296:14029:71;1590:14:0;;296:14029:71;;;;;;;1590:14:0;296:14029:71;1590:14:0;;296:14029:71;;;;;;;1590:14:0;296:14029:71;1590:14:0;;296:14029:71;;;;;;;1590:14:0;296:14029:71;1590:14:0;;296:14029:71;;;;;;;1590:14:0;296:14029:71;1590:14:0;;296:14029:71;;;;;;;1590:14:0;296:14029:71;1590:14:0;;296:14029:71;;;;;;;1590:14:0;296:14029:71;;;;;;;;;;;;;;;;;;;;;;;;;2707:18:5;296:14029:71;;;;:::i;:::-;;1590:14:0;296:14029:71;;1590:14:0;;;:::i;:::-;296:14029:71;;;2707:18:5;296:14029:71;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;1590:14:0;;;;:::i;:::-;546:3:71;296:14029;;-1:-1:-1;;296:14029:71;;;;;;;;12622:8;12708:28;;;:::i;:::-;296:14029;12459:13;12766:19;546:3;12766:19;;;;296:14029;1590:14:0;296:14029:71;;1590:14:0;;;:::i;:::-;546:3:71;296:14029;;546:3;;;;;;;12954:13;;12459;12969:19;546:3;12969:19;;;;13440:13;;12459;13455:23;296:14029;13455:23;;;;296:14029;;;13480:3;13508:9;;;;:::i;:::-;;296:14029;12459:13;296:14029;;;;;;;;13536:13;:30;13609:21;13536:13;;12459;13536;;;;:::i;13609:21::-;296:14029;13440:13;;12990:3;296:14029;;-1:-1:-1;;;13022:13:71;;296:14029;;;;;13022:13;-1:-1:-1;;;;;;;;;;;13022:13:71;;;;;;;;;;;12990:3;-1:-1:-1;13063:5:71;1590:14:0;-1:-1:-1;;;;;296:14029:71;6854:22:8;13086:10:71;;;;:::i;6854:22:8:-;27524:10:3;296:14029:71;;7009:9:8;296:14029:71;;;7009:9:8;296:14029:71;7505:10:8;296:14029:71;-1:-1:-1;;;296:14029:71;;;;;12459:13;296:14029;;;7505:10:8;296:14029:71;;;;;;7505:10:8;296:14029:71;;13079:4;296:14029;;;;;;6854:12:8;296:14029:71;7009:9:8;296:14029:71;15610:11:8;296:14029:71;;;-1:-1:-1;;;;;296:14029:71;;;1590:14:0;15653:34:8;;:::i;:::-;-1:-1:-1;;;;;296:14029:71;;;;;;27635:8:3;296:14029:71;;;;;15703:15:8;;296:14029:71;;;;;;;;;;;;;;;;15735:37:8;;;;;;;;;;:::i;:::-;296:14029:71;15725:48:8;;296:14029:71;;;;;15610:11:8;296:14029:71;;;15703:77:8;296:14029:71;;15702:78:8;15698:126;;12990:3:71;-1:-1:-1;;;;;296:14029:71;;;;;;27635:8:3;296:14029:71;;;;;;;;;;15889:37:8;;296:14029:71;;;;;;15889:37:8;;;296:14029:71;15889:37:8;;;;;:::i;:::-;296:14029:71;15879:48:8;;296:14029:71;;;;;;;12459:13;15943:15:8;;296:14029:71;15961:16:8;7009:9;15961:16;;296:14029:71;15943:34:8;;;;:::i;:::-;15938:460;;12990:3:71;296:14029;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;296:14029:71;;;16424:32:8;;296:14029:71;;;;1590:14:0;;;296:14029:71;;;;;;;;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;12990:3:71;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;296:14029:71;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;296:14029:71;;;16587:43:8;;296:14029:71;12810:59:8;;;1590:14:0;;;;296:14029:71;;;;12656:92:8;;;;12810:59;;;1590:14:0;296:14029:71;;12810:59:8;296:14029:71;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;12990:3:71;16678:31:8;;;;:::i;:::-;16724:8;;;296:14029:71;;;16724:29:8;;12990:3:71;16720:176:8;;;;14785:4;;;;;;:::i;:::-;13063:5:71;1590:14:0;13150:7:71;296:14029;13111:60;;296:14029;;;;-1:-1:-1;;;;;296:14029:71;;;;;13160:10;;;;:::i;13111:60::-;;;;;;;;;;;12990:3;-1:-1:-1;13150:7:71;296:14029;13063:5;1590:14:0;296:14029:71;1590:14:0;-1:-1:-1;;;;;296:14029:71;;;;13198:179;;296:14029;;;;;;;;;;;13353:10;;;;;:::i;:::-;296:14029;;13198:179;296:14029;;1590:14:0;;;;;;;;;;13198:179:71;;296:14029;13198:179;;;:::i;:::-;;;;;;;;;;;;;;12990:3;13186:191;;;;;:::i;:::-;;;;;;:::i;:::-;;296:14029;;1590:14:0;;;;13391:23:71;;296:14029;13391:23;;1590:14:0;296:14029:71;13391:23;27501:38:3;13391:23:71;;-1:-1:-1;;;;;;;;;;;13391:23:71;;;;;;;12459:13;13391:23;;;12990:3;;296:14029;12954:13;;13391:23;;;296:14029;13391:23;;;;;;;;;:::i;:::-;;;;;13198:179;;;;;;;;;;;;;;:::i;:::-;;;;13111:60;;;296:14029;13111:60;;;;;;;;;:::i;:::-;;;16724:29:8;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;296:14029:71;;16587:43:8;;;;16424:32;;;;;296:14029:71;16424:32:8;;;;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;;;;;:::i;:::-;16021:3;296:14029:71;16021:3:8;296:14029:71;;;;;;;;;;;-1:-1:-1;;;16314:19:8;;12459:13:71;296:14029;;;;16314:19:8;;1590:14:0;;;16314:19:8;;296:14029:71;27501:38:3;296:14029:71;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;296:14029:71;16314:19:8;;12810:59;16314:19;16170:185;16314:19;;;;296:14029:71;;;16170:185:8;;;12810:59;16170:185;;;12810:59;;296:14029:71;12810:59:8;;;-1:-1:-1;;;546:3:71;12810:59:8;;;296:14029:71;;;;;;12810:59:8;;;296:14029:71;;;;;;;;16170:185:8;;296:14029:71;;16170:185:8;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;;;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;13022:13:71;;;;296:14029;13022:13;;;;;;;;;1590:14:0;13022:13:71;;;:::i;:::-;;;1590:14:0;;;;;13022:13:71;;;;;;;-1:-1:-1;13022:13:71;;546:3;296:14029;;;;1590:14:0;;;:::i;:::-;546:3:71;;;;;;;;296:14029;;1590:14:0;;;:::i;:::-;546:3:71;;;;;;;;296:14029;546:3;;;;;;;;;;;;12787;546;12622:8;546:3;12622:8;546:3;;;;;;12806:32;12459:13;12806:32;;;;;:::i;:::-;296:14029;;12751:13;;296:14029;;;;;;;-1:-1:-1;;296:14029:71;;;;;;-1:-1:-1;;;;;296:14029:71;;;;;;;;;;;-1:-1:-1;;;;;296:14029:71;;;;;;;;13808:55;296:14029;;;;;13808:7;296:14029;;;;;;;1590:14:0;;;;;;;;13808:55:71;;296:14029;;;13808:55;;1590:14:0;296:14029:71;;;;;;;;13808:55;;;;;;;;;;13874:23;296:14029;;;13874:23;:::i;13808:55::-;;;;;;;;;;;:::i;:::-;;;296:14029;;;;;;;;;;;-1:-1:-1;;;;;296:14029:71;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1590:14:0;296:14029:71;;1590:14:0;;;:::i;:::-;296:14029:71;;;;;;;;;;;;;;;;;;;;;;;;;;;13808:55;;;13874:23;13808:55;;;296:14029;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;296:14029:71;;;;1063:7;296:14029;1116:5;1590:14:0;296:14029:71;1590:14:0;296:14029:71;;-1:-1:-1;;;1063:94:71;;296:14029;1063:94;;;1590:14:0;;;-1:-1:-1;;;;;296:14029:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1063:94;296:14029;;1063:94;;;;;;;;;;;296:14029;1187:9;;;;:::i;:::-;296:14029;1177:19;;:34;;;296:14029;-1:-1:-1;;;;;;;;;;;1167:45:71;;;;296:14029;;-1:-1:-1;;;1167:45:71;;296:14029;;;;1167:45;;296:14029;1167:45;296:14029;;;-1:-1:-1;;;;;;;;;;;1167:45:71;;;;;;;;;;;296:14029;1242:9;;;;;:::i;:::-;296:14029;1232:19;;:34;;;296:14029;-1:-1:-1;;;;;;;;;;;1222:45:71;;;;296:14029;;-1:-1:-1;;;1222:45:71;;296:14029;;;;1222:45;;296:14029;1222:45;296:14029;;;-1:-1:-1;;;;;;;;;;;1222:45:71;;;;;;;;;;;296:14029;;;;-1:-1:-1;296:14029:71;;;;;;;1590:14:0;;296:14029:71;1590:14:0;;:::i;:::-;1319:1:71;296:14029;;;;;;;;;;1331:20;;;:::i;:::-;296:14029;1361:20;;;:::i;:::-;296:14029;;;1590:14:0;;;;;;1419:99:71;;296:14029;;;1419:99;;296:14029;1419:99;;1590:14:0;296:14029:71;;;;;;;;;1063:94;296:14029;;;;;;;;;;;;;;;;;;;1419:99;;;;;;;;;;;;;;;;;;;296:14029;1534:13;;1568:3;296:14029;;1549:17;;;;;1596:9;1587:32;1596:9;296:14029;1596:9;;;:::i;:::-;;296:14029;1587:32;:::i;:::-;1633:34;296:14029;1642:9;;;;:::i;:::-;;:21;296:14029;1633:34;:::i;:::-;296:14029;1534:13;;1549:17;;296:14029;;1419:99;;;;;;;;;;;;;:::i;:::-;;;296:14029;;;;;;;;;;;-1:-1:-1;;;;;296:14029:71;;;;;;1116:5;296:14029;;;;;;;;;;;:::i;:::-;;1590:14:0;296:14029:71;;1590:14:0;;;:::i;:::-;296:14029:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;1419:99;;;;;;;;296:14029;;;;;;;;:::i;:::-;;;;;;;;;;;;1590:14:0;;296:14029:71;;-1:-1:-1;296:14029:71;;-1:-1:-1;296:14029:71;;;;;;;;;;;;;1222:45;;;;;:::i;:::-;296:14029;;1222:45;;;;1232:34;1255:11;;;;1232:34;;1167:45;;;;;:::i;:::-;296:14029;;1167:45;;;;1177:34;1200:11;;;;1177:34;;1063:94;;;;;;;;;;;;;:::i;:::-;;;;296:14029;;;;;;;;;;;;;2883:26:5;296:14029:71;;;;:::i;:::-;;1590:14:0;296:14029:71;;1590:14:0;;;:::i;:::-;296:14029:71;;;2883:26:5;296:14029:71;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;1590:14:0;;;:::i;:::-;296:14029:71;;-1:-1:-1;;;;;296:14029:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;1590:14:0;296:14029:71;1590:14:0;296:14029:71;;;;;;1590:14:0;296:14029:71;1590:14:0;;296:14029:71;;;;;;;1590:14:0;296:14029:71;1590:14:0;;296:14029:71;;;;;;;1590:14:0;296:14029:71;1590:14:0;;296:14029:71;;;;;;;1590:14:0;296:14029:71;1590:14:0;;296:14029:71;;;;;;;1590:14:0;296:14029:71;1590:14:0;;296:14029:71;;;;;;;1590:14:0;296:14029:71;1590:14:0;;296:14029:71;;;;;;;1590:14:0;296:14029:71;;;;;;;;;;;;;;;;;;;;:::i;:::-;5122:38;;;5130:13;5122:38;;5201:4;1590:14:0;;5248:5:71;1590:14:0;296:14029:71;;-1:-1:-1;;;5292:31:71;;5317:4;296:14029;5292:31;;296:14029;;-1:-1:-1;;;;;296:14029:71;;;;;;;;;;5292:31;296:14029;;5292:31;;;;;;;;;;;5122:38;-1:-1:-1;5406:7:71;296:14029;;;-1:-1:-1;;;5406:56:71;;296:14029;5406:56;;1590:14:0;;;5292:31:71;296:14029;;;;;;;;;;;;;;;;-1:-1:-1;;;;;296:14029:71;;5406:56;296:14029;5406:56;296:14029;;5406:56;;;;;;;;;;;5122:38;296:14029;;;;;;;5477:21;;;5485:13;5477:21;;5473:1069;;;5477:21;;;5542:9;;;;:::i;:::-;296:14029;5524:27;;:52;;;;5473:1069;5514:63;-1:-1:-1;;;;;;;;;;;5514:63:71;;;;296:14029;;-1:-1:-1;;;5514:63:71;;296:14029;;;;5514:63;;296:14029;5514:63;296:14029;5292:31;296:14029;-1:-1:-1;;;;;;;;;;;5514:63:71;;;;;;;;;;;5473:1069;-1:-1:-1;;5406:7:71;296:14029;5763:176;;;;5731:17;;296:14029;;-1:-1:-1;;;;;296:14029:71;5731:17;:::i;:::-;5406:7;296:14029;;;-1:-1:-1;;;;;296:14029:71;;5916:9;;;:::i;:::-;296:14029;;;1590:14:0;;;;;;;;;5763:176:71;;;296:14029;5763:176;;;:::i;:::-;;;;;;;;;;;5473:1069;-1:-1:-1;5406:7:71;296:14029;;;-1:-1:-1;;;5954:51:71;;296:14029;;;;;-1:-1:-1;;;;;296:14029:71;;5954:51;;296:14029;-1:-1:-1;;5292:31:71;296:14029;;1590:14:0;5201:4:71;296:14029;;;5954:51;;;;;;;;;;5473:1069;;;296:14029;;-1:-1:-1;;;6575:30:71;;5317:4;296:14029;6575:30;;296:14029;;5201:4;296:14029;5292:31;296:14029;1590:14:0;6575:30:71;;;;;;;;;;;5473:1069;-1:-1:-1;296:14029:71;;-1:-1:-1;;;6639:31:71;;5317:4;296:14029;6639:31;;296:14029;;5201:4;296:14029;5292:31;296:14029;6639:31;;;;;;;;;;;;5473:1069;6910:32;;;;6974:97;6910:32;;;:::i;:::-;5406:7;296:14029;;;-1:-1:-1;;;6974:97:71;;296:14029;;;;;;;-1:-1:-1;;;;;296:14029:71;;;;;;;;6974:97;;296:14029;;;;;6974:97;;;:::i;:::-;;;;;;;;;;;;;;5473:1069;296:14029;;;7082:1230;;296:14029;;;7082:1230;7132:21;;;296:14029;;-1:-1:-1;;;7241:30:71;;5317:4;296:14029;7241:30;;296:14029;5201:4;296:14029;5292:31;296:14029;7241:30;;;;;;;;;;;;;7128:1174;7241:45;;;;;;:::i;:::-;;;:::i;:::-;-1:-1:-1;;296:14029:71;;;;;;;5201:4;5292:31;296:14029;;;1590:14:0;;;;;;;7577:30:71;;5317:4;296:14029;7577:30;;296:14029;7577:30;;;;;;;;;;;7128:1174;7577:45;;;;;;:::i;:::-;296:14029;-1:-1:-1;;296:14029:71;;;;;;;;5201:4;5292:31;296:14029;;;1590:14:0;;;;;;;7752:31:71;;5317:4;296:14029;7752:31;;296:14029;7752:31;;;;;;;;;;;7128:1174;7736:47;;;;;;:::i;:::-;7082:1230;;;;;;;296:14029;;;7752:31;;;5201:4;7752:31;;5201:4;7752:31;;;;;;1590:14:0;7752:31:71;;;:::i;:::-;;;1590:14:0;;;;;7736:47:71;7752:31;;;;;-1:-1:-1;7752:31:71;;296:14029;-1:-1:-1;;;296:14029:71;;;;;5292:31;1590:14:0;296:14029:71;7577:30;;;5201:4;7577:30;;5201:4;7577:30;;;;;;1590:14:0;7577:30:71;;;:::i;:::-;;;1590:14:0;;;;;7577:45:71;:30;;;;;-1:-1:-1;7577:30:71;;296:14029;-1:-1:-1;;;296:14029:71;;;;;5292:31;1590:14:0;296:14029:71;7241:30;;;;5201:4;7241:30;;5201:4;7241:30;;;;;;1590:14:0;7241:30:71;;;:::i;:::-;;;1590:14:0;;;;;;;7241:45:71;:30;;;;;-1:-1:-1;7241:30:71;;7128:1174;296:14029;5201:4;5292:31;296:14029;;;;;;1590:14:0;;;;;;;7924:31:71;;5317:4;296:14029;7924:31;;296:14029;7924:31;;;;;;;;;;;7128:1174;7908:47;;;;;;:::i;:::-;296:14029;;-1:-1:-1;;296:14029:71;;;;;;;;;-1:-1:-1;;;8069:30:71;;5317:4;296:14029;8069:30;;296:14029;5201:4;296:14029;5292:31;296:14029;8069:30;;;;;;;;;;;;;7128:1174;8069:45;5201:4;8069:45;;5292:31;8069:45;;;;;:::i;:::-;296:14029;;;;1590:14:0;;;;;;;8224:30:71;;5317:4;296:14029;8224:30;;296:14029;8224:30;;;;;;;;;;;7128:1174;8224:45;;;;;;:::i;:::-;;;:::i;:::-;7128:1174;;8224:30;;;5201:4;8224:30;;5201:4;8224:30;;;;;;1590:14:0;8224:30:71;;;:::i;:::-;;;1590:14:0;;;;;8224:45:71;:30;;;;;-1:-1:-1;8224:30:71;;8069;;;;;5201:4;8069:30;;5201:4;8069:30;;;;;;1590:14:0;8069:30:71;;;:::i;:::-;;;1590:14:0;;;;;;;;5201:4:71;8069:30;;;;;-1:-1:-1;8069:30:71;;7924:31;;;5201:4;7924:31;;5201:4;7924:31;;;;;;1590:14:0;7924:31:71;;;:::i;:::-;;;1590:14:0;;;;;7908:47:71;7924:31;;;;;-1:-1:-1;7924:31:71;;6974:97;;;;;;;;;;;;;;;:::i;:::-;;;;;6639:31;;;;5201:4;6639:31;;5201:4;6639:31;;;;;;1590:14:0;6639:31:71;;;:::i;:::-;;;1590:14:0;;;;;;;6639:31:71;6910:32;6639:31;;;;;-1:-1:-1;6639:31:71;;6575:30;;;;5201:4;6575:30;;5201:4;6575:30;;;;;;1590:14:0;6575:30:71;;;:::i;:::-;;;1590:14:0;;;;;6575:30:71;;;;;;;-1:-1:-1;6575:30:71;;5954:51;;;5201:4;5954:51;5201:4;5954:51;;;;;;;:::i;:::-;;;;;5763:176;;;;;;;;;;;;;:::i;:::-;;;5514:63;;;;;:::i;:::-;296:14029;;5514:63;;;;;296:14029;;1590:14:0;296:14029:71;;1590:14:0;;;;5524:52:71;5406:56;5555:21;;;5524:52;;;5473:1069;6064:9;;;;;;;:::i;:::-;296:14029;6046:27;;:52;;;5473:1069;-1:-1:-1;;;;;;;;;;;6036:63:71;;;;296:14029;;-1:-1:-1;;;6036:63:71;;296:14029;;;;6036:63;;296:14029;6036:63;296:14029;5292:31;296:14029;-1:-1:-1;;;;;;;;;;;6036:63:71;;;;;;;;5473:1069;6230:41;;;;;:::i;:::-;5406:7;296:14029;;;-1:-1:-1;;;6285:182:71;;296:14029;;6285:182;;296:14029;;;;-1:-1:-1;;;;;296:14029:71;;6285:182;296:14029;6285:182;296:14029;6285:182;296:14029;6285:182;;;:::i;:::-;;;;;;;;;;6482:49;6285:182;5201:4;6285:182;;;5473:1069;-1:-1:-1;5406:7:71;296:14029;;;-1:-1:-1;;;6482:49:71;;296:14029;;;;;-1:-1:-1;;;;;296:14029:71;;6482:49;;296:14029;;;;1590:14:0;;;;296:14029:71;;;;;;;;;;6482:49;;;;;;;;;;;;;5473:1069;;;;6482:49;;;5201:4;6482:49;5201:4;6482:49;;;;;;;:::i;:::-;;;;;6285:182;;;;;;;;;;;;;:::i;:::-;;;6036:63;;;;;:::i;:::-;296:14029;;6036:63;;;;296:14029;;;;6046:52;6077:21;5406:56;6077:21;;6046:52;;296:14029;-1:-1:-1;;;296:14029:71;;;;;5292:31;1590:14:0;296:14029:71;5406:56;;;;;;;;;;;;;;:::i;:::-;;;;;5292:31;;;;5201:4;5292:31;;5201:4;5292:31;;;;;;1590:14:0;5292:31:71;;;:::i;:::-;;;1590:14:0;;;;;5292:31:71;;;;;;;-1:-1:-1;5292:31:71;;5122:38;;;;;296:14029;;;;;;;;;;;;;;;;;;3038:18:5;296:14029:71;;;;;;;3038:18:5;296:14029:71;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;296:14029:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3331:16:5;296:14029:71;;;;;;;3331:16:5;296:14029:71;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;296:14029:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3485:19:5;296:14029:71;;;;:::i;:::-;1590:14:0;296:14029:71;;1590:14:0;;;:::i;:::-;296:14029:71;;;3485:19:5;296:14029:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;1590:14:0;;;:::i;:::-;296:14029:71;;-1:-1:-1;;;;;296:14029:71;;;;;;;;;;;:::i;:::-;;1590:14:0;296:14029:71;;1590:14:0;;;:::i;:::-;296:14029:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;1811:38;;;1819:13;1811:38;1890:4;1590:14:0;1937:5:71;1590:14:0;2027:7:71;296:14029;;;-1:-1:-1;;;2027:56:71;;296:14029;2027:56;;1590:14:0;;;-1:-1:-1;;;;;296:14029:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2027:56;296:14029;2027:56;296:14029;;2027:56;;;;;;;;;;;1811:38;296:14029;;;;;;;2098:21;;2106:13;2098:21;;2094:1065;;;2098:21;;;2163:9;;;;:::i;:::-;296:14029;2145:27;;:52;;;2094:1065;-1:-1:-1;;;;;;;;;;;2135:63:71;;;;296:14029;;-1:-1:-1;;;2135:63:71;;296:14029;;;;2135:63;;296:14029;2135:63;296:14029;;;-1:-1:-1;;;;;;;;;;;2135:63:71;;;;;;;;;;;2094:1065;-1:-1:-1;;2027:7:71;296:14029;2384:175;;;;2352:17;;296:14029;;-1:-1:-1;;;;;296:14029:71;2352:17;:::i;2384:175::-;;;;;;;;;;;2094:1065;-1:-1:-1;2027:7:71;296:14029;;;-1:-1:-1;;;2574:50:71;;296:14029;;;;;-1:-1:-1;;;;;296:14029:71;;2574:50;;296:14029;-1:-1:-1;;296:14029:71;;;1590:14:0;1890:4:71;296:14029;;;2574:50;;;;;;;;;;2094:1065;;;296:14029;;-1:-1:-1;;;3192:30:71;;3216:4;296:14029;3192:30;;296:14029;;1890:4;296:14029;;;3192:30;;;;;;;;;;;;2094:1065;-1:-1:-1;296:14029:71;;-1:-1:-1;;;3256:31:71;;3216:4;296:14029;3256:31;;296:14029;;1890:4;296:14029;;;3256:31;;;;;;;;;;;;;;2094:1065;-1:-1:-1;2027:7:71;296:14029;;;-1:-1:-1;;;3319:96:71;;296:14029;3319:96;;296:14029;;;;-1:-1:-1;;;;;296:14029:71;;;;;;;;3319:96;;1590:14:0;296:14029:71;;;3319:96;;;:::i;:::-;;;;;;;;;;;;;;2094:1065;296:14029;;;3426:1563;;296:14029;;;3426:1563;3476:21;;;296:14029;;-1:-1:-1;;;3547:31:71;;3216:4;296:14029;3547:31;;296:14029;1890:4;296:14029;;;3547:31;;;;;;;;;;;;;3472:1507;3547:47;;;;:::i;:::-;-1:-1:-1;;296:14029:71;;;;;;;;3616:19;;1890:4;3616:19;296:14029;3616:19;;:::i;:::-;296:14029;;-1:-1:-1;;;3884:31:71;;3216:4;296:14029;3884:31;;296:14029;;;;;;3884:31;;;;;;;;;;;3472:1507;3884:47;3953:15;3884:47;;;;:::i;:::-;3953:15;:::i;:::-;296:14029;;-1:-1:-1;;;4049:30:71;;3216:4;296:14029;4049:30;;296:14029;1890:4;296:14029;;;4049:30;;;;;;;;;;;3472:1507;4034:45;;;;;:::i;:::-;296:14029;;;;;;;;;;;4101:26;;1890:4;4101:26;296:14029;4101:26;;;:::i;:::-;296:14029;;-1:-1:-1;;;4208:30:71;;3216:4;296:14029;4208:30;;296:14029;;;;;;4208:30;;;;;;;;;;;3472:1507;4193:45;;;;:::i;:::-;296:14029;;-1:-1:-1;;296:14029:71;;;;;;;;4260:26;;;;:::i;296:14029::-;-1:-1:-1;;;296:14029:71;;;;;;1590:14:0;296:14029:71;4208:30;;;1890:4;4208:30;;1890:4;4208:30;;;;;;1590:14:0;4208:30:71;;;:::i;:::-;;;1590:14:0;;;;4193:45:71;1590:14:0;;4208:30:71;;;;;;-1:-1:-1;4208:30:71;;4049;;1890:4;4049:30;;1890:4;4049:30;;;;;;1590:14:0;4049:30:71;;;:::i;:::-;;;1590:14:0;;;;4034:45:71;1590:14:0;;4049:30:71;;;;;-1:-1:-1;4049:30:71;;3884:31;;;1890:4;3884:31;;1890:4;3884:31;;;;;;1590:14:0;3884:31:71;;;:::i;:::-;;;1590:14:0;;;;;3953:15:71;3884:31;;;;;-1:-1:-1;3884:31:71;;296:14029;-1:-1:-1;;;296:14029:71;;;;;;1590:14:0;296:14029:71;3547:31;;;1890:4;3547:31;;1890:4;3547:31;;;;;;1590:14:0;3547:31:71;;;:::i;:::-;;;1590:14:0;;;;;3547:47:71;1590:14:0;;3547:31:71;;;;;-1:-1:-1;3547:31:71;;3472:1507;296:14029;;;;;;;;1590:14:0;;;4425:30:71;;3216:4;296:14029;4425:30;;296:14029;1890:4;4425:30;296:14029;4425:30;;;;;;;;;;;;;3472:1507;4410:45;;;;;;:::i;:::-;;;:::i;:::-;-1:-1:-1;;296:14029:71;;;;;;;;1890:4;296:14029;;;;1590:14:0;;;;;;;4759:30:71;;3216:4;296:14029;4759:30;;296:14029;4759:30;;;;;;;;;;;3472:1507;4744:45;296:14029;4744:45;;1890:4;4744:45;;;;;:::i;:::-;296:14029;;;;1590:14:0;;;;;;;4899:31:71;;3216:4;296:14029;4899:31;;296:14029;4899:31;;;;;;;;;;;3472:1507;4899:47;;;;;;:::i;:31::-;;;1890:4;4899:31;;1890:4;4899:31;;;;;;1590:14:0;4899:31:71;;;:::i;:::-;;;1590:14:0;;;;;4899:47:71;:31;;;;;-1:-1:-1;4899:31:71;;4759:30;;;;1890:4;4759:30;;1890:4;4759:30;;;;;;1590:14:0;4759:30:71;;;:::i;:::-;;;1590:14:0;;;;;;4759:30:71;;296:14029;4759:30;;;;;-1:-1:-1;4759:30:71;;4425;;;1890:4;4425:30;;1890:4;4425:30;;;;;;1590:14:0;4425:30:71;;;:::i;:::-;;;1590:14:0;;;;;4410:45:71;4425:30;;;;;-1:-1:-1;4425:30:71;;3319:96;;;;;;;;;;;;;;;:::i;:::-;;;;;3256:31;;;;;1890:4;3256:31;;1890:4;3256:31;;;;;;1590:14:0;3256:31:71;;;:::i;:::-;;;1590:14:0;;;;3319:96:71;1590:14:0;;;3256:31:71;;;;;;;-1:-1:-1;3256:31:71;;3192:30;;;;1890:4;3192:30;;1890:4;3192:30;;;;;;1590:14:0;3192:30:71;;;:::i;:::-;;;1590:14:0;;;;;3192:30:71;;;;;;;-1:-1:-1;3192:30:71;;2574:50;;;1890:4;2574:50;1890:4;2574:50;;;;;;;:::i;:::-;;;;;2384:175;;;;;;;;;;;;;:::i;:::-;;;2135:63;;;;;:::i;:::-;296:14029;;2135:63;;;;2145:52;2176:21;2027:56;2176:21;;2145:52;;2094:1065;2683:9;;;;;:::i;:::-;296:14029;2665:27;;:52;;;2094:1065;-1:-1:-1;;;;;;;;;;;2655:63:71;;;;296:14029;;-1:-1:-1;;;2655:63:71;;296:14029;;;;2655:63;;296:14029;2655:63;296:14029;;;-1:-1:-1;;;;;;;;;;;2655:63:71;;;;;;;;2094:1065;2849:41;;;;;:::i;:::-;2027:7;296:14029;;;-1:-1:-1;;;2904:181:71;;296:14029;2904:181;;296:14029;;;;-1:-1:-1;;;;;296:14029:71;;2904:181;296:14029;2904:181;;;296:14029;2904:181;;;:::i;:::-;;;;;;;;;;;2094:1065;-1:-1:-1;2027:7:71;296:14029;;;-1:-1:-1;;;3100:48:71;;296:14029;;;;;-1:-1:-1;;;;;296:14029:71;;3100:48;;296:14029;;;;1590:14:0;;;1890:4:71;296:14029;;;3100:48;;;;;;;;;;2094:1065;;;;3100:48;;;1890:4;3100:48;1890:4;3100:48;;;;;;;:::i;:::-;;;;;2904:181;;;;;;;;;;;;;:::i;:::-;;;2655:63;;;;;:::i;:::-;296:14029;;2655:63;;;;2665:52;2696:21;2027:56;2696:21;;2665:52;;296:14029;-1:-1:-1;;;296:14029:71;;;;;;1590:14:0;296:14029:71;2027:56;;;;;;;;;;;;;:::i;:::-;;;;1811:38;;;;296:14029;;;;;;;;;;;;;;;;;;2563:16:5;296:14029:71;;;;;;;2563:16:5;296:14029:71;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;296:14029:71;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10403:38;;;10411:13;10403:38;296:14029;;;;;10518:5;1590:14:0;296:14029:71;;;;;;10596:7;296:14029;;;;;;;1590:14:0;;;10596:46:71;;;296:14029;10596:46;;1590:14:0;296:14029:71;;;;;;;;;;10596:46;;;;;;;;;;;;;;;;10403:38;296:14029;;;;;;;10657:21;;10665:13;10657:21;;10653:320;;;10657:21;;;10722:9;;;;:::i;:::-;296:14029;10704:27;;:51;;;10653:320;-1:-1:-1;;;;;;;;;;;10694:62:71;;;;296:14029;;-1:-1:-1;;;10694:62:71;;296:14029;;;;10694:62;;296:14029;10694:62;296:14029;;;-1:-1:-1;;;;;;;;;;;10694:62:71;;;;;;;;10653:320;-1:-1:-1;;10596:7:71;296:14029;;;-1:-1:-1;;;10794:20:71;;296:14029;;;-1:-1:-1;;;;;296:14029:71;;;;;10794:20;;;;;;;;;;;;10653:320;10794:20;;;;:::i;:::-;10596:7;296:14029;;;-1:-1:-1;;;11063:31:71;;11088:4;296:14029;11063:31;;296:14029;;;;;;-1:-1:-1;;;;;296:14029:71;11005:24;;;296:14029;;11005:24;296:14029;;;;;11005:24;11063:31;;;;;;;;;;;;;10653:320;296:14029;;11138:64;296:14029;11138:64;296:14029;;;;1590:14:0;;;;;;;;;11138:64:71;;;296:14029;11138:64;;;:::i;:::-;;;;;;;;;;;;;;10653:320;296:14029;;;11213:1031;;296:14029;;;11213:1031;11263:21;;;296:14029;;-1:-1:-1;;;11371:31:71;;11088:4;296:14029;11371:31;;296:14029;;;;;11371:31;;;;;;;;;;;;;11259:975;11371:47;;;;;;:::i;:::-;-1:-1:-1;;296:14029:71;;;;;;;;;;;;1590:14:0;;;;;;;11707:31:71;;11088:4;296:14029;11707:31;;296:14029;11707:31;;;;;;;;;;;:47;11864:38;11707:47;;11864:38;11707:47;;;;;:::i;11371:31::-;;;;296:14029;11371:31;;296:14029;11371:31;;;;;;1590:14:0;11371:31:71;;;:::i;:::-;;;1590:14:0;;;;;;;11371:47:71;:31;;;;;-1:-1:-1;11371:31:71;;11138:64;;;;;;;;;;;;;;;:::i;:::-;;;;;11063:31;;;;;296:14029;11063:31;;296:14029;11063:31;;;;;;1590:14:0;11063:31:71;;;:::i;:::-;;;1590:14:0;;;;;;;;;;11138:64:71;11063:31;;;;;-1:-1:-1;11063:31:71;;10794:20;;;296:14029;10794:20;;296:14029;10794:20;;;;;;1590:14:0;10794:20:71;;;:::i;:::-;;;1590:14:0;;;;10794:20:71;1590:14:0;;10794:20:71;;;;;;-1:-1:-1;10794:20:71;;10694:62;;;;;:::i;:::-;296:14029;;10694:62;;;;10704:51;10735:20;10753:2;10735:20;;10704:51;;10653:320;10874:9;;;;;:::i;:::-;296:14029;10856:27;;:51;;;10653:320;-1:-1:-1;;;;;;;;;;;10846:62:71;;;;296:14029;;-1:-1:-1;;;10846:62:71;;296:14029;;;;10846:62;;296:14029;10846:62;;296:14029;;;-1:-1:-1;;;;;;;;;;;10846:62:71;;;;;;;;;;;10653:320;10946:15;;;;;:::i;:::-;10653:320;;10846:62;;;;;;;;:::i;:::-;296:14029;;10846:62;;;;;10856:51;10887:20;10905:2;10887:20;;10856:51;;10596:46;;;;;;;;;;;;;:::i;:::-;;;;10403:38;;;;296:14029;;;;;;;;-1:-1:-1;;296:14029:71;;;;-1:-1:-1;;;648:20:71;;1590:14:0;296:14029:71;648:20;;1590:14:0;;;;;296:14029:71;-1:-1:-1;;;296:14029:71;;;1590:14:0;-1:-1:-1;648:20:71;;;-1:-1:-1;;;;;;;;;;;648:20:71;;;;;;;1590:14:0;648:20:71;1590:14:0;648:20:71;296:14029;648:20;;;296:14029;;;;1590:14:0;;;;;;;628:52:71;;296:14029;;628:52;;1590:14:0;296:14029:71;1590:14:0;;;;:::i;:::-;610:8:71;1590:14:0;;;;628:52:71;;296:14029;-1:-1:-1;;;;;;;;;;;628:52:71;;;;;;;;296:14029;-1:-1:-1;727:5:71;1590:14:0;296:14029:71;;;-1:-1:-1;;;;;296:14029:71;700:34;;;;-1:-1:-1;;;;;700:34:71;;;;;;;;1590:14:0;700:34:71;;;;;;296:14029;;700:34;;;296:14029;700:34;;;;;690:44;1590:14:0;;-1:-1:-1;;;;;;1590:14:0;;;;;;-1:-1:-1;;;;;1590:14:0;;;;;;;727:5:71;1590:14:0;296:14029:71;;-1:-1:-1;;;751:12:71;;-1:-1:-1;;;;;296:14029:71;;;;;1590:14:0;296:14029:71;;;;751:12;;;;;;;296:14029;751:12;;;296:14029;;;;;;;;-1:-1:-1;;;;;1590:14:0;;;;;;;;-1:-1:-1;;;;;;;;;;;774:33:71;;;;296:14029;;1590:14:0;;;;774:33:71;;296:14029;774:33;;296:14029;;1590:14:0;;;;;296:14029:71;1590:14:0;;296:14029:71;-1:-1:-1;;;648:20:71;296:14029;;1590:14:0;296:14029:71;774:33;;;;-1:-1:-1;;;;;;;;;;;774:33:71;;;;;;;;296:14029;-1:-1:-1;1590:14:0;;296:14029:71;;-1:-1:-1;;;;;296:14029:71;-1:-1:-1;;;;;;;;;;;817:31:71;;;;296:14029;;1590:14:0;;;;817:31:71;;296:14029;817:31;;296:14029;;1590:14:0;;;;296:14029:71;;1590:14:0;;296:14029:71;-1:-1:-1;;;648:20:71;296:14029;;1590:14:0;817:31:71;;774:33;817:31;;-1:-1:-1;;;;;;;;;;;817:31:71;;;;;;;;296:14029;;774:33;;;;296:14029;774:33;;:::i;:::-;296:14029;774:33;;;;296:14029;;1590:14:0;296:14029:71;1590:14:0;;;;;751:12:71;;;1590:14:0;751:12:71;;1590:14:0;751:12:71;;;;;;1590:14:0;751:12:71;;;:::i;:::-;;;1590:14:0;;;;;-1:-1:-1;;;;;296:14029:71;;;;;;751:12;;;;;;-1:-1:-1;751:12:71;;700:34;1590:14:0;;;296:14029:71;1590:14:0;;296:14029:71;1590:14:0;;296:14029:71;1590:14:0;628:52:71;1590:14:0;628:52:71;;1590:14:0;628:52:71;;;;;;1590:14:0;628:52:71;;;:::i;:::-;;;1590:14:0;;;;;628:52:71;;;;;-1:-1:-1;628:52:71;;648:20;;;;;;296:14029;648:20;;;;;;:::i;:::-;;;;296:14029;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;296:14029:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;296:14029:71;;;;;;;;-1:-1:-1;;296:14029:71;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;296:14029:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1590:14:0;296:14029:71;1590:14:0;;;;;-1:-1:-1;;;;;1590:14:0;;;;;296:14029:71;1590:14:0;:::o;:::-;296:14029:71;1590:14:0;;;;;-1:-1:-1;;;;;1590:14:0;;;;;;;:::o;:::-;;296:14029:71;;;;;;1590:14:0;;;;;-1:-1:-1;;;;;1590:14:0;;;;;;;:::o;:::-;-1:-1:-1;;;;;1590:14:0;;;;296:14029:71;;-1:-1:-1;;296:14029:71;1590:14:0;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;1590:14:0;;;;;;;;;;;;;;;;;;;:::i;:::-;296:14029:71;1590:14:0;296:14029:71;;1590:14:0;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;1590:14:0;;;;;;;;296:14029:71;;;;;1590:14:0;:::o;:::-;;;;;;;;;;;:::o;296:14029:71:-;-1:-1:-1;;;;;296:14029:71;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;296:14029:71;;;;;;;;;;;;;;;;;;;:::i;:::-;;1590:14:0;296:14029:71;;1590:14:0;;;:::i;:::-;296:14029:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;1590:14:0;;296:14029:71;;;;;;;;;;;;;;;;;;;:::o;:::-;1590:14:0;;;296:14029:71;;;;;;;;;;;10665:13;296:14029;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;1590:14:0;;;:::i;:::-;296:14029:71;;;1590:14:0;;;296:14029:71;;;1590:14:0;296:14029:71;;;:::o;:::-;;;;;;;;;;;;;;1590:14:0;;;;:::i;:::-;;;296:14029:71;;;;;1590:14:0;296:14029:71;;;;;;:::i;:::-;;;;;;:::o;:::-;;1590:14:0;;;296:14029:71;;;;-1:-1:-1;;;;;296:14029:71;;;;;;;;;;;;;;;;;;;;;;;;;;;1590:14:0;296:14029:71:o;:::-;1590:14:0;;;296:14029:71;;;;;;;;;;1590:14:0;;;296:14029:71;;;;-1:-1:-1;;;;;296:14029:71;;;;;;;;;;;;;;;1590:14:0;;;;296:14029:71;;;:::o;:::-;;1590:14:0;;-1:-1:-1;;;;;296:14029:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1590:14:0;296:14029:71:o;:::-;;;;;;;;;;:::o;:::-;1590:14:0;;;296:14029:71;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;1590:14:0;;;296:14029:71;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;296:14029:71;;;;;;;;-1:-1:-1;296:14029:71;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1590:14:0;296:14029:71;;;;;;;;;;;;;;;;:::o;1243:204:1:-;1302:7;296:14029:71;;;;;;;1325:14:1;:::o;1298:143::-;296:14029:71;;;1590:14:0;;;1377:39:1;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;296:14029:71;192:59:1;;;;;;1590:14:0;192:59:1;1377:39;;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;;;;;296:14029:71;1377:39:1;;;1298:143;1377:53;;;1370:60;:::o;1377:39::-;;;192:59;1377:39;;192:59;1377:39;;;;;;1590:14:0;1377:39:1;;;:::i;:::-;;;1590:14:0;;;;;1377:39:1;;;;;;-1:-1:-1;1377:39:1;;26720:91:3;-1:-1:-1;;;;;;;;;;;26787:17:3;;;;296:14029:71;;-1:-1:-1;;;26787:17:3;;-1:-1:-1;;;;;296:14029:71;;;26787:17:3;;;296:14029:71;;;;;1590:14:0;-1:-1:-1;296:14029:71;26787:17:3;296:14029:71;-1:-1:-1;;;;;;;;;;;;26787:17:3;;;;;;;;26720:91;:::o;26787:17::-;;;;;:::i;:::-;26720:91::o;:::-;-1:-1:-1;;;;;;;;;;;26787:17:3;;;;296:14029:71;;-1:-1:-1;;;26787:17:3;;-1:-1:-1;;;;;296:14029:71;;;26787:17:3;;;296:14029:71;-1:-1:-1;;296:14029:71;;;1590:14:0;-1:-1:-1;296:14029:71;26787:17:3;296:14029:71;-1:-1:-1;;;;;;;;;;;;26787:17:3;;;;;;;;26720:91;:::o;:::-;-1:-1:-1;;;;;;;;;;;26787:17:3;;;;296:14029:71;;-1:-1:-1;;;26787:17:3;;-1:-1:-1;;;;;296:14029:71;;;;26787:17:3;;;296:14029:71;;;;1590:14:0;;;;-1:-1:-1;296:14029:71;;;-1:-1:-1;;;;;;;;;;;;26787:17:3;;;;;;;;26720:91;:::o;2270:110:1:-;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;296:14029:71;;1590:14:0;;;;2349:24:1;;;;;1590:14:0;13895:1:71;296:14029;;;1590:14:0;-1:-1:-1;2349:24:1;;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;;;;;2270:110;:::o;:::-;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;296:14029:71;;1590:14:0;;;;2349:24:1;;;;;1590:14:0;296:14029:71;;;1590:14:0;-1:-1:-1;2349:24:1;;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;;;;;2270:110;:::o;15480:::-;;-1:-1:-1;;;;;;;;;;;15559:24:1;;;;296:14029:71;;1590:14:0;;;;15559:24:1;;;;;1590:14:0;296:14029:71;;;1590:14:0;-1:-1:-1;15559:24:1;;;-1:-1:-1;;;;;;;;;;;15559:24:1;;;;;;;;15480:110;:::o;14296:::-;;-1:-1:-1;;;;;;;;;;;14375:24:1;;;;296:14029:71;;1590:14:0;;;;14375:24:1;;;;;1590:14:0;296:14029:71;;;1590:14:0;-1:-1:-1;14375:24:1;;;-1:-1:-1;;;;;;;;;;;14375:24:1;;;;;;;;14296:110;:::o;13112:::-;-1:-1:-1;;;;;;;;;;;13191:24:1;;;;296:14029:71;;1590:14:0;;;;13191:24:1;;;;;1590:14:0;296:14029:71;;;;1590:14:0;296:14029:71;13191:24:1;;;-1:-1:-1;;;;;;;;;;;13191:24:1;;;;;;;;13112:110;:::o;296:14029:71:-;;;;;;;;;;:::i;:::-;;1590:14:0;296:14029:71;;1590:14:0;;;:::i;:::-;296:14029:71;;;-1:-1:-1;296:14029:71;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;1590:14:0;;;296:14029:71;;:::o;953:236:8:-;296:14029:71;1052:14:8;296:14029:71;;:::i;:::-;1052:14:8;;296:14029:71;;;;;;1109:10:8;296:14029:71;;;;;;1109:10:8;1077:1;296:14029:71;;1077:1:8;296:14029:71;;1077:1:8;296:14029:71;;;;;;;;;;;;;;:::i;:::-;;;546:3;;;;;;;296:14029;546:3;;;;;;;296:14029;;;:::i;:::-;;1590:14:0;296:14029:71;;1590:14:0;;;:::i;:::-;296:14029:71;;;;;;;;:::i;:::-;;;;;;;1077:1:8;11360:3;296:14029:71;;11346:12:8;;;;;11391:4;;1109:10;11391:4;;;:::i;:::-;296:14029:71;;11456:84:8;546:3:71;11456:84:8;;;;;296:14029:71;11331:13:8;;11346:12;-1:-1:-1;11346:12:8;-1:-1:-1;1094:26:8:o;296:14029:71:-;;;1590:14:0;;1109:10:8;296:14029:71;;;;;;-1:-1:-1;296:14029:71;;;;;;;;1048:135:8;296:14029:71;;;;;;1052:14:8;296:14029:71;:::i;:::-;1151:21:8;:::o;953:236::-;1052:14;;;296:14029:71;;;;;:::i;:::-;1052:21:8;;1109:10;;;;296:14029:71;;;;;;;;;;;;;;;1077:1:8;296:14029:71;;1077:1:8;296:14029:71;;1077:1:8;296:14029:71;;;;;;;;;;;;;;:::i;:::-;;;546:3;;;;;;;296:14029;546:3;;;;;;;296:14029;;;:::i;:::-;;1590:14:0;296:14029:71;;1590:14:0;;;:::i;:::-;296:14029:71;;;;;;;;:::i;:::-;;;;;;;1077:1:8;11360:3;296:14029:71;;11346:12:8;;;;;11391:4;;1109:10;11391:4;;;:::i;:::-;296:14029:71;;11456:84:8;546:3:71;11456:84:8;;;;;296:14029:71;11331:13:8;;296:14029:71;;;1590:14:0;;1109:10:8;296:14029:71;;;;;;-1:-1:-1;296:14029:71;;;;;;;;1048:135:8;296:14029:71;;;;;;;;;;;:::i;1251:343:8:-;-1:-1:-1;296:14029:71;1364:48:8;1381:9;296:14029:71;1590:14:0;;1364:48:8;296:14029:71;1392:19:8;27635:8:3;1392:19:8;:::i;:::-;296:14029:71;;1364:48:8;;;;;;296:14029:71;;;;;;;;;;;;;;;;;;;;;;;;1364:48:8;;296:14029:71;;1364:48:8;;;;;;:::i;:::-;1458:12;296:14029:71;1458:29:8;;;-1:-1:-1;;;;;296:14029:71;1458:29:8;;;;;:::i;:::-;1540:11;296:14029:71;;;;546:3;;;;;-1:-1:-1;;;;;546:3:71;;;;;-1:-1:-1;296:14029:71;;;1364:48:8;11010:13;;:29;1364:48;;;11010:29;1364:48;11010:29;;-1:-1:-1;11049:106:8;11069:7;;;;;;1563:24;;;;;1251:343;:::o;11078:3::-;11114:10;;;;;;;;:::i;:::-;296:14029:71;;;;;;;;;1364:48:8;296:14029:71;;1540:11:8;546:3:71;;;;;-1:-1:-1;;;;;;296:14029:71;546:3;;11142:1:8;546:3:71;;;;;;;;296:14029;;;11097:47:8;11078:3;296:14029:71;11054:13:8;;;;;11010:29;;;;1251:343;;-1:-1:-1;1381:9:8;1364:48;1381:9;;;296:14029:71;1590:14:0;;1364:48:8;296:14029:71;1392:19:8;;;:::i;1364:48::-;296:14029:71;1458:12:8;;296:14029:71;1458:29:8;;;-1:-1:-1;;;;;296:14029:71;1458:29:8;;1540:11;1458:29;;:::i;:::-;1540:11;;296:14029:71;546:3;;;;;-1:-1:-1;;;;;546:3:71;;;;;-1:-1:-1;296:14029:71;;;1364:48:8;11010:13;;:29;1364:48;;;11010:29;1364:48;11010:29;;-1:-1:-1;11049:106:8;11069:7;;;;;;1563:24;;;;;1251:343;:::o;11078:3::-;11114:10;;;;;;;;:::i;:::-;296:14029:71;;;;;;;;;1364:48:8;296:14029:71;;1540:11:8;546:3:71;;;;;-1:-1:-1;;;;;;296:14029:71;546:3;;11142:1:8;546:3:71;;;;;;;;296:14029;;;11097:47:8;11078:3;296:14029:71;11054:13:8;;;;;11010:29;;;;643:59;;;;;;;;;;;;;;;:::i;:::-;296:14029:71;1590:14:0;296:14029:71;;1590:14:0;;;:::i;:::-;643:59:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;192::1;;643::8;;;;;;;;;;4249:2493;4361:12;296:14029:71;4397:9:8;296:14029:71;4438:11:8;296:14029:71;-1:-1:-1;;;;;296:14029:71;;;;12583:1;;1590:14:0;;4481:19:8;27635:8:3;4481:19:8;:::i;:::-;4551:15;296:14029:71;12583:1;296:14029;27635:8:3;296:14029:71;;;12583:1;296:14029;;;;;;;;12583:1;296:14029;;;;12583:1;296:14029;;;;4583:37:8;;;;;;;;;;:::i;:::-;296:14029:71;4573:48:8;;12583:1:71;296:14029;;;;4438:11:8;296:14029:71;12583:1;296:14029;4551:77:8;296:14029:71;;4547:255:8;;-1:-1:-1;;;;;;;;;;;4811:11:8;;;;296:14029:71;;-1:-1:-1;;;4811:11:8;;12583:1:71;296:14029;4361:12:8;296:14029:71;12583:1;-1:-1:-1;;;;;;;;;;;4811:11:8;;;;;;;;4249:2493;4857:16;;27635:8:3;4857:16:8;:::i;:::-;296:14029:71;;;;1590:14:0;;;4911:25:8;;;4361:12;4911:25;;296:14029:71;4911:25:8;;;;;-1:-1:-1;;;;;;;;;;;4911:25:8;;;;;;;;;;;4249:2493;-1:-1:-1;296:14029:71;;4951:12:8;;4984:74;296:14029:71;;12810:59:8;;;4984:74;;296:14029:71;4361:12:8;4984:74;;643:59;296:14029:71;4911:25:8;643:59;;296:14029:71;643:59:8;296:14029:71;;;643:59:8;;;;;;4984:74;4947:1461;5094:13;5127:3;296:14029:71;;5109:16:8;;;;;5178:8;296:14029:71;5178:8:8;;5165:22;5178:8;;:::i;:::-;296:14029:71;;;-1:-1:-1;;;5165:22:8;;-1:-1:-1;;;;;296:14029:71;;4361:12:8;5165:22;;296:14029:71;;;;1590:14:0;;;;296:14029:71;;;;;;;;;;5165:22:8;;;-1:-1:-1;;;;;;;;;;;5165:22:8;;;;;;;;;;;5127:3;5209:18;;;5205:114;;5127:3;5369:8;;;;:::i;:::-;296:14029:71;4361:12:8;296:14029:71;;;-1:-1:-1;;;1978:27:8;;-1:-1:-1;;;;;296:14029:71;;;4361:12:8;1978:27;;296:14029:71;;;;;;1590:14:0;;;296:14029:71;;;;;;-1:-1:-1;;;;;;;;;;;1978:27:8;;;;;;;;;;;5127:3;2057:16;;27635:8:3;2057:16:8;:::i;:::-;2102:65;;;:29;;:65;:29;;;-1:-1:-1;;2352:17:71;2102:65:8;-1:-1:-1;;;;;;;;;;;2177:37:8;;;;296:14029:71;;-1:-1:-1;;;2177:37:8;;-1:-1:-1;;;;;296:14029:71;;;;4361:12:8;2177:37;;296:14029:71;12810:59:8;;;1590:14:0;;;12810:59:8;;;1590:14:0;;;;296:14029:71;;12810:59:8;296:14029:71;;-1:-1:-1;;;;;;;;;;;2177:37:8;;;;;;;;;;;2102:65;2254:16;;;27635:8:3;2254:16:8;:::i;:::-;4361:12;296:14029:71;;;;-1:-1:-1;;;;;;296:14029:71;-1:-1:-1;;;;;;;;;;;2281:43:8;;;;296:14029:71;;-1:-1:-1;;;2281:43:8;;-1:-1:-1;;;;;296:14029:71;;;;4361:12:8;2281:43;;296:14029:71;12810:59:8;;;1590:14:0;;;;12810:59:8;;;1590:14:0;;;;296:14029:71;;12810:59:8;296:14029:71;;-1:-1:-1;;;;;;;;;;;2281:43:8;;;;;;;;;;;2102:65;2343:46;;;;;2102:65;5341:37;;;5337:92;;5447:50;;;296:14029:71;;5520:25:8;296:14029:71;;5516:256:8;;2102:65;12275:113;;;;;;;-1:-1:-1;;12275:113:8;;;5902:57;296:14029:71;;5998:29:8;;5994:84;;296:14029:71;;6319:8:8;296:14029:71;6101:89:8;643:59;296:14029:71;;6132:37:8;;296:14029:71;;;6132:37:8;;;296:14029:71;6132:37:8;;;;;:::i;:::-;296:14029:71;6122:48:8;;6180:8;;;;:::i;:::-;296:14029:71;;;;;;;643:59:8;296:14029:71;643:59:8;;296:14029:71;;643:59:8;;1590:14:0;643:59:8;;;1590:14:0;6101:89:8;6319:8;:::i;:::-;296:14029:71;;;;1590:14:0;643:59:8;1590:14:0;;;;;-1:-1:-1;;;;;1590:14:0;;;;;;4438:11:8;1590:14:0;;;296:14029:71;1590:14:0;296:14029:71;;;6302:58:8;;296:14029:71;;;;6302:58:8;;296:14029:71;;;643:59:8;6302:58;;643:59;296:14029:71;643:59:8;;296:14029:71;;;27635:8:3;296:14029:71;;;;;;;;;;;;;;;;6240:37:8;;;;;;;;;;:::i;:::-;296:14029:71;6230:48:8;;296:14029:71;;;;;;;;;643:59:8;;296:14029:71;;643:59:8;;;296:14029:71;4397:9:8;643:59;;;;;;296:14029:71;;;;;643:59:8;;;;;;;;5089:1309;296:14029:71;;;27635:8:3;296:14029:71;;;;;;;;;;;;;;;;6471:37:8;;;;;;;;;;:::i;:::-;296:14029:71;6461:48:8;;296:14029:71;;;;;4438:11:8;296:14029:71;;;6439:77:8;296:14029:71;;643:59:8;;;296:14029:71;6664:15:8;296:14029:71;;27635:8:3;296:14029:71;;;;;;;;;;6696:37:8;;296:14029:71;;;;;;6696:37:8;;;296:14029:71;6696:37:8;;;;;:::i;:::-;296:14029:71;6686:48:8;;296:14029:71;;;;;4249:2493:8;:::o;643:59::-;296:14029:71;;-1:-1:-1;;;643:59:8;;296:14029:71;4361:12:8;643:59;;;;4911:25;643:59;;296:14029:71;643:59:8;296:14029:71;;;643:59:8;-1:-1:-1;;;643:59:8;;;;;;;1590:14:0;-1:-1:-1;;;1590:14:0;;;4361:12:8;1590:14:0;4911:25:8;1590:14:0;;5994:84:8;6051:8;;;;296:14029:71;6051:8:8;5094:13;296:14029:71;5094:13:8;;5516:256;5654:8;;3216:27;5654:8;;;;;;:::i;:::-;296:14029:71;4361:12:8;296:14029:71;;;-1:-1:-1;;;3216:27:8;;-1:-1:-1;;;;;296:14029:71;;;4361:12:8;3216:27;;296:14029:71;;;;1590:14:0;;;296:14029:71;;;;;;;;;;;;;;;3216:27:8;;;-1:-1:-1;;;;;;;;;;;3216:27:8;;;;;;;;;;;5516:256;3293:28;;;27635:8:3;3293:28:8;:::i;:::-;3372:29;;;;;27635:8:3;3372:29:8;:::i;:::-;4361:12;296:14029:71;;;;;;-1:-1:-1;;;;;296:14029:71;-1:-1:-1;;;;;;;;;;;3497:43:8;;;;296:14029:71;;-1:-1:-1;;;3497:43:8;;-1:-1:-1;;;;;296:14029:71;;;;4361:12:8;3497:43;;296:14029:71;12810:59:8;;;1590:14:0;;;;12810:59:8;;;1590:14:0;;;;296:14029:71;;12810:59:8;296:14029:71;;-1:-1:-1;;;;;;;;;;;3497:43:8;;;;;;;;;;;5516:256;3558:23;;;;;5516:256;5601:62;;5689:6;5516:256;5685:69;5723:8;;;;;296:14029:71;5723:8:8;;;3558:23;;-1:-1:-1;3558:23:8;;;3497:43;;;;;:::i;:::-;296:14029:71;;3497:43:8;;;;296:14029:71;;;;3497:43:8;296:14029:71;;1590:14:0;296:14029:71;;1590:14:0;;;;3497:43:8;296:14029:71;;;3216:27:8;;;;296:14029:71;3216:27:8;;;;;;;;;1590:14:0;3216:27:8;;;:::i;:::-;;;1590:14:0;;;;;3216:27:8;;;;;;;-1:-1:-1;3216:27:8;;;296:14029:71;;1590:14:0;296:14029:71;;1590:14:0;;;;5337:92:8;5402:8;;296:14029:71;5402:8:8;;;2343:46;2355:33;;;-1:-1:-1;2343:46:8;;;;2281:43;;;;;:::i;:::-;296:14029:71;;2281:43:8;;;;296:14029:71;;;;2281:43:8;296:14029:71;;1590:14:0;296:14029:71;;1590:14:0;;;;2281:43:8;296:14029:71;;;2177:37:8;;;;;:::i;:::-;296:14029:71;;2177:37:8;;;;2102:65;;;;;1978:27;;;296:14029:71;1978:27:8;;;;;;;;;1590:14:0;1978:27:8;;;:::i;:::-;;;1590:14:0;;;;;1978:27:8;;;;;;-1:-1:-1;1978:27:8;;;296:14029:71;;1590:14:0;296:14029:71;;1590:14:0;;;;5205:114:8;5256:44;;5290:8;;;;:::i;:::-;296:14029:71;;;;-1:-1:-1;;;;;296:14029:71;;;;;;;1590:14:0;;;;296:14029:71;;;;;;;;5256:44:8;;;;5205:114;;5165:22;;;;296:14029:71;5165:22:8;;;;;;;;;1590:14:0;5165:22:8;;;:::i;:::-;;;1590:14:0;;;;;5165:22:8;;;;;;;-1:-1:-1;5165:22:8;;5109:16;;;;;;4911:25;;;;;;;;;;;;:::i;:::-;;;296:14029:71;643:59:8;;;;;;;;-1:-1:-1;;;;;643:59:8;;;;;;;;;;:::i;:::-;;296:14029:71;643:59:8;;;;-1:-1:-1;;;;;643:59:8;;;;;;;;;:::i;:::-;;4911:25;;;643:59;296:14029:71;;;4811:11:8;;;;;12583:1:71;4811:11:8;;:::i;:::-;12583:1:71;4811:11:8;;;;4547:255;4720:15;;;;;12583:1:71;296:14029;27635:8:3;296:14029:71;;;12583:1;296:14029;;12583:1;296:14029;;;4752:37:8;;296:14029:71;12583:1;296:14029;;;;4752:37:8;;;296:14029:71;4752:37:8;;;;;:::i;:::-;296:14029:71;4742:48:8;;12583:1:71;296:14029;;;;12583:1;296:14029;4713:78:8;:::o;11586:239::-;-1:-1:-1;;;;;1590:14:0;;11652:12:8;296:14029:71;;11652:12:8;296:14029:71;;;11681:9:8;296:14029:71;;11681:9:8;296:14029:71;11707:10:8;296:14029:71;11645:19:8;11707:10;296:14029:71;;;;11586:239:8;296:14029:71;11645:19:8;11734:11;296:14029:71;1590:14:0;296:14029:71;11762:25:8;296:14029:71;;11762:25:8;296:14029:71;;11804:14:8;296:14029:71;;:::i;:::-;;;;11586:239:8;:::o;296:14029:71:-;;;;;;;;;11645:19:8;11804:14;296:14029:71;11586:239:8:o;296:14029:71:-;11804:14:8;11645:19;296:14029:71;;;;;;;;;;;;;;;;11804:14:8;11645:19;296:14029:71;11645:19:8;296:14029:71;;;;11804:14:8;296:14029:71;;26720:91:3:o;296:14029:71:-;;;;;;;;;11707:10:8;11645:19;296:14029:71;;;;;;;;;;;;;;;;11645:19:8;296:14029:71;;11707:10:8;296:14029:71;;;2560:514:8;;;2695:1;2698:12;2707:3;2698:12;;;;3050:17;;;;2695:1;3050:17;2695:1;2560:514;:::o;2712:8::-;296:14029:71;2771:3:8;296:14029:71;2771:3:8;296:14029:71;;;;2824:12:8;;;296:14029:71;;;;;;-1:-1:-1;;;;;296:14029:71;-1:-1:-1;;;;;;;;;;;2815:49:8;;;;296:14029:71;;-1:-1:-1;;;2815:49:8;;-1:-1:-1;;;;;296:14029:71;;;;2824:12:8;2815:49;;296:14029:71;12810:59:8;;;1590:14:0;;;12810:59:8;;;1590:14:0;;;;-1:-1:-1;296:14029:71;12810:59:8;296:14029:71;-1:-1:-1;;;;;;;;;;;;2815:49:8;;;;;;;;2712:8;2910:16;;;;:::i;:::-;2945:30;;;2712:8;2941:90;;;296:14029:71;;2678:18:8;;2941:90;2995:21;;;296:14029:71;2995:21:8;;:::o;2945:30::-;2957:17;;;;2945:30;;;2815:49;2695:1;2815:49;;;:::i;:::-;;;;2560:514;;;4551:10;2698:12;2707:3;2698:12;;;;3050:17;;;;4551:10;3050:17;4551:10;2560:514;:::o;2712:8::-;2824:12;;;296:14029:71;;;;;-1:-1:-1;;;;;296:14029:71;-1:-1:-1;;;;;;;;;;;2815:49:8;;;;296:14029:71;;-1:-1:-1;;;2815:49:8;;-1:-1:-1;;;;;296:14029:71;;;;2824:12:8;2815:49;;296:14029:71;12810:59:8;;;1590:14:0;;;12810:59:8;;;1590:14:0;;;;-1:-1:-1;296:14029:71;12810:59:8;296:14029:71;-1:-1:-1;;;;;;;;;;;;2815:49:8;;;;;;;;2712:8;2910:16;;;;:::i;:::-;2945:30;;;2712:8;2941:90;;;296:14029:71;;2678:18:8;;2945:30;2957:17;;;;2945:30;;;2815:49;4551:10;2815:49;;;:::i;:::-;;;","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testGetCapabilitiesEtherfi(bytes32,address,address)":"7f6f69f4","testGetLimitsEtherfi()":"d25f701e","testGetTokensEtherfi()":"c307553a","testPriceFuzzEtherfi(uint256,uint256)":"796f2c75","testSwapBuyIncreasingEtherfi()":"821a7e72","testSwapFuzzEtherfiEethWeEth(uint256,bool)":"23faaaa9","testSwapFuzzEtherfiEthEeth(uint256,bool)":"a9f992f0","testSwapFuzzEtherfiEthWeEth(uint256,bool)":"1d279786","testSwapFuzzEtherfiWeEthEeth(uint256,bool)":"48b4e418","testSwapSellIncreasingEtherfi()":"c6549c14"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"LimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"Unavailable\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"fsig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keysHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"SlotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"WARNING_UninitedSlot\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"pair\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"t0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"t1\",\"type\":\"address\"}],\"name\":\"testGetCapabilitiesEtherfi\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetLimitsEtherfi\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetTokensEtherfi\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"testPriceFuzzEtherfi\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSwapBuyIncreasingEtherfi\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isBuy\",\"type\":\"bool\"}],\"name\":\"testSwapFuzzEtherfiEethWeEth\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isBuy\",\"type\":\"bool\"}],\"name\":\"testSwapFuzzEtherfiEthEeth\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isBuy\",\"type\":\"bool\"}],\"name\":\"testSwapFuzzEtherfiEthWeEth\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isBuy\",\"type\":\"bool\"}],\"name\":\"testSwapFuzzEtherfiWeEthEeth\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSwapSellIncreasingEtherfi\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"LimitExceeded(uint256)\":[{\"details\":\"The LimitExceeded error is thrown when a limit has been exceeded. E.g. the specified amount can't be traded safely.\"}],\"NotImplemented(string)\":[{\"details\":\"The NotImplemented error is thrown when a function is not implemented.\"}],\"Unavailable(string)\":[{\"details\":\"The Unavailable error is thrown when a pool or swap is not available for unexpected reason. E.g. it was paused due to a bug.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/EtherfiAdapter.t.sol\":\"EtherfiAdapterTest\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b\",\"dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54\",\"dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678\",\"dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdToml.sol\":{\"keccak256\":\"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d\",\"dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e\",\"dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a\",\"dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/etherfi/EtherfiAdapter.sol\":{\"keccak256\":\"0xc4f85bd8d63c6f5f958af4312225342fff7f3088a079ea4e23f6f9574dfd0e7b\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f67397f3b22a736484a0c4a81d1642d5458dc34501bf1caefb9d1773bf18a1d0\",\"dweb:/ipfs/QmR3EwEjG6XoFxm48TftNxyRmTWJwk6qT4eQ4cjeVk8RK9\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/libraries/FractionMath.sol\":{\"keccak256\":\"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c\",\"dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr\"]},\"test/EtherfiAdapter.t.sol\":{\"keccak256\":\"0xbe1854753bd8082b938924b1c891d1de3b33d043b4383a7af1d08abc21e7ebe5\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4c9861496c55075d2dc16738089cd9b92b4be8f05537f255b56726b2f4739d51\",\"dweb:/ipfs/QmeV2MSWEve3sCg4xSwS6Bcv2eSDuqGzcBmTVYdeN4Wx6r\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"type":"error","name":"LimitExceeded"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"NotImplemented"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"Unavailable"},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"bytes4","name":"fsig","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"keysHash","type":"bytes32","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"SlotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"WARNING_UninitedSlot","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[{"internalType":"bytes32","name":"pair","type":"bytes32"},{"internalType":"address","name":"t0","type":"address"},{"internalType":"address","name":"t1","type":"address"}],"stateMutability":"view","type":"function","name":"testGetCapabilitiesEtherfi"},{"inputs":[],"stateMutability":"view","type":"function","name":"testGetLimitsEtherfi"},{"inputs":[],"stateMutability":"view","type":"function","name":"testGetTokensEtherfi"},{"inputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"view","type":"function","name":"testPriceFuzzEtherfi"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testSwapBuyIncreasingEtherfi"},{"inputs":[{"internalType":"uint256","name":"specifiedAmount","type":"uint256"},{"internalType":"bool","name":"isBuy","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"testSwapFuzzEtherfiEethWeEth"},{"inputs":[{"internalType":"uint256","name":"specifiedAmount","type":"uint256"},{"internalType":"bool","name":"isBuy","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"testSwapFuzzEtherfiEthEeth"},{"inputs":[{"internalType":"uint256","name":"specifiedAmount","type":"uint256"},{"internalType":"bool","name":"isBuy","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"testSwapFuzzEtherfiEthWeEth"},{"inputs":[{"internalType":"uint256","name":"specifiedAmount","type":"uint256"},{"internalType":"bool","name":"isBuy","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"testSwapFuzzEtherfiWeEthEeth"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testSwapSellIncreasingEtherfi"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/EtherfiAdapter.t.sol":"EtherfiAdapterTest"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef","urls":["bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b","dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d","urls":["bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54","dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3","urls":["bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678","dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdToml.sol":{"keccak256":"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab","urls":["bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d","dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe","urls":["bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e","dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456","urls":["bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a","dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/etherfi/EtherfiAdapter.sol":{"keccak256":"0xc4f85bd8d63c6f5f958af4312225342fff7f3088a079ea4e23f6f9574dfd0e7b","urls":["bzz-raw://f67397f3b22a736484a0c4a81d1642d5458dc34501bf1caefb9d1773bf18a1d0","dweb:/ipfs/QmR3EwEjG6XoFxm48TftNxyRmTWJwk6qT4eQ4cjeVk8RK9"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/libraries/FractionMath.sol":{"keccak256":"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735","urls":["bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c","dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr"],"license":"AGPL-3.0-or-later"},"test/EtherfiAdapter.t.sol":{"keccak256":"0xbe1854753bd8082b938924b1c891d1de3b33d043b4383a7af1d08abc21e7ebe5","urls":["bzz-raw://4c9861496c55075d2dc16738089cd9b92b4be8f05537f255b56726b2f4739d51","dweb:/ipfs/QmeV2MSWEve3sCg4xSwS6Bcv2eSDuqGzcBmTVYdeN4Wx6r"],"license":"AGPL-3.0-or-later"}},"version":1},"id":71} \ No newline at end of file diff --git a/evm/out/FractionMath.sol/FractionMath.json b/evm/out/FractionMath.sol/FractionMath.json deleted file mode 100644 index aac5878..0000000 --- a/evm/out/FractionMath.sol/FractionMath.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea26469706673582212201ebb7d549b5edfe85fda6fcf5397a057220f0023cb3525cf7be7e013b7ba6c0064736f6c634300081b0033","sourceMap":"120:855:59:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea26469706673582212201ebb7d549b5edfe85fda6fcf5397a057220f0023cb3525cf7be7e013b7ba6c0064736f6c634300081b0033","sourceMap":"120:855:59:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/FractionMath.sol\":\"FractionMath\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/libraries/FractionMath.sol\":{\"keccak256\":\"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c\",\"dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/libraries/FractionMath.sol":"FractionMath"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/libraries/FractionMath.sol":{"keccak256":"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735","urls":["bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c","dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr"],"license":"AGPL-3.0-or-later"}},"version":1},"id":59} \ No newline at end of file diff --git a/evm/out/FraxV3FrxEthAdapter.sol/FixedPointMathLib.json b/evm/out/FraxV3FrxEthAdapter.sol/FixedPointMathLib.json deleted file mode 100644 index 57ea4e0..0000000 --- a/evm/out/FraxV3FrxEthAdapter.sol/FixedPointMathLib.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220ed7e14a228bfb5328f2335281b86266112ae2b6b8e6eb262eaeeae3a14a3457064736f6c634300081b0033","sourceMap":"361:634:62:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea2646970667358221220ed7e14a228bfb5328f2335281b86266112ae2b6b8e6eb262eaeeae3a14a3457064736f6c634300081b0033","sourceMap":"361:634:62:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/sfraxeth/FraxV3FrxEthAdapter.sol\":\"FixedPointMathLib\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12\",\"dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/sfraxeth/FraxV3FrxEthAdapter.sol\":{\"keccak256\":\"0xdbd9ad99addc8ac7771da9ff88057aac4754af575b8a5f818db47da8f64ff0fa\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://c10e743e259bdb1ac0b38e097bf9009d6b46b5d44e1874d500a7527b4103cc55\",\"dweb:/ipfs/QmdKFhhygHbb8tN448AJAVYt6bdzr68pBKi5CotxEv4WNn\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/sfraxeth/FraxV3FrxEthAdapter.sol":"FixedPointMathLib"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb","urls":["bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12","dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/sfraxeth/FraxV3FrxEthAdapter.sol":{"keccak256":"0xdbd9ad99addc8ac7771da9ff88057aac4754af575b8a5f818db47da8f64ff0fa","urls":["bzz-raw://c10e743e259bdb1ac0b38e097bf9009d6b46b5d44e1874d500a7527b4103cc55","dweb:/ipfs/QmdKFhhygHbb8tN448AJAVYt6bdzr68pBKi5CotxEv4WNn"],"license":"AGPL-3.0-or-later"}},"version":1},"id":62} \ No newline at end of file diff --git a/evm/out/FraxV3FrxEthAdapter.sol/FraxV3FrxEthAdapter.json b/evm/out/FraxV3FrxEthAdapter.sol/FraxV3FrxEthAdapter.json deleted file mode 100644 index 3a6bd81..0000000 --- a/evm/out/FraxV3FrxEthAdapter.sol/FraxV3FrxEthAdapter.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_frxEthMinter","type":"address","internalType":"address"},{"name":"_sfrxEth","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"getCapabilities","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"capabilities","type":"uint8[]","internalType":"enum ISwapAdapterTypes.Capability[]"}],"stateMutability":"pure"},{"type":"function","name":"getLimits","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"}],"outputs":[{"name":"limits","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getPoolIds","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"ids","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"getTokens","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"price","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"},{"name":"_specifiedAmounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"_prices","type":"tuple[]","internalType":"struct ISwapAdapterTypes.Fraction[]","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"swap","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"},{"name":"side","type":"uint8","internalType":"enum ISwapAdapterTypes.OrderSide"},{"name":"specifiedAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"trade","type":"tuple","internalType":"struct ISwapAdapterTypes.Trade","components":[{"name":"calculatedAmount","type":"uint256","internalType":"uint256"},{"name":"gasUsed","type":"uint256","internalType":"uint256"},{"name":"price","type":"tuple","internalType":"struct ISwapAdapterTypes.Fraction","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"nonpayable"},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LimitExceeded","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotImplemented","inputs":[{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"Unavailable","inputs":[{"name":"reason","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x60e03461011657601f6117ac38819003918201601f19168301916001600160401b0383118484101761011a578084926040948552833981010312610116576100468161012e565b906001600160a01b039061005c9060200161012e565b1660c052735e8422345238f34275888049021821e8e08caa1f6080526001600160a01b031660a052604051611669908161014382396080518181816107c301528181610a1501528181610e200152610ff1015260a051818181609b015281816104c601528181610dbd0152610f91015260c0518181816104890152818161083f01528181610a9f01528181610aea01528181610b2801528181610b6f01528181610d7901528181610ec40152818161103c01526111dd0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101165756fe6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c806323eeca011461045a57806348bd7dfd146103835780638307c65514610320578063a9270fbe146102c4578063aad6e488146101d85763ecbbc0330361000e57346101d45760203660031901126101d45760405161007f6060826105d9565b6002815260208101604036823760405163ba947f2760e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602081600481855afa9182156101ac576004926020925f916101b7575b506100eb86610613565b6001600160a01b039091169052604051630e2b46db60e11b815292839182905afa9081156101ac575f9161017d575b50610126839293610620565b6001600160a01b0390911690526040805160208082529251928101839052928392918301915f5b81811061015b575050500390f35b82516001600160a01b031684528594506020938401939092019160010161014d565b61019f915060203d6020116101a5575b61019781836105d9565b8101906109e9565b5f61011a565b503d61018d565b6040513d5f823e3d90fd5b6101ce9150833d85116101a55761019781836105d9565b5f6100e1565b5f80fd5b346101d45760803660031901126101d4576101f1610543565b6101f9610559565b6064359067ffffffffffffffff82116101d457366023830112156101d457816004013592610226846105fb565b9261023460405194856105d9565b8484526024602085019560051b820101903682116101d457602401945b8186106102b45750506102649350610936565b6040518091602082016020835281518091526020604084019201905f5b81811061028f575050500390f35b8251805185526020908101518186015286955060409094019390920191600101610281565b8535815260209586019501610251565b346101d4576102dc6102d53661056f565b9150610778565b6040518091602082016020835281518091526020604084019201905f5b818110610307575050500390f35b82518452859450602093840193909201916001016102f9565b346101d45760a03660031901126101d457610339610543565b610341610559565b6064359160028310156101d45760809261035e9260843592610665565b6020604080519280518452828101518385015201518051604084015201516060820152f35b346101d4576103913661056f565b5050506040516103a260a0826105d9565b6004815260208101608036823760016103ba83610613565b5260026103c683610620565b5281516002101561044657600360608301528151600310156104465760056080830152604051906020820192602083525180935260408201905f935b80851061040f5783830384f35b9091825190600a8210156104325760208160019382935201930194019390610402565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b346101d45760403660031901126101d4576040516104796060826105d9565b60028152602081019060403683377f000000000000000000000000000000000000000000000000000000000000000060601b6bffffffffffffffffffffffff19166104c382610613565b527f000000000000000000000000000000000000000000000000000000000000000060601b6bffffffffffffffffffffffff191661050082610620565b52604051918291602083019060208452518091526040830191905f5b81811061052a575050500390f35b825184528594506020938401939092019160010161051c565b602435906001600160a01b03821682036101d457565b604435906001600160a01b03821682036101d457565b60609060031901126101d457600435906024356001600160a01b03811681036101d457906044356001600160a01b03811681036101d45790565b6040810190811067ffffffffffffffff8211176105c557604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176105c557604052565b67ffffffffffffffff81116105c55760051b60200190565b8051156104465760200190565b8051600110156104465760400190565b80518210156104465760209160051b010190565b9190820391821161065157565b634e487b7160e01b5f52601160045260245ffd5b9093926040516060810181811067ffffffffffffffff8211176105c5576040525f81526106e360208201965f88525f60408401986040516106a5816105a9565b8281528260208201528a528499604051906106bf826105a9565b670de0b6b3a76400008252670de0b6b3a76400006020830152528185525284610a08565b61077157505a916002841015610432578161073394155f146107415761070891610ea2565b80865290811561073a576040519161071f836105a9565b8252602082015260408501525b5a90610644565b6020830152565b505061072c565b61074a91610b5a565b808652801561073a5760405191610760836105a9565b82526020820152604085015261072c565b9450505050565b604051916107876060846105d9565b600283526040366020850137825f61079e82610613565b525f6107a982610620565b526107b48284610a08565b61092f57506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169216808314908115610926575b50156108205750506001600160801b0361080a82610613565b526001600160801b0361081c82610620565b5290565b6001600160a01b0316146108315790565b6040516278744560e21b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316602082600481845afa9182156101ac575f926108f1575b50602060249160405192838092630a28a47760e01b82528660048301525afa9081156101ac575f916108bf575b506108b583610613565b5261081c82610620565b90506020813d6020116108e9575b816108da602093836105d9565b810103126101d457515f6108ab565b3d91506108cd565b9091506020813d60201161091e575b8161090d602093836105d9565b810103126101d4575190602061087e565b3d9150610900565b9050155f6107f1565b9250505090565b9092918051610944816105fb565b9061095260405192836105d9565b808252610961601f19916105fb565b015f5b8181106109c6575050610978819584610a08565b6109c057505f5b81518110156109bb578061099f61099860019385610630565b5185610fd9565b6109a98288610630565b526109b48187610630565b500161097f565b505050565b93505050565b6020906040516109d5816105a9565b5f81525f8382015282828601015201610964565b908160209103126101d457516001600160a01b03811681036101d45790565b6001600160a01b039081167f000000000000000000000000000000000000000000000000000000000000000090911681811415929083610b26575b83610b1c575b8315610ac8575b508215610a81575b8215610a6e575b5050610a69575f90565b600190565b6001600160a01b03161490505f80610a5f565b9150801580610a91575b91610a58565b506001600160a01b038281167f00000000000000000000000000000000000000000000000000000000000000009091161415610a8b565b9092506001600160a01b038316908114159081610ae8575b50915f610a50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141590505f610ae0565b8215159350610a49565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168314159350610a43565b6001600160a01b031691905f908315610d5e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690848203610caa57604051630a28a47760e01b81526004810182905294602086602481865afa908115610c9f578495968592610c63575b5091610be460209492610c1494309033906114cf565b604051632d182be560e21b8152600481019190915233602482015230604482015293849283919082906064820190565b03925af1918215610c575791610c28575090565b90506020813d602011610c4f575b81610c43602093836105d9565b810103126101d4575190565b3d9150610c36565b604051903d90823e3d90fd5b9391509193506020833d602011610c97575b81610c82602093836105d9565b810103126101d4579151849391610be4610bce565b3d9150610c75565b6040513d86823e3d90fd5b60405163b3d7f6b960e01b81526004810182905294602086602481865afa908115610c9f578495968592610d22575b5091610cf88285610c1495610cf3602098963033846114cf565b61137d565b6040516394bf804d60e01b8152600481019190915233602482015293849283919082906044820190565b9391509193506020833d602011610d56575b81610d41602093836105d9565b810103126101d4579151849391610cf8610cd9565b3d9150610d34565b60405163b3d7f6b960e01b81526004810182905292935090917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169190602081602481865afa9081156101ac575f91610e70575b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156101d4575f8291600460405180948193632de597e360e11b83525af180156101ac57610e4d575b508392602092610c1492610cf890837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661137d565b610cf8945092602092610e645f610c1494966105d9565b5f955092509290610e0f565b90506020813d602011610e9a575b81610e8b602093836105d9565b810103126101d457515f610dba565b3d9150610e7e565b6001600160a01b03168015610f705760209082610ec25f943033856114cf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908282148514610f3857604051635d043b2960e11b8152600481019190915233602482015230604482015293849250829081606481015b03925af19081156101ac575f91610c28575090565b610f468183610f239561137d565b604051636e553f6560e01b8152600481019190915233602482015293849283919082906044820190565b50604051634dcd454760e01b815233600482015290602090829060249082907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af19081156101ac575f91610c28575090565b9190820180921161065157565b604051610fe5816105a9565b5f8082526020909101527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169116908114908115611374575b50156111c7576040516278744560e21b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169190602081600481865afa80156101ac5782905f90611191575b6110889250610fcc565b916040519163ef8b30f760e01b83526004830152602082602481845afa9182156101ac575f9261115c575b50906020600492604051938480926318160ddd60e01b82525afa80156101ac575f90611128575b6110e49250610fcc565b90815f1904670de0b6b3a7640000118202158102156101d4576040519161110a836105a9565b670de0b6b3a764000002048152670de0b6b3a7640000602082015290565b506020823d602011611154575b81611142602093836105d9565b810103126101d4576110e491516110da565b3d9150611135565b91506020823d602011611189575b81611177602093836105d9565b810103126101d45790519060206110b3565b3d915061116a565b50506020813d6020116111bf575b816111ac602093836105d9565b810103126101d45781611088915161107e565b3d915061119f565b60405163266d6a8360e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691602082602481865afa9182156101ac575f92611340575b506040516278744560e21b815291602083600481875afa9283156101ac575f9361130a575b50611251602091600494610644565b93604051938480926318160ddd60e01b82525afa80156101ac575f906112d6575b61127c9250610644565b90816112ae575050670de0b6b3a76400005b6040519061129b826105a9565b8152670de0b6b3a7640000602082015290565b805f1904670de0b6b3a7640000118102158202156101d457670de0b6b3a7640000020461128e565b506020823d602011611302575b816112f0602093836105d9565b810103126101d45761127c9151611272565b3d91506112e3565b92506020833d602011611338575b81611325602093836105d9565b810103126101d457915191611251611242565b3d9150611318565b9091506020813d60201161136c575b8161135c602093836105d9565b810103126101d45751905f61121d565b3d915061134f565b9050155f611028565b604051636eb1769f60e11b81523060048201526001600160a01b03928316602482018190529392821692602082604481875afa80156101ac575f9061149b575b6113c79250610fcc565b915f8060405194602086019063095ea7b360e01b82528760248801526044870152604486526113f76064876105d9565b85519082855af190611407611596565b82611469575b508161145e575b501561141f57505050565b61145761145c936040519063095ea7b360e01b602083015260248201525f6044820152604481526114516064826105d9565b8261152b565b61152b565b565b90503b15155f611414565b80519192508115918215611481575b5050905f61140d565b6114949250602080918301019101611513565b5f80611478565b506020823d6020116114c7575b816114b5602093836105d9565b810103126101d4576113c791516113bd565b3d91506114a8565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815261145c916114576084836105d9565b908160209103126101d4575180151581036101d45790565b5f806115539260018060a01b03169360208151910182865af161154c611596565b90836115d5565b805190811515918261157b575b50506115695750565b635274afe760e01b5f5260045260245ffd5b61158e9250602080918301019101611513565b155f80611560565b3d156115d0573d9067ffffffffffffffff82116105c557604051916115c5601f8201601f1916602001846105d9565b82523d5f602084013e565b606090565b906115f957508051156115ea57805190602001fd5b63d6bda27560e01b5f5260045ffd5b8151158061162a575b61160a575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561160256fea264697066735822122072a6acb1af5d7f7b4a48c2ff88e7f9fc18a79985403ac1f221926b9de12fd3ab64736f6c634300081b0033","sourceMap":"1156:9136:62:-:0;;;;;;;;;;;;;-1:-1:-1;;1156:9136:62;;;;-1:-1:-1;;;;;1156:9136:62;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;1156:9136:62;;;;;;:::i;:::-;;1492:28;;1555:42;1530:69;;-1:-1:-1;;;;;1156:9136:62;;1610:43;-1:-1:-1;1156:9136:62;;;;;;;1530:69;1156:9136;;;;;;;;;;;;;;;;;;;;1610:43;1156:9136;;;;;;;;;;;;;;;;;;;;1492:28;1156:9136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1156:9136:62;;;;;;-1:-1:-1;1156:9136:62;;;;;-1:-1:-1;1156:9136:62;;;;-1:-1:-1;;;;;1156:9136:62;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c806323eeca011461045a57806348bd7dfd146103835780638307c65514610320578063a9270fbe146102c4578063aad6e488146101d85763ecbbc0330361000e57346101d45760203660031901126101d45760405161007f6060826105d9565b6002815260208101604036823760405163ba947f2760e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602081600481855afa9182156101ac576004926020925f916101b7575b506100eb86610613565b6001600160a01b039091169052604051630e2b46db60e11b815292839182905afa9081156101ac575f9161017d575b50610126839293610620565b6001600160a01b0390911690526040805160208082529251928101839052928392918301915f5b81811061015b575050500390f35b82516001600160a01b031684528594506020938401939092019160010161014d565b61019f915060203d6020116101a5575b61019781836105d9565b8101906109e9565b5f61011a565b503d61018d565b6040513d5f823e3d90fd5b6101ce9150833d85116101a55761019781836105d9565b5f6100e1565b5f80fd5b346101d45760803660031901126101d4576101f1610543565b6101f9610559565b6064359067ffffffffffffffff82116101d457366023830112156101d457816004013592610226846105fb565b9261023460405194856105d9565b8484526024602085019560051b820101903682116101d457602401945b8186106102b45750506102649350610936565b6040518091602082016020835281518091526020604084019201905f5b81811061028f575050500390f35b8251805185526020908101518186015286955060409094019390920191600101610281565b8535815260209586019501610251565b346101d4576102dc6102d53661056f565b9150610778565b6040518091602082016020835281518091526020604084019201905f5b818110610307575050500390f35b82518452859450602093840193909201916001016102f9565b346101d45760a03660031901126101d457610339610543565b610341610559565b6064359160028310156101d45760809261035e9260843592610665565b6020604080519280518452828101518385015201518051604084015201516060820152f35b346101d4576103913661056f565b5050506040516103a260a0826105d9565b6004815260208101608036823760016103ba83610613565b5260026103c683610620565b5281516002101561044657600360608301528151600310156104465760056080830152604051906020820192602083525180935260408201905f935b80851061040f5783830384f35b9091825190600a8210156104325760208160019382935201930194019390610402565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b346101d45760403660031901126101d4576040516104796060826105d9565b60028152602081019060403683377f000000000000000000000000000000000000000000000000000000000000000060601b6bffffffffffffffffffffffff19166104c382610613565b527f000000000000000000000000000000000000000000000000000000000000000060601b6bffffffffffffffffffffffff191661050082610620565b52604051918291602083019060208452518091526040830191905f5b81811061052a575050500390f35b825184528594506020938401939092019160010161051c565b602435906001600160a01b03821682036101d457565b604435906001600160a01b03821682036101d457565b60609060031901126101d457600435906024356001600160a01b03811681036101d457906044356001600160a01b03811681036101d45790565b6040810190811067ffffffffffffffff8211176105c557604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176105c557604052565b67ffffffffffffffff81116105c55760051b60200190565b8051156104465760200190565b8051600110156104465760400190565b80518210156104465760209160051b010190565b9190820391821161065157565b634e487b7160e01b5f52601160045260245ffd5b9093926040516060810181811067ffffffffffffffff8211176105c5576040525f81526106e360208201965f88525f60408401986040516106a5816105a9565b8281528260208201528a528499604051906106bf826105a9565b670de0b6b3a76400008252670de0b6b3a76400006020830152528185525284610a08565b61077157505a916002841015610432578161073394155f146107415761070891610ea2565b80865290811561073a576040519161071f836105a9565b8252602082015260408501525b5a90610644565b6020830152565b505061072c565b61074a91610b5a565b808652801561073a5760405191610760836105a9565b82526020820152604085015261072c565b9450505050565b604051916107876060846105d9565b600283526040366020850137825f61079e82610613565b525f6107a982610620565b526107b48284610a08565b61092f57506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169216808314908115610926575b50156108205750506001600160801b0361080a82610613565b526001600160801b0361081c82610620565b5290565b6001600160a01b0316146108315790565b6040516278744560e21b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316602082600481845afa9182156101ac575f926108f1575b50602060249160405192838092630a28a47760e01b82528660048301525afa9081156101ac575f916108bf575b506108b583610613565b5261081c82610620565b90506020813d6020116108e9575b816108da602093836105d9565b810103126101d457515f6108ab565b3d91506108cd565b9091506020813d60201161091e575b8161090d602093836105d9565b810103126101d4575190602061087e565b3d9150610900565b9050155f6107f1565b9250505090565b9092918051610944816105fb565b9061095260405192836105d9565b808252610961601f19916105fb565b015f5b8181106109c6575050610978819584610a08565b6109c057505f5b81518110156109bb578061099f61099860019385610630565b5185610fd9565b6109a98288610630565b526109b48187610630565b500161097f565b505050565b93505050565b6020906040516109d5816105a9565b5f81525f8382015282828601015201610964565b908160209103126101d457516001600160a01b03811681036101d45790565b6001600160a01b039081167f000000000000000000000000000000000000000000000000000000000000000090911681811415929083610b26575b83610b1c575b8315610ac8575b508215610a81575b8215610a6e575b5050610a69575f90565b600190565b6001600160a01b03161490505f80610a5f565b9150801580610a91575b91610a58565b506001600160a01b038281167f00000000000000000000000000000000000000000000000000000000000000009091161415610a8b565b9092506001600160a01b038316908114159081610ae8575b50915f610a50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141590505f610ae0565b8215159350610a49565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168314159350610a43565b6001600160a01b031691905f908315610d5e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690848203610caa57604051630a28a47760e01b81526004810182905294602086602481865afa908115610c9f578495968592610c63575b5091610be460209492610c1494309033906114cf565b604051632d182be560e21b8152600481019190915233602482015230604482015293849283919082906064820190565b03925af1918215610c575791610c28575090565b90506020813d602011610c4f575b81610c43602093836105d9565b810103126101d4575190565b3d9150610c36565b604051903d90823e3d90fd5b9391509193506020833d602011610c97575b81610c82602093836105d9565b810103126101d4579151849391610be4610bce565b3d9150610c75565b6040513d86823e3d90fd5b60405163b3d7f6b960e01b81526004810182905294602086602481865afa908115610c9f578495968592610d22575b5091610cf88285610c1495610cf3602098963033846114cf565b61137d565b6040516394bf804d60e01b8152600481019190915233602482015293849283919082906044820190565b9391509193506020833d602011610d56575b81610d41602093836105d9565b810103126101d4579151849391610cf8610cd9565b3d9150610d34565b60405163b3d7f6b960e01b81526004810182905292935090917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169190602081602481865afa9081156101ac575f91610e70575b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156101d4575f8291600460405180948193632de597e360e11b83525af180156101ac57610e4d575b508392602092610c1492610cf890837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661137d565b610cf8945092602092610e645f610c1494966105d9565b5f955092509290610e0f565b90506020813d602011610e9a575b81610e8b602093836105d9565b810103126101d457515f610dba565b3d9150610e7e565b6001600160a01b03168015610f705760209082610ec25f943033856114cf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908282148514610f3857604051635d043b2960e11b8152600481019190915233602482015230604482015293849250829081606481015b03925af19081156101ac575f91610c28575090565b610f468183610f239561137d565b604051636e553f6560e01b8152600481019190915233602482015293849283919082906044820190565b50604051634dcd454760e01b815233600482015290602090829060249082907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af19081156101ac575f91610c28575090565b9190820180921161065157565b604051610fe5816105a9565b5f8082526020909101527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169116908114908115611374575b50156111c7576040516278744560e21b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169190602081600481865afa80156101ac5782905f90611191575b6110889250610fcc565b916040519163ef8b30f760e01b83526004830152602082602481845afa9182156101ac575f9261115c575b50906020600492604051938480926318160ddd60e01b82525afa80156101ac575f90611128575b6110e49250610fcc565b90815f1904670de0b6b3a7640000118202158102156101d4576040519161110a836105a9565b670de0b6b3a764000002048152670de0b6b3a7640000602082015290565b506020823d602011611154575b81611142602093836105d9565b810103126101d4576110e491516110da565b3d9150611135565b91506020823d602011611189575b81611177602093836105d9565b810103126101d45790519060206110b3565b3d915061116a565b50506020813d6020116111bf575b816111ac602093836105d9565b810103126101d45781611088915161107e565b3d915061119f565b60405163266d6a8360e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691602082602481865afa9182156101ac575f92611340575b506040516278744560e21b815291602083600481875afa9283156101ac575f9361130a575b50611251602091600494610644565b93604051938480926318160ddd60e01b82525afa80156101ac575f906112d6575b61127c9250610644565b90816112ae575050670de0b6b3a76400005b6040519061129b826105a9565b8152670de0b6b3a7640000602082015290565b805f1904670de0b6b3a7640000118102158202156101d457670de0b6b3a7640000020461128e565b506020823d602011611302575b816112f0602093836105d9565b810103126101d45761127c9151611272565b3d91506112e3565b92506020833d602011611338575b81611325602093836105d9565b810103126101d457915191611251611242565b3d9150611318565b9091506020813d60201161136c575b8161135c602093836105d9565b810103126101d45751905f61121d565b3d915061134f565b9050155f611028565b604051636eb1769f60e11b81523060048201526001600160a01b03928316602482018190529392821692602082604481875afa80156101ac575f9061149b575b6113c79250610fcc565b915f8060405194602086019063095ea7b360e01b82528760248801526044870152604486526113f76064876105d9565b85519082855af190611407611596565b82611469575b508161145e575b501561141f57505050565b61145761145c936040519063095ea7b360e01b602083015260248201525f6044820152604481526114516064826105d9565b8261152b565b61152b565b565b90503b15155f611414565b80519192508115918215611481575b5050905f61140d565b6114949250602080918301019101611513565b5f80611478565b506020823d6020116114c7575b816114b5602093836105d9565b810103126101d4576113c791516113bd565b3d91506114a8565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815261145c916114576084836105d9565b908160209103126101d4575180151581036101d45790565b5f806115539260018060a01b03169360208151910182865af161154c611596565b90836115d5565b805190811515918261157b575b50506115695750565b635274afe760e01b5f5260045260245ffd5b61158e9250602080918301019101611513565b155f80611560565b3d156115d0573d9067ffffffffffffffff82116105c557604051916115c5601f8201601f1916602001846105d9565b82523d5f602084013e565b606090565b906115f957508051156115ea57805190602001fd5b63d6bda27560e01b5f5260045ffd5b8151158061162a575b61160a575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561160256fea264697066735822122072a6acb1af5d7f7b4a48c2ff88e7f9fc18a79985403ac1f221926b9de12fd3ab64736f6c634300081b0033","sourceMap":"1156:9136:62:-:0;;;;;;;;;-1:-1:-1;1156:9136:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1156:9136:62;;;;;;;;;;:::i;:::-;6192:1;1156:9136;;;;;;;;;;;-1:-1:-1;;;6217:26:62;;:12;-1:-1:-1;;;;;1156:9136:62;;;;;;;6217:26;;;;;;;1156:9136;6217:26;1156:9136;6217:26;1156:9136;6217:26;;;1156:9136;6205:38;;;;:::i;:::-;-1:-1:-1;;;;;1156:9136:62;;;;;;;-1:-1:-1;;;6265:27:62;;1156:9136;;;;;6265:27;;;;;;;1156:9136;6265:27;;;1156:9136;6253:39;;;;;;:::i;:::-;-1:-1:-1;;;;;1156:9136:62;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1156:9136:62;;;;;;;;;;;;;;;-1:-1:-1;;;;;1156:9136:62;;;;;-1:-1:-1;1156:9136:62;;;;;;;;;;;;;6265:27;;;;1156:9136;6265:27;1156:9136;6265:27;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1156:9136;;;;;;;;;6217:26;;;;;;;;;;;;;;:::i;:::-;;;;1156:9136;;;;;;;;;;-1:-1:-1;;1156:9136:62;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1156:9136:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1156:9136:62;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1156:9136:62;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;5821:20;5803:38;;;:::i;:::-;1156:9136;5869:19;5851:37;;;:::i;:::-;1156:9136;;;5869:19;1156:9136;;;;5916:24;1156:9136;;;;;;5916:24;1156:9136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5821:20;1156:9136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1156:9136:62;;;;;;;;;;:::i;:::-;6615:1;1156:9136;;;;;;;;;;6652:7;1156:9136;;-1:-1:-1;;1156:9136:62;6627:34;;;:::i;:::-;1156:9136;6696:12;1156:9136;;-1:-1:-1;;1156:9136:62;6671:39;;;:::i;:::-;1156:9136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1156:9136:62;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1156:9136:62;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;1156:9136:62;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;1156:9136:62;;;;;;;;;-1:-1:-1;;;;;1156:9136:62;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;1156:9136:62;;;;;-1:-1:-1;1156:9136:62;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;6675:1;1156:9136;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;1313:4::-;;;;;;;;;;:::o;:::-;1156:9136;;;1313:4;;;;;;;;3261:1017;;;;1156:9136;;;;;;;;;;;;;;;;-1:-1:-1;1156:9136:62;;3593:39;1156:9136;;;;-1:-1:-1;1156:9136:62;;-1:-1:-1;1156:9136:62;;;;;;;;;:::i;:::-;;;;;;;;;;;3435:18;1156:9136;;;;;;;:::i;:::-;1313:4;1156:9136;;1313:4;1156:9136;3479:36;;1156:9136;3465:50;1156:9136;;;;3593:39;;:::i;:::-;3589:82;;3701:9;;1313:4;;;;;;;3725:22;4250:21;3725:22;;3721:503;3725:22;;;3788:32;;;:::i;:::-;1156:9136;;;;3834:27;;;;1156:9136;;;;;;:::i;:::-;;;;3894:49;;1156:9136;;3880:11;;:63;3834:139;4262:9;4250:21;;:::i;:::-;1156:9136;4234:13;;1156:9136;3261:1017::o;3834:139::-;;;;;3721:503;4029:31;;;:::i;:::-;1156:9136;;;4074:27;;;;1156:9136;;;;;;:::i;:::-;;;;4134:49;;1156:9136;;4120:11;;:63;3721:503;;3589:82;3648:12;-1:-1:-1;;;;3648:12:62:o;4317:1239::-;1156:9136;;;;;;;:::i;:::-;4508:1;1156:9136;;;;;;;;4485:25;-1:-1:-1;4520:13:62;;;:::i;:::-;1156:9136;-1:-1:-1;4543:13:62;;;:::i;:::-;1156:9136;4571:39;;;;:::i;:::-;4567:83;;-1:-1:-1;;;;;;4685:6:62;1156:9136;;;;4664:28;;;;:55;;;;4317:1239;-1:-1:-1;4660:866:62;;;4907:29;;-1:-1:-1;;;;;4907:29:62;;;:::i;:::-;1156:9136;-1:-1:-1;;;;;4950:29:62;;;:::i;:::-;1156:9136;4317:1239;:::o;4660:866::-;-1:-1:-1;;;;;1156:9136:62;5000:27;4996:530;;4317:1239;:::o;4996:530::-;1156:9136;;-1:-1:-1;;;5065:21:62;;:7;-1:-1:-1;;;;;1156:9136:62;;;5065:21;1156:9136;;5065:21;;;;;;;-1:-1:-1;5065:21:62;;;4996:530;1156:9136;;5369:36;1156:9136;;;;;;;;;;5369:36;;;5065:21;5369:36;;1156:9136;5369:36;;;;;;;-1:-1:-1;5369:36:62;;;4996:530;5357:48;;;;:::i;:::-;1156:9136;5492:23;;;:::i;5369:36::-;;;1156:9136;5369:36;;1156:9136;5369:36;;;;;;1156:9136;5369:36;;;:::i;:::-;;;1156:9136;;;;;5369:36;;;;;;-1:-1:-1;5369:36:62;;5065:21;;;;1156:9136;5065:21;;1156:9136;5065:21;;;;;;1156:9136;5065:21;;;:::i;:::-;;;1156:9136;;;;;;;5065:21;;;;;-1:-1:-1;5065:21:62;;4664:55;4696:23;;;4664:55;;;4567:83;4626:13;;;;;:::o;2416:501::-;;;;1156:9136;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;-1:-1:-1;1156:9136:62;;;;;;2620:50;;2685:39;2620:50;2685:39;;;:::i;:::-;2681:84;;2780:13;-1:-1:-1;2825:3:62;1156:9136;;2795:28;;;;;2879:20;2857:43;2879:20;1156:9136;2879:20;;;:::i;:::-;1313:4;2857:43;;:::i;:::-;2844:56;;;;:::i;:::-;;;;;;:::i;:::-;;1156:9136;2780:13;;2795:28;;;;2416:501::o;2681:84::-;2740:14;-1:-1:-1;;;2740:14:62:o;1156:9136::-;;;;;;;;:::i;:::-;-1:-1:-1;1156:9136:62;;-1:-1:-1;1156:9136:62;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1156:9136:62;;;;;;;:::o;1717:547::-;-1:-1:-1;;;;;1156:9136:62;;;1905:6;1156:9136;;;1884:28;;;;;1717:547;1884:28;:61;;1717:547;1884:108;;;1717:547;1866:205;;;;1717:547;1866:282;;;;;1717:547;1866:323;;;;1717:547;1849:387;;;;1156:9136;1717:547;:::o;1849:387::-;2221:4;2214:11;:::o;1866:323::-;-1:-1:-1;;;;;1156:9136:62;2168:21;;-1:-1:-1;1866:323:62;;;;:282;2092:23;;;;:55;;;1866:282;;;;2092:55;-1:-1:-1;;;;;;1156:9136:62;;;2139:7;1156:9136;;;2119:28;;2092:55;;1866:205;1156:9136;;-1:-1:-1;;;;;;1156:9136:62;;2011:27;;;;;;:59;;1866:205;;;;;;2011:59;2062:7;-1:-1:-1;;;;;1156:9136:62;2042:28;;;-1:-1:-1;2011:59:62;;;1884:108;1969:23;;;;-1:-1:-1;1884:108:62;;:61;1937:7;-1:-1:-1;;;;;1156:9136:62;1916:29;;;;-1:-1:-1;1884:61:62;;7768:1083;-1:-1:-1;;;;;1156:9136:62;;7768:1083;1156:9136;;7894:23;;7890:322;;8247:7;-1:-1:-1;;;;;1156:9136:62;;8226:29;;;1156:9136;;;;-1:-1:-1;;;8290:31:62;;;;;1156:9136;;;;;;8290:31;1156:9136;8290:31;;;;;;;;;;;;;;;8222:623;8407:4;;8414:8;1156:9136;8407:4;;8457:51;8407:4;;8387:10;;8414:8;;:::i;:::-;1156:9136;;-1:-1:-1;;;8457:51:62;;8290:31;8457:51;;1156:9136;;;;8387:10;1156:9136;;;;8407:4;1156:9136;;;;;;;;;;;;;;;;;8457:51;;;;;;;;;;;;;8450:58;;:::o;8457:51::-;;;1156:9136;8457:51;;1156:9136;8457:51;;;;;;1156:9136;8457:51;;;:::i;:::-;;;1156:9136;;;;;8450:58;:::o;8457:51::-;;;-1:-1:-1;8457:51:62;;;1156:9136;;;;;;;;;;8290:31;;;;;;;1156:9136;8290:31;;1156:9136;8290:31;;;;;;1156:9136;8290:31;;;:::i;:::-;;;1156:9136;;;;;;;;;8414:8;8290:31;;;;;-1:-1:-1;8290:31:62;;;1156:9136;;;;;;;;;8222:623;1156:9136;;-1:-1:-1;;;8558:27:62;;;;;1156:9136;;;;;;8558:27;1156:9136;8558:27;;;;;;;;;;;;;;;8222:623;8671:4;;8772:8;8671:4;;8802:32;8671:4;8678:8;1156:9136;8671:4;;;8651:10;8678:8;;:::i;:::-;8772;:::i;:::-;1156:9136;;-1:-1:-1;;;8802:32:62;;8558:27;8802:32;;1156:9136;;;;8651:10;1156:9136;;;;;;;;;;;;;;;;;8558:27;;;;;;;1156:9136;8558:27;;1156:9136;8558:27;;;;;;1156:9136;8558:27;;;:::i;:::-;;;1156:9136;;;;;;;;;8772:8;8558:27;;;;;-1:-1:-1;8558:27:62;;7890:322;1156:9136;;-1:-1:-1;;;7952:27:62;;;;;1156:9136;;;;;-1:-1:-1;1156:9136:62;;7952:7;-1:-1:-1;;;;;1156:9136:62;;;;;7952:27;1156:9136;;7952:27;;;;;;;1156:9136;7952:27;;;7890:322;-1:-1:-1;7993:12:62;-1:-1:-1;;;;;1156:9136:62;7993:38;;;;;1156:9136;;;7952:27;1156:9136;;;;;;;;;7993:38;;;;;;;;;;7890:322;-1:-1:-1;1156:9136:62;;;;8169:32;;8126:8;;1156:9136;8060:6;-1:-1:-1;;;;;1156:9136:62;8126:8;:::i;7993:38::-;8126:8;7993:38;;;1156:9136;7993:38;;1156:9136;8169:32;7993:38;;;:::i;:::-;1156:9136;7993:38;;;;;;;;7952:27;;;1156:9136;7952:27;;1156:9136;7952:27;;;;;;1156:9136;7952:27;;;:::i;:::-;;;1156:9136;;;;;7952:27;;;;;;-1:-1:-1;7952:27:62;;6936:604;-1:-1:-1;;;;;1156:9136:62;7063:23;;7059:117;;7322:49;7241:4;;7248:6;1156:9136;7241:4;;7221:10;7248:6;;:::i;:::-;7291:7;-1:-1:-1;;;;;1156:9136:62;;7270:29;;;1156:9136;;;;;;-1:-1:-1;;;7322:49:62;;;;;1156:9136;;;;7221:10;1156:9136;;;;7241:4;1156:9136;;;;;;;-1:-1:-1;1156:9136:62;;;;;;7322:49;;;;;;;;;;1156:9136;7322:49;;;7315:56;;:::o;7266:268::-;7460:6;;;7488:35;7460:6;;:::i;:::-;1156:9136;;-1:-1:-1;;;7488:35:62;;;;;1156:9136;;;;7221:10;1156:9136;;;;;;;;;;;;;;;;;7059:117;-1:-1:-1;1156:9136:62;;-1:-1:-1;;;7109:56:62;;7154:10;7109:56;;;1156:9136;;;;;;7109:56;;1156:9136;;7109:12;-1:-1:-1;;;;;1156:9136:62;7109:56;;;;;;;1156:9136;7109:56;;;7102:63;;:::o;1156:9136::-;;;;;;;;;;:::o;9141:1149::-;1156:9136;;;;;:::i;:::-;-1:-1:-1;1156:9136:62;;;;;;;;9301:6;-1:-1:-1;;;;;1156:9136:62;;;;;9280:28;;;;:55;;;;9141:1149;-1:-1:-1;9276:1008:62;;;1156:9136;;-1:-1:-1;;;9423:21:62;;:7;-1:-1:-1;;;;;1156:9136:62;;;9423:21;1156:9136;9423:21;1156:9136;;9423:21;;;;;;;;-1:-1:-1;9423:21:62;;;9276:1008;9423:32;;;;:::i;:::-;1156:9136;;;;;;;9495:32;;9423:21;9495:32;;1156:9136;9423:21;9495:32;;;;;;;;;;;-1:-1:-1;9495:32:62;;;9276:1008;1156:9136;;9423:21;;1156:9136;;;;;;;;;;9567:21;;;;;;;;-1:-1:-1;9567:21:62;;;9276:1008;9567:39;;;;:::i;:::-;630:357;;;;;1313:4;630:357;;;;;;;;;1156:9136;;;;;;:::i;:::-;1313:4;630:357;;1156:9136;;1313:4;9423:21;9734:33;;1156:9136;9727:40;:::o;9567:21::-;;9423;9567;;9423;9567;;;;;;1156:9136;9567:21;;;:::i;:::-;;;1156:9136;;;;9567:39;1156:9136;;9567:21;;;;;-1:-1:-1;9567:21:62;;9495:32;;;9423:21;9495:32;;9423:21;9495:32;;;;;;1156:9136;9495:32;;;:::i;:::-;;;1156:9136;;;;;;;9423:21;9495:32;;;;;-1:-1:-1;9495:32:62;;9423:21;;;;;;;;;;;;;1156:9136;9423:21;;;:::i;:::-;;;1156:9136;;;;;9423:32;1156:9136;;9423:21;;;;;-1:-1:-1;9423:21:62;;9276:1008;1156:9136;;-1:-1:-1;;;9873:31:62;;;;;1156:9136;;;9873:7;-1:-1:-1;;;;;1156:9136:62;;;;9873:31;1156:9136;;9873:31;;;;;;;-1:-1:-1;9873:31:62;;;9276:1008;-1:-1:-1;1156:9136:62;;-1:-1:-1;;;9944:21:62;;1156:9136;;;9873:31;1156:9136;9944:21;;;;;;;;-1:-1:-1;9944:21:62;;;9276:1008;9944:42;;1156:9136;9944:42;9873:31;9944:42;;:::i;:::-;1156:9136;;;;;;;;;;10026:21;;;;;;;;-1:-1:-1;10026:21:62;;;9276:1008;10026:32;;;;:::i;:::-;10092:127;:20;;;:127;;1313:4;10092:127;1156:9136;;;;;;:::i;:::-;;;1313:4;1156:9136;10240:33;;1156:9136;10233:40;:::o;10092:127::-;630:357;;;;1313:4;630:357;;;;;;;;;1313:4;630:357;;10092:127;;10026:21;;1156:9136;10026:21;;1156:9136;10026:21;;;;;;1156:9136;10026:21;;;:::i;:::-;;;1156:9136;;;;10026:32;1156:9136;;10026:21;;;;;-1:-1:-1;10026:21:62;;9944;;;1156:9136;9944:21;;1156:9136;9944:21;;;;;;1156:9136;9944:21;;;:::i;:::-;;;1156:9136;;;;;;;9944:42;:21;;;;;-1:-1:-1;9944:21:62;;9873:31;;;;1156:9136;9873:31;;1156:9136;9873:31;;;;;;1156:9136;9873:31;;;:::i;:::-;;;1156:9136;;;;;9873:31;;;;;;;-1:-1:-1;9873:31:62;;9280:55;9312:23;;;9280:55;;;2081:225:32;1156:9136:62;;-1:-1:-1;;;2200:39:32;;2224:4;2200:39;;;1156:9136:62;-1:-1:-1;;;;;1156:9136:62;;;;;;;;;;;;;;;;2200:39:32;1156:9136:62;;2200:39:32;;;;;;-1:-1:-1;2200:39:32;;;2081:225;2278:20;;;;:::i;:::-;1156:9136:62;-1:-1:-1;1156:9136:62;;;3411:47:32;1156:9136:62;3411:47:32;;1156:9136:62;;;;3411:47:32;;;1156:9136:62;3411:47:32;;1156:9136:62;2200:39:32;1156:9136:62;;;2200:39:32;3411:47;;;;;;:::i;:::-;8024:25;;;;;;;;;;:::i;:::-;8066:69;;;2081:225;8066:103;;;;2081:225;3473:45;;3469:201;;2081:225;;;:::o;3469:201::-;3561:43;3646:12;1156:9136:62;;;;;;;;3561:43:32;;;1156:9136:62;3561:43:32;;1156:9136:62;-1:-1:-1;2200:39:32;1156:9136:62;;;2200:39:32;3561:43;;;3411:47;3561:43;;:::i;:::-;;;:::i;:::-;3646:12;:::i;:::-;2081:225::o;8066:103::-;8139:26;;;:30;;8066:103;;;:69;1156:9136:62;;;;-1:-1:-1;8078:22:32;;;:56;;;;8066:69;;;;;;;8078:56;8104:30;;;1156:9136:62;8104:30:32;;;;;;;;:::i;:::-;8078:56;;;;2200:39;;1156:9136:62;2200:39:32;;1156:9136:62;2200:39:32;;;;;;1156:9136:62;2200:39:32;;;:::i;:::-;;;1156:9136:62;;;;2278:20:32;1156:9136:62;;2200:39:32;;;;;-1:-1:-1;2200:39:32;;1702:188;1156:9136:62;;-1:-1:-1;;;1829:53:32;;;;-1:-1:-1;;;;;1156:9136:62;;;1829:53:32;;;1156:9136:62;;;;;;;;;;;;;;;;;1829:53:32;;;;;;;1156:9136:62;1829:53:32;:::i;1156:9136:62:-;;;;;;;;;;;;;;;;;;:::o;6468:629:32:-;2626:1:33;6468:629:32;3304:55:33;6468:629:32;1156:9136:62;;;;;;3256:31:33;;;;;;;;;;;;:::i;:::-;3304:55;;;:::i;:::-;1156:9136:62;;6960:22:32;;;;:57;;;;6468:629;6956:135;;;;6468:629;:::o;6956:135::-;7040:40;;;2626:1:33;7040:40:32;;1156:9136:62;;2626:1:33;7040:40:32;6960:57;6987:30;;;3256:31:33;6987:30:32;;;;;;;;:::i;:::-;6986:31;6960:57;;;;1156:9136:62;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1156:9136:62;;;;;:::i;:::-;;;;-1:-1:-1;1156:9136:62;;;;:::o;:::-;;;:::o;4421:582:33:-;;4593:8;;-1:-1:-1;1156:9136:62;;5674:21:33;:17;;5846:142;;;;;;5670:385;6025:19;;;5694:1;6025:19;;5694:1;6025:19;4589:408;1156:9136:62;;4841:22:33;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:33;4917:24;;;-1:-1:-1;;;;;1156:9136:62;;;;4917:24:33;1156:9136:62;;;4917:24:33;4841:49;4867:18;;;:23;4841:49;","linkReferences":{},"immutableReferences":{"67817":[{"start":1987,"length":32},{"start":2581,"length":32},{"start":3616,"length":32},{"start":4081,"length":32}],"67820":[{"start":155,"length":32},{"start":1222,"length":32},{"start":3517,"length":32},{"start":3985,"length":32}],"67823":[{"start":1161,"length":32},{"start":2111,"length":32},{"start":2719,"length":32},{"start":2794,"length":32},{"start":2856,"length":32},{"start":2927,"length":32},{"start":3449,"length":32},{"start":3780,"length":32},{"start":4156,"length":32},{"start":4573,"length":32}]}},"methodIdentifiers":{"getCapabilities(bytes32,address,address)":"48bd7dfd","getLimits(bytes32,address,address)":"a9270fbe","getPoolIds(uint256,uint256)":"23eeca01","getTokens(bytes32)":"ecbbc033","price(bytes32,address,address,uint256[])":"aad6e488","swap(bytes32,address,address,uint8,uint256)":"8307c655"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_frxEthMinter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_sfrxEth\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"LimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"Unavailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getCapabilities\",\"outputs\":[{\"internalType\":\"enum ISwapAdapterTypes.Capability[]\",\"name\":\"capabilities\",\"type\":\"uint8[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"}],\"name\":\"getLimits\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"limits\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getPoolIds\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"ids\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"getTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_specifiedAmounts\",\"type\":\"uint256[]\"}],\"name\":\"price\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction[]\",\"name\":\"_prices\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"enum ISwapAdapterTypes.OrderSide\",\"name\":\"side\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"calculatedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction\",\"name\":\"price\",\"type\":\"tuple\"}],\"internalType\":\"struct ISwapAdapterTypes.Trade\",\"name\":\"trade\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract only supports: ETH -> sfrxETH and frxETH <-> sfrxETH\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"LimitExceeded(uint256)\":[{\"details\":\"The LimitExceeded error is thrown when a limit has been exceeded. E.g. the specified amount can't be traded safely.\"}],\"NotImplemented(string)\":[{\"details\":\"The NotImplemented error is thrown when a function is not implemented.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}],\"Unavailable(string)\":[{\"details\":\"The Unavailable error is thrown when a pool or swap is not available for unexpected reason. E.g. it was paused due to a bug.\"}]},\"kind\":\"dev\",\"methods\":{\"getCapabilities(bytes32,address,address)\":{\"params\":{\"poolId\":\"The ID of the trading pool.\"},\"returns\":{\"capabilities\":\"An array of Capability.\"}},\"getLimits(bytes32,address,address)\":{\"details\":\"Retrieve the maximum limits of a token that can be traded. The limit is reached when the change in the received amounts is zero or close to zero or when the swap fails because of the pools restrictions. Overestimate if in doubt rather than underestimate. The swap function should not error with `LimitExceeded` if called with amounts below the limit.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\"},\"returns\":{\"limits\":\"An array of size two indicating the limit amount for the sell token (maximum the pool is willing to buy in sell token) as well as the limit amount of the buy token (maximum the pool is willing to sell in buy token).\"}},\"getPoolIds(uint256,uint256)\":{\"details\":\"although FraxV3 frxETH has no pool ids, we return the sFrxETH and frxETHMinter addresses as pools\",\"params\":{\"limit\":\"The maximum number of pool IDs to retrieve.\",\"offset\":\"The starting index from which to retrieve pool IDs.\"},\"returns\":{\"ids\":\"An array of pool IDs.\"}},\"getTokens(bytes32)\":{\"details\":\"Mainly used for testing as this is redundant with the required substreams implementation.\",\"params\":{\"poolId\":\"The ID of the trading pool.\"},\"returns\":{\"tokens\":\"An array of address contracts.\"}},\"price(bytes32,address,address,uint256[])\":{\"details\":\"The returned prices should include all dex fees. In case the fee is dynamic on the amount traded, the returned price is expected to include the minimum fee. Note that the returned price should be the marginal price which is distinct from the executed price `swap(amount_in) / amount_in`! The marginal price is defined as the price to trade an arbitrarily small (almost zero) amount after the trade of (amount). E.g. the marginal price of a uniswap v2 pool at amount=0 is `reserve0/reserve1`. Ideally this method should be implemented, although it is optional as the price function can be numerically derived from the swap function. In case it is not available, it should be flagged via capabilities and calling it should revert using the `NotImplemented` error. The method needs to be implemented as view as this is usually more efficient and can be run in parallel.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\",\"specifiedAmounts\":\"Amounts to calculate marginal prices at.\"},\"returns\":{\"_prices\":\"array of prices as fractions corresponding to the provided amounts.\"}},\"swap(bytes32,address,address,uint8,uint256)\":{\"details\":\"This function should be state modifying, meaning it should actually execute the swap and change the state of the EVM accordingly. Please include a gas usage estimate for each amount. This can be achieved e.g. by using the `gasleft()` function. The return type `Trade` has an attribute called price which should contain the value of `price(specifiedAmount)`. As this is optional, defined via `Capability.PriceFunction`, it is valid to return a Fraction(0, 0) value for this price. In that case the price will be estimated numerically.\",\"params\":{\"buyToken\":\"The token being bought.\",\"sellToken\":\"The token being sold.\",\"side\":\"Either buy or sell.\",\"specifiedAmount\":\"The amount to be traded.\"},\"returns\":{\"trade\":\"The amount of tokens being sold or bought.\"}}},\"title\":\"FraxV3FrxEthAdapter Adapter for frxETH and sfrxETH tokens of FraxV3\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCapabilities(bytes32,address,address)\":{\"notice\":\"Retrieves the capabilities of the selected pool.\"},\"getLimits(bytes32,address,address)\":{\"notice\":\"Retrieves the limits for each token.\"},\"getPoolIds(uint256,uint256)\":{\"notice\":\"Retrieves a range of pool IDs.\"},\"getTokens(bytes32)\":{\"notice\":\"Retrieves the tokens in the selected pool.\"},\"price(bytes32,address,address,uint256[])\":{\"notice\":\"Calculates marginal prices for specified amounts (optional).\"},\"swap(bytes32,address,address,uint8,uint256)\":{\"notice\":\"Executes a swap on the contract.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/sfraxeth/FraxV3FrxEthAdapter.sol\":\"FraxV3FrxEthAdapter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12\",\"dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/sfraxeth/FraxV3FrxEthAdapter.sol\":{\"keccak256\":\"0xdbd9ad99addc8ac7771da9ff88057aac4754af575b8a5f818db47da8f64ff0fa\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://c10e743e259bdb1ac0b38e097bf9009d6b46b5d44e1874d500a7527b4103cc55\",\"dweb:/ipfs/QmdKFhhygHbb8tN448AJAVYt6bdzr68pBKi5CotxEv4WNn\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_frxEthMinter","type":"address"},{"internalType":"address","name":"_sfrxEth","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"type":"error","name":"LimitExceeded"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"NotImplemented"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"Unavailable"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function","name":"getCapabilities","outputs":[{"internalType":"enum ISwapAdapterTypes.Capability[]","name":"capabilities","type":"uint8[]"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"}],"stateMutability":"view","type":"function","name":"getLimits","outputs":[{"internalType":"uint256[]","name":"limits","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPoolIds","outputs":[{"internalType":"bytes32[]","name":"ids","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getTokens","outputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"},{"internalType":"uint256[]","name":"_specifiedAmounts","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"price","outputs":[{"internalType":"struct ISwapAdapterTypes.Fraction[]","name":"_prices","type":"tuple[]","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"},{"internalType":"enum ISwapAdapterTypes.OrderSide","name":"side","type":"uint8"},{"internalType":"uint256","name":"specifiedAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swap","outputs":[{"internalType":"struct ISwapAdapterTypes.Trade","name":"trade","type":"tuple","components":[{"internalType":"uint256","name":"calculatedAmount","type":"uint256"},{"internalType":"uint256","name":"gasUsed","type":"uint256"},{"internalType":"struct ISwapAdapterTypes.Fraction","name":"price","type":"tuple","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"getCapabilities(bytes32,address,address)":{"params":{"poolId":"The ID of the trading pool."},"returns":{"capabilities":"An array of Capability."}},"getLimits(bytes32,address,address)":{"details":"Retrieve the maximum limits of a token that can be traded. The limit is reached when the change in the received amounts is zero or close to zero or when the swap fails because of the pools restrictions. Overestimate if in doubt rather than underestimate. The swap function should not error with `LimitExceeded` if called with amounts below the limit.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold."},"returns":{"limits":"An array of size two indicating the limit amount for the sell token (maximum the pool is willing to buy in sell token) as well as the limit amount of the buy token (maximum the pool is willing to sell in buy token)."}},"getPoolIds(uint256,uint256)":{"details":"although FraxV3 frxETH has no pool ids, we return the sFrxETH and frxETHMinter addresses as pools","params":{"limit":"The maximum number of pool IDs to retrieve.","offset":"The starting index from which to retrieve pool IDs."},"returns":{"ids":"An array of pool IDs."}},"getTokens(bytes32)":{"details":"Mainly used for testing as this is redundant with the required substreams implementation.","params":{"poolId":"The ID of the trading pool."},"returns":{"tokens":"An array of address contracts."}},"price(bytes32,address,address,uint256[])":{"details":"The returned prices should include all dex fees. In case the fee is dynamic on the amount traded, the returned price is expected to include the minimum fee. Note that the returned price should be the marginal price which is distinct from the executed price `swap(amount_in) / amount_in`! The marginal price is defined as the price to trade an arbitrarily small (almost zero) amount after the trade of (amount). E.g. the marginal price of a uniswap v2 pool at amount=0 is `reserve0/reserve1`. Ideally this method should be implemented, although it is optional as the price function can be numerically derived from the swap function. In case it is not available, it should be flagged via capabilities and calling it should revert using the `NotImplemented` error. The method needs to be implemented as view as this is usually more efficient and can be run in parallel.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold.","specifiedAmounts":"Amounts to calculate marginal prices at."},"returns":{"_prices":"array of prices as fractions corresponding to the provided amounts."}},"swap(bytes32,address,address,uint8,uint256)":{"details":"This function should be state modifying, meaning it should actually execute the swap and change the state of the EVM accordingly. Please include a gas usage estimate for each amount. This can be achieved e.g. by using the `gasleft()` function. The return type `Trade` has an attribute called price which should contain the value of `price(specifiedAmount)`. As this is optional, defined via `Capability.PriceFunction`, it is valid to return a Fraction(0, 0) value for this price. In that case the price will be estimated numerically.","params":{"buyToken":"The token being bought.","sellToken":"The token being sold.","side":"Either buy or sell.","specifiedAmount":"The amount to be traded."},"returns":{"trade":"The amount of tokens being sold or bought."}}},"version":1},"userdoc":{"kind":"user","methods":{"getCapabilities(bytes32,address,address)":{"notice":"Retrieves the capabilities of the selected pool."},"getLimits(bytes32,address,address)":{"notice":"Retrieves the limits for each token."},"getPoolIds(uint256,uint256)":{"notice":"Retrieves a range of pool IDs."},"getTokens(bytes32)":{"notice":"Retrieves the tokens in the selected pool."},"price(bytes32,address,address,uint256[])":{"notice":"Calculates marginal prices for specified amounts (optional)."},"swap(bytes32,address,address,uint8,uint256)":{"notice":"Executes a swap on the contract."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/sfraxeth/FraxV3FrxEthAdapter.sol":"FraxV3FrxEthAdapter"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb","urls":["bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12","dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/sfraxeth/FraxV3FrxEthAdapter.sol":{"keccak256":"0xdbd9ad99addc8ac7771da9ff88057aac4754af575b8a5f818db47da8f64ff0fa","urls":["bzz-raw://c10e743e259bdb1ac0b38e097bf9009d6b46b5d44e1874d500a7527b4103cc55","dweb:/ipfs/QmdKFhhygHbb8tN448AJAVYt6bdzr68pBKi5CotxEv4WNn"],"license":"AGPL-3.0-or-later"}},"version":1},"id":62} \ No newline at end of file diff --git a/evm/out/FraxV3FrxEthAdapter.sol/IFrxEth.json b/evm/out/FraxV3FrxEthAdapter.sol/IFrxEth.json deleted file mode 100644 index b607ef1..0000000 --- a/evm/out/FraxV3FrxEthAdapter.sol/IFrxEth.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"balanceOf","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"minters","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"balanceOf(address)":"70a08231","minters(address)":"f46eccc4","totalSupply()":"18160ddd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"minters\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/sfraxeth/FraxV3FrxEthAdapter.sol\":\"IFrxEth\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12\",\"dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/sfraxeth/FraxV3FrxEthAdapter.sol\":{\"keccak256\":\"0xdbd9ad99addc8ac7771da9ff88057aac4754af575b8a5f818db47da8f64ff0fa\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://c10e743e259bdb1ac0b38e097bf9009d6b46b5d44e1874d500a7527b4103cc55\",\"dweb:/ipfs/QmdKFhhygHbb8tN448AJAVYt6bdzr68pBKi5CotxEv4WNn\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"minters","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/sfraxeth/FraxV3FrxEthAdapter.sol":"IFrxEth"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb","urls":["bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12","dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/sfraxeth/FraxV3FrxEthAdapter.sol":{"keccak256":"0xdbd9ad99addc8ac7771da9ff88057aac4754af575b8a5f818db47da8f64ff0fa","urls":["bzz-raw://c10e743e259bdb1ac0b38e097bf9009d6b46b5d44e1874d500a7527b4103cc55","dweb:/ipfs/QmdKFhhygHbb8tN448AJAVYt6bdzr68pBKi5CotxEv4WNn"],"license":"AGPL-3.0-or-later"}},"version":1},"id":62} \ No newline at end of file diff --git a/evm/out/FraxV3FrxEthAdapter.sol/IFrxEthMinter.json b/evm/out/FraxV3FrxEthAdapter.sol/IFrxEthMinter.json deleted file mode 100644 index 3d7bece..0000000 --- a/evm/out/FraxV3FrxEthAdapter.sol/IFrxEthMinter.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"DEPOSIT_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"currentWithheldETH","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"frxETHToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"sfrxETHToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"submit","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"submitAndDeposit","inputs":[{"name":"recipient","type":"address","internalType":"address"}],"outputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"DEPOSIT_SIZE()":"36bf3325","currentWithheldETH()":"8e69d7ad","frxETHToken()":"ba947f27","sfrxETHToken()":"1c568db6","submit()":"5bcb2fc6","submitAndDeposit(address)":"4dcd4547"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"DEPOSIT_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentWithheldETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"frxETHToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sfrxETHToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"submit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"submitAndDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"submit()\":{\"notice\":\"Mint frxETH to the sender depending on the ETH value sent\"},\"submitAndDeposit(address)\":{\"notice\":\"Mint frxETH and deposit it to receive sfrxETH in one transaction\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/sfraxeth/FraxV3FrxEthAdapter.sol\":\"IFrxEthMinter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12\",\"dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/sfraxeth/FraxV3FrxEthAdapter.sol\":{\"keccak256\":\"0xdbd9ad99addc8ac7771da9ff88057aac4754af575b8a5f818db47da8f64ff0fa\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://c10e743e259bdb1ac0b38e097bf9009d6b46b5d44e1874d500a7527b4103cc55\",\"dweb:/ipfs/QmdKFhhygHbb8tN448AJAVYt6bdzr68pBKi5CotxEv4WNn\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSIT_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"currentWithheldETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"frxETHToken","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"sfrxETHToken","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"payable","type":"function","name":"submit"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"stateMutability":"payable","type":"function","name":"submitAndDeposit","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{"submit()":{"notice":"Mint frxETH to the sender depending on the ETH value sent"},"submitAndDeposit(address)":{"notice":"Mint frxETH and deposit it to receive sfrxETH in one transaction"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/sfraxeth/FraxV3FrxEthAdapter.sol":"IFrxEthMinter"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb","urls":["bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12","dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/sfraxeth/FraxV3FrxEthAdapter.sol":{"keccak256":"0xdbd9ad99addc8ac7771da9ff88057aac4754af575b8a5f818db47da8f64ff0fa","urls":["bzz-raw://c10e743e259bdb1ac0b38e097bf9009d6b46b5d44e1874d500a7527b4103cc55","dweb:/ipfs/QmdKFhhygHbb8tN448AJAVYt6bdzr68pBKi5CotxEv4WNn"],"license":"AGPL-3.0-or-later"}},"version":1},"id":62} \ No newline at end of file diff --git a/evm/out/FraxV3FrxEthAdapter.sol/ISfrxEth.json b/evm/out/FraxV3FrxEthAdapter.sol/ISfrxEth.json deleted file mode 100644 index 210cd5f..0000000 --- a/evm/out/FraxV3FrxEthAdapter.sol/ISfrxEth.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"asset","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ERC20"}],"stateMutability":"view"},{"type":"function","name":"balanceOf","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"}],"outputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"mint","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"}],"outputs":[{"name":"assets","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"previewDeposit","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"previewMint","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"previewRedeem","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"previewWithdraw","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"redeem","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"assets","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"storedTotalAssets","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalAssets","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdraw","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"asset()":"38d52e0f","balanceOf(address)":"70a08231","deposit(uint256,address)":"6e553f65","mint(uint256,address)":"94bf804d","previewDeposit(uint256)":"ef8b30f7","previewMint(uint256)":"b3d7f6b9","previewRedeem(uint256)":"4cdad506","previewWithdraw(uint256)":"0a28a477","redeem(uint256,address,address)":"ba087652","storedTotalAssets()":"61c1c5e9","totalAssets()":"01e1d114","totalSupply()":"18160ddd","withdraw(uint256,address,address)":"b460af94"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"contract ERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"storedTotalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"balanceOf(address)\":{\"details\":\"even though the balance address of frxETH token is around 223,701 tokens, it returns 0 when the address of frxEth is passed as an argument\"},\"totalSupply()\":{\"details\":\"returns the totalSupply of frxETH\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"totalAssets()\":{\"notice\":\"Compute the amount of tokens available to share holders\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/sfraxeth/FraxV3FrxEthAdapter.sol\":\"ISfrxEth\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12\",\"dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/sfraxeth/FraxV3FrxEthAdapter.sol\":{\"keccak256\":\"0xdbd9ad99addc8ac7771da9ff88057aac4754af575b8a5f818db47da8f64ff0fa\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://c10e743e259bdb1ac0b38e097bf9009d6b46b5d44e1874d500a7527b4103cc55\",\"dweb:/ipfs/QmdKFhhygHbb8tN448AJAVYt6bdzr68pBKi5CotxEv4WNn\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"asset","outputs":[{"internalType":"contract ERC20","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deposit","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"mint","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function","name":"previewDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function","name":"previewMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function","name":"previewRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function","name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"redeem","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"storedTotalAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"withdraw","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"balanceOf(address)":{"details":"even though the balance address of frxETH token is around 223,701 tokens, it returns 0 when the address of frxEth is passed as an argument"},"totalSupply()":{"details":"returns the totalSupply of frxETH"}},"version":1},"userdoc":{"kind":"user","methods":{"totalAssets()":{"notice":"Compute the amount of tokens available to share holders"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/sfraxeth/FraxV3FrxEthAdapter.sol":"ISfrxEth"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb","urls":["bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12","dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/sfraxeth/FraxV3FrxEthAdapter.sol":{"keccak256":"0xdbd9ad99addc8ac7771da9ff88057aac4754af575b8a5f818db47da8f64ff0fa","urls":["bzz-raw://c10e743e259bdb1ac0b38e097bf9009d6b46b5d44e1874d500a7527b4103cc55","dweb:/ipfs/QmdKFhhygHbb8tN448AJAVYt6bdzr68pBKi5CotxEv4WNn"],"license":"AGPL-3.0-or-later"}},"version":1},"id":62} \ No newline at end of file diff --git a/evm/out/FraxV3FrxEthAdapter.t.sol/FraxV3FrxEthAdapterTest.json b/evm/out/FraxV3FrxEthAdapter.t.sol/FraxV3FrxEthAdapterTest.json deleted file mode 100644 index 8f5c899..0000000 --- a/evm/out/FraxV3FrxEthAdapter.t.sol/FraxV3FrxEthAdapterTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"fractionToInt","inputs":[{"name":"price","type":"tuple","internalType":"struct ISwapAdapterTypes.Fraction","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"runPoolBehaviourTest","inputs":[{"name":"adapter","type":"address","internalType":"contract ISwapAdapter"},{"name":"poolIds","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stringPctgs","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testGetCapabilitiesFraxEthV3","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testGetLimitsFraxEthV3","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testGetTokensFraxEthV3","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPriceFuzzFraxEthV3FraxEth","inputs":[{"name":"amount0","type":"uint256","internalType":"uint256"},{"name":"amount1","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPriceKeepingSellEthFraxEthV3","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPriceKeepingSellFraxEthFraxEthV3","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPriceKeepingSellSFraxEthFraxEthV3","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapFuzzFraxEthV3WithSFraxEth","inputs":[{"name":"specifiedAmount","type":"uint256","internalType":"uint256"},{"name":"isBuy","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapFuzzsFraxEthV3WithFraxEth","inputs":[{"name":"specifiedAmount","type":"uint256","internalType":"uint256"},{"name":"isBuy","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LimitExceeded","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotImplemented","inputs":[{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"Unavailable","inputs":[{"name":"reason","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x6080604052346102be57600160ff19600c541617600c55600160ff19601e541617601e556040516080810181811060018060401b0382111761020c5760405261004860406102c2565b6002815261302560f01b6020820152815261006360406102c2565b6004815263302e312560e01b6020820152602082015261008360406102c2565b600381526235302560e81b602082015260408201526100a260406102c2565b60048152633130302560e01b60208201526060820152601f546004601f5580600410610220575b50601f5f9081525f5160206187425f395f51905f52915b600482106100f75760405161840c90816103368239f35b80518051906001600160401b03821161020c5761011485546102e7565b601f81116101d1575b50602090601f83116001146101685792826001949360209386955f9261015d575b50505f19600383901b1c191690841b1786555b019301910190916100e0565b015190505f8061013e565b90601f19831691865f52815f20925f5b8181106101b957509360209360019693879693838895106101a1575b505050811b018655610151565b01515f1960f88460031b161c191690555f8080610194565b82840151855560019094019360209384019301610178565b6101fc90865f5260205f20601f850160051c81019160208610610202575b601f0160051c019061031f565b5f61011d565b90915081906101ef565b634e487b7160e01b5f52604160045260245ffd5b601f5f525f5160206187425f395f51905f52017fa03837a25210ee280c2113ff4b77ca23440b19d4866cca721c801278fd08d80b5b81811061026257506100c9565b8061026f600192546102e7565b8061027c575b5001610255565b601f8111831461029157505f81555b5f610275565b6102ad90825f5283601f60205f20920160051c8201910161031f565b805f525f602081208183555561028b565b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761020c57604052565b90600182811c92168015610315575b602083101461030157565b634e487b7160e01b5f52602260045260245ffd5b91607f16916102f6565b81811061032a575050565b5f815560010161031f56fe610160806040526004361015610013575f80fd5b5f905f3560e01c90816308c417451461367e575080630a9254e41461344f57806310033ae4146132b15780631a91bcf0146131cc5780631ed7831c1461314e578063226212a2146130005780632ade388014612e415780632b72882614612b4957806334529dcb146129ee5780633e5e3c23146129705780633f7286f4146128f257806366d9a9a01461274457806375c04aa714611b7e57806385226c8114611aec5780638681f5b8146118ff578063916a17c614611673578063a00872f114611607578063a11c799814611479578063b5508aa9146113e0578063ba414fa6146113bb578063bfdaf70f14610410578063d170c3cc146101da578063e20c9f711461014c5763fa7626d414610127575f80fd5b34610149578060031936011261014957602060ff601e54166040519015158152f35b80fd5b503461014957806003193601126101495760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b8181106101bb576101b7856101ab818703826136ed565b6040519182918261370e565b0390f35b82546001600160a01b0316845260209093019260019283019201610194565b5034610149576040366003190112610149576004356001600160a01b03811680820361040c57602435916001600160401b03831161040857366023840112156104085782600401359261022c8461399e565b9361023a60405195866136ed565b8085526024602086019160051b8301019136831161040457602401905b8282106103f45750505061026a83613ab9565b51604051906348bd7dfd60e01b82526004820152846024820152846044820152848160648183875af180156103e9576102aa9186916103c7575b50614084565b1591845b84518110156103c3576102c18186613ad6565b51906040519163ecbbc03360e01b83526004830152868260248183875af180156103b85785610390916001948a91610396575b5061030f86868060a01b0361030884613ab9565b511661412f565b61032286868060a01b0361030884613ac6565b61035a82610330868c613ad6565b51878060a01b0361034085613ab9565b5116888060a01b0361035186613ac6565b5116918b614271565b610364848a613ad6565b5190858060a01b0361037582613ac6565b511690610387878060a01b0391613ab9565b51169188614271565b016102ae565b6103b291503d808c833e6103aa81836136ed565b810190613dd8565b5f6102f4565b6040513d89823e3d90fd5b8580f35b6103e391503d8088833e6103db81836136ed565b810190613c5d565b5f6102a4565b6040513d87823e3d90fd5b8135815260209182019101610257565b8680fd5b8380fd5b8280fd5b50346101495761041f36613823565b5f5160206183775f395f51905f523b1561040c57604051632631f2b160e11b8152600183116004820152839081816024815f5160206183775f395f51905f525afa8015610c52576113a6575b50501561139f576001905b60205460215460405163549387df60e11b8152600481018690525f5160206183975f395f51905f5260248201526001600160a01b0391821660448201529391859185916064918391165afa928315610c7e57849361137b575b50600281101561136757836001821493845f14610e23576104ef90613ac6565b5183105f5160206183775f395f51905f523b15610e1f5760405190632631f2b160e11b8252600482015281816024815f5160206183775f395f51905f525afa8015610c5257610e0a575b508060405160208101906370a0823160e01b8252306024820152602481526105626044826136ed565b51905f5160206183975f395f51905f525afa5061058f6105806158da565b60208082518301019101613a9d565b50601180546001600160a01b0319165f5160206183975f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b811015610df6576105e48160016105fd9301600e556138a1565b919091309083549060031b91821b915f19901b19161790565b905560018060a01b0360115416600f5460e01b6010549061061c615c0c565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b169081895260205260408820604051602081019061066e81610660888886615bf5565b03601f1981018352826136ed565b519020895260205260ff600360408a2001541615610de8575b6001600160a01b0384165f908152600d602052604090209088526020526106606106c06040892093604051928391602083019586615bf5565b519020865260205284604081209160018301549260028101546106e38186613aac565b610cc6578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f5160206183775f395f51905f525afa968715610aa0578697610c8d575b506001908201610100031b5f1901811b1986165f5160206183775f395f51905f523b15610c89576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528381606481835f5160206183775f395f51905f525af1908115610c7e578491610c69575b50506107b8615dc5565b9015908115610c5d575b50610b7157505050506107d36168fa565b6020805460405163095ea7b360e01b81526001600160a01b0390911660048201525f196024820152929083604481885f5160206183975f395f51905f525af19283156103e957602493610b42575b505b6022546040516370a0823160e01b81523060048201529360209185919082906001600160a01b03165afa9283156103e9578593610b0e575b506040516370a0823160e01b8152306004820152926020846024815f5160206183975f395f51905f525afa938415610aa0578694610ada575b506040516278744560e21b81526020816004815f5160206183975f395f51905f525afa80156103b857610aab575b50602054602154604051638307c65560e01b8152600481018990525f5160206183975f395f51905f5260248201526001600160a01b039182166044820152606481019590955260848501849052608091859160a49183918b91165af1928315610aa0578693610a6f575b506022546040516370a0823160e01b815230600482015290602090829060249082906001600160a01b03165afa9081156103b8578791610a3d575b506040516370a0823160e01b8152306004820152956020876024815f5160206183975f395f51905f525afa968715610a325788976109fa575b5084516109ab578780f35b156109de576109d395926109c66109c695936109cc93613c50565b90614035565b5192613c50565b5f8080808080808780f35b936109c69391926109c66109f5976109cc93613c50565b6109d3565b9096506020813d602011610a2a575b81610a16602093836136ed565b81010312610a265751955f6109a0565b5f80fd5b3d9150610a09565b6040513d8a823e3d90fd5b90506020813d602011610a67575b81610a58602093836136ed565b81010312610a2657515f610967565b3d9150610a4b565b610a9291935060803d608011610a99575b610a8a81836136ed565b810190613d71565b915f61092c565b503d610a80565b6040513d88823e3d90fd5b6020813d602011610ad2575b81610ac4602093836136ed565b81010312610a2657516108c2565b3d9150610ab7565b9093506020813d602011610b06575b81610af6602093836136ed565b81010312610a265751925f610894565b3d9150610ae9565b9092506020813d602011610b3a575b81610b2a602093836136ed565b81010312610a265751915f61085b565b3d9150610b1d565b610b639060203d602011610b6a575b610b5b81836136ed565b810190613d59565b505f610821565b503d610b51565b82945054905f5160206183775f395f51905f523b1561040c576040516370ca10bb60e01b81526001600160a01b039091166004820152602481019190915260448101929092528180606481015b0381835f5160206183775f395f51905f525af18015610c5257610c3d575b60405162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b610c488280926136ed565b6101495780610bdc565b6040513d84823e3d90fd5b5f19141590505f6107c2565b81610c73916136ed565b61040c57825f6107ae565b6040513d86823e3d90fd5b8580fd5b955095506020853d602011610cbe575b81610caa602093836136ed565b81010312610a265793519489949081610734565b3d9150610c9d565b610cd1849186613aac565b610100036101008111610dd45760ff8111610dd45760405163348051d760e11b8152600190911b600482015281816024815f5160206183775f395f51905f525afa908115610c5257606a60209284610d8c93610dac9692610db0575b506040519485925f5160206183b75f395f51905f52828501525f5160206183575f395f51905f52604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f1981018352826136ed565b60405162461bcd60e51b8152602060048201529182916024830190613750565b0390fd5b610dcd9192503d8084833e610dc581836136ed565b810190613a3b565b9086610d2d565b634e487b7160e01b82526011600452602482fd5b610df061603f565b50610687565b634e487b7160e01b85526041600452602485fd5b81610e14916136ed565b61040857835f610539565b5080fd5b610e2f90949394613ab9565b5184105f5160206183775f395f51905f523b15610e1f5760405190632631f2b160e11b8252600482015281816024815f5160206183775f395f51905f525afa8015610c5257611352575b508060405160208101906370a0823160e01b825230602482015260248152610ea26044826136ed565b51905f5160206183975f395f51905f525afa50610ec06105806158da565b50601180546001600160a01b0319165f5160206183975f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b811015610df6576105e4816001610f159301600e556138a1565b905560018060a01b036011541692600f5460e01b60105490610f35615c0c565b6001600160a01b0387165f908152600d60205260409020909163ffffffff60e01b1690818952602052604088206040516020810190610f7981610660888886615bf5565b519020895260205260ff600360408a2001541615611344575b6001600160a01b0387165f908152600d60205260409020908852602052610660610fcb6040892093604051928391602083019586615bf5565b51902086526020528460408120946001860154956002810154610fee8189613aac565b611210575b8154604051630667f9d760e41b81526001600160a01b0385166004820152602481018290529890919060208a6044815f5160206183775f395f51905f525afa998a15610aa057869a6111d7575b506001908201610100031b5f1901811b198916915f5160206183775f395f51905f523b15610c89576040516370ca10bb60e01b81526001600160a01b038616600482015260248101919091529086901b9190911760448201528381606481835f5160206183775f395f51905f525af1908115610c7e5784916111c2575b5050836110c8615dc5565b9190159182156111b7575b50506111655750505061111e9293506110ea6168fa565b6020805460405163095ea7b360e01b81526001600160a01b0390911660048201526024810183905293849081906044820190565b0381885f5160206183975f395f51905f525af19283156103e957602493611146575b50610823565b61115e9060203d602011610b6a57610b5b81836136ed565b505f611140565b8691839154905f5160206183775f395f51905f523b1561040c576040516370ca10bb60e01b81526001600160a01b03909116600482015260248101919091526044810192909252818060648101610bbe565b14159050845f6110d3565b816111cc916136ed565b61040c57825f6110bd565b955098506020853d602011611208575b816111f4602093836136ed565b81010312610a265793519789949081611040565b3d91506111e7565b9091925061121e8188613aac565b6101000361010081116113305760ff81116113305760405163348051d760e11b8152600190911b6004820181905289826024815f5160206183775f395f51905f525afa801561132557606a6112d6916020948d9161130b575b506040519485915f5160206183b75f395f51905f52828401525f5160206183575f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018d838201520301601f1981018452836136ed565b8510156112e7575090879291610ff3565b60405162461bcd60e51b815260206004820152908190610dac906024830190613750565b61131f91503d808f833e610dc581836136ed565b5f611277565b6040513d8c823e3d90fd5b634e487b7160e01b89526011600452602489fd5b61134c61603f565b50610f92565b8161135c916136ed565b61040857835f610e79565b634e487b7160e01b84526021600452602484fd5b6113989193503d8086833e61139081836136ed565b810190613ce0565b915f6104cf565b8190610476565b816113b0916136ed565b61040c57825f61046b565b503461014957806003193601126101495760206113d6613e62565b6040519015158152f35b50346101495780600319360112610149576019546113fd8161399e565b9161140b60405193846136ed565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b83831061144d57604051806101b78782613842565b60016020819260405161146b81611464818961391d565b03826136ed565b815201920192019190611438565b503461014957806003193601126101495760205460405163ecbbc03360e01b81526004810183905282918290829060249082906001600160a01b03165afa908115610c525782916115ed575b506001600160a01b036114d782613ab9565b516021549116906001600160a01b03165f5160206183775f395f51905f523b156115e8576040516328a9b0fb60e11b81526001600160a01b0392831660048201529116602482015282816044815f5160206183775f395f51905f525afa9081156115dd5783916115c8575b506001600160a01b03916115569150613ac6565b51165f5160206183775f395f51905f523b156115c557604051906328a9b0fb60e11b825260048201525f5160206183975f395f51905f52602482015281816044815f5160206183775f395f51905f525afa8015610c52576115b45750f35b816115be916136ed565b6101495780f35b50fd5b816115d2916136ed565b6115c557815f611542565b6040513d85823e3d90fd5b505050fd5b61160191503d8084833e6103aa81836136ed565b5f6114c5565b503461014957602036600319011261014957600435601f54811015610e1f5761162f906138cd565b91909161165f576040516101b79061164b81611464818761391d565b604051918291602083526020830190613750565b634e487b7160e01b81526004819052602490fd5b5034610149578060031936011261014957601c546116908161399e565b9061169e60405192836136ed565b808252601c8352827f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b8383106116e157604051806101b78782613774565b6040516116ed816136b7565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b8160078401106118605784600197946002979460209794611778945491818110611844575b818110611828575b81811061180c575b8181106117f0575b8181106117d4575b8181106117b8575b81811061179e575b1061178a575b5003826136ed565b838201528152019201920191906116cc565b6001600160e01b031916815286015f611770565b828a1b6001600160e01b0319168452928901928b0161176a565b604083901b6001600160e01b0319168452928901928b01611762565b606083901b6001600160e01b0319168452928901928b0161175a565b608083901b6001600160e01b0319168452928901928b01611752565b60a083901b6001600160e01b0319168452928901928b0161174a565b60c083901b6001600160e01b0319168452928901928b01611742565b60e083901b6001600160e01b0319168452928901928b0161173a565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e0820152019401920191611715565b50346101495780600319360112610149576101608160405161192183826136ed565b600a81526020810192601f1901368437815b600a8110611a7e575060205460215460405163155adc9160e31b8152600481018590525f5160206183975f395f51905f5260248201526001600160a01b0391821660448201526080606482015292516084840181905292948593919092169160a4840191855b818110611a62575050508290039082905afa908115610c52578291611a40575b50815b600981106119c8578280f35b6119d28183613ad6565b516001820190818311611a2c576020611a1883611a0a611a03611a26956119fc600199988b613ad6565b5190613efd565b890b613f3b565b611a2083611a18878a613ad6565b510151613f96565b86613ad6565b016119bc565b634e487b7160e01b85526011600452602485fd5b611a5c91503d8084833e611a5481836136ed565b810190613b12565b5f6119b9565b8251845288965087955060209384019390920191600101611999565b9092915060018101808211611a2c57806103e802906103e882048103611ad857683635c9adc5dea000000290808204670de0b6b3a76400001490151715611a2c5790600191611acd8286613ad6565b520191839192611933565b634e487b7160e01b86526011600452602486fd5b5034610149578060031936011261014957601a54611b098161399e565b91611b1760405193846136ed565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b838310611b5957604051806101b78782613842565b600160208192604051611b7081611464818961391d565b815201920192019190611b44565b503461014957611b8d36613823565b5f5160206183775f395f51905f523b1561040c57604051632631f2b160e11b8152600183116004820152839081816024815f5160206183775f395f51905f525afa8015610c525761272f575b505015612728576001905b60205460215460405163549387df60e11b8152600481018690526001600160a01b0391821660248201525f5160206183975f395f51905f5260448201529291859184916064918391165afa918215610c7e57849261270c575b50600283101561136757836001841492835f146122a857611c5d90613ac6565b5182105f5160206183775f395f51905f523b15610e1f5760405190632631f2b160e11b8252600482015281816024815f5160206183775f395f51905f525afa8015610c5257612293575b5050611d0f60018060a01b0360225416858060405160208101906370a0823160e01b825230602482015260248152611ce06044826136ed565b5190845afa50611cf16105806158da565b5060018060a01b03166001600160601b0360a01b6011541617601155565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015610df65790611d476105e483600188969501600e556138a1565b905560018060a01b0360115416600f5460e01b60105490611d66615c0c565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818852602052604087206040516020810190611daa81610660888886615bf5565b519020885260205260ff60036040892001541615612285575b6001600160a01b0384165f908152600d60205260409020908752602052610660611dfc6040882093604051928391602083019586615bf5565b519020855260205260408420906001820154916002810154611e1e8185613aac565b61227a578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052949091906020866044815f5160206183775f395f51905f525afa95861561226f578996612236575b506001908201610100031b5f1901811b1985165f5160206183775f395f51905f523b15612232576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528681606481835f5160206183775f395f51905f525af19081156103b857879161221d575b5050611ef3615dc5565b9015908115612211575b506121bd57505050611f0d6168fa565b6022546020805460405163095ea7b360e01b81526001600160a01b0391821660048201525f19602482015295919286926044928492165af19283156103e95760249361219e575b505b6022546040516370a0823160e01b81523060048201529360209185919082906001600160a01b03165afa9283156103e957859361216a575b506040516370a0823160e01b81523060048201526020816024815f5160206183975f395f51905f525afa908115610aa0578691612138575b50602054602154604051638307c65560e01b8152600481018990526001600160a01b0391821660248201525f5160206183975f395f51905f526044820152606481019790975260848701849052608091879160a49183918b91165af1928315610aa0576024958794612117575b506022546040516370a0823160e01b81523060048201529660209188919082906001600160a01b03165afa9586156103b85787966120e3575b506040516370a0823160e01b8152306004820152906020826024815f5160206183975f395f51905f525afa918215610a325788926120af575084516109ab578780f35b9091506020813d6020116120db575b816120cb602093836136ed565b81010312610a265751905f6109a0565b3d91506120be565b9095506020813d60201161210f575b816120ff602093836136ed565b81010312610a265751945f61206c565b3d91506120f2565b61213191945060803d608011610a9957610a8a81836136ed565b925f612033565b90506020813d602011612162575b81612153602093836136ed565b81010312610a2657515f611fc6565b3d9150612146565b9092506020813d602011612196575b81612186602093836136ed565b81010312610a265751915f611f8e565b3d9150612179565b6121b69060203d602011610b6a57610b5b81836136ed565b505f611f54565b92509250935054905f5160206183775f395f51905f523b1561040c576040516370ca10bb60e01b81526001600160a01b03909116600482015260248101919091526044810192909252818060648101610bbe565b5f19141590505f611efd565b81612227916136ed565b610c8957855f611ee9565b8880fd5b985094506020883d602011612267575b81612253602093836136ed565b81010312610a265796518997909481611e6f565b3d9150612246565b6040513d8b823e3d90fd5b610cd1879185613aac565b61228d61603f565b50611dc3565b8161229d916136ed565b61040857835f611ca7565b6122b59094939294613ab9565b5184105f5160206183775f395f51905f523b15610e1f5760405190632631f2b160e11b8252600482015281816024815f5160206183775f395f51905f525afa8015610c52576126f7575b505061233860018060a01b0360225416858060405160208101906370a0823160e01b825230602482015260248152611ce06044826136ed565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015610df6576105e481600161236d9301600e556138a1565b905560018060a01b036011541692600f5460e01b6010549061238d615c0c565b6001600160a01b0387165f908152600d60205260409020909163ffffffff60e01b16908189526020526040882060405160208101906123d181610660888886615bf5565b519020895260205260ff600360408a20015416156126e9575b6001600160a01b0387165f908152600d602052604090209088526020526106606124236040892093604051928391602083019586615bf5565b519020865260205284604081209460018601549560028101546124468189613aac565b612613575b8154604051630667f9d760e41b81526001600160a01b0385166004820152602481018290529890919060208a6044815f5160206183775f395f51905f525afa998a15610aa057869a6125da575b506001908201610100031b5f1901811b198916915f5160206183775f395f51905f523b15610c89576040516370ca10bb60e01b81526001600160a01b038616600482015260248101919091529086901b9190911760448201528381606481835f5160206183775f395f51905f525af1908115610c7e5784916125c5575b505083612520615dc5565b9190159182156125ba575b5050611165575050506125829293506125426168fa565b6022546020805460405163095ea7b360e01b81526001600160a01b0391821660048201526024810185905295919286929116908290899082906044820190565b03925af19283156103e95760249361259b575b50611f56565b6125b39060203d602011610b6a57610b5b81836136ed565b505f612595565b14159050845f61252b565b816125cf916136ed565b61040c57825f612515565b955098506020853d60201161260b575b816125f7602093836136ed565b81010312610a265793519789949081612498565b3d91506125ea565b909192506126218188613aac565b6101000361010081116113305760ff81116113305760405163348051d760e11b8152600190911b6004820181905289826024815f5160206183775f395f51905f525afa801561132557606a6126d8916020948d9161130b57506040519485915f5160206183b75f395f51905f52828401525f5160206183575f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018d838201520301601f1981018452836136ed565b8510156112e757509087929161244b565b6126f161603f565b506123ea565b81612701916136ed565b61040857835f6122ff565b6127219192503d8086833e61139081836136ed565b905f611c3d565b8190611be4565b81612739916136ed565b61040c57825f611bd9565b5034610149578060031936011261014957601b546127618161399e565b9061276f60405192836136ed565b808252601b8352827f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1602084015b8383106127b257604051806101b78782613774565b6040516127be816136b7565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b8160078401106128535784600197946002979460209794612841945491818110611844578181106118285781811061180c578181106117f0578181106117d4578181106117b85781811061179e571061178a575003826136ed565b8382015281520192019201919061279d565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e08201520194019201916127e6565b503461014957806003193601126101495760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b818110612951576101b7856101ab818703826136ed565b82546001600160a01b031684526020909301926001928301920161293a565b503461014957806003193601126101495760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b8181106129cf576101b7856101ab818703826136ed565b82546001600160a01b03168452602090930192600192830192016129b8565b503461014957806003193601126101495760205460215460405163549387df60e11b8152600481018490526001600160a01b03918216602482018190525f5160206183975f395f51905f526044830152929091169183908183606481875afa928315610c52578293612b2d575b50612a668351613fe5565b60405163549387df60e11b81528260048201528260248201525f5160206183975f395f51905f5260448201528281606481885afa80156115dd57612b15575b50612ab08351613fe5565b60646040518095819363549387df60e11b83528560048401525f5160206183975f395f51905f52602484015260448301525afa9182156115dd57612afa92612afd575b5051613fe5565b80f35b612b10903d8086833e61139081836136ed565b612af3565b612b28903d8085833e61139081836136ed565b612aa5565b612b429193503d8084833e61139081836136ed565b915f612a5b565b50346101495760403660031901126101495760043560243560018060a01b03602054169060018060a01b0360215416908460405163549387df60e11b81528160048201528360248201525f5160206183975f395f51905f5260448201528181606481885afa908115610c52578291612e27575b50612bc681613ab9565b5186105f5160206183775f395f51905f523b1561040c5760405190632631f2b160e11b8252600482015282816024815f5160206183775f395f51905f525afa9081156115dd578391612e12575b50505f5160206183775f395f51905f523b15610e1f57604051632631f2b160e11b815260018711600482015282816024815f5160206183775f395f51905f525afa9081156115dd578391612dfd575b5050612c6d90613ab9565b5182105f5160206183775f395f51905f523b15610e1f5760405190632631f2b160e11b8252600482015281816024815f5160206183775f395f51905f525afa8015610c5257612de8575b50505f5160206183775f395f51905f523b15612de457604051632631f2b160e11b815260018211600482015285816024815f5160206183775f395f51905f525afa8015610aa057612dcf575b5091849391612d58959360405193612d1c6060866136ed565b600285526040366020870137612d3185613ab9565b52612d3b84613ac6565b5260405180968194829363155adc9160e31b845260048401613b96565b03915afa918215612dc2578192612da6575b50805b8251811015612da25780612d8d612d8660019386613ad6565b5151613f96565b612d9c6020611a188387613ad6565b01612d6d565b5080f35b612dbb9192503d8084833e611a5481836136ed565b905f612d6a565b50604051903d90823e3d90fd5b612dda8680926136ed565b612de4575f612d03565b8480fd5b81612df2916136ed565b612de457845f612cb7565b81612e07916136ed565b610e1f57815f612c62565b81612e1c916136ed565b610e1f57815f612c13565b612e3b91503d8084833e61139081836136ed565b5f612bbc565b5034610149578060031936011261014957601d54612e5e8161399e565b612e6b60405191826136ed565b818152601d83526020810191837f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f845b838310612f6f5786858760405192839260208401906020855251809152604084019160408260051b8601019392815b838310612ed75786860387f35b919395509193603f198782030183528551906020604082019260018060a01b0381511683520151916040602083015282518091526060820190602060608260051b850101940192855b828110612f4457505050505060208060019297019301930190928695949293612eca565b9091929394602080612f62600193605f198782030189528951613750565b9701950193929101612f20565b604051612f7b816136b7565b82546001600160a01b03168152600183018054612f978161399e565b91612fa560405193846136ed565b8183528a526020808b20908b9084015b838210612fdb575050505060019282602092836002950152815201920192019190612e9b565b600160208192604051612ff281611464818a61391d565b815201930191019091612fb5565b503461014957806003193601126101495760405161016061302181836136ed565b600a8252601f190136602083013781805b600a81106130e4575060205460215460405163155adc9160e31b81529384926001600160a01b03908116928492839261306f921660048401613b96565b03915afa908115610c525782916130ca575b50815b60098110613090578280f35b61309a8183613ad6565b516001820190818311611a2c576020611a1883611a0a611a036130c4956119fc600199988b613ad6565b01613084565b6130de91503d8084833e611a5481836136ed565b5f613081565b90506001810180821161313a57806103e802906103e882048103611a2c57683635c9adc5dea000000290808204670de0b6b3a7640000149015171561313a57906001916131318285613ad6565b52018290613032565b634e487b7160e01b84526011600452602484fd5b503461014957806003193601126101495760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b8181106131ad576101b7856101ab818703826136ed565b82546001600160a01b0316845260209093019260019283019201613196565b5034610a26575f366003190112610a26576020546021546040516348bd7dfd60e01b81525f60048201819052602482018190526001600160a01b0392831660448301529092909183916064918391165afa90811561328c575f91613297575b50515f5160206183775f395f51905f523b15610a26576040519063260a5b1560e21b82526004820152600460248201525f816044815f5160206183775f395f51905f525afa801561328c5761327e575080f35b61328a91505f906136ed565b005b6040513d5f823e3d90fd5b6132ab91503d805f833e6103db81836136ed565b5f61322b565b34610a26575f366003190112610a26576040516101606132d181836136ed565b600a82526020820190601f19013682375f5b600a81106133fd575060205460405163155adc9160e31b81525f60048201819052602482018190525f5160206183975f395f51905f5260448301526080606483015293516084820181905290936001600160a01b0390921692849260a4840192905b8181106133e457505050918180845f955003915afa90811561328c575f916133ca575b505f5b6009811061337557005b61337f8183613ad6565b519060018101918282116133b6576020611a1884611a0a6133a96133b0956119fc6001998b613ad6565b5f0b613f3b565b0161336b565b634e487b7160e01b5f52601160045260245ffd5b6133de91503d805f833e611a5481836136ed565b81613368565b8251845286945060209384019390920191600101613345565b60018101908181116133b657816103e802916103e8830481036133b657683635c9adc5dea000000291808304670de0b6b3a764000014901517156133b6576001916134488286613ad6565b52016132e3565b34610a26575f366003190112610a265760405163975a6ce960e01b81526020600482015260076024820152661b585a5b9b995d60ca1b60448201525f816064815f5160206183775f395f51905f525afa90811561328c576134d7916020915f91613664575b50604051809381926371ee464d60e01b8352604060048401526044830190613750565b6301272172602483015203815f5f5160206183775f395f51905f525af1801561328c57613635575b506040516117ac808201908282106001600160401b03831117613621576040918391616bab833973bafa44efe7901e04e39dad13167d089c559c113881525f5160206183975f395f51905f5260208201520301905ff0801561328c57602080546001600160a01b0319166001600160a01b03929092169190911781556040516338d52e0f60e01b815290816004815f5160206183975f395f51905f525afa90811561328c575f916135df575b5060018060a01b0316806001600160601b0360a01b60225416176022556001600160601b0360a01b60215416176021555f80f35b90506020813d602011613619575b816135fa602093836136ed565b81010312610a2657516001600160a01b0381168103610a2657816135ab565b3d91506135ed565b634e487b7160e01b5f52604160045260245ffd5b6020813d60201161365c575b8161364e602093836136ed565b81010312610a2657516134ff565b3d9150613641565b61367891503d805f833e610dc581836136ed565b836134b4565b34610a26576040366003190112610a26576136af60209161369e816136b7565b6004358152602435838201526139e6565b604051908152f35b604081019081106001600160401b0382111761362157604052565b606081019081106001600160401b0382111761362157604052565b90601f801991011681019081106001600160401b0382111761362157604052565b60206040818301928281528451809452019201905f5b8181106137315750505090565b82516001600160a01b0316845260209384019390920191600101613724565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b602081016020825282518091526040820191602060408360051b8301019401925f915b8383106137a657505050505090565b9091929394603f1982820301835285516020606081604085019360018060a01b0381511686520151936040838201528451809452019201905f905b8082106138005750505060208060019297019301930191939290613797565b82516001600160e01b0319168452602093840193909201916001909101906137e1565b6040906003190112610a2657600435906024358015158103610a265790565b602081016020825282518091526040820191602060408360051b8301019401925f915b83831061387457505050505090565b9091929394602080613892600193603f198682030187528951613750565b97019301930191939290613865565b600e548110156138b957600e5f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b601f548110156138b957601f5f5260205f2001905f90565b90600182811c92168015613913575b60208310146138ff57565b634e487b7160e01b5f52602260045260245ffd5b91607f16916138f4565b5f929181549161392c836138e5565b8083529260018116908115613981575060011461394857505050565b5f9081526020812093945091925b838310613967575060209250010190565b600181602092949394548385870101520191019190613956565b915050602093945060ff929192191683830152151560051b010190565b6001600160401b0381116136215760051b60200190565b818102929181159184041417156133b657565b81156139d2570490565b634e487b7160e01b5f52601260045260245ffd5b80516a084595161401484a0000008102908082046a084595161401484a00000014901517156133b6576020613a1d920151906139c8565b90565b6001600160401b03811161362157601f01601f191660200190565b602081830312610a26578051906001600160401b038211610a26570181601f82011215610a2657805190613a6e82613a20565b92613a7c60405194856136ed565b82845260208383010111610a2657815f9260208093018386015e8301015290565b90816020910312610a26575190565b919082018092116133b657565b8051156138b95760200190565b8051600110156138b95760400190565b80518210156138b95760209160051b010190565b9190826040910312610a2657604051613b02816136b7565b6020808294805184520151910152565b602081830312610a26578051906001600160401b038211610a26570181601f82011215610a26578051613b448161399e565b92613b5260405194856136ed565b81845260208085019260061b84010192818411610a2657602001915b838310613b7c575050505090565b6020604091613b8b8486613aea565b815201920191613b6e565b60a060209160808101935f8252600180841b0316838201525f5160206183975f395f51905f526040820152608060608201528451809452019201905f5b818110613be05750505090565b8251845260209384019390920191600101613bd3565b60a0919360209360808301958352600180851b031684830152600180841b03166040820152608060608201528451809452019201905f5b818110613c3a5750505090565b8251845260209384019390920191600101613c2d565b919082039182116133b657565b602081830312610a26578051906001600160401b038211610a2657019080601f83011215610a2657815190613c918261399e565b92613c9f60405194856136ed565b82845260208085019360051b820101918211610a2657602001915b818310613cc75750505090565b8251600a811015610a2657815260209283019201613cba565b602081830312610a26578051906001600160401b038211610a2657019080601f83011215610a26578151613d138161399e565b92613d2160405194856136ed565b81845260208085019260051b820101928311610a2657602001905b828210613d495750505090565b8151815260209182019101613d3c565b90816020910312610a2657518015158103610a265790565b90608082820312610a2657613da2906040805193613d8e856136d2565b805185526020810151602086015201613aea565b604082015290565b9081526001600160a01b039182166020820152911660408201525f6060820152608081019190915260a00190565b602081830312610a26578051906001600160401b038211610a2657019080601f83011215610a2657815190613e0c8261399e565b92613e1a60405194856136ed565b82845260208085019360051b820101918211610a2657602001915b818310613e425750505090565b82516001600160a01b0381168103610a2657815260209283019201613e35565b60085460ff168015613e715790565b50604051630667f9d760e41b81525f5160206183775f395f51905f5260048201526519985a5b195960d21b60248201526020816044815f5160206183775f395f51905f525afa90811561328c575f91613ecb575b50151590565b90506020813d602011613ef5575b81613ee6602093836136ed565b81010312610a2657515f613ec5565b3d9150613ed9565b613f1d906020613f12825182860151906139b5565b9351910151906139b5565b90808203613f2b5750505f90565b1115613f3657600190565b5f1990565b5f5160206183775f395f51905f523b15610a26576040519063fe74f05b60e01b825260048201525f60248201525f816044815f5160206183775f395f51905f525afa801561328c57613f8a5750565b5f613f94916136ed565b565b5f5160206183775f395f51905f523b15610a265760405190636d83fe6960e11b825260048201525f60248201525f816044815f5160206183775f395f51905f525afa801561328c57613f8a5750565b5f5160206183775f395f51905f523b15610a26576040519063260a5b1560e21b82526004820152600260248201525f816044815f5160206183775f395f51905f525afa801561328c57613f8a5750565b905f5160206183775f395f51905f523b15610a26576040519163260a5b1560e21b8352600483015260248201525f816044815f5160206183775f395f51905f525afa801561328c57613f8a5750565b5f5b81518110156140cd576140998183613ad6565b51600a8110156140b9576005146140b257600101614086565b5050600190565b634e487b7160e01b5f52602160045260245ffd5b50505f90565b5f5b81518110156140cd576140e88183613ad6565b51600a8110156140b9576009146140b2576001016140d5565b5f5b81518110156140cd576141168183613ad6565b51600a8110156140b9576008146140b257600101614103565b60405190602082019263095ea7b360e01b845260018060a01b0316928360248401525f196044840152604483526141676064846136ed565b82516001600160a01b038316915f91829182855af1906141856158da565b826141e5575b50816141da575b501561419d57505050565b6141d5613f94936040519063095ea7b360e01b602083015260248201525f6044820152604481526141cf6064826136ed565b82615909565b615909565b90503b15155f614192565b805191925081159182156141fd575b5050905f61418b565b6142109250602080918301019101613d59565b5f806141f4565b604051906142266060836136ed565b603682527536103a3790383934b1b29030b33a32b91039bbb0b81760511b6040837f45786563757465642070726963652073686f756c64206265206f72206571756160208201520152565b60c09490945260405163549387df60e11b8152600481018290526001600160a01b0380841660248301528416604482015291939290915f8180606481016101208490520381836001600160a01b0389165af1801561328c576142da915f916158c0575b50613ab9565b5161010052606060a0819052604051614336916142f790826136ed565b602381527f53656c6c206c696d69742073686f756c6420626520677265617465722074686160208201526206e20360ec1b6040820152610100516159cc565b60a051505f806143be6143ec60405161435160a051826136ed565b603681527f544553543a2054657374696e672070726963657320666f722070616972202573602082015275080b4f88095ccb8814d95b1b081b1a5b5a5d0e88095960521b6040820152604051928391638ef3f39960e01b60208401526080602484015260a4830190613750565b6001600160a01b038a811660448401528716606483015261010051608483015203601f1981018352826136ed565b6020815191016a636f6e736f6c652e6c6f675afa506040516348bd7dfd60e01b8152600481018390526001600160a01b038086166024830152821660448201525f8180606481010381836001600160a01b0389165af1801561328c57614459915f916158a6575b506140d3565b906040519161446960a0846136ed565b60048352608036602085013715615899575f5b61448583613ab9565b526103e8610100510461449783613ac6565b528151600210156138b95760a05182016101005160011c90528151600310156138b95761010051608083015260405163155adc9160e31b8152935f85806144e486868b8a60048601613bf6565b0381836001600160a01b0386165af194851561328c575f9561587d575b5061451461450e86613ab9565b516139e6565b85515f198101919082116133b65761453261450e61458c9389613ad6565b60a051604051929061454490846136ed565b603083527f5072696365206174206c696d69742073686f756c6420626520736d616c6c657260208401526f0207468616e20707269636520617420360841b6040840152615a33565b61459861450e86613ab9565b85515f1981019081116133b65761463361464c5f936145bb61450e86958c613ad6565b60a0516040519291906145ce90846136ed565b602d83527f544553543a20507269636520617420303a2025642c207072696365206174207360208401526c195b1b081b1a5b5a5d0e880959609a1b604084015260405194859363ca47c4eb60e01b602086015260a05160248601526084850190613750565b916044840152606483015203601f1981018352826136ed565b6020815191016a636f6e736f6c652e6c6f675afa5060a0516040516146b29161467590826136ed565b602581527f544553543a2054657374696e67206265686176696f7220666f72207072696365602082015264020617420360dc1b6040820152615a68565b6147046146be86613ab9565b5151604060e0819052805191906146d590836136ed565b601882527f4e6f6d696e61746f722073686f756c646e27742062652030000000000000000060208301526159cc565b614755602061471287613ab9565b51015160e0518051919061472690836136ed565b601a82527f44656e6f6d696e61746f722073686f756c646e2774206265203000000000000060208301526159cc565b61476161450e86613ab9565b9460e051506147a08660e0515161477a60e051826136ed565b6014815273151154d50e88141c9a58d948185d080c0e88095960621b6020820152615aac565b60e051516147ad816136d2565b5f81525f602082015260e05151906147c4826136b7565b5f808352602083015260e051015283515f1981019081116133b6576147e99085613ad6565b5160058181020481036133b6575f8060e0515160208101906370a0823160e01b8252306024820152602481526148206044826136ed565b51908b5afa506148316105806158da565b50601180546001600160a01b0319166001600160a01b038a161790556370a0823163ffffffff19600f541617600f55600e54600160401b811015613621576105e48160016148829301600e556138a1565b90556011546001600160a01b031661014052600f546010549060e01b6148a6615c0c565b610140516001600160a01b03165f908152600d60205260409020909163ffffffff60e01b1690815f5260205260e0515f2060e0515160208101906148ef81610660888886615bf5565b5190205f5260205260ff600360e0515f200154161561586f575b610140516001600160a01b03165f908152600d60205260409020905f5260205261066061494760e0515f209360e05151928391602083019586615bf5565b5190205f5260205260e0515f2060018101549160028201546149698185613aac565b615759575b825460e05151630667f9d760e41b8152610140516001600160a01b0316600482015260248101829052949091906020866044815f5160206183775f395f51905f525afa958615615719575f96615725575b506001908201610100031b5f1901811b1985165f5160206183775f395f51905f523b15610a265760e051516370ca10bb60e01b8152610140516001600160a01b0316600482015260248101939093526005840290911b1760448201525f81606481835f5160206183775f395f51905f525af1801561571957615704575b50614a45615dc5565b90159182156156f6575b5050615602575050614a5f6168fa565b60e05151634b88b8ad60e11b8152602081600481610120515f5160206183775f395f51905f525af18015614f5657610120516080526155cf575b5060015b8451811015615023575f80614b54614b7a614ab7856138cd565b50614ac2868b613ad6565b51614b66611464614b2e60e0515194614add60a051876136ed565b603086527f544553543a2054657374696e67206265686176696f7220666f7220707269636560208701526f1030ba1012b99037b3103634b6b4ba1760811b60e05187015260e051519283809261391d565b60e05151635821efa160e01b602082015260a05160248201529586946084860190613750565b84810360231901604486015290613750565b90606483015203601f1981018352826136ed565b6020815191016a636f6e736f6c652e6c6f675afa50614b9c61450e8284613ad6565b5f80614c11614c358c614baf878c613ad6565b5160e0515191614bc160e051846136ed565b601783527f544553543a205377617070696e67202564206f66202573000000000000000000602084015260e0515194859363038fd88960e31b602086015260a05160248601526084850190613750565b60448401929092526001600160a01b0316606483015203601f1981018352826136ed565b6020815191016a636f6e736f6c652e6c6f675afa508460808a89614c79614c5c878c613ad6565b5160e05151638307c65560e01b8152958694859460048601613daa565b03816101205160018060a01b038a165af1908115614f56576101205191615005575b508051806a084595161401484a0000008102046a084595161401484a0000001481151715614feb57614ce8614cf3916a084595161401484a000000614ce0878c613ad6565b5191026139c8565b9160e05101516139e6565b91614d378260e05151614d0860e051826136ed565b601d81527f544553543a20202d2045786563757465642070726963653a20202025640000006020820152615aac565b614d7a8160e05151614d4b60e051826136ed565b601d81527f544553543a20202d20507269636520617420616d6f756e743a202025640000006020820152615aac565b614dbd8360e05151614d8e60e051826136ed565b601d81527f544553543a20202d20507269636520616674657220737761703a2025640000006020820152615aac565b60c05115614f655760a05160e05151614ef194614e96939092614e2c929190614de690836136ed565b602c82527f50726963652073686f756c642062652067726561746564207468616e2065786560208301526b31baba32b210383934b1b29760a11b60e05183015285615aef565b60a05160e051519190614e3f90836136ed565b603782527f45786563757465642070726963652073686f756c64206265206772656174657260208301527f207468616e20707269636520616674657220737761702e00000000000000000060e05183015283615a33565b60a05160e051519190614ea990836136ed565b602e82527f50726963652073686f756c642062652067726561746564207468616e2070726960208301526d31b29030b33a32b91039bbb0b81760911b60e05183015289615a33565b60e0515190631135fc2960e21b82526080516004830152602082602481610120515f5160206183775f395f51905f525af1918215614f5657600192614f38575b5001614a9d565b614f4f9060203d8111610b6a57610b5b81836136ed565b505f614f31565b60e051513d61012051823e3d90fd5b614f8e90614f7f614fe694614f78614217565b908d615aef565b614f87614217565b908b615aef565b60e0515190614f9f60a051836136ed565b602d82527f50726963652073686f756c64206265206f7220657175616c20746f207072696360208301526c329030b33a32b91039bbb0b81760991b60e05183015289615aef565b614ef1565b634e487b7160e01b61012051526011600452602461012051fd5b61501d915060803d8111610a9957610a8a81836136ed565b5f614c9b565b50509150919392506069610100510261010051810460691461010051151715614feb5760e051516348bd7dfd60e01b81526101208051600483018890526001600160a01b0387811660248501528681166044850152915160649485900497949192849291839188165af18015614f56576150a79161012051916155b2575b50614101565b156154555761510f8460e051516150c060a051826136ed565b603681527f544553543a2054657374696e6720726576657274206265686176696f722061626020820152751bdd99481d1a19481cd95b1b081b1a5b5a5d0e88095960521b60e051820152615aac565b60e0518051949061512090866136ed565b6001855260e051601f190136602087013761513a85613ab9565b5260e0515163155adc9160e31b815261012051818061515f8888878c60048601613bf6565b03816101205160018060a01b0388165af1908161543a575b506153ce576001615186615b24565b6308c379a014615340575b614f56576151a0608094613ab9565b51946151c360e0515196879586948594638307c65560e01b865260048601613daa565b61012051919003926001600160a01b03165af19081615323575b506152c15760016151ec615b24565b6308c379a01461523e575b614f56575b613f9460e0515161520f60e051826136ed565b601781527f544553543a20416c6c207465737473207061737365642e0000000000000000006020820152615a68565b615246615b3f565b80615252575b506151f7565b6101205160a05160e051519193506152bb92919061527090826136ed565b603281527f544553543a204578706563746564206572726f72207768656e207377617070696020820152716e672061626f7665206c696d69743a20257360701b60e051820152615bb1565b5f61524c565b60e0515162461bcd60e51b815260206004820152603360248201527f506f6f6c2073686f756c646e27742062652061626c6520746f20737761702061604482015272189bdd99481d1a19481cd95b1b081b1a5b5a5d606a1b6064820152608490fd5b61533b9060803d608011610a9957610a8a81836136ed565b6151dd565b615348615b3f565b80615354575b50615191565b6101205160a05160e051519193506153c892919061537290826136ed565b603881527f544553543a204578706563746564206572726f72207768656e2066657463686960208201527f6e672070726963652061626f7665206c696d69743a202573000000000000000060e051820152615bb1565b5f61534e565b60e0515162461bcd60e51b815260206004820152603b60248201527f506f6f6c2073686f756c646e27742062652061626c6520746f2066657463682060448201527f7072696365732061626f7665207468652073656c6c206c696d697400000000006064820152608490fd5b615450903d8061012051833e611a5481836136ed565b615177565b60a05160e051516154b79186919061546d90826136ed565b603181527f544553543a2054657374696e67206f7065726174696f6e732061626f766520746020820152701a19481cd95b1b081b1a5b5a5d0e880959607a1b60e051820152615aac565b60e051805194906154c890866136ed565b6001855260e051601f19013660208701376154e285613ab9565b5260e051519363155adc9160e31b85526101205185806155088488878c60048601613bf6565b03816101205160018060a01b0388165af1908115614f5657608095615531926155975750613ab9565b519461555460e0515196879586948594638307c65560e01b865260048601613daa565b61012051919003926001600160a01b03165af18015614f5657615578575b506151fc565b6155909060803d608011610a9957610a8a81836136ed565b505f615572565b6155ad903d8061012051833e611a5481836136ed565b6142d4565b6155c991503d8061012051833e6103db81836136ed565b5f6150a1565b6020813d6020116155fa575b816155e8602093836136ed565b81010312610a2657516080525f614a99565b3d91506155db565b545f5160206183775f395f51905f523b156156ef5760e051516370ca10bb60e01b815261012051610140516001600160a01b03166004830152602482019290925260448101929092528180606481010381610120515f5160206183775f395f51905f525af18015614f56576156d4575b60e0515162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b610120516156e1916136ed565b610120516156ef5780615672565b6101205180fd5b600502141590505f80614a4f565b5f61570e916136ed565b5f610120525f614a3c565b60e051513d5f823e3d90fd5b9095506020813d602011615751575b81615741602093836136ed565b81010312610a26575194816149bf565b3d9150615734565b6157638185613aac565b6101000361010081116133b65760ff81116133b65760e0515163348051d760e11b81526001821b60048201525f816024815f5160206183775f395f51905f525afa9182156157195761581f606a6020946001945f91615855575b5060e051519586915f5160206183b75f395f51905f52828401525f5160206183575f395f51905f5260e05184015269030ba32b9103a3430b7160b51b60a0518401528051918291018484015e81015f838201520301601f1981018552846136ed565b1b836005021015615830575061496e565b60e0515162461bcd60e51b815260206004820152908190610dac906024830190613750565b61586991503d805f833e610dc581836136ed565b5f6157bd565b61587761603f565b50614909565b6158929195503d805f833e611a5481836136ed565b935f614501565b612710610100510461447c565b6158ba91503d805f833e6103db81836136ed565b5f614453565b6158d491503d805f833e61139081836136ed565b5f6142d4565b3d15615904573d906158eb82613a20565b916158f960405193846136ed565b82523d5f602084013e565b606090565b8151615934926001600160a01b03909216915f91829160200182855af161592e6158da565b91615f84565b80519081615940575050565b602080615951938301019101613d59565b1561595857565b60405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b613a1d9392606092825260208201528160408201520190613750565b5f5160206183775f395f51905f523b15610a2657615a14915f916040519384928392636cd1e26960e11b84526004840152846024840152606060448401526064830190613750565b03815f5160206183775f395f51905f525afa801561328c57613f8a5750565b905f5160206183775f395f51905f523b15610a26575f91615a146040519485938493636cd1e26960e11b8552600485016159b0565b5f610660615a95829360405192839163104c13eb60e21b6020840152602060248401526044830190613750565b6020815191016a636f6e736f6c652e6c6f675afa50565b615adb615a955f93928493604051938492632d839cb360e21b6020850152604060248501526064840190613750565b90604483015203601f1981018352826136ed565b905f5160206183775f395f51905f523b15610a26575f91615a146040519485938493630389490b60e61b8552600485016159b0565b5f9060033d11615b3057565b905060045f803e5f5160e01c90565b5f60443d10613a1d576040513d600319016004823e8051913d60248401116001600160401b03841117615bab57828201928351916001600160401b038311615ba3573d84016003190185840160200111615ba35750613a1d929101602001906136ed565b949350505050565b92915050565b615be3615a955f93926106608594604051948593634b5c427760e01b6020860152604060248601526064850190613750565b83810360231901604485015290613750565b60209291908391805192839101825e019081520190565b615c176014546138e5565b615cd4576040519081826020600e549283815201600e5f5260205f20925f5b818110615cbb575050615c4b925003836136ed565b81518060051b90808204602014901517156133b657615c6981613a20565b90615c7760405192836136ed565b808252615c86601f1991613a20565b013660208301375f5b8351811015615cb65780615ca560019286613ad6565b5160208260051b8501015201615c8f565b509150565b8454835260019485019487945060209093019201615c36565b604051613a1d8161146481601461391d565b6007810190615cf582546138e5565b615db157600191500190604051808360208295549384815201905f5260205f20925f5b818110615d98575050615d2d925003836136ed565b81518060051b90808204602014901517156133b657615d4b81613a20565b90615d5960405192836136ed565b808252615d68601f1991613a20565b013660208301375f5b8351811015615cb65780615d8760019286613ad6565b5160208260051b8501015201615d71565b8454835260019485019487945060209093019201615d18565b50613a1d611464916040519283809261391d565b5f806020600f5460e01b615e136024615dde600d615ce6565b6040519485918183019563ffffffff60e01b1686528051918291018484015e810186838201520301601f1981018452836136ed565b6011549151916001600160a01b03165afa90615e2d6158da565b601054909290600581901b906001600160fb1b038116036133b6575f938051602081115f14615eb857506020905b5f925b828410615e6d57505050509190565b90919295615e7b8783613aac565b83518110156138b957830160200151600388901b91906001600160f81b031916881560088a85041417156133b6576001921c179601929190615e5e565b90615e5b565b905f806020600285015460e01b615ed96024615dde88615ce6565b60048601549151916001600160a01b03165afa6003615ef66158da565b930154600581901b906001600160fb1b038116036133b6575f938051602081115f14615f7e57506020905b5f925b828410615f3357505050509190565b90919295615f418783613aac565b83518110156138b957830160200151600388901b91906001600160f81b031916881560088a85041417156133b6576001921c179601929190615f24565b90615f21565b90615fa85750805115615f9957805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580615fd9575b615fb9575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15615fb1565b9080601f83011215610a26578151615ff98161399e565b9261600760405194856136ed565b81845260208085019260051b820101928311610a2657602001905b82821061602f5750505090565b8151815260209182019101616022565b601154600f546010546001600160a01b03909216915f9160e01b616063600d615ce6565b90845f52600d60205260405f209063ffffffff60e01b1690815f5260205260405f20604051602081019061609c81610660888886615bf5565b5190205f5260205260ff600360405f200154166168b9575f5160206183775f395f51905f523b15610a265760405163266cf10960e01b81525f81600481835f5160206183775f395f51905f525af1801561328c576168a4575b50616100600d615ebe565b90506040516365bc948160e01b81528660048201528581602481835f5160206183775f395f51905f525af1908115610aa0578691616840575b5080516161aa57608460405162461bcd60e51b815260206004820152604060248201527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152fd5b855b8151811015616838578160206161c5836161f695613ad6565b51604051630667f9d760e41b81526001600160a01b038c166004820152602481019190915293849081906044820190565b03815f5160206183775f395f51905f525afa928315610a32578893616805575b5082156167ad575b6162288282613ad6565b51601154604051630667f9d760e41b81526001600160a01b03909116600482018190526024820183905291906020816044815f5160206183775f395f51905f525afa9081156167a2578b91616771575b50616283600d615ebe565b91909382155f1461676a575f19905b5f5160206183775f395f51905f523b15616751576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810185905260448101919091528c81606481835f5160206183775f395f51905f525af180156166d657908d91616755575b5050616303600d615ebe565b601154909491506001600160a01b03165f5160206183775f395f51905f523b15616751576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528b81606481835f5160206183775f395f51905f525af1801561674657908c9161672d575b505082616722575b505015616718578793889360ff6013541661659d575b6001868601610100031b5f1901851b16841c810361658f57509061641d917f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed60808b896106606163f28d604051928391602083019586615bf5565b5190206163ff8686613ad6565b51906040519283528a602084015260408301526060820152a1613ad6565b51906040519060808201928284106001600160401b038511176136215760039360405282526020820193845260408201908152606082019360018552898952600d60205260408920868a52602052604089206040516020810190616486816106608d8d86615bf5565b5190208a526020526040892092518355516001830155516002820155019051151560ff801983541691161790555b848452600d602052604084208185526020526040842060405160208101906164e181610660888886615bf5565b519020855260205260ff60036040862001541615616532576040948452600d602052848420908452602052610660616526858520938651928391602083019586615bf5565b51902082526020522090565b60405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201526e3a143994903737ba103337bab7321760891b6064820152608490fd5b935091506001905b016161ac565b94506165e893506165ae8383613ad6565b51601154604051630667f9d760e41b81526001600160a01b0390911660048201526024810182905290959094602090869081906044820190565b03815f5160206183775f395f51905f525afa948515611325578a956166e5575b5061661486600d616a0e565b95909661662281600d616ae7565b60115490939192906001600160a01b03165f5160206183775f395f51905f523b156166e1576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528c81606481835f5160206183775f395f51905f525af180156166d657908d916166bd575b5050876166b5575b509495616397575093509150600190616597565b96505f6166a1565b816166c7916136ed565b6166d2578b5f616699565b8b80fd5b6040513d8f823e3d90fd5b8e80fd5b9094506020813d8211616710575b81616700602093836136ed565b81010312610a265751935f616608565b3d91506166f3565b9150600190616597565b141590505f80616381565b81616737916136ed565b616742578a5f616379565b8a80fd5b6040513d8e823e3d90fd5b8d80fd5b8161675f916136ed565b6166d2578b5f6162f7565b8c90616292565b90506020813d821161679a575b8161678b602093836136ed565b81010312610a2657515f616278565b3d915061677e565b6040513d8d823e3d90fd5b7f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a56167fd6167db8484613ad6565b51604080516001600160a01b038e168152602081019290925290918291820190565b0390a161621e565b9092506020813d8211616830575b81616820602093836136ed565b81010312610a265751915f616216565b3d9150616813565b5050506164b4565b90503d8087833e61685181836136ed565b81016040828203126104045781516001600160401b0381116168a05781616879918401615fe2565b916020810151906001600160401b03821161223257616899929101615fe2565b505f616139565b8780fd5b6168b19194505f906136ed565b5f925f6160f5565b91939092505f52600d60205260405f20905f526020526106606168eb60405f2093604051928391602083019586615bf5565b5190205f5260205260405f2090565b6001600160601b0360a01b6011541660115563ffffffff19600f5416600f55600e545f600e55806169cc575b505f60105560ff19601354166013556169406014546138e5565b806169485750565b601f811160011461695a57505f601455565b60145f52601f0160051c7fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec017fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ed5b8181106169c157505060145f525f602081208160145555565b5f81556001016169a8565b600e5f527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd908101905b818110616a035750616926565b5f81556001016169f6565b91905f5b6101008110616a2557505090505f905f90565b8060ff0360ff81116133b6576004850154600190911b906001600160a01b03165f5160206183775f395f51905f523b15610a26576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f5160206183775f395f51905f525af1801561328c57616ad7575b50616ab184615ebe565b81616acd575b50616ac457600101616a12565b92505060019190565b905015155f616ab7565b5f616ae1916136ed565b5f616aa7565b91905f5b6101008110616afe57505090505f905f90565b60048401546001821b906001600160a01b03165f5160206183775f395f51905f523b15610a26576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f5160206183775f395f51905f525af1801561328c57616b9a575b50616b7d84615ebe565b81616b90575b50616ac457600101616aeb565b905015155f616b83565b5f616ba4916136ed565b5f616b7356fe60e03461011657601f6117ac38819003918201601f19168301916001600160401b0383118484101761011a578084926040948552833981010312610116576100468161012e565b906001600160a01b039061005c9060200161012e565b1660c052735e8422345238f34275888049021821e8e08caa1f6080526001600160a01b031660a052604051611669908161014382396080518181816107c301528181610a1501528181610e200152610ff1015260a051818181609b015281816104c601528181610dbd0152610f91015260c0518181816104890152818161083f01528181610a9f01528181610aea01528181610b2801528181610b6f01528181610d7901528181610ec40152818161103c01526111dd0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101165756fe6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c806323eeca011461045a57806348bd7dfd146103835780638307c65514610320578063a9270fbe146102c4578063aad6e488146101d85763ecbbc0330361000e57346101d45760203660031901126101d45760405161007f6060826105d9565b6002815260208101604036823760405163ba947f2760e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602081600481855afa9182156101ac576004926020925f916101b7575b506100eb86610613565b6001600160a01b039091169052604051630e2b46db60e11b815292839182905afa9081156101ac575f9161017d575b50610126839293610620565b6001600160a01b0390911690526040805160208082529251928101839052928392918301915f5b81811061015b575050500390f35b82516001600160a01b031684528594506020938401939092019160010161014d565b61019f915060203d6020116101a5575b61019781836105d9565b8101906109e9565b5f61011a565b503d61018d565b6040513d5f823e3d90fd5b6101ce9150833d85116101a55761019781836105d9565b5f6100e1565b5f80fd5b346101d45760803660031901126101d4576101f1610543565b6101f9610559565b6064359067ffffffffffffffff82116101d457366023830112156101d457816004013592610226846105fb565b9261023460405194856105d9565b8484526024602085019560051b820101903682116101d457602401945b8186106102b45750506102649350610936565b6040518091602082016020835281518091526020604084019201905f5b81811061028f575050500390f35b8251805185526020908101518186015286955060409094019390920191600101610281565b8535815260209586019501610251565b346101d4576102dc6102d53661056f565b9150610778565b6040518091602082016020835281518091526020604084019201905f5b818110610307575050500390f35b82518452859450602093840193909201916001016102f9565b346101d45760a03660031901126101d457610339610543565b610341610559565b6064359160028310156101d45760809261035e9260843592610665565b6020604080519280518452828101518385015201518051604084015201516060820152f35b346101d4576103913661056f565b5050506040516103a260a0826105d9565b6004815260208101608036823760016103ba83610613565b5260026103c683610620565b5281516002101561044657600360608301528151600310156104465760056080830152604051906020820192602083525180935260408201905f935b80851061040f5783830384f35b9091825190600a8210156104325760208160019382935201930194019390610402565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b346101d45760403660031901126101d4576040516104796060826105d9565b60028152602081019060403683377f000000000000000000000000000000000000000000000000000000000000000060601b6bffffffffffffffffffffffff19166104c382610613565b527f000000000000000000000000000000000000000000000000000000000000000060601b6bffffffffffffffffffffffff191661050082610620565b52604051918291602083019060208452518091526040830191905f5b81811061052a575050500390f35b825184528594506020938401939092019160010161051c565b602435906001600160a01b03821682036101d457565b604435906001600160a01b03821682036101d457565b60609060031901126101d457600435906024356001600160a01b03811681036101d457906044356001600160a01b03811681036101d45790565b6040810190811067ffffffffffffffff8211176105c557604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176105c557604052565b67ffffffffffffffff81116105c55760051b60200190565b8051156104465760200190565b8051600110156104465760400190565b80518210156104465760209160051b010190565b9190820391821161065157565b634e487b7160e01b5f52601160045260245ffd5b9093926040516060810181811067ffffffffffffffff8211176105c5576040525f81526106e360208201965f88525f60408401986040516106a5816105a9565b8281528260208201528a528499604051906106bf826105a9565b670de0b6b3a76400008252670de0b6b3a76400006020830152528185525284610a08565b61077157505a916002841015610432578161073394155f146107415761070891610ea2565b80865290811561073a576040519161071f836105a9565b8252602082015260408501525b5a90610644565b6020830152565b505061072c565b61074a91610b5a565b808652801561073a5760405191610760836105a9565b82526020820152604085015261072c565b9450505050565b604051916107876060846105d9565b600283526040366020850137825f61079e82610613565b525f6107a982610620565b526107b48284610a08565b61092f57506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169216808314908115610926575b50156108205750506001600160801b0361080a82610613565b526001600160801b0361081c82610620565b5290565b6001600160a01b0316146108315790565b6040516278744560e21b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316602082600481845afa9182156101ac575f926108f1575b50602060249160405192838092630a28a47760e01b82528660048301525afa9081156101ac575f916108bf575b506108b583610613565b5261081c82610620565b90506020813d6020116108e9575b816108da602093836105d9565b810103126101d457515f6108ab565b3d91506108cd565b9091506020813d60201161091e575b8161090d602093836105d9565b810103126101d4575190602061087e565b3d9150610900565b9050155f6107f1565b9250505090565b9092918051610944816105fb565b9061095260405192836105d9565b808252610961601f19916105fb565b015f5b8181106109c6575050610978819584610a08565b6109c057505f5b81518110156109bb578061099f61099860019385610630565b5185610fd9565b6109a98288610630565b526109b48187610630565b500161097f565b505050565b93505050565b6020906040516109d5816105a9565b5f81525f8382015282828601015201610964565b908160209103126101d457516001600160a01b03811681036101d45790565b6001600160a01b039081167f000000000000000000000000000000000000000000000000000000000000000090911681811415929083610b26575b83610b1c575b8315610ac8575b508215610a81575b8215610a6e575b5050610a69575f90565b600190565b6001600160a01b03161490505f80610a5f565b9150801580610a91575b91610a58565b506001600160a01b038281167f00000000000000000000000000000000000000000000000000000000000000009091161415610a8b565b9092506001600160a01b038316908114159081610ae8575b50915f610a50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141590505f610ae0565b8215159350610a49565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168314159350610a43565b6001600160a01b031691905f908315610d5e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690848203610caa57604051630a28a47760e01b81526004810182905294602086602481865afa908115610c9f578495968592610c63575b5091610be460209492610c1494309033906114cf565b604051632d182be560e21b8152600481019190915233602482015230604482015293849283919082906064820190565b03925af1918215610c575791610c28575090565b90506020813d602011610c4f575b81610c43602093836105d9565b810103126101d4575190565b3d9150610c36565b604051903d90823e3d90fd5b9391509193506020833d602011610c97575b81610c82602093836105d9565b810103126101d4579151849391610be4610bce565b3d9150610c75565b6040513d86823e3d90fd5b60405163b3d7f6b960e01b81526004810182905294602086602481865afa908115610c9f578495968592610d22575b5091610cf88285610c1495610cf3602098963033846114cf565b61137d565b6040516394bf804d60e01b8152600481019190915233602482015293849283919082906044820190565b9391509193506020833d602011610d56575b81610d41602093836105d9565b810103126101d4579151849391610cf8610cd9565b3d9150610d34565b60405163b3d7f6b960e01b81526004810182905292935090917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169190602081602481865afa9081156101ac575f91610e70575b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156101d4575f8291600460405180948193632de597e360e11b83525af180156101ac57610e4d575b508392602092610c1492610cf890837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661137d565b610cf8945092602092610e645f610c1494966105d9565b5f955092509290610e0f565b90506020813d602011610e9a575b81610e8b602093836105d9565b810103126101d457515f610dba565b3d9150610e7e565b6001600160a01b03168015610f705760209082610ec25f943033856114cf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908282148514610f3857604051635d043b2960e11b8152600481019190915233602482015230604482015293849250829081606481015b03925af19081156101ac575f91610c28575090565b610f468183610f239561137d565b604051636e553f6560e01b8152600481019190915233602482015293849283919082906044820190565b50604051634dcd454760e01b815233600482015290602090829060249082907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af19081156101ac575f91610c28575090565b9190820180921161065157565b604051610fe5816105a9565b5f8082526020909101527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169116908114908115611374575b50156111c7576040516278744560e21b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169190602081600481865afa80156101ac5782905f90611191575b6110889250610fcc565b916040519163ef8b30f760e01b83526004830152602082602481845afa9182156101ac575f9261115c575b50906020600492604051938480926318160ddd60e01b82525afa80156101ac575f90611128575b6110e49250610fcc565b90815f1904670de0b6b3a7640000118202158102156101d4576040519161110a836105a9565b670de0b6b3a764000002048152670de0b6b3a7640000602082015290565b506020823d602011611154575b81611142602093836105d9565b810103126101d4576110e491516110da565b3d9150611135565b91506020823d602011611189575b81611177602093836105d9565b810103126101d45790519060206110b3565b3d915061116a565b50506020813d6020116111bf575b816111ac602093836105d9565b810103126101d45781611088915161107e565b3d915061119f565b60405163266d6a8360e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691602082602481865afa9182156101ac575f92611340575b506040516278744560e21b815291602083600481875afa9283156101ac575f9361130a575b50611251602091600494610644565b93604051938480926318160ddd60e01b82525afa80156101ac575f906112d6575b61127c9250610644565b90816112ae575050670de0b6b3a76400005b6040519061129b826105a9565b8152670de0b6b3a7640000602082015290565b805f1904670de0b6b3a7640000118102158202156101d457670de0b6b3a7640000020461128e565b506020823d602011611302575b816112f0602093836105d9565b810103126101d45761127c9151611272565b3d91506112e3565b92506020833d602011611338575b81611325602093836105d9565b810103126101d457915191611251611242565b3d9150611318565b9091506020813d60201161136c575b8161135c602093836105d9565b810103126101d45751905f61121d565b3d915061134f565b9050155f611028565b604051636eb1769f60e11b81523060048201526001600160a01b03928316602482018190529392821692602082604481875afa80156101ac575f9061149b575b6113c79250610fcc565b915f8060405194602086019063095ea7b360e01b82528760248801526044870152604486526113f76064876105d9565b85519082855af190611407611596565b82611469575b508161145e575b501561141f57505050565b61145761145c936040519063095ea7b360e01b602083015260248201525f6044820152604481526114516064826105d9565b8261152b565b61152b565b565b90503b15155f611414565b80519192508115918215611481575b5050905f61140d565b6114949250602080918301019101611513565b5f80611478565b506020823d6020116114c7575b816114b5602093836105d9565b810103126101d4576113c791516113bd565b3d91506114a8565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815261145c916114576084836105d9565b908160209103126101d4575180151581036101d45790565b5f806115539260018060a01b03169360208151910182865af161154c611596565b90836115d5565b805190811515918261157b575b50506115695750565b635274afe760e01b5f5260045260245ffd5b61158e9250602080918301019101611513565b155f80611560565b3d156115d0573d9067ffffffffffffffff82116105c557604051916115c5601f8201601f1916602001846105d9565b82523d5f602084013e565b606090565b906115f957508051156115ea57805190602001fd5b63d6bda27560e01b5f5260045ffd5b8151158061162a575b61160a575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561160256fea264697066735822122072a6acb1af5d7f7b4a48c2ff88e7f9fc18a79985403ac1f221926b9de12fd3ab64736f6c634300081b00336b656420736c6f742e2057652063616e2774206669742076616c7565206772650000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d000000000000000000000000ac3e018457b222d93114458476f3e3416abbe38f73746453746f726167652066696e642853746453746f72616765293a20506163a264697066735822122034a8d0016c99b5402a65e13e8306746de2b20dc25c42e37820743e443ad437cd64736f6c634300081b0033a03837a25210ee280c2113ff4b77ca23440b19d4866cca721c801278fd08d807","sourceMap":"297:9163:72:-:0;;;;;;3166:4:2;297:9163:72;;3166:4:2;297:9163:72;;;3166:4:2;297:9163:72;3166:4:2;297:9163:72;;1038:4:12;297:9163:72;;;1038:4:12;297:9163:72;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;297:9163:72;;;;;;;;;:::i;:::-;564:29:65;297:9163:72;;-1:-1:-1;;;297:9163:72;;;;;564:29:65;;297:9163:72;;;;:::i;:::-;;;;-1:-1:-1;;;297:9163:72;;;;;564:29:65;;297:9163:72;;;;:::i;:::-;564:29:65;297:9163:72;;-1:-1:-1;;;297:9163:72;;;;564:29:65;;;297:9163:72;;;564:29:65;297:9163:72;;;564:29:65;297:9163:72;;;-1:-1:-1;;297:9163:72;;;;;-1:-1:-1;;;;;;;;;;;297:9163:72;;564:29:65;297:9163:72;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;297:9163:72;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3166:4:2;297:9163:72;;;;;;;;;;;-1:-1:-1;;;;297:9163:72;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;297:9163:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3166:4:2;297:9163:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3166:4:2;297:9163:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;297:9163:72;;;;;;;;;;;564:29:65;297:9163:72;;;;;;;;-1:-1:-1;;;;;;;;;;;297:9163:72;;;;;;;;;;;;;;3166:4:2;297:9163:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;297:9163:72;;;-1:-1:-1;;;;;297:9163:72;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x610160806040526004361015610013575f80fd5b5f905f3560e01c90816308c417451461367e575080630a9254e41461344f57806310033ae4146132b15780631a91bcf0146131cc5780631ed7831c1461314e578063226212a2146130005780632ade388014612e415780632b72882614612b4957806334529dcb146129ee5780633e5e3c23146129705780633f7286f4146128f257806366d9a9a01461274457806375c04aa714611b7e57806385226c8114611aec5780638681f5b8146118ff578063916a17c614611673578063a00872f114611607578063a11c799814611479578063b5508aa9146113e0578063ba414fa6146113bb578063bfdaf70f14610410578063d170c3cc146101da578063e20c9f711461014c5763fa7626d414610127575f80fd5b34610149578060031936011261014957602060ff601e54166040519015158152f35b80fd5b503461014957806003193601126101495760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b8181106101bb576101b7856101ab818703826136ed565b6040519182918261370e565b0390f35b82546001600160a01b0316845260209093019260019283019201610194565b5034610149576040366003190112610149576004356001600160a01b03811680820361040c57602435916001600160401b03831161040857366023840112156104085782600401359261022c8461399e565b9361023a60405195866136ed565b8085526024602086019160051b8301019136831161040457602401905b8282106103f45750505061026a83613ab9565b51604051906348bd7dfd60e01b82526004820152846024820152846044820152848160648183875af180156103e9576102aa9186916103c7575b50614084565b1591845b84518110156103c3576102c18186613ad6565b51906040519163ecbbc03360e01b83526004830152868260248183875af180156103b85785610390916001948a91610396575b5061030f86868060a01b0361030884613ab9565b511661412f565b61032286868060a01b0361030884613ac6565b61035a82610330868c613ad6565b51878060a01b0361034085613ab9565b5116888060a01b0361035186613ac6565b5116918b614271565b610364848a613ad6565b5190858060a01b0361037582613ac6565b511690610387878060a01b0391613ab9565b51169188614271565b016102ae565b6103b291503d808c833e6103aa81836136ed565b810190613dd8565b5f6102f4565b6040513d89823e3d90fd5b8580f35b6103e391503d8088833e6103db81836136ed565b810190613c5d565b5f6102a4565b6040513d87823e3d90fd5b8135815260209182019101610257565b8680fd5b8380fd5b8280fd5b50346101495761041f36613823565b5f5160206183775f395f51905f523b1561040c57604051632631f2b160e11b8152600183116004820152839081816024815f5160206183775f395f51905f525afa8015610c52576113a6575b50501561139f576001905b60205460215460405163549387df60e11b8152600481018690525f5160206183975f395f51905f5260248201526001600160a01b0391821660448201529391859185916064918391165afa928315610c7e57849361137b575b50600281101561136757836001821493845f14610e23576104ef90613ac6565b5183105f5160206183775f395f51905f523b15610e1f5760405190632631f2b160e11b8252600482015281816024815f5160206183775f395f51905f525afa8015610c5257610e0a575b508060405160208101906370a0823160e01b8252306024820152602481526105626044826136ed565b51905f5160206183975f395f51905f525afa5061058f6105806158da565b60208082518301019101613a9d565b50601180546001600160a01b0319165f5160206183975f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b811015610df6576105e48160016105fd9301600e556138a1565b919091309083549060031b91821b915f19901b19161790565b905560018060a01b0360115416600f5460e01b6010549061061c615c0c565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b169081895260205260408820604051602081019061066e81610660888886615bf5565b03601f1981018352826136ed565b519020895260205260ff600360408a2001541615610de8575b6001600160a01b0384165f908152600d602052604090209088526020526106606106c06040892093604051928391602083019586615bf5565b519020865260205284604081209160018301549260028101546106e38186613aac565b610cc6578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f5160206183775f395f51905f525afa968715610aa0578697610c8d575b506001908201610100031b5f1901811b1986165f5160206183775f395f51905f523b15610c89576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528381606481835f5160206183775f395f51905f525af1908115610c7e578491610c69575b50506107b8615dc5565b9015908115610c5d575b50610b7157505050506107d36168fa565b6020805460405163095ea7b360e01b81526001600160a01b0390911660048201525f196024820152929083604481885f5160206183975f395f51905f525af19283156103e957602493610b42575b505b6022546040516370a0823160e01b81523060048201529360209185919082906001600160a01b03165afa9283156103e9578593610b0e575b506040516370a0823160e01b8152306004820152926020846024815f5160206183975f395f51905f525afa938415610aa0578694610ada575b506040516278744560e21b81526020816004815f5160206183975f395f51905f525afa80156103b857610aab575b50602054602154604051638307c65560e01b8152600481018990525f5160206183975f395f51905f5260248201526001600160a01b039182166044820152606481019590955260848501849052608091859160a49183918b91165af1928315610aa0578693610a6f575b506022546040516370a0823160e01b815230600482015290602090829060249082906001600160a01b03165afa9081156103b8578791610a3d575b506040516370a0823160e01b8152306004820152956020876024815f5160206183975f395f51905f525afa968715610a325788976109fa575b5084516109ab578780f35b156109de576109d395926109c66109c695936109cc93613c50565b90614035565b5192613c50565b5f8080808080808780f35b936109c69391926109c66109f5976109cc93613c50565b6109d3565b9096506020813d602011610a2a575b81610a16602093836136ed565b81010312610a265751955f6109a0565b5f80fd5b3d9150610a09565b6040513d8a823e3d90fd5b90506020813d602011610a67575b81610a58602093836136ed565b81010312610a2657515f610967565b3d9150610a4b565b610a9291935060803d608011610a99575b610a8a81836136ed565b810190613d71565b915f61092c565b503d610a80565b6040513d88823e3d90fd5b6020813d602011610ad2575b81610ac4602093836136ed565b81010312610a2657516108c2565b3d9150610ab7565b9093506020813d602011610b06575b81610af6602093836136ed565b81010312610a265751925f610894565b3d9150610ae9565b9092506020813d602011610b3a575b81610b2a602093836136ed565b81010312610a265751915f61085b565b3d9150610b1d565b610b639060203d602011610b6a575b610b5b81836136ed565b810190613d59565b505f610821565b503d610b51565b82945054905f5160206183775f395f51905f523b1561040c576040516370ca10bb60e01b81526001600160a01b039091166004820152602481019190915260448101929092528180606481015b0381835f5160206183775f395f51905f525af18015610c5257610c3d575b60405162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b610c488280926136ed565b6101495780610bdc565b6040513d84823e3d90fd5b5f19141590505f6107c2565b81610c73916136ed565b61040c57825f6107ae565b6040513d86823e3d90fd5b8580fd5b955095506020853d602011610cbe575b81610caa602093836136ed565b81010312610a265793519489949081610734565b3d9150610c9d565b610cd1849186613aac565b610100036101008111610dd45760ff8111610dd45760405163348051d760e11b8152600190911b600482015281816024815f5160206183775f395f51905f525afa908115610c5257606a60209284610d8c93610dac9692610db0575b506040519485925f5160206183b75f395f51905f52828501525f5160206183575f395f51905f52604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f1981018352826136ed565b60405162461bcd60e51b8152602060048201529182916024830190613750565b0390fd5b610dcd9192503d8084833e610dc581836136ed565b810190613a3b565b9086610d2d565b634e487b7160e01b82526011600452602482fd5b610df061603f565b50610687565b634e487b7160e01b85526041600452602485fd5b81610e14916136ed565b61040857835f610539565b5080fd5b610e2f90949394613ab9565b5184105f5160206183775f395f51905f523b15610e1f5760405190632631f2b160e11b8252600482015281816024815f5160206183775f395f51905f525afa8015610c5257611352575b508060405160208101906370a0823160e01b825230602482015260248152610ea26044826136ed565b51905f5160206183975f395f51905f525afa50610ec06105806158da565b50601180546001600160a01b0319165f5160206183975f395f51905f521790556370a0823163ffffffff19600f541617600f55600e54600160401b811015610df6576105e4816001610f159301600e556138a1565b905560018060a01b036011541692600f5460e01b60105490610f35615c0c565b6001600160a01b0387165f908152600d60205260409020909163ffffffff60e01b1690818952602052604088206040516020810190610f7981610660888886615bf5565b519020895260205260ff600360408a2001541615611344575b6001600160a01b0387165f908152600d60205260409020908852602052610660610fcb6040892093604051928391602083019586615bf5565b51902086526020528460408120946001860154956002810154610fee8189613aac565b611210575b8154604051630667f9d760e41b81526001600160a01b0385166004820152602481018290529890919060208a6044815f5160206183775f395f51905f525afa998a15610aa057869a6111d7575b506001908201610100031b5f1901811b198916915f5160206183775f395f51905f523b15610c89576040516370ca10bb60e01b81526001600160a01b038616600482015260248101919091529086901b9190911760448201528381606481835f5160206183775f395f51905f525af1908115610c7e5784916111c2575b5050836110c8615dc5565b9190159182156111b7575b50506111655750505061111e9293506110ea6168fa565b6020805460405163095ea7b360e01b81526001600160a01b0390911660048201526024810183905293849081906044820190565b0381885f5160206183975f395f51905f525af19283156103e957602493611146575b50610823565b61115e9060203d602011610b6a57610b5b81836136ed565b505f611140565b8691839154905f5160206183775f395f51905f523b1561040c576040516370ca10bb60e01b81526001600160a01b03909116600482015260248101919091526044810192909252818060648101610bbe565b14159050845f6110d3565b816111cc916136ed565b61040c57825f6110bd565b955098506020853d602011611208575b816111f4602093836136ed565b81010312610a265793519789949081611040565b3d91506111e7565b9091925061121e8188613aac565b6101000361010081116113305760ff81116113305760405163348051d760e11b8152600190911b6004820181905289826024815f5160206183775f395f51905f525afa801561132557606a6112d6916020948d9161130b575b506040519485915f5160206183b75f395f51905f52828401525f5160206183575f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018d838201520301601f1981018452836136ed565b8510156112e7575090879291610ff3565b60405162461bcd60e51b815260206004820152908190610dac906024830190613750565b61131f91503d808f833e610dc581836136ed565b5f611277565b6040513d8c823e3d90fd5b634e487b7160e01b89526011600452602489fd5b61134c61603f565b50610f92565b8161135c916136ed565b61040857835f610e79565b634e487b7160e01b84526021600452602484fd5b6113989193503d8086833e61139081836136ed565b810190613ce0565b915f6104cf565b8190610476565b816113b0916136ed565b61040c57825f61046b565b503461014957806003193601126101495760206113d6613e62565b6040519015158152f35b50346101495780600319360112610149576019546113fd8161399e565b9161140b60405193846136ed565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b83831061144d57604051806101b78782613842565b60016020819260405161146b81611464818961391d565b03826136ed565b815201920192019190611438565b503461014957806003193601126101495760205460405163ecbbc03360e01b81526004810183905282918290829060249082906001600160a01b03165afa908115610c525782916115ed575b506001600160a01b036114d782613ab9565b516021549116906001600160a01b03165f5160206183775f395f51905f523b156115e8576040516328a9b0fb60e11b81526001600160a01b0392831660048201529116602482015282816044815f5160206183775f395f51905f525afa9081156115dd5783916115c8575b506001600160a01b03916115569150613ac6565b51165f5160206183775f395f51905f523b156115c557604051906328a9b0fb60e11b825260048201525f5160206183975f395f51905f52602482015281816044815f5160206183775f395f51905f525afa8015610c52576115b45750f35b816115be916136ed565b6101495780f35b50fd5b816115d2916136ed565b6115c557815f611542565b6040513d85823e3d90fd5b505050fd5b61160191503d8084833e6103aa81836136ed565b5f6114c5565b503461014957602036600319011261014957600435601f54811015610e1f5761162f906138cd565b91909161165f576040516101b79061164b81611464818761391d565b604051918291602083526020830190613750565b634e487b7160e01b81526004819052602490fd5b5034610149578060031936011261014957601c546116908161399e565b9061169e60405192836136ed565b808252601c8352827f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b8383106116e157604051806101b78782613774565b6040516116ed816136b7565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b8160078401106118605784600197946002979460209794611778945491818110611844575b818110611828575b81811061180c575b8181106117f0575b8181106117d4575b8181106117b8575b81811061179e575b1061178a575b5003826136ed565b838201528152019201920191906116cc565b6001600160e01b031916815286015f611770565b828a1b6001600160e01b0319168452928901928b0161176a565b604083901b6001600160e01b0319168452928901928b01611762565b606083901b6001600160e01b0319168452928901928b0161175a565b608083901b6001600160e01b0319168452928901928b01611752565b60a083901b6001600160e01b0319168452928901928b0161174a565b60c083901b6001600160e01b0319168452928901928b01611742565b60e083901b6001600160e01b0319168452928901928b0161173a565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e0820152019401920191611715565b50346101495780600319360112610149576101608160405161192183826136ed565b600a81526020810192601f1901368437815b600a8110611a7e575060205460215460405163155adc9160e31b8152600481018590525f5160206183975f395f51905f5260248201526001600160a01b0391821660448201526080606482015292516084840181905292948593919092169160a4840191855b818110611a62575050508290039082905afa908115610c52578291611a40575b50815b600981106119c8578280f35b6119d28183613ad6565b516001820190818311611a2c576020611a1883611a0a611a03611a26956119fc600199988b613ad6565b5190613efd565b890b613f3b565b611a2083611a18878a613ad6565b510151613f96565b86613ad6565b016119bc565b634e487b7160e01b85526011600452602485fd5b611a5c91503d8084833e611a5481836136ed565b810190613b12565b5f6119b9565b8251845288965087955060209384019390920191600101611999565b9092915060018101808211611a2c57806103e802906103e882048103611ad857683635c9adc5dea000000290808204670de0b6b3a76400001490151715611a2c5790600191611acd8286613ad6565b520191839192611933565b634e487b7160e01b86526011600452602486fd5b5034610149578060031936011261014957601a54611b098161399e565b91611b1760405193846136ed565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b838310611b5957604051806101b78782613842565b600160208192604051611b7081611464818961391d565b815201920192019190611b44565b503461014957611b8d36613823565b5f5160206183775f395f51905f523b1561040c57604051632631f2b160e11b8152600183116004820152839081816024815f5160206183775f395f51905f525afa8015610c525761272f575b505015612728576001905b60205460215460405163549387df60e11b8152600481018690526001600160a01b0391821660248201525f5160206183975f395f51905f5260448201529291859184916064918391165afa918215610c7e57849261270c575b50600283101561136757836001841492835f146122a857611c5d90613ac6565b5182105f5160206183775f395f51905f523b15610e1f5760405190632631f2b160e11b8252600482015281816024815f5160206183775f395f51905f525afa8015610c5257612293575b5050611d0f60018060a01b0360225416858060405160208101906370a0823160e01b825230602482015260248152611ce06044826136ed565b5190845afa50611cf16105806158da565b5060018060a01b03166001600160601b0360a01b6011541617601155565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015610df65790611d476105e483600188969501600e556138a1565b905560018060a01b0360115416600f5460e01b60105490611d66615c0c565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818852602052604087206040516020810190611daa81610660888886615bf5565b519020885260205260ff60036040892001541615612285575b6001600160a01b0384165f908152600d60205260409020908752602052610660611dfc6040882093604051928391602083019586615bf5565b519020855260205260408420906001820154916002810154611e1e8185613aac565b61227a578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052949091906020866044815f5160206183775f395f51905f525afa95861561226f578996612236575b506001908201610100031b5f1901811b1985165f5160206183775f395f51905f523b15612232576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528681606481835f5160206183775f395f51905f525af19081156103b857879161221d575b5050611ef3615dc5565b9015908115612211575b506121bd57505050611f0d6168fa565b6022546020805460405163095ea7b360e01b81526001600160a01b0391821660048201525f19602482015295919286926044928492165af19283156103e95760249361219e575b505b6022546040516370a0823160e01b81523060048201529360209185919082906001600160a01b03165afa9283156103e957859361216a575b506040516370a0823160e01b81523060048201526020816024815f5160206183975f395f51905f525afa908115610aa0578691612138575b50602054602154604051638307c65560e01b8152600481018990526001600160a01b0391821660248201525f5160206183975f395f51905f526044820152606481019790975260848701849052608091879160a49183918b91165af1928315610aa0576024958794612117575b506022546040516370a0823160e01b81523060048201529660209188919082906001600160a01b03165afa9586156103b85787966120e3575b506040516370a0823160e01b8152306004820152906020826024815f5160206183975f395f51905f525afa918215610a325788926120af575084516109ab578780f35b9091506020813d6020116120db575b816120cb602093836136ed565b81010312610a265751905f6109a0565b3d91506120be565b9095506020813d60201161210f575b816120ff602093836136ed565b81010312610a265751945f61206c565b3d91506120f2565b61213191945060803d608011610a9957610a8a81836136ed565b925f612033565b90506020813d602011612162575b81612153602093836136ed565b81010312610a2657515f611fc6565b3d9150612146565b9092506020813d602011612196575b81612186602093836136ed565b81010312610a265751915f611f8e565b3d9150612179565b6121b69060203d602011610b6a57610b5b81836136ed565b505f611f54565b92509250935054905f5160206183775f395f51905f523b1561040c576040516370ca10bb60e01b81526001600160a01b03909116600482015260248101919091526044810192909252818060648101610bbe565b5f19141590505f611efd565b81612227916136ed565b610c8957855f611ee9565b8880fd5b985094506020883d602011612267575b81612253602093836136ed565b81010312610a265796518997909481611e6f565b3d9150612246565b6040513d8b823e3d90fd5b610cd1879185613aac565b61228d61603f565b50611dc3565b8161229d916136ed565b61040857835f611ca7565b6122b59094939294613ab9565b5184105f5160206183775f395f51905f523b15610e1f5760405190632631f2b160e11b8252600482015281816024815f5160206183775f395f51905f525afa8015610c52576126f7575b505061233860018060a01b0360225416858060405160208101906370a0823160e01b825230602482015260248152611ce06044826136ed565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015610df6576105e481600161236d9301600e556138a1565b905560018060a01b036011541692600f5460e01b6010549061238d615c0c565b6001600160a01b0387165f908152600d60205260409020909163ffffffff60e01b16908189526020526040882060405160208101906123d181610660888886615bf5565b519020895260205260ff600360408a20015416156126e9575b6001600160a01b0387165f908152600d602052604090209088526020526106606124236040892093604051928391602083019586615bf5565b519020865260205284604081209460018601549560028101546124468189613aac565b612613575b8154604051630667f9d760e41b81526001600160a01b0385166004820152602481018290529890919060208a6044815f5160206183775f395f51905f525afa998a15610aa057869a6125da575b506001908201610100031b5f1901811b198916915f5160206183775f395f51905f523b15610c89576040516370ca10bb60e01b81526001600160a01b038616600482015260248101919091529086901b9190911760448201528381606481835f5160206183775f395f51905f525af1908115610c7e5784916125c5575b505083612520615dc5565b9190159182156125ba575b5050611165575050506125829293506125426168fa565b6022546020805460405163095ea7b360e01b81526001600160a01b0391821660048201526024810185905295919286929116908290899082906044820190565b03925af19283156103e95760249361259b575b50611f56565b6125b39060203d602011610b6a57610b5b81836136ed565b505f612595565b14159050845f61252b565b816125cf916136ed565b61040c57825f612515565b955098506020853d60201161260b575b816125f7602093836136ed565b81010312610a265793519789949081612498565b3d91506125ea565b909192506126218188613aac565b6101000361010081116113305760ff81116113305760405163348051d760e11b8152600190911b6004820181905289826024815f5160206183775f395f51905f525afa801561132557606a6126d8916020948d9161130b57506040519485915f5160206183b75f395f51905f52828401525f5160206183575f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018d838201520301601f1981018452836136ed565b8510156112e757509087929161244b565b6126f161603f565b506123ea565b81612701916136ed565b61040857835f6122ff565b6127219192503d8086833e61139081836136ed565b905f611c3d565b8190611be4565b81612739916136ed565b61040c57825f611bd9565b5034610149578060031936011261014957601b546127618161399e565b9061276f60405192836136ed565b808252601b8352827f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1602084015b8383106127b257604051806101b78782613774565b6040516127be816136b7565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b8160078401106128535784600197946002979460209794612841945491818110611844578181106118285781811061180c578181106117f0578181106117d4578181106117b85781811061179e571061178a575003826136ed565b8382015281520192019201919061279d565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e08201520194019201916127e6565b503461014957806003193601126101495760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b818110612951576101b7856101ab818703826136ed565b82546001600160a01b031684526020909301926001928301920161293a565b503461014957806003193601126101495760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b8181106129cf576101b7856101ab818703826136ed565b82546001600160a01b03168452602090930192600192830192016129b8565b503461014957806003193601126101495760205460215460405163549387df60e11b8152600481018490526001600160a01b03918216602482018190525f5160206183975f395f51905f526044830152929091169183908183606481875afa928315610c52578293612b2d575b50612a668351613fe5565b60405163549387df60e11b81528260048201528260248201525f5160206183975f395f51905f5260448201528281606481885afa80156115dd57612b15575b50612ab08351613fe5565b60646040518095819363549387df60e11b83528560048401525f5160206183975f395f51905f52602484015260448301525afa9182156115dd57612afa92612afd575b5051613fe5565b80f35b612b10903d8086833e61139081836136ed565b612af3565b612b28903d8085833e61139081836136ed565b612aa5565b612b429193503d8084833e61139081836136ed565b915f612a5b565b50346101495760403660031901126101495760043560243560018060a01b03602054169060018060a01b0360215416908460405163549387df60e11b81528160048201528360248201525f5160206183975f395f51905f5260448201528181606481885afa908115610c52578291612e27575b50612bc681613ab9565b5186105f5160206183775f395f51905f523b1561040c5760405190632631f2b160e11b8252600482015282816024815f5160206183775f395f51905f525afa9081156115dd578391612e12575b50505f5160206183775f395f51905f523b15610e1f57604051632631f2b160e11b815260018711600482015282816024815f5160206183775f395f51905f525afa9081156115dd578391612dfd575b5050612c6d90613ab9565b5182105f5160206183775f395f51905f523b15610e1f5760405190632631f2b160e11b8252600482015281816024815f5160206183775f395f51905f525afa8015610c5257612de8575b50505f5160206183775f395f51905f523b15612de457604051632631f2b160e11b815260018211600482015285816024815f5160206183775f395f51905f525afa8015610aa057612dcf575b5091849391612d58959360405193612d1c6060866136ed565b600285526040366020870137612d3185613ab9565b52612d3b84613ac6565b5260405180968194829363155adc9160e31b845260048401613b96565b03915afa918215612dc2578192612da6575b50805b8251811015612da25780612d8d612d8660019386613ad6565b5151613f96565b612d9c6020611a188387613ad6565b01612d6d565b5080f35b612dbb9192503d8084833e611a5481836136ed565b905f612d6a565b50604051903d90823e3d90fd5b612dda8680926136ed565b612de4575f612d03565b8480fd5b81612df2916136ed565b612de457845f612cb7565b81612e07916136ed565b610e1f57815f612c62565b81612e1c916136ed565b610e1f57815f612c13565b612e3b91503d8084833e61139081836136ed565b5f612bbc565b5034610149578060031936011261014957601d54612e5e8161399e565b612e6b60405191826136ed565b818152601d83526020810191837f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f845b838310612f6f5786858760405192839260208401906020855251809152604084019160408260051b8601019392815b838310612ed75786860387f35b919395509193603f198782030183528551906020604082019260018060a01b0381511683520151916040602083015282518091526060820190602060608260051b850101940192855b828110612f4457505050505060208060019297019301930190928695949293612eca565b9091929394602080612f62600193605f198782030189528951613750565b9701950193929101612f20565b604051612f7b816136b7565b82546001600160a01b03168152600183018054612f978161399e565b91612fa560405193846136ed565b8183528a526020808b20908b9084015b838210612fdb575050505060019282602092836002950152815201920192019190612e9b565b600160208192604051612ff281611464818a61391d565b815201930191019091612fb5565b503461014957806003193601126101495760405161016061302181836136ed565b600a8252601f190136602083013781805b600a81106130e4575060205460215460405163155adc9160e31b81529384926001600160a01b03908116928492839261306f921660048401613b96565b03915afa908115610c525782916130ca575b50815b60098110613090578280f35b61309a8183613ad6565b516001820190818311611a2c576020611a1883611a0a611a036130c4956119fc600199988b613ad6565b01613084565b6130de91503d8084833e611a5481836136ed565b5f613081565b90506001810180821161313a57806103e802906103e882048103611a2c57683635c9adc5dea000000290808204670de0b6b3a7640000149015171561313a57906001916131318285613ad6565b52018290613032565b634e487b7160e01b84526011600452602484fd5b503461014957806003193601126101495760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b8181106131ad576101b7856101ab818703826136ed565b82546001600160a01b0316845260209093019260019283019201613196565b5034610a26575f366003190112610a26576020546021546040516348bd7dfd60e01b81525f60048201819052602482018190526001600160a01b0392831660448301529092909183916064918391165afa90811561328c575f91613297575b50515f5160206183775f395f51905f523b15610a26576040519063260a5b1560e21b82526004820152600460248201525f816044815f5160206183775f395f51905f525afa801561328c5761327e575080f35b61328a91505f906136ed565b005b6040513d5f823e3d90fd5b6132ab91503d805f833e6103db81836136ed565b5f61322b565b34610a26575f366003190112610a26576040516101606132d181836136ed565b600a82526020820190601f19013682375f5b600a81106133fd575060205460405163155adc9160e31b81525f60048201819052602482018190525f5160206183975f395f51905f5260448301526080606483015293516084820181905290936001600160a01b0390921692849260a4840192905b8181106133e457505050918180845f955003915afa90811561328c575f916133ca575b505f5b6009811061337557005b61337f8183613ad6565b519060018101918282116133b6576020611a1884611a0a6133a96133b0956119fc6001998b613ad6565b5f0b613f3b565b0161336b565b634e487b7160e01b5f52601160045260245ffd5b6133de91503d805f833e611a5481836136ed565b81613368565b8251845286945060209384019390920191600101613345565b60018101908181116133b657816103e802916103e8830481036133b657683635c9adc5dea000000291808304670de0b6b3a764000014901517156133b6576001916134488286613ad6565b52016132e3565b34610a26575f366003190112610a265760405163975a6ce960e01b81526020600482015260076024820152661b585a5b9b995d60ca1b60448201525f816064815f5160206183775f395f51905f525afa90811561328c576134d7916020915f91613664575b50604051809381926371ee464d60e01b8352604060048401526044830190613750565b6301272172602483015203815f5f5160206183775f395f51905f525af1801561328c57613635575b506040516117ac808201908282106001600160401b03831117613621576040918391616bab833973bafa44efe7901e04e39dad13167d089c559c113881525f5160206183975f395f51905f5260208201520301905ff0801561328c57602080546001600160a01b0319166001600160a01b03929092169190911781556040516338d52e0f60e01b815290816004815f5160206183975f395f51905f525afa90811561328c575f916135df575b5060018060a01b0316806001600160601b0360a01b60225416176022556001600160601b0360a01b60215416176021555f80f35b90506020813d602011613619575b816135fa602093836136ed565b81010312610a2657516001600160a01b0381168103610a2657816135ab565b3d91506135ed565b634e487b7160e01b5f52604160045260245ffd5b6020813d60201161365c575b8161364e602093836136ed565b81010312610a2657516134ff565b3d9150613641565b61367891503d805f833e610dc581836136ed565b836134b4565b34610a26576040366003190112610a26576136af60209161369e816136b7565b6004358152602435838201526139e6565b604051908152f35b604081019081106001600160401b0382111761362157604052565b606081019081106001600160401b0382111761362157604052565b90601f801991011681019081106001600160401b0382111761362157604052565b60206040818301928281528451809452019201905f5b8181106137315750505090565b82516001600160a01b0316845260209384019390920191600101613724565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b602081016020825282518091526040820191602060408360051b8301019401925f915b8383106137a657505050505090565b9091929394603f1982820301835285516020606081604085019360018060a01b0381511686520151936040838201528451809452019201905f905b8082106138005750505060208060019297019301930191939290613797565b82516001600160e01b0319168452602093840193909201916001909101906137e1565b6040906003190112610a2657600435906024358015158103610a265790565b602081016020825282518091526040820191602060408360051b8301019401925f915b83831061387457505050505090565b9091929394602080613892600193603f198682030187528951613750565b97019301930191939290613865565b600e548110156138b957600e5f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b601f548110156138b957601f5f5260205f2001905f90565b90600182811c92168015613913575b60208310146138ff57565b634e487b7160e01b5f52602260045260245ffd5b91607f16916138f4565b5f929181549161392c836138e5565b8083529260018116908115613981575060011461394857505050565b5f9081526020812093945091925b838310613967575060209250010190565b600181602092949394548385870101520191019190613956565b915050602093945060ff929192191683830152151560051b010190565b6001600160401b0381116136215760051b60200190565b818102929181159184041417156133b657565b81156139d2570490565b634e487b7160e01b5f52601260045260245ffd5b80516a084595161401484a0000008102908082046a084595161401484a00000014901517156133b6576020613a1d920151906139c8565b90565b6001600160401b03811161362157601f01601f191660200190565b602081830312610a26578051906001600160401b038211610a26570181601f82011215610a2657805190613a6e82613a20565b92613a7c60405194856136ed565b82845260208383010111610a2657815f9260208093018386015e8301015290565b90816020910312610a26575190565b919082018092116133b657565b8051156138b95760200190565b8051600110156138b95760400190565b80518210156138b95760209160051b010190565b9190826040910312610a2657604051613b02816136b7565b6020808294805184520151910152565b602081830312610a26578051906001600160401b038211610a26570181601f82011215610a26578051613b448161399e565b92613b5260405194856136ed565b81845260208085019260061b84010192818411610a2657602001915b838310613b7c575050505090565b6020604091613b8b8486613aea565b815201920191613b6e565b60a060209160808101935f8252600180841b0316838201525f5160206183975f395f51905f526040820152608060608201528451809452019201905f5b818110613be05750505090565b8251845260209384019390920191600101613bd3565b60a0919360209360808301958352600180851b031684830152600180841b03166040820152608060608201528451809452019201905f5b818110613c3a5750505090565b8251845260209384019390920191600101613c2d565b919082039182116133b657565b602081830312610a26578051906001600160401b038211610a2657019080601f83011215610a2657815190613c918261399e565b92613c9f60405194856136ed565b82845260208085019360051b820101918211610a2657602001915b818310613cc75750505090565b8251600a811015610a2657815260209283019201613cba565b602081830312610a26578051906001600160401b038211610a2657019080601f83011215610a26578151613d138161399e565b92613d2160405194856136ed565b81845260208085019260051b820101928311610a2657602001905b828210613d495750505090565b8151815260209182019101613d3c565b90816020910312610a2657518015158103610a265790565b90608082820312610a2657613da2906040805193613d8e856136d2565b805185526020810151602086015201613aea565b604082015290565b9081526001600160a01b039182166020820152911660408201525f6060820152608081019190915260a00190565b602081830312610a26578051906001600160401b038211610a2657019080601f83011215610a2657815190613e0c8261399e565b92613e1a60405194856136ed565b82845260208085019360051b820101918211610a2657602001915b818310613e425750505090565b82516001600160a01b0381168103610a2657815260209283019201613e35565b60085460ff168015613e715790565b50604051630667f9d760e41b81525f5160206183775f395f51905f5260048201526519985a5b195960d21b60248201526020816044815f5160206183775f395f51905f525afa90811561328c575f91613ecb575b50151590565b90506020813d602011613ef5575b81613ee6602093836136ed565b81010312610a2657515f613ec5565b3d9150613ed9565b613f1d906020613f12825182860151906139b5565b9351910151906139b5565b90808203613f2b5750505f90565b1115613f3657600190565b5f1990565b5f5160206183775f395f51905f523b15610a26576040519063fe74f05b60e01b825260048201525f60248201525f816044815f5160206183775f395f51905f525afa801561328c57613f8a5750565b5f613f94916136ed565b565b5f5160206183775f395f51905f523b15610a265760405190636d83fe6960e11b825260048201525f60248201525f816044815f5160206183775f395f51905f525afa801561328c57613f8a5750565b5f5160206183775f395f51905f523b15610a26576040519063260a5b1560e21b82526004820152600260248201525f816044815f5160206183775f395f51905f525afa801561328c57613f8a5750565b905f5160206183775f395f51905f523b15610a26576040519163260a5b1560e21b8352600483015260248201525f816044815f5160206183775f395f51905f525afa801561328c57613f8a5750565b5f5b81518110156140cd576140998183613ad6565b51600a8110156140b9576005146140b257600101614086565b5050600190565b634e487b7160e01b5f52602160045260245ffd5b50505f90565b5f5b81518110156140cd576140e88183613ad6565b51600a8110156140b9576009146140b2576001016140d5565b5f5b81518110156140cd576141168183613ad6565b51600a8110156140b9576008146140b257600101614103565b60405190602082019263095ea7b360e01b845260018060a01b0316928360248401525f196044840152604483526141676064846136ed565b82516001600160a01b038316915f91829182855af1906141856158da565b826141e5575b50816141da575b501561419d57505050565b6141d5613f94936040519063095ea7b360e01b602083015260248201525f6044820152604481526141cf6064826136ed565b82615909565b615909565b90503b15155f614192565b805191925081159182156141fd575b5050905f61418b565b6142109250602080918301019101613d59565b5f806141f4565b604051906142266060836136ed565b603682527536103a3790383934b1b29030b33a32b91039bbb0b81760511b6040837f45786563757465642070726963652073686f756c64206265206f72206571756160208201520152565b60c09490945260405163549387df60e11b8152600481018290526001600160a01b0380841660248301528416604482015291939290915f8180606481016101208490520381836001600160a01b0389165af1801561328c576142da915f916158c0575b50613ab9565b5161010052606060a0819052604051614336916142f790826136ed565b602381527f53656c6c206c696d69742073686f756c6420626520677265617465722074686160208201526206e20360ec1b6040820152610100516159cc565b60a051505f806143be6143ec60405161435160a051826136ed565b603681527f544553543a2054657374696e672070726963657320666f722070616972202573602082015275080b4f88095ccb8814d95b1b081b1a5b5a5d0e88095960521b6040820152604051928391638ef3f39960e01b60208401526080602484015260a4830190613750565b6001600160a01b038a811660448401528716606483015261010051608483015203601f1981018352826136ed565b6020815191016a636f6e736f6c652e6c6f675afa506040516348bd7dfd60e01b8152600481018390526001600160a01b038086166024830152821660448201525f8180606481010381836001600160a01b0389165af1801561328c57614459915f916158a6575b506140d3565b906040519161446960a0846136ed565b60048352608036602085013715615899575f5b61448583613ab9565b526103e8610100510461449783613ac6565b528151600210156138b95760a05182016101005160011c90528151600310156138b95761010051608083015260405163155adc9160e31b8152935f85806144e486868b8a60048601613bf6565b0381836001600160a01b0386165af194851561328c575f9561587d575b5061451461450e86613ab9565b516139e6565b85515f198101919082116133b65761453261450e61458c9389613ad6565b60a051604051929061454490846136ed565b603083527f5072696365206174206c696d69742073686f756c6420626520736d616c6c657260208401526f0207468616e20707269636520617420360841b6040840152615a33565b61459861450e86613ab9565b85515f1981019081116133b65761463361464c5f936145bb61450e86958c613ad6565b60a0516040519291906145ce90846136ed565b602d83527f544553543a20507269636520617420303a2025642c207072696365206174207360208401526c195b1b081b1a5b5a5d0e880959609a1b604084015260405194859363ca47c4eb60e01b602086015260a05160248601526084850190613750565b916044840152606483015203601f1981018352826136ed565b6020815191016a636f6e736f6c652e6c6f675afa5060a0516040516146b29161467590826136ed565b602581527f544553543a2054657374696e67206265686176696f7220666f72207072696365602082015264020617420360dc1b6040820152615a68565b6147046146be86613ab9565b5151604060e0819052805191906146d590836136ed565b601882527f4e6f6d696e61746f722073686f756c646e27742062652030000000000000000060208301526159cc565b614755602061471287613ab9565b51015160e0518051919061472690836136ed565b601a82527f44656e6f6d696e61746f722073686f756c646e2774206265203000000000000060208301526159cc565b61476161450e86613ab9565b9460e051506147a08660e0515161477a60e051826136ed565b6014815273151154d50e88141c9a58d948185d080c0e88095960621b6020820152615aac565b60e051516147ad816136d2565b5f81525f602082015260e05151906147c4826136b7565b5f808352602083015260e051015283515f1981019081116133b6576147e99085613ad6565b5160058181020481036133b6575f8060e0515160208101906370a0823160e01b8252306024820152602481526148206044826136ed565b51908b5afa506148316105806158da565b50601180546001600160a01b0319166001600160a01b038a161790556370a0823163ffffffff19600f541617600f55600e54600160401b811015613621576105e48160016148829301600e556138a1565b90556011546001600160a01b031661014052600f546010549060e01b6148a6615c0c565b610140516001600160a01b03165f908152600d60205260409020909163ffffffff60e01b1690815f5260205260e0515f2060e0515160208101906148ef81610660888886615bf5565b5190205f5260205260ff600360e0515f200154161561586f575b610140516001600160a01b03165f908152600d60205260409020905f5260205261066061494760e0515f209360e05151928391602083019586615bf5565b5190205f5260205260e0515f2060018101549160028201546149698185613aac565b615759575b825460e05151630667f9d760e41b8152610140516001600160a01b0316600482015260248101829052949091906020866044815f5160206183775f395f51905f525afa958615615719575f96615725575b506001908201610100031b5f1901811b1985165f5160206183775f395f51905f523b15610a265760e051516370ca10bb60e01b8152610140516001600160a01b0316600482015260248101939093526005840290911b1760448201525f81606481835f5160206183775f395f51905f525af1801561571957615704575b50614a45615dc5565b90159182156156f6575b5050615602575050614a5f6168fa565b60e05151634b88b8ad60e11b8152602081600481610120515f5160206183775f395f51905f525af18015614f5657610120516080526155cf575b5060015b8451811015615023575f80614b54614b7a614ab7856138cd565b50614ac2868b613ad6565b51614b66611464614b2e60e0515194614add60a051876136ed565b603086527f544553543a2054657374696e67206265686176696f7220666f7220707269636560208701526f1030ba1012b99037b3103634b6b4ba1760811b60e05187015260e051519283809261391d565b60e05151635821efa160e01b602082015260a05160248201529586946084860190613750565b84810360231901604486015290613750565b90606483015203601f1981018352826136ed565b6020815191016a636f6e736f6c652e6c6f675afa50614b9c61450e8284613ad6565b5f80614c11614c358c614baf878c613ad6565b5160e0515191614bc160e051846136ed565b601783527f544553543a205377617070696e67202564206f66202573000000000000000000602084015260e0515194859363038fd88960e31b602086015260a05160248601526084850190613750565b60448401929092526001600160a01b0316606483015203601f1981018352826136ed565b6020815191016a636f6e736f6c652e6c6f675afa508460808a89614c79614c5c878c613ad6565b5160e05151638307c65560e01b8152958694859460048601613daa565b03816101205160018060a01b038a165af1908115614f56576101205191615005575b508051806a084595161401484a0000008102046a084595161401484a0000001481151715614feb57614ce8614cf3916a084595161401484a000000614ce0878c613ad6565b5191026139c8565b9160e05101516139e6565b91614d378260e05151614d0860e051826136ed565b601d81527f544553543a20202d2045786563757465642070726963653a20202025640000006020820152615aac565b614d7a8160e05151614d4b60e051826136ed565b601d81527f544553543a20202d20507269636520617420616d6f756e743a202025640000006020820152615aac565b614dbd8360e05151614d8e60e051826136ed565b601d81527f544553543a20202d20507269636520616674657220737761703a2025640000006020820152615aac565b60c05115614f655760a05160e05151614ef194614e96939092614e2c929190614de690836136ed565b602c82527f50726963652073686f756c642062652067726561746564207468616e2065786560208301526b31baba32b210383934b1b29760a11b60e05183015285615aef565b60a05160e051519190614e3f90836136ed565b603782527f45786563757465642070726963652073686f756c64206265206772656174657260208301527f207468616e20707269636520616674657220737761702e00000000000000000060e05183015283615a33565b60a05160e051519190614ea990836136ed565b602e82527f50726963652073686f756c642062652067726561746564207468616e2070726960208301526d31b29030b33a32b91039bbb0b81760911b60e05183015289615a33565b60e0515190631135fc2960e21b82526080516004830152602082602481610120515f5160206183775f395f51905f525af1918215614f5657600192614f38575b5001614a9d565b614f4f9060203d8111610b6a57610b5b81836136ed565b505f614f31565b60e051513d61012051823e3d90fd5b614f8e90614f7f614fe694614f78614217565b908d615aef565b614f87614217565b908b615aef565b60e0515190614f9f60a051836136ed565b602d82527f50726963652073686f756c64206265206f7220657175616c20746f207072696360208301526c329030b33a32b91039bbb0b81760991b60e05183015289615aef565b614ef1565b634e487b7160e01b61012051526011600452602461012051fd5b61501d915060803d8111610a9957610a8a81836136ed565b5f614c9b565b50509150919392506069610100510261010051810460691461010051151715614feb5760e051516348bd7dfd60e01b81526101208051600483018890526001600160a01b0387811660248501528681166044850152915160649485900497949192849291839188165af18015614f56576150a79161012051916155b2575b50614101565b156154555761510f8460e051516150c060a051826136ed565b603681527f544553543a2054657374696e6720726576657274206265686176696f722061626020820152751bdd99481d1a19481cd95b1b081b1a5b5a5d0e88095960521b60e051820152615aac565b60e0518051949061512090866136ed565b6001855260e051601f190136602087013761513a85613ab9565b5260e0515163155adc9160e31b815261012051818061515f8888878c60048601613bf6565b03816101205160018060a01b0388165af1908161543a575b506153ce576001615186615b24565b6308c379a014615340575b614f56576151a0608094613ab9565b51946151c360e0515196879586948594638307c65560e01b865260048601613daa565b61012051919003926001600160a01b03165af19081615323575b506152c15760016151ec615b24565b6308c379a01461523e575b614f56575b613f9460e0515161520f60e051826136ed565b601781527f544553543a20416c6c207465737473207061737365642e0000000000000000006020820152615a68565b615246615b3f565b80615252575b506151f7565b6101205160a05160e051519193506152bb92919061527090826136ed565b603281527f544553543a204578706563746564206572726f72207768656e207377617070696020820152716e672061626f7665206c696d69743a20257360701b60e051820152615bb1565b5f61524c565b60e0515162461bcd60e51b815260206004820152603360248201527f506f6f6c2073686f756c646e27742062652061626c6520746f20737761702061604482015272189bdd99481d1a19481cd95b1b081b1a5b5a5d606a1b6064820152608490fd5b61533b9060803d608011610a9957610a8a81836136ed565b6151dd565b615348615b3f565b80615354575b50615191565b6101205160a05160e051519193506153c892919061537290826136ed565b603881527f544553543a204578706563746564206572726f72207768656e2066657463686960208201527f6e672070726963652061626f7665206c696d69743a202573000000000000000060e051820152615bb1565b5f61534e565b60e0515162461bcd60e51b815260206004820152603b60248201527f506f6f6c2073686f756c646e27742062652061626c6520746f2066657463682060448201527f7072696365732061626f7665207468652073656c6c206c696d697400000000006064820152608490fd5b615450903d8061012051833e611a5481836136ed565b615177565b60a05160e051516154b79186919061546d90826136ed565b603181527f544553543a2054657374696e67206f7065726174696f6e732061626f766520746020820152701a19481cd95b1b081b1a5b5a5d0e880959607a1b60e051820152615aac565b60e051805194906154c890866136ed565b6001855260e051601f19013660208701376154e285613ab9565b5260e051519363155adc9160e31b85526101205185806155088488878c60048601613bf6565b03816101205160018060a01b0388165af1908115614f5657608095615531926155975750613ab9565b519461555460e0515196879586948594638307c65560e01b865260048601613daa565b61012051919003926001600160a01b03165af18015614f5657615578575b506151fc565b6155909060803d608011610a9957610a8a81836136ed565b505f615572565b6155ad903d8061012051833e611a5481836136ed565b6142d4565b6155c991503d8061012051833e6103db81836136ed565b5f6150a1565b6020813d6020116155fa575b816155e8602093836136ed565b81010312610a2657516080525f614a99565b3d91506155db565b545f5160206183775f395f51905f523b156156ef5760e051516370ca10bb60e01b815261012051610140516001600160a01b03166004830152602482019290925260448101929092528180606481010381610120515f5160206183775f395f51905f525af18015614f56576156d4575b60e0515162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b610120516156e1916136ed565b610120516156ef5780615672565b6101205180fd5b600502141590505f80614a4f565b5f61570e916136ed565b5f610120525f614a3c565b60e051513d5f823e3d90fd5b9095506020813d602011615751575b81615741602093836136ed565b81010312610a26575194816149bf565b3d9150615734565b6157638185613aac565b6101000361010081116133b65760ff81116133b65760e0515163348051d760e11b81526001821b60048201525f816024815f5160206183775f395f51905f525afa9182156157195761581f606a6020946001945f91615855575b5060e051519586915f5160206183b75f395f51905f52828401525f5160206183575f395f51905f5260e05184015269030ba32b9103a3430b7160b51b60a0518401528051918291018484015e81015f838201520301601f1981018552846136ed565b1b836005021015615830575061496e565b60e0515162461bcd60e51b815260206004820152908190610dac906024830190613750565b61586991503d805f833e610dc581836136ed565b5f6157bd565b61587761603f565b50614909565b6158929195503d805f833e611a5481836136ed565b935f614501565b612710610100510461447c565b6158ba91503d805f833e6103db81836136ed565b5f614453565b6158d491503d805f833e61139081836136ed565b5f6142d4565b3d15615904573d906158eb82613a20565b916158f960405193846136ed565b82523d5f602084013e565b606090565b8151615934926001600160a01b03909216915f91829160200182855af161592e6158da565b91615f84565b80519081615940575050565b602080615951938301019101613d59565b1561595857565b60405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b613a1d9392606092825260208201528160408201520190613750565b5f5160206183775f395f51905f523b15610a2657615a14915f916040519384928392636cd1e26960e11b84526004840152846024840152606060448401526064830190613750565b03815f5160206183775f395f51905f525afa801561328c57613f8a5750565b905f5160206183775f395f51905f523b15610a26575f91615a146040519485938493636cd1e26960e11b8552600485016159b0565b5f610660615a95829360405192839163104c13eb60e21b6020840152602060248401526044830190613750565b6020815191016a636f6e736f6c652e6c6f675afa50565b615adb615a955f93928493604051938492632d839cb360e21b6020850152604060248501526064840190613750565b90604483015203601f1981018352826136ed565b905f5160206183775f395f51905f523b15610a26575f91615a146040519485938493630389490b60e61b8552600485016159b0565b5f9060033d11615b3057565b905060045f803e5f5160e01c90565b5f60443d10613a1d576040513d600319016004823e8051913d60248401116001600160401b03841117615bab57828201928351916001600160401b038311615ba3573d84016003190185840160200111615ba35750613a1d929101602001906136ed565b949350505050565b92915050565b615be3615a955f93926106608594604051948593634b5c427760e01b6020860152604060248601526064850190613750565b83810360231901604485015290613750565b60209291908391805192839101825e019081520190565b615c176014546138e5565b615cd4576040519081826020600e549283815201600e5f5260205f20925f5b818110615cbb575050615c4b925003836136ed565b81518060051b90808204602014901517156133b657615c6981613a20565b90615c7760405192836136ed565b808252615c86601f1991613a20565b013660208301375f5b8351811015615cb65780615ca560019286613ad6565b5160208260051b8501015201615c8f565b509150565b8454835260019485019487945060209093019201615c36565b604051613a1d8161146481601461391d565b6007810190615cf582546138e5565b615db157600191500190604051808360208295549384815201905f5260205f20925f5b818110615d98575050615d2d925003836136ed565b81518060051b90808204602014901517156133b657615d4b81613a20565b90615d5960405192836136ed565b808252615d68601f1991613a20565b013660208301375f5b8351811015615cb65780615d8760019286613ad6565b5160208260051b8501015201615d71565b8454835260019485019487945060209093019201615d18565b50613a1d611464916040519283809261391d565b5f806020600f5460e01b615e136024615dde600d615ce6565b6040519485918183019563ffffffff60e01b1686528051918291018484015e810186838201520301601f1981018452836136ed565b6011549151916001600160a01b03165afa90615e2d6158da565b601054909290600581901b906001600160fb1b038116036133b6575f938051602081115f14615eb857506020905b5f925b828410615e6d57505050509190565b90919295615e7b8783613aac565b83518110156138b957830160200151600388901b91906001600160f81b031916881560088a85041417156133b6576001921c179601929190615e5e565b90615e5b565b905f806020600285015460e01b615ed96024615dde88615ce6565b60048601549151916001600160a01b03165afa6003615ef66158da565b930154600581901b906001600160fb1b038116036133b6575f938051602081115f14615f7e57506020905b5f925b828410615f3357505050509190565b90919295615f418783613aac565b83518110156138b957830160200151600388901b91906001600160f81b031916881560088a85041417156133b6576001921c179601929190615f24565b90615f21565b90615fa85750805115615f9957805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580615fd9575b615fb9575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15615fb1565b9080601f83011215610a26578151615ff98161399e565b9261600760405194856136ed565b81845260208085019260051b820101928311610a2657602001905b82821061602f5750505090565b8151815260209182019101616022565b601154600f546010546001600160a01b03909216915f9160e01b616063600d615ce6565b90845f52600d60205260405f209063ffffffff60e01b1690815f5260205260405f20604051602081019061609c81610660888886615bf5565b5190205f5260205260ff600360405f200154166168b9575f5160206183775f395f51905f523b15610a265760405163266cf10960e01b81525f81600481835f5160206183775f395f51905f525af1801561328c576168a4575b50616100600d615ebe565b90506040516365bc948160e01b81528660048201528581602481835f5160206183775f395f51905f525af1908115610aa0578691616840575b5080516161aa57608460405162461bcd60e51b815260206004820152604060248201527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152fd5b855b8151811015616838578160206161c5836161f695613ad6565b51604051630667f9d760e41b81526001600160a01b038c166004820152602481019190915293849081906044820190565b03815f5160206183775f395f51905f525afa928315610a32578893616805575b5082156167ad575b6162288282613ad6565b51601154604051630667f9d760e41b81526001600160a01b03909116600482018190526024820183905291906020816044815f5160206183775f395f51905f525afa9081156167a2578b91616771575b50616283600d615ebe565b91909382155f1461676a575f19905b5f5160206183775f395f51905f523b15616751576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810185905260448101919091528c81606481835f5160206183775f395f51905f525af180156166d657908d91616755575b5050616303600d615ebe565b601154909491506001600160a01b03165f5160206183775f395f51905f523b15616751576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528b81606481835f5160206183775f395f51905f525af1801561674657908c9161672d575b505082616722575b505015616718578793889360ff6013541661659d575b6001868601610100031b5f1901851b16841c810361658f57509061641d917f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed60808b896106606163f28d604051928391602083019586615bf5565b5190206163ff8686613ad6565b51906040519283528a602084015260408301526060820152a1613ad6565b51906040519060808201928284106001600160401b038511176136215760039360405282526020820193845260408201908152606082019360018552898952600d60205260408920868a52602052604089206040516020810190616486816106608d8d86615bf5565b5190208a526020526040892092518355516001830155516002820155019051151560ff801983541691161790555b848452600d602052604084208185526020526040842060405160208101906164e181610660888886615bf5565b519020855260205260ff60036040862001541615616532576040948452600d602052848420908452602052610660616526858520938651928391602083019586615bf5565b51902082526020522090565b60405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201526e3a143994903737ba103337bab7321760891b6064820152608490fd5b935091506001905b016161ac565b94506165e893506165ae8383613ad6565b51601154604051630667f9d760e41b81526001600160a01b0390911660048201526024810182905290959094602090869081906044820190565b03815f5160206183775f395f51905f525afa948515611325578a956166e5575b5061661486600d616a0e565b95909661662281600d616ae7565b60115490939192906001600160a01b03165f5160206183775f395f51905f523b156166e1576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528c81606481835f5160206183775f395f51905f525af180156166d657908d916166bd575b5050876166b5575b509495616397575093509150600190616597565b96505f6166a1565b816166c7916136ed565b6166d2578b5f616699565b8b80fd5b6040513d8f823e3d90fd5b8e80fd5b9094506020813d8211616710575b81616700602093836136ed565b81010312610a265751935f616608565b3d91506166f3565b9150600190616597565b141590505f80616381565b81616737916136ed565b616742578a5f616379565b8a80fd5b6040513d8e823e3d90fd5b8d80fd5b8161675f916136ed565b6166d2578b5f6162f7565b8c90616292565b90506020813d821161679a575b8161678b602093836136ed565b81010312610a2657515f616278565b3d915061677e565b6040513d8d823e3d90fd5b7f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a56167fd6167db8484613ad6565b51604080516001600160a01b038e168152602081019290925290918291820190565b0390a161621e565b9092506020813d8211616830575b81616820602093836136ed565b81010312610a265751915f616216565b3d9150616813565b5050506164b4565b90503d8087833e61685181836136ed565b81016040828203126104045781516001600160401b0381116168a05781616879918401615fe2565b916020810151906001600160401b03821161223257616899929101615fe2565b505f616139565b8780fd5b6168b19194505f906136ed565b5f925f6160f5565b91939092505f52600d60205260405f20905f526020526106606168eb60405f2093604051928391602083019586615bf5565b5190205f5260205260405f2090565b6001600160601b0360a01b6011541660115563ffffffff19600f5416600f55600e545f600e55806169cc575b505f60105560ff19601354166013556169406014546138e5565b806169485750565b601f811160011461695a57505f601455565b60145f52601f0160051c7fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec017fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ed5b8181106169c157505060145f525f602081208160145555565b5f81556001016169a8565b600e5f527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd908101905b818110616a035750616926565b5f81556001016169f6565b91905f5b6101008110616a2557505090505f905f90565b8060ff0360ff81116133b6576004850154600190911b906001600160a01b03165f5160206183775f395f51905f523b15610a26576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f5160206183775f395f51905f525af1801561328c57616ad7575b50616ab184615ebe565b81616acd575b50616ac457600101616a12565b92505060019190565b905015155f616ab7565b5f616ae1916136ed565b5f616aa7565b91905f5b6101008110616afe57505090505f905f90565b60048401546001821b906001600160a01b03165f5160206183775f395f51905f523b15610a26576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f5160206183775f395f51905f525af1801561328c57616b9a575b50616b7d84615ebe565b81616b90575b50616ac457600101616aeb565b905015155f616b83565b5f616ba4916136ed565b5f616b7356fe60e03461011657601f6117ac38819003918201601f19168301916001600160401b0383118484101761011a578084926040948552833981010312610116576100468161012e565b906001600160a01b039061005c9060200161012e565b1660c052735e8422345238f34275888049021821e8e08caa1f6080526001600160a01b031660a052604051611669908161014382396080518181816107c301528181610a1501528181610e200152610ff1015260a051818181609b015281816104c601528181610dbd0152610f91015260c0518181816104890152818161083f01528181610a9f01528181610aea01528181610b2801528181610b6f01528181610d7901528181610ec40152818161103c01526111dd0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101165756fe6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c806323eeca011461045a57806348bd7dfd146103835780638307c65514610320578063a9270fbe146102c4578063aad6e488146101d85763ecbbc0330361000e57346101d45760203660031901126101d45760405161007f6060826105d9565b6002815260208101604036823760405163ba947f2760e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602081600481855afa9182156101ac576004926020925f916101b7575b506100eb86610613565b6001600160a01b039091169052604051630e2b46db60e11b815292839182905afa9081156101ac575f9161017d575b50610126839293610620565b6001600160a01b0390911690526040805160208082529251928101839052928392918301915f5b81811061015b575050500390f35b82516001600160a01b031684528594506020938401939092019160010161014d565b61019f915060203d6020116101a5575b61019781836105d9565b8101906109e9565b5f61011a565b503d61018d565b6040513d5f823e3d90fd5b6101ce9150833d85116101a55761019781836105d9565b5f6100e1565b5f80fd5b346101d45760803660031901126101d4576101f1610543565b6101f9610559565b6064359067ffffffffffffffff82116101d457366023830112156101d457816004013592610226846105fb565b9261023460405194856105d9565b8484526024602085019560051b820101903682116101d457602401945b8186106102b45750506102649350610936565b6040518091602082016020835281518091526020604084019201905f5b81811061028f575050500390f35b8251805185526020908101518186015286955060409094019390920191600101610281565b8535815260209586019501610251565b346101d4576102dc6102d53661056f565b9150610778565b6040518091602082016020835281518091526020604084019201905f5b818110610307575050500390f35b82518452859450602093840193909201916001016102f9565b346101d45760a03660031901126101d457610339610543565b610341610559565b6064359160028310156101d45760809261035e9260843592610665565b6020604080519280518452828101518385015201518051604084015201516060820152f35b346101d4576103913661056f565b5050506040516103a260a0826105d9565b6004815260208101608036823760016103ba83610613565b5260026103c683610620565b5281516002101561044657600360608301528151600310156104465760056080830152604051906020820192602083525180935260408201905f935b80851061040f5783830384f35b9091825190600a8210156104325760208160019382935201930194019390610402565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b346101d45760403660031901126101d4576040516104796060826105d9565b60028152602081019060403683377f000000000000000000000000000000000000000000000000000000000000000060601b6bffffffffffffffffffffffff19166104c382610613565b527f000000000000000000000000000000000000000000000000000000000000000060601b6bffffffffffffffffffffffff191661050082610620565b52604051918291602083019060208452518091526040830191905f5b81811061052a575050500390f35b825184528594506020938401939092019160010161051c565b602435906001600160a01b03821682036101d457565b604435906001600160a01b03821682036101d457565b60609060031901126101d457600435906024356001600160a01b03811681036101d457906044356001600160a01b03811681036101d45790565b6040810190811067ffffffffffffffff8211176105c557604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176105c557604052565b67ffffffffffffffff81116105c55760051b60200190565b8051156104465760200190565b8051600110156104465760400190565b80518210156104465760209160051b010190565b9190820391821161065157565b634e487b7160e01b5f52601160045260245ffd5b9093926040516060810181811067ffffffffffffffff8211176105c5576040525f81526106e360208201965f88525f60408401986040516106a5816105a9565b8281528260208201528a528499604051906106bf826105a9565b670de0b6b3a76400008252670de0b6b3a76400006020830152528185525284610a08565b61077157505a916002841015610432578161073394155f146107415761070891610ea2565b80865290811561073a576040519161071f836105a9565b8252602082015260408501525b5a90610644565b6020830152565b505061072c565b61074a91610b5a565b808652801561073a5760405191610760836105a9565b82526020820152604085015261072c565b9450505050565b604051916107876060846105d9565b600283526040366020850137825f61079e82610613565b525f6107a982610620565b526107b48284610a08565b61092f57506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169216808314908115610926575b50156108205750506001600160801b0361080a82610613565b526001600160801b0361081c82610620565b5290565b6001600160a01b0316146108315790565b6040516278744560e21b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316602082600481845afa9182156101ac575f926108f1575b50602060249160405192838092630a28a47760e01b82528660048301525afa9081156101ac575f916108bf575b506108b583610613565b5261081c82610620565b90506020813d6020116108e9575b816108da602093836105d9565b810103126101d457515f6108ab565b3d91506108cd565b9091506020813d60201161091e575b8161090d602093836105d9565b810103126101d4575190602061087e565b3d9150610900565b9050155f6107f1565b9250505090565b9092918051610944816105fb565b9061095260405192836105d9565b808252610961601f19916105fb565b015f5b8181106109c6575050610978819584610a08565b6109c057505f5b81518110156109bb578061099f61099860019385610630565b5185610fd9565b6109a98288610630565b526109b48187610630565b500161097f565b505050565b93505050565b6020906040516109d5816105a9565b5f81525f8382015282828601015201610964565b908160209103126101d457516001600160a01b03811681036101d45790565b6001600160a01b039081167f000000000000000000000000000000000000000000000000000000000000000090911681811415929083610b26575b83610b1c575b8315610ac8575b508215610a81575b8215610a6e575b5050610a69575f90565b600190565b6001600160a01b03161490505f80610a5f565b9150801580610a91575b91610a58565b506001600160a01b038281167f00000000000000000000000000000000000000000000000000000000000000009091161415610a8b565b9092506001600160a01b038316908114159081610ae8575b50915f610a50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141590505f610ae0565b8215159350610a49565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168314159350610a43565b6001600160a01b031691905f908315610d5e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690848203610caa57604051630a28a47760e01b81526004810182905294602086602481865afa908115610c9f578495968592610c63575b5091610be460209492610c1494309033906114cf565b604051632d182be560e21b8152600481019190915233602482015230604482015293849283919082906064820190565b03925af1918215610c575791610c28575090565b90506020813d602011610c4f575b81610c43602093836105d9565b810103126101d4575190565b3d9150610c36565b604051903d90823e3d90fd5b9391509193506020833d602011610c97575b81610c82602093836105d9565b810103126101d4579151849391610be4610bce565b3d9150610c75565b6040513d86823e3d90fd5b60405163b3d7f6b960e01b81526004810182905294602086602481865afa908115610c9f578495968592610d22575b5091610cf88285610c1495610cf3602098963033846114cf565b61137d565b6040516394bf804d60e01b8152600481019190915233602482015293849283919082906044820190565b9391509193506020833d602011610d56575b81610d41602093836105d9565b810103126101d4579151849391610cf8610cd9565b3d9150610d34565b60405163b3d7f6b960e01b81526004810182905292935090917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169190602081602481865afa9081156101ac575f91610e70575b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156101d4575f8291600460405180948193632de597e360e11b83525af180156101ac57610e4d575b508392602092610c1492610cf890837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661137d565b610cf8945092602092610e645f610c1494966105d9565b5f955092509290610e0f565b90506020813d602011610e9a575b81610e8b602093836105d9565b810103126101d457515f610dba565b3d9150610e7e565b6001600160a01b03168015610f705760209082610ec25f943033856114cf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908282148514610f3857604051635d043b2960e11b8152600481019190915233602482015230604482015293849250829081606481015b03925af19081156101ac575f91610c28575090565b610f468183610f239561137d565b604051636e553f6560e01b8152600481019190915233602482015293849283919082906044820190565b50604051634dcd454760e01b815233600482015290602090829060249082907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af19081156101ac575f91610c28575090565b9190820180921161065157565b604051610fe5816105a9565b5f8082526020909101527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169116908114908115611374575b50156111c7576040516278744560e21b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169190602081600481865afa80156101ac5782905f90611191575b6110889250610fcc565b916040519163ef8b30f760e01b83526004830152602082602481845afa9182156101ac575f9261115c575b50906020600492604051938480926318160ddd60e01b82525afa80156101ac575f90611128575b6110e49250610fcc565b90815f1904670de0b6b3a7640000118202158102156101d4576040519161110a836105a9565b670de0b6b3a764000002048152670de0b6b3a7640000602082015290565b506020823d602011611154575b81611142602093836105d9565b810103126101d4576110e491516110da565b3d9150611135565b91506020823d602011611189575b81611177602093836105d9565b810103126101d45790519060206110b3565b3d915061116a565b50506020813d6020116111bf575b816111ac602093836105d9565b810103126101d45781611088915161107e565b3d915061119f565b60405163266d6a8360e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691602082602481865afa9182156101ac575f92611340575b506040516278744560e21b815291602083600481875afa9283156101ac575f9361130a575b50611251602091600494610644565b93604051938480926318160ddd60e01b82525afa80156101ac575f906112d6575b61127c9250610644565b90816112ae575050670de0b6b3a76400005b6040519061129b826105a9565b8152670de0b6b3a7640000602082015290565b805f1904670de0b6b3a7640000118102158202156101d457670de0b6b3a7640000020461128e565b506020823d602011611302575b816112f0602093836105d9565b810103126101d45761127c9151611272565b3d91506112e3565b92506020833d602011611338575b81611325602093836105d9565b810103126101d457915191611251611242565b3d9150611318565b9091506020813d60201161136c575b8161135c602093836105d9565b810103126101d45751905f61121d565b3d915061134f565b9050155f611028565b604051636eb1769f60e11b81523060048201526001600160a01b03928316602482018190529392821692602082604481875afa80156101ac575f9061149b575b6113c79250610fcc565b915f8060405194602086019063095ea7b360e01b82528760248801526044870152604486526113f76064876105d9565b85519082855af190611407611596565b82611469575b508161145e575b501561141f57505050565b61145761145c936040519063095ea7b360e01b602083015260248201525f6044820152604481526114516064826105d9565b8261152b565b61152b565b565b90503b15155f611414565b80519192508115918215611481575b5050905f61140d565b6114949250602080918301019101611513565b5f80611478565b506020823d6020116114c7575b816114b5602093836105d9565b810103126101d4576113c791516113bd565b3d91506114a8565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815261145c916114576084836105d9565b908160209103126101d4575180151581036101d45790565b5f806115539260018060a01b03169360208151910182865af161154c611596565b90836115d5565b805190811515918261157b575b50506115695750565b635274afe760e01b5f5260045260245ffd5b61158e9250602080918301019101611513565b155f80611560565b3d156115d0573d9067ffffffffffffffff82116105c557604051916115c5601f8201601f1916602001846105d9565b82523d5f602084013e565b606090565b906115f957508051156115ea57805190602001fd5b63d6bda27560e01b5f5260045ffd5b8151158061162a575b61160a575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561160256fea264697066735822122072a6acb1af5d7f7b4a48c2ff88e7f9fc18a79985403ac1f221926b9de12fd3ab64736f6c634300081b00336b656420736c6f742e2057652063616e2774206669742076616c7565206772650000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d000000000000000000000000ac3e018457b222d93114458476f3e3416abbe38f73746453746f726167652066696e642853746453746f72616765293a20506163a264697066735822122034a8d0016c99b5402a65e13e8306746de2b20dc25c42e37820743e443ad437cd64736f6c634300081b0033","sourceMap":"297:9163:72:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1016:26:12;297:9163:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2421:18:5;297:9163:72;;;;;;;2421:18:5;297:9163:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;297:9163:72;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;297:9163:72;;;;;;-1:-1:-1;;;;;297:9163:72;;;;;;;;;;-1:-1:-1;;;;;297:9163:72;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1126:10:65;;;;;;:::i;:::-;297:9163:72;;;1590:14:0;;;;1102:59:65;;297:9163:72;1102:59:65;;297:9163:72;;;;;;;;;;;1102:59:65;;;;;;;;;;;;1075:134;1102:59;;;;;297:9163:72;1075:134:65;;:::i;:::-;1074:135;1224:13;;1259:3;297:9163:72;;1239:18:65;;;;;1322:10;;;;:::i;:::-;297:9163:72;;;;1590:14:0;;;;1304:29:65;;297:9163:72;1304:29:65;;297:9163:72;1304:29:65;;297:9163:72;1304:29:65;;;;;;;;;;1708:14;1304:29;1442:1;1304:29;;;;;1259:3;297:9163:72;1396:17:65;297:9163:72;;;;;;1354:9:65;;;:::i;:::-;297:9163:72;;1396:17:65;:::i;:::-;1477;297:9163:72;;;;;;1435:9:65;;;:::i;1477:17::-;1588:14;1554:10;;;;;:::i;:::-;297:9163:72;;;;;;1566:9:65;;;:::i;:::-;297:9163:72;;;;;;;1577:9:65;;;:::i;:::-;297:9163:72;;1588:14:65;;;:::i;:::-;1674:10;;;;:::i;:::-;297:9163:72;;;;;;;1686:9:65;;;:::i;:::-;297:9163:72;;;1697:9:65;297:9163:72;;;;;1697:9:65;;:::i;:::-;297:9163:72;;1708:14:65;;;:::i;:::-;940:2:72;1224:13:65;;1304:29;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;297:9163:72;;1590:14:0;297:9163:72;;1590:14:0;;;;1239:18:65;;297:9163:72;;1102:59:65;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;297:9163:72;;1590:14:0;297:9163:72;;1590:14:0;;;;297:9163:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;6415:30:72;;;;297:9163;;-1:-1:-1;;;6415:30:72;;6443:1;6425:19;;297:9163;6415:30;;297:9163;;;;;6415:30;297:9163;-1:-1:-1;;;;;;;;;;;6415:30:72;;;;;;;;297:9163;-1:-1:-1;;6473:38:72;;;6443:1;6473:38;;297:9163;940:2;6602:15;297:9163;;;-1:-1:-1;;;6560:58:72;;297:9163;6560:58;;297:9163;;;-1:-1:-1;;;;;;;;;;;6415:30:72;297:9163;;;-1:-1:-1;;;;;297:9163:72;;;;;;;;;;;;;6560:58;;297:9163;;;6560:58;;;;;;;;;;;6473:38;297:9163;;;;;;;6633:21;6443:1;6633:21;;6629:433;;;6633:21;;;6698:9;;;:::i;:::-;297:9163;6680:27;;-1:-1:-1;;;;;;;;;;;6670:38:72;;;;297:9163;;1590:14:0;;;;6670:38:72;;297:9163;6670:38;;297:9163;6670:38;;6415:30;6670:38;-1:-1:-1;;;;;;;;;;;6670:38:72;;;;;;;;6629:433;297:9163;;;;;27501:38:3;;1590:14:0;;;;27501:38:3;;6755:4:72;6415:30;27501:38:3;;297:9163:72;6415:30;27501:38:3;;;297:9163:72;27501:38:3;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;:::-;297:9163:72;;;;27568:30:3;;;;;;:::i;:::-;-1:-1:-1;6854:12:8;521:42:72;;-1:-1:-1;;;;;;521:42:72;-1:-1:-1;;;;;;;;;;;521:42:72;;;27524:10:3;297:9163:72;;7009:9:8;297:9163:72;;;7009:9:8;297:9163:72;7505:10:8;297:9163:72;-1:-1:-1;;;297:9163:72;;;;;;;6443:1;297:9163;;;7505:10:8;297:9163:72;;:::i;:::-;6755:4;;;;297:9163;;;;;;;;;4822:17;;;297:9163;;;;;;;;;;1198:64;297:9163;;;;6854:12:8;297:9163:72;;7009:9:8;297:9163:72;;1590:14:0;15610:11:8;297:9163:72;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;297:9163:72;;;;;;27635:8:3;297:9163:72;;;;;15703:15:8;;297:9163:72;;;;;;;;;;;;;;;;15735:37:8;;;;;;;;;;:::i;:::-;;940:2:72;;15735:37:8;;;;;;:::i;:::-;297:9163:72;15725:48:8;;297:9163:72;;;;;15610:11:8;297:9163:72;;;15703:77:8;297:9163:72;;15702:78:8;15698:126;;6629:433:72;-1:-1:-1;;;;;297:9163:72;;;;;;27635:8:3;297:9163:72;;;;;;;;;;15889:37:8;;297:9163:72;;;;;;15889:37:8;;;297:9163:72;15889:37:8;;;;;:::i;:::-;297:9163:72;15879:48:8;;297:9163:72;;;;;;;;15943:15:8;6443:1:72;15943:15:8;;297:9163:72;15961:16:8;297:9163:72;15961:16:8;;297:9163:72;15943:34:8;;;;:::i;:::-;15938:460;;297:9163:72;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;297:9163:72;;;16424:32:8;;297:9163:72;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;6629:433:72;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;297:9163:72;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;297:9163:72;;;16587:43:8;;297:9163:72;12810:59:8;;;297:9163:72;;;;-1:-1:-1;;297:9163:72;;;12656:92:8;12810:59;;;297:9163:72;;;12810:59:8;297:9163:72;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;6629:433:72;16678:31:8;;;;:::i;:::-;16724:8;;297:9163:72;;;16724:29:8;;6629:433:72;16720:176:8;;;14785:4;;;;;;:::i;:::-;297:9163:72;940:2;;297:9163;;-1:-1:-1;;;6794:53:72;;-1:-1:-1;;;;;297:9163:72;;;;6794:53;;297:9163;-1:-1:-1;;6415:30:72;297:9163;;;;;;;;6794:53;-1:-1:-1;;;;;;;;;;;6794:53:72;;;;;;;6415:30;6794:53;;;6629:433;;;7104:7;769:50;297:9163;;-1:-1:-1;;;7104:32:72;;7130:4;297:9163;7104:32;;297:9163;;;;;;1590:14:0;297:9163:72;;-1:-1:-1;;;;;297:9163:72;7104:32;;;;;;;;;;;6629:433;-1:-1:-1;297:9163:72;;-1:-1:-1;;;7179:33:72;;7130:4;297:9163;7179:33;;297:9163;;;;6415:30;297:9163;-1:-1:-1;;;;;;;;;;;7179:33:72;;;;;;;;;;;6629:433;-1:-1:-1;297:9163:72;;-1:-1:-1;;;7223:40:72;;297:9163;;;;-1:-1:-1;;;;;;;;;;;7223:40:72;;;;;;;;6629:433;-1:-1:-1;297:9163:72;940:2;6602:15;297:9163;;;-1:-1:-1;;;7295:98:72;;297:9163;7295:98;;297:9163;;;-1:-1:-1;;;;;;;;;;;6415:30:72;297:9163;;;-1:-1:-1;;;;;297:9163:72;;;;;;;6560:58;297:9163;;;;;;;;;;;;;;;;7295:98;;297:9163;;;;;7295:98;;;;;;;;;;;6629:433;-1:-1:-1;7104:7:72;769:50;297:9163;;-1:-1:-1;;;7435:32:72;;7130:4;297:9163;7435:32;;297:9163;;;;;;6415:30;;297:9163;;-1:-1:-1;;;;;297:9163:72;7435:32;;;;;;;;;;;6629:433;-1:-1:-1;297:9163:72;;-1:-1:-1;;;7509:33:72;;7130:4;297:9163;7509:33;;297:9163;;;;6415:30;297:9163;-1:-1:-1;;;;;;;;;;;7509:33:72;;;;;;;;;;;6629:433;297:9163;;;7553:725;;297:9163;;;7553:725;7603:21;;;7865:46;7711:44;;;7865:46;7711:44;;;;;:::i;:::-;;;:::i;:::-;297:9163;7865:46;;:::i;:::-;7553:725;;;;;;;297:9163;;;7599:669;8035:46;8191:44;8035:46;;;;8191:44;8035:46;;;;:::i;8191:44::-;7599:669;;7509:33;;;;297:9163;7509:33;;297:9163;7509:33;;;;;;1590:14:0;7509:33:72;;;:::i;:::-;;;1590:14:0;;;;;7509:33:72;;;;1590:14:0;-1:-1:-1;297:9163:72;;7509:33;;;-1:-1:-1;7509:33:72;;;297:9163;;1590:14:0;297:9163:72;;1590:14:0;;;;7435:32:72;;;297:9163;7435:32;;297:9163;7435:32;;;;;;1590:14:0;7435:32:72;;;:::i;:::-;;;1590:14:0;;;;;7435:32:72;;;;;;-1:-1:-1;7435:32:72;;7295:98;;;;;297:9163;7295:98;297:9163;7295:98;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;297:9163;;1590:14:0;297:9163:72;;1590:14:0;;;;7223:40:72;297:9163;7223:40;;297:9163;7223:40;;;;;;1590:14:0;7223:40:72;;;:::i;:::-;;;1590:14:0;;;;;7223:40:72;;;;;-1:-1:-1;7223:40:72;;7179:33;;;;297:9163;7179:33;;297:9163;7179:33;;;;;;1590:14:0;7179:33:72;;;:::i;:::-;;;1590:14:0;;;;;7179:33:72;;;;;;;-1:-1:-1;7179:33:72;;7104:32;;;;297:9163;7104:32;;297:9163;7104:32;;;;;;1590:14:0;7104:32:72;;;:::i;:::-;;;1590:14:0;;;;;7104:32:72;;;;;;;-1:-1:-1;7104:32:72;;6794:53;;;297:9163;6794:53;297:9163;6794:53;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;16720:176:8;297:9163:72;;;;16769:41:8;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;297:9163:72;;-1:-1:-1;;;16769:41:8;;-1:-1:-1;;;;;297:9163:72;;;;16769:41:8;;297:9163:72;12810:59:8;;;297:9163:72;;;;12810:59:8;;;297:9163:72;;;;;;12810:59:8;;;16769:41;;;;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;;;;;16720:176;297:9163:72;;-1:-1:-1;;;16824:61:8;;297:9163:72;;16824:61:8;;12810:59;;6415:30:72;12810:59:8;;297:9163:72;12810:59:8;297:9163:72;;;12810:59:8;-1:-1:-1;;;6560:58:72;12810:59:8;;;16824:61;;;16769:41;;;;;;:::i;:::-;297:9163:72;;16769:41:8;;;;297:9163:72;;1590:14:0;297:9163:72;;1590:14:0;;;;16724:29:8;-1:-1:-1;;16736:17:8;;;-1:-1:-1;4822:17:72;16724:29:8;;16587:43;;;;;:::i;:::-;297:9163:72;;16587:43:8;;;;;297:9163:72;;1590:14:0;297:9163:72;;1590:14:0;;;;16587:43:8;297:9163:72;;;16424:32:8;;;;;297:9163:72;16424:32:8;;297:9163:72;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;:::i;:::-;16021:3;697:10:72;16021:3:8;697:10:72;;;;297:9163;;;;;;;-1:-1:-1;;;16314:19:8;;6443:1:72;297:9163;;;;16314:19:8;;297:9163:72;16314:19:8;297:9163:72;6415:30;297:9163;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;12810:59;297:9163:72;16314:19:8;;16170:185;16314:19;297:9163:72;16314:19:8;;;;15938:460;297:9163:72;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;297:9163:72;12810:59:8;;;-1:-1:-1;;;297:9163:72;12810:59:8;;;297:9163:72;;;;;;12810:59:8;;;297:9163:72;;;;;;;;16170:185:8;;940:2:72;;16170:185:8;;;;;;:::i;:::-;297:9163:72;;-1:-1:-1;;;12810:59:8;;297:9163:72;;12810:59:8;;297:9163:72;;;;6415:30;297:9163;;;;:::i;:::-;12810:59:8;;;16314:19;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;297:9163:72;-1:-1:-1;;;523:5:65;;6854:12:8;297:9163:72;523:5:65;6415:30:72;297:9163;523:5:65;15698:126:8;13208:33;;:::i;:::-;;15698:126;;297:9163:72;-1:-1:-1;;;297:9163:72;;;;;6415:30;297:9163;;6670:38;;;;;:::i;:::-;297:9163;;6670:38;;;;;297:9163;;;6629:433;6906:9;;;;;;:::i;:::-;297:9163;6888:27;;-1:-1:-1;;;;;;;;;;;6878:38:72;;;;297:9163;;1590:14:0;;;;6878:38:72;;297:9163;6878:38;;297:9163;6878:38;;6415:30;6878:38;-1:-1:-1;;;;;;;;;;;6878:38:72;;;;;;;;6629:433;297:9163;;;;;27501:38:3;;1590:14:0;;;;27501:38:3;;6963:4:72;6415:30;27501:38:3;;297:9163:72;6415:30;27501:38:3;;;297:9163:72;27501:38:3;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;-1:-1:-1;6854:12:8;521:42:72;;-1:-1:-1;;;;;;521:42:72;-1:-1:-1;;;;;;;;;;;521:42:72;;;27524:10:3;297:9163:72;;7009:9:8;297:9163:72;;;7009:9:8;297:9163:72;7505:10:8;297:9163:72;-1:-1:-1;;;297:9163:72;;;;;;;6443:1;297:9163;;;7505:10:8;297:9163:72;;:::i;:::-;;;1198:64;297:9163;;;;6854:12:8;297:9163:72;;;7009:9:8;297:9163:72;;1590:14:0;15610:11:8;297:9163:72;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;297:9163:72;;;;;;27635:8:3;297:9163:72;;;;;15703:15:8;;297:9163:72;;;;;;;;;;;;;;;;15735:37:8;;;;;;;;;;:::i;:::-;297:9163:72;15725:48:8;;297:9163:72;;;;;15610:11:8;297:9163:72;;;15703:77:8;297:9163:72;;15702:78:8;15698:126;;6629:433:72;-1:-1:-1;;;;;297:9163:72;;;;;;27635:8:3;297:9163:72;;;;;;;;;;15889:37:8;;297:9163:72;;;;;;15889:37:8;;;297:9163:72;15889:37:8;;;;;:::i;:::-;297:9163:72;15879:48:8;;297:9163:72;;;;;;;;15943:15:8;6443:1:72;15943:15:8;;297:9163:72;15961:16:8;297:9163:72;15961:16:8;;297:9163:72;15943:34:8;;;;:::i;:::-;15938:460;;6629:433:72;297:9163;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;297:9163:72;;;16424:32:8;;297:9163:72;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;6629:433:72;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;297:9163:72;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;297:9163:72;;;16587:43:8;;297:9163:72;12810:59:8;;;297:9163:72;;;;;;;;12656:92:8;;;;12810:59;;;297:9163:72;;;12810:59:8;297:9163:72;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;6629:433:72;16678:31:8;;;;;:::i;:::-;16724:8;;;297:9163:72;;;16724:29:8;;6629:433:72;16720:176:8;;;;14785:4;;;7000:51:72;14785:4:8;;;;;:::i;:::-;297:9163:72;940:2;;297:9163;;-1:-1:-1;;;7000:51:72;;-1:-1:-1;;;;;297:9163:72;;;;7000:51;;297:9163;;;;;;;;;;;;;;;;;7000:51;;;;-1:-1:-1;;;;;;;;;;;7000:51:72;;;;;;;6415:30;7000:51;;;6629:433;;;;7000:51;;;297:9163;7000:51;297:9163;7000:51;;;;;;;:::i;:::-;;;;;16720:176:8;297:9163:72;;;;;16769:41:8;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;297:9163:72;;-1:-1:-1;;;16769:41:8;;-1:-1:-1;;;;;297:9163:72;;;;16769:41:8;;297:9163:72;12810:59:8;;;297:9163:72;;;;12810:59:8;;;297:9163:72;;;;;;12810:59:8;;;16769:41;12810:59;16724:29;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;297:9163:72;;16587:43:8;;;;16424:32;;;;;297:9163:72;16424:32:8;;297:9163:72;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;;;;:::i;:::-;16021:3;697:10:72;16021:3:8;697:10:72;;;;297:9163;;;;;;;-1:-1:-1;;;16314:19:8;;6443:1:72;297:9163;;;;16314:19:8;;297:9163:72;;;16314:19:8;297:9163:72;6415:30;297:9163;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;12810:59;16170:185;16314:19;297:9163:72;16314:19:8;;;;;15938:460;297:9163:72;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;297:9163:72;12810:59:8;;;-1:-1:-1;;;297:9163:72;12810:59:8;;;297:9163:72;;;;;;12810:59:8;;;297:9163:72;;;;;;;;16170:185:8;;940:2:72;;16170:185:8;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;;;;;12810:59;297:9163:72;;-1:-1:-1;;;12810:59:8;;297:9163:72;;12810:59:8;;297:9163:72;;;;;;6415:30;297:9163;;;;:::i;16314:19:8:-;;;-1:-1:-1;16314:19:8;;;;;;;;;:::i;:::-;;;;;297:9163:72;;1590:14:0;297:9163:72;;1590:14:0;;;;297:9163:72;-1:-1:-1;;;523:5:65;;6854:12:8;297:9163:72;523:5:65;6415:30:72;297:9163;523:5:65;15698:126:8;13208:33;;:::i;:::-;;15698:126;;6878:38:72;;;;;:::i;:::-;297:9163;;6878:38;;;;297:9163;-1:-1:-1;;;297:9163:72;;6602:15;297:9163;;6415:30;297:9163;;6560:58;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;6473:38;;;;;6415:30;;;;;:::i;:::-;297:9163;;6415:30;;;;297:9163;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;2273:18:5;297:9163:72;940:2;;;:::i;:::-;297:9163;;;;;;;:::i;:::-;940:2;;;2273:18:5;297:9163:72;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;8367:7;940:2;297:9163;;-1:-1:-1;;;8367:29:72;;297:9163;8367:29;;297:9163;;;;;;;;;8367:29;;297:9163;;-1:-1:-1;;;;;297:9163:72;8367:29;;;;;;;;;;;297:9163;-1:-1:-1;;;;;;8416:9:72;;;:::i;:::-;297:9163;8427:15;297:9163;;;;-1:-1:-1;;;;;297:9163:72;-1:-1:-1;;;;;;;;;;;3533:24:1;;;;297:9163:72;;-1:-1:-1;;;3533:24:1;;-1:-1:-1;;;;;297:9163:72;;;;3533:24:1;;297:9163:72;;;521:42;;;297:9163;;;521:42;297:9163;-1:-1:-1;;;;;;;;;;;3533:24:1;;;;;;;;;;;297:9163:72;-1:-1:-1;;;;;;297:9163:72;8462:9;;-1:-1:-1;8462:9:72;:::i;:::-;297:9163;;-1:-1:-1;;;;;;;;;;;3533:24:1;;;;297:9163:72;;1590:14:0;;;;3533:24:1;;297:9163:72;3533:24:1;;297:9163:72;-1:-1:-1;;;;;;;;;;;8367:29:72;521:42;;297:9163;3533:24:1;;;;-1:-1:-1;;;;;;;;;;;3533:24:1;;;;;;;;297:9163:72;;3533:24:1;;;;;:::i;:::-;297:9163:72;;3533:24:1;297:9163:72;3533:24:1;297:9163:72;;3533:24:1;;;;;:::i;:::-;297:9163:72;;3533:24:1;;;;;297:9163:72;;1590:14:0;297:9163:72;;1590:14:0;;;;3533:24:1;297:9163:72;;;;8367:29;;;;;;;;;;;;;:::i;:::-;;;;297:9163;;;;;;;-1:-1:-1;;297:9163:72;;;;;;534:59:65;297:9163:72;534:59:65;;;;;;;;:::i;:::-;297:9163:72;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;297:9163:72;;;;;;;;;;;;;;;;;;;;;;3190:18:5;297:9163:72;940:2;;;:::i;:::-;297:9163;;;;;;;:::i;:::-;940:2;;;3190:18:5;297:9163:72;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;-1:-1:-1;;;;;297:9163:72;;;;;1198:64;297:9163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;940:2;297:9163;;;;;;;;;;;;-1:-1:-1;;;;;;1590:14:0;297:9163:72;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;297:9163:72;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;297:9163:72;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;297:9163:72;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;297:9163:72;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;297:9163:72;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;297:9163:72;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;297:9163:72;;;;;;;;;;;;;;;;;;;;;;1590:14:0;297:9163:72;1590:14:0;297:9163:72;;;;;;1590:14:0;297:9163:72;1590:14:0;;297:9163:72;;;;;;;1590:14:0;297:9163:72;1590:14:0;;297:9163:72;;;;;;;1590:14:0;297:9163:72;1590:14:0;;297:9163:72;;;;;;;1590:14:0;297:9163:72;1590:14:0;;297:9163:72;;;;;;;1590:14:0;297:9163:72;1590:14:0;;297:9163:72;;;;;;;1590:14:0;297:9163:72;1590:14:0;;297:9163:72;;;;;;;1590:14:0;297:9163:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;940:2;;;;;;;-1:-1:-1;;940:2:72;297:9163;940:2;;3197:13;3212:19;940:2;3212:19;;;;-1:-1:-1;940:2:72;;3388:15;297:9163;;;-1:-1:-1;;;3350:63:72;;297:9163;3350:63;;297:9163;;;-1:-1:-1;;;;;;;;;;;697:10:72;;;297:9163;-1:-1:-1;;;;;297:9163:72;;;697:10;;;297:9163;697:10;;;;;297:9163;;697:10;;;297:9163;;;;;;;;;;;;;;;;;697:10;;;;;;-1:-1:-1;;;3350:63:72;;;;697:10;;3350:63;;;;;;;;;;;697:10;3429:13;;3444:23;697:10;3444:23;;;;297:9163;;;3469:3;3497:9;;;;:::i;:::-;;3277:1;940:2;;;;;;;;;3613:13;3524;3488:54;3497:41;3604:38;3524:13;;3277:1;3524:13;;;;:::i;:::-;;3497:41;;:::i;:::-;697:10;;3488:54;:::i;:::-;3556:34;3565:9;;;;;:::i;:::-;;:21;297:9163;3556:34;:::i;:::-;3613:13;;:::i;3604:38::-;940:2;3429:13;;940:2;-1:-1:-1;;;523:5:65;;;297:9163:72;523:5:65;;297:9163:72;523:5:65;3350:63:72;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;697:10;;;297:9163;;697:10;;-1:-1:-1;697:10:72;;-1:-1:-1;940:2:72;697:10;;;;297:9163;;;;3277:1;697:10;;;3233:3;940:2;;;;3277:1;940:2;;;;;;;523:5:65;3265:4:72;523:5:65;;3265:4:72;523:5:65;;;;;;;;;;;;3282:8:72;523:5:65;;;;;;;3252:38:72;3277:1;3252:38;;;;;:::i;:::-;940:2;;3197:13;;;;;;523:5:65;-1:-1:-1;;;523:5:65;;;297:9163:72;523:5:65;;297:9163:72;523:5:65;297:9163:72;;;;;;;;;;;;;2707:18:5;297:9163:72;940:2;;;:::i;:::-;297:9163;;;;;;;:::i;:::-;940:2;;;2707:18:5;297:9163:72;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;4476:30:72;;;;297:9163;;-1:-1:-1;;;4476:30:72;;4504:1;4486:19;;297:9163;4476:30;;297:9163;;;;;4476:30;297:9163;-1:-1:-1;;;;;;;;;;;4476:30:72;;;;;;;;297:9163;-1:-1:-1;;4534:38:72;;;4504:1;4534:38;;297:9163;940:2;4645:15;297:9163;;;-1:-1:-1;;;4621:58:72;;297:9163;4621:58;;297:9163;;;-1:-1:-1;;;;;297:9163:72;;;4476:30;297:9163;;;-1:-1:-1;;;;;;;;;;;297:9163:72;;;;;;;;;;4621:58;;297:9163;;;4621:58;;;;;;;;;;;4534:38;297:9163;;;;;;;4694:21;4504:1;4694:21;;4690:429;;;4694:21;;;4759:9;;;:::i;:::-;297:9163;4741:27;;-1:-1:-1;;;;;;;;;;;4731:38:72;;;;297:9163;;1590:14:0;;;;4731:38:72;;297:9163;4731:38;;297:9163;4731:38;;4476:30;4731:38;-1:-1:-1;;;;;;;;;;;4731:38:72;;;;;;;;4690:429;297:9163;;6854:22:8;1198:64:72;297:9163;;;;4797:7;769:50;297:9163;;;;;;27501:38:3;;1590:14:0;;;;27501:38:3;;4815:4:72;4476:30;27501:38:3;;297:9163:72;4476:30;27501:38:3;;;297:9163:72;27501:38:3;;:::i;:::-;27484:56;;;;;;27568:30;27484:56;;:::i;27568:30::-;;1198:64:72;297:9163;;;;;-1:-1:-1;;;;;521:42:72;;6854:12:8;521:42:72;;;6854:12:8;521:42:72;;6854:22:8;27524:10:3;297:9163:72;;7009:9:8;297:9163:72;;;7009:9:8;297:9163:72;7505:10:8;297:9163:72;-1:-1:-1;;;297:9163:72;;;;;;;;;4504:1;297:9163;;;;7505:10:8;297:9163:72;;:::i;:::-;;;1198:64;297:9163;;;;6854:12:8;297:9163:72;;7009:9:8;297:9163:72;;1590:14:0;15610:11:8;297:9163:72;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;297:9163:72;;;;;;27635:8:3;297:9163:72;;;;;15703:15:8;;297:9163:72;;;;;;;;;;;;;;;;15735:37:8;;;;;;;;;;:::i;:::-;297:9163:72;15725:48:8;;297:9163:72;;;;;15610:11:8;297:9163:72;;;15703:77:8;297:9163:72;;15702:78:8;15698:126;;4690:429:72;-1:-1:-1;;;;;297:9163:72;;;;;;27635:8:3;297:9163:72;;;;;;;;;;15889:37:8;;297:9163:72;;;;;;15889:37:8;;;297:9163:72;15889:37:8;;;;;:::i;:::-;297:9163:72;15879:48:8;;297:9163:72;;;;;;;15943:15:8;4504:1:72;15943:15:8;;297:9163:72;15961:16:8;297:9163:72;15961:16:8;;297:9163:72;15943:34:8;;;;:::i;:::-;15938:460;;297:9163:72;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;297:9163:72;;;16424:32:8;;297:9163:72;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;4690:429:72;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;297:9163:72;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;297:9163:72;;;16587:43:8;;297:9163:72;12810:59:8;;;297:9163:72;;;;-1:-1:-1;;297:9163:72;;;12656:92:8;12810:59;;;297:9163:72;;;12810:59:8;297:9163:72;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;4690:429:72;16678:31:8;;;;:::i;:::-;16724:8;;297:9163:72;;;16724:29:8;;4690:429:72;16720:176:8;;;14785:4;;;;;:::i;:::-;4797:7:72;769:50;297:9163;940:2;;297:9163;;-1:-1:-1;;;4854:52:72;;-1:-1:-1;;;;;297:9163:72;;;;4854:52;;297:9163;-1:-1:-1;;4476:30:72;297:9163;;;;;;;;;;;;;4854:52;;;;;;;4476:30;4854:52;;;4690:429;;;5161:7;769:50;297:9163;;-1:-1:-1;;;5161:32:72;;5187:4;297:9163;5161:32;;297:9163;;;;;;1590:14:0;297:9163:72;;-1:-1:-1;;;;;297:9163:72;5161:32;;;;;;;;;;;4690:429;-1:-1:-1;297:9163:72;;-1:-1:-1;;;5236:33:72;;5187:4;297:9163;5236:33;;297:9163;;;4476:30;297:9163;-1:-1:-1;;;;;;;;;;;5236:33:72;;;;;;;;;;;4690:429;-1:-1:-1;297:9163:72;940:2;4645:15;297:9163;;;-1:-1:-1;;;5301:98:72;;297:9163;5301:98;;297:9163;;;-1:-1:-1;;;;;297:9163:72;;;4476:30;297:9163;;;-1:-1:-1;;;;;;;;;;;297:9163:72;;;;4621:58;297:9163;;;;;;;;;;;;;;;;5301:98;;297:9163;;;;;5301:98;;;;;;;4476:30;5301:98;;;;;4690:429;-1:-1:-1;5161:7:72;769:50;297:9163;;-1:-1:-1;;;5441:32:72;;5187:4;297:9163;5441:32;;297:9163;;;;;;1590:14:0;297:9163:72;;-1:-1:-1;;;;;297:9163:72;5441:32;;;;;;;;;;;4690:429;-1:-1:-1;297:9163:72;;-1:-1:-1;;;5515:33:72;;5187:4;297:9163;5515:33;;297:9163;;;;4476:30;297:9163;-1:-1:-1;;;;;;;;;;;5515:33:72;;;;;;;;;;;297:9163;;;5559:725;;297:9163;;;5515:33;;;;297:9163;5515:33;;297:9163;5515:33;;;;;;1590:14:0;5515:33:72;;;:::i;:::-;;;1590:14:0;;;;;5515:33:72;;;;;;;-1:-1:-1;5515:33:72;;5441:32;;;;297:9163;5441:32;;297:9163;5441:32;;;;;;1590:14:0;5441:32:72;;;:::i;:::-;;;1590:14:0;;;;;5441:32:72;;;;;;;-1:-1:-1;5441:32:72;;5301:98;;;;;297:9163;5301:98;297:9163;5301:98;;;;;;;:::i;:::-;;;;;5236:33;;;297:9163;5236:33;;297:9163;5236:33;;;;;;1590:14:0;5236:33:72;;;:::i;:::-;;;1590:14:0;;;;;5236:33:72;;;;;;-1:-1:-1;5236:33:72;;5161:32;;;;297:9163;5161:32;;297:9163;5161:32;;;;;;1590:14:0;5161:32:72;;;:::i;:::-;;;1590:14:0;;;;;5161:32:72;;;;;;;-1:-1:-1;5161:32:72;;4854:52;;;297:9163;4854:52;297:9163;4854:52;;;;;;;:::i;:::-;;;;;16720:176:8;297:9163:72;;;;;;;16769:41:8;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;297:9163:72;;-1:-1:-1;;;16769:41:8;;-1:-1:-1;;;;;297:9163:72;;;;16769:41:8;;297:9163:72;12810:59:8;;;297:9163:72;;;;12810:59:8;;;297:9163:72;;;;;;12810:59:8;;;16769:41;12810:59;16724:29;-1:-1:-1;;16736:17:8;;;-1:-1:-1;4822:17:72;16724:29:8;;16587:43;;;;;:::i;:::-;297:9163:72;;16587:43:8;;;;;297:9163:72;;;16424:32:8;;;;;297:9163:72;16424:32:8;;297:9163:72;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;;297:9163:72;;1590:14:0;297:9163:72;;1590:14:0;;;;15938:460:8;16028:34;;;;;:::i;15698:126::-;13208:33;;:::i;:::-;;15698:126;;4731:38:72;;;;;:::i;:::-;297:9163;;4731:38;;;;4690:429;4965:9;;;;;;;:::i;:::-;297:9163;4947:27;;-1:-1:-1;;;;;;;;;;;4937:38:72;;;;297:9163;;1590:14:0;;;;4937:38:72;;297:9163;4937:38;;297:9163;4937:38;;4476:30;4937:38;-1:-1:-1;;;;;;;;;;;4937:38:72;;;;;;;;4690:429;297:9163;;6854:22:8;1198:64:72;297:9163;;;;5003:7;769:50;297:9163;;;;;;27501:38:3;;1590:14:0;;;;27501:38:3;;5021:4:72;4476:30;27501:38:3;;297:9163:72;4476:30;27501:38:3;;;297:9163:72;27501:38:3;;:::i;6854:22:8:-;27524:10:3;297:9163:72;;7009:9:8;297:9163:72;;;7009:9:8;297:9163:72;7505:10:8;297:9163:72;-1:-1:-1;;;297:9163:72;;;;;;;4504:1;297:9163;;;7505:10:8;297:9163:72;;:::i;:::-;;;1198:64;297:9163;;;;6854:12:8;297:9163:72;;;7009:9:8;297:9163:72;;1590:14:0;15610:11:8;297:9163:72;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;297:9163:72;;;;;;27635:8:3;297:9163:72;;;;;15703:15:8;;297:9163:72;;;;;;;;;;;;;;;;15735:37:8;;;;;;;;;;:::i;:::-;297:9163:72;15725:48:8;;297:9163:72;;;;;15610:11:8;297:9163:72;;;15703:77:8;297:9163:72;;15702:78:8;15698:126;;4690:429:72;-1:-1:-1;;;;;297:9163:72;;;;;;27635:8:3;297:9163:72;;;;;;;;;;15889:37:8;;297:9163:72;;;;;;15889:37:8;;;297:9163:72;15889:37:8;;;;;:::i;:::-;297:9163:72;15879:48:8;;297:9163:72;;;;;;;;15943:15:8;4504:1:72;15943:15:8;;297:9163:72;15961:16:8;297:9163:72;15961:16:8;;297:9163:72;15943:34:8;;;;:::i;:::-;15938:460;;4690:429:72;297:9163;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;297:9163:72;;;16424:32:8;;297:9163:72;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;4690:429:72;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;297:9163:72;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;297:9163:72;;;16587:43:8;;297:9163:72;12810:59:8;;;297:9163:72;;;;;;;;12656:92:8;;;;12810:59;;;297:9163:72;;;12810:59:8;297:9163:72;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;4690:429:72;16678:31:8;;;;;:::i;:::-;16724:8;;;297:9163:72;;;16724:29:8;;4690:429:72;16720:176:8;;;;14785:4;;;5058:50:72;14785:4:8;;;;;:::i;:::-;5003:7:72;769:50;297:9163;940:2;;297:9163;;-1:-1:-1;;;5058:50:72;;-1:-1:-1;;;;;297:9163:72;;;;5058:50;;297:9163;;;;;;;;;;;;;;;;;;;;;;;;;;5058:50;;;;;;;;;;4476:30;5058:50;;;4690:429;;;;5058:50;;;297:9163;5058:50;297:9163;5058:50;;;;;;;:::i;:::-;;;;;16724:29:8;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;297:9163:72;;16587:43:8;;;;16424:32;;;;;297:9163:72;16424:32:8;;297:9163:72;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;;;;:::i;:::-;16021:3;697:10:72;16021:3:8;697:10:72;;;;297:9163;;;;;;;-1:-1:-1;;;16314:19:8;;4504:1:72;297:9163;;;;16314:19:8;;297:9163:72;;;16314:19:8;297:9163:72;4476:30;297:9163;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;12810:59;16170:185;16314:19;297:9163:72;16314:19:8;;;;;297:9163:72;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;297:9163:72;12810:59:8;;;-1:-1:-1;;;297:9163:72;12810:59:8;;;297:9163:72;;;;;;12810:59:8;;;297:9163:72;;;;;;;;16170:185:8;;940:2:72;;16170:185:8;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;4937:38:72;;;;;:::i;:::-;297:9163;;4937:38;;;;4621:58;;;;;;;;;;;;;;:::i;:::-;;;;;4534:38;;;;;4476:30;;;;;:::i;:::-;297:9163;;4476:30;;;;297:9163;;;;;;;;;;;;;2883:26:5;297:9163:72;940:2;;;:::i;:::-;297:9163;;;;;;;:::i;:::-;940:2;;;2883:26:5;297:9163:72;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;-1:-1:-1;;;;;297:9163:72;;;;;1198:64;297:9163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;940:2;297:9163;;;;;;;;;;;;;;;;;;;;;;1590:14:0;297:9163:72;1590:14:0;297:9163:72;;;;;;1590:14:0;297:9163:72;1590:14:0;;297:9163:72;;;;;;;1590:14:0;297:9163:72;1590:14:0;;297:9163:72;;;;;;;1590:14:0;297:9163:72;1590:14:0;;297:9163:72;;;;;;;1590:14:0;297:9163:72;1590:14:0;;297:9163:72;;;;;;;1590:14:0;297:9163:72;1590:14:0;;297:9163:72;;;;;;;1590:14:0;297:9163:72;1590:14:0;;297:9163:72;;;;;;;1590:14:0;297:9163:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3038:18:5;297:9163:72;;;;;;;3038:18:5;297:9163:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;297:9163:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3331:16:5;297:9163:72;;;;;;;3331:16:5;297:9163:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;297:9163:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8592:7;940:2;8622:15;297:9163;;;-1:-1:-1;;;8592:64:72;;297:9163;8592:64;;297:9163;;;-1:-1:-1;;;;;297:9163:72;;;;;;;;;-1:-1:-1;;;;;;;;;;;297:9163:72;;;;;;;;;;;;;8592:64;297:9163;;8592:64;;;;;;;;;;;297:9163;;8666:26;297:9163;;8666:26;:::i;:::-;297:9163;;1590:14:0;;;8703:60:72;;;297:9163;8703:60;;297:9163;;;;;;-1:-1:-1;;;;;;;;;;;297:9163:72;;;;8703:60;;8592:64;8703:60;;;;;;;;;;297:9163;;8773:26;297:9163;;8773:26;:::i;:::-;8592:64;297:9163;;1590:14:0;;;;;;;8810:64:72;;;297:9163;8810:64;;297:9163;-1:-1:-1;;;;;;;;;;;297:9163:72;;;;;;;;8810:64;;;;;;;8884:26;8810:64;;;297:9163;;;8884:26;:::i;:::-;297:9163;;8810:64;;;;;;;;;;;;:::i;:::-;;;8703:60;;;;;;;;;;;;:::i;:::-;;;8592:64;;;;;;;;;;;;;;:::i;:::-;;;;;297:9163;;;;;;;-1:-1:-1;;297:9163:72;;;;;;;;1198:64;297:9163;;;;;940:2;297:9163;;1198:64;297:9163;;;;1761:15;297:9163;;;;;;1590:14:0;;;1737:58:72;;;297:9163;1737:58;;297:9163;;;;;;-1:-1:-1;;;;;;;;;;;297:9163:72;;;;1737:58;;;;;;;;;;;;;;;;297:9163;1825:9;;;;:::i;:::-;297:9163;1815:19;;-1:-1:-1;;;;;;;;;;;1805:30:72;;;;297:9163;;1590:14:0;;;;1805:30:72;;297:9163;1805:30;;297:9163;1805:30;;297:9163;1805:30;-1:-1:-1;;;;;;;;;;;1805:30:72;;;;;;;;;;;297:9163;1845:22;;-1:-1:-1;;;;;;;;;;;1845:22:72;;;;297:9163;;-1:-1:-1;;;1845:22:72;;297:9163;1855:11;;297:9163;1845:22;;297:9163;1845:22;297:9163;;;-1:-1:-1;;;;;;;;;;;1845:22:72;;;;;;;;;;;297:9163;1897:9;;;;;:::i;:::-;297:9163;1887:19;;-1:-1:-1;;;;;;;;;;;1877:30:72;;;;297:9163;;1590:14:0;;;;1877:30:72;;297:9163;1877:30;;297:9163;1877:30;;297:9163;1877:30;-1:-1:-1;;;;;;;;;;;1877:30:72;;;;;;;;297:9163;1917:22;;-1:-1:-1;;;;;;;;;;;1917:22:72;;;;297:9163;;-1:-1:-1;;;1917:22:72;;297:9163;1927:11;;297:9163;1917:22;;297:9163;1917:22;297:9163;;;-1:-1:-1;;;;;;;;;;;1917:22:72;;;;;;;;297:9163;940:2;;;;;2103:63;940:2;;297:9163;;;;;;;:::i;:::-;1991:1;940:2;;;297:9163;;940:2;;;2003:20;;;:::i;:::-;940:2;2033:20;;;:::i;:::-;940:2;297:9163;;1590:14:0;;;;;;;;;2103:63:72;;297:9163;2103:63;;;:::i;:::-;;;;;;;;;;;;;;297:9163;2182:13;;2216:3;297:9163;;2197:17;;;;;2244:9;2235:32;2244:9;297:9163;2244:9;;;:::i;:::-;;297:9163;2235:32;:::i;:::-;2281:34;297:9163;2290:9;;;;:::i;2281:34::-;940:2;2182:13;;2197:17;;297:9163;;2103:63;;;;;;;;;;;;;;:::i;:::-;;;;;;297:9163;;;1590:14:0;;;;;;;;1917:22:72;;;;;;:::i;:::-;297:9163;;1917:22;;;297:9163;;;;1877:30;;;;;:::i;:::-;297:9163;;1877:30;;;;1845:22;;;;;:::i;:::-;297:9163;;1845:22;;;;1805:30;;;;;:::i;:::-;297:9163;;1805:30;;;;1737:58;;;;;;;;;;;;;:::i;:::-;;;;297:9163;;;;;;;;;;;;;3485:19:5;297:9163:72;940:2;;;:::i;:::-;297:9163;;;;;;:::i;:::-;940:2;;;3485:19:5;297:9163:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1198:64;297:9163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;297:9163:72;;;1198:64;297:9163;;;;940:2;297:9163;940:2;:::i;:::-;297:9163;;;;;;;:::i;:::-;940:2;;;297:9163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;940:2;297:9163;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;940:2;;;-1:-1:-1;;940:2:72;297:9163;940:2;;;;2590:13;;2605:19;940:2;2605:19;;;;-1:-1:-1;940:2:72;;2763:15;297:9163;;;-1:-1:-1;;;2743:63:72;;297:9163;;;-1:-1:-1;;;;;297:9163:72;;;;;;;;2743:63;;297:9163;;2743:63;;;:::i;:::-;;;;;;;;;;;;;;2585:109;2822:13;;2837:23;697:10;2837:23;;;;297:9163;;;2862:3;2890:9;;;;:::i;:::-;;2670:1;940:2;;;;;;;;;3006:13;2917;2881:54;2890:41;2997:38;2917:13;;2670:1;2917:13;;;;:::i;2997:38::-;940:2;2822:13;;2743:63;;;;;;;;;;;;;:::i;:::-;;;;2626:3;940:2;;2670:1;940:2;;;;;;;523:5:65;2658:4:72;523:5:65;;2658:4:72;523:5:65;;;;;;;;;;;;2675:8:72;523:5:65;;;;;;;2645:38:72;2670:1;2645:38;;;;;:::i;:::-;940:2;;2590:13;;;;523:5:65;-1:-1:-1;;;523:5:65;;;297:9163:72;523:5:65;;297:9163:72;523:5:65;297:9163:72;;;;;;;;;;;;;;;;;;2563:16:5;297:9163:72;;;;;;;2563:16:5;297:9163:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;297:9163:72;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;297:9163:72;;;;9018:7;940:2;9067:15;297:9163;;;-1:-1:-1;;;9018:65:72;;297:9163;;9018:65;;297:9163;;;;;;;;;-1:-1:-1;;;;;297:9163:72;;;;;;;;;;;;;9018:65;;297:9163;;;9018:65;;;;;;;297:9163;9018:65;;;297:9163;;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;297:9163:72;;1590:14:0;;;;2349:24:1;;297:9163:72;2349:24:1;;297:9163:72;;;;;;;2349:24:1;297:9163:72;2349:24:1;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;;;;;297:9163:72;;;2349:24:1;;;;297:9163:72;2349:24:1;;:::i;:::-;297:9163:72;2349:24:1;297:9163:72;;1590:14:0;297:9163:72;1590:14:0;;;;;9018:65:72;;;;;;297:9163;9018:65;;;;;;:::i;:::-;;;;297:9163;;;;;;-1:-1:-1;;297:9163:72;;;;;;;;;;;:::i;:::-;940:2;;;;;;;-1:-1:-1;;940:2:72;297:9163;940:2;;297:9163;3814:19;940:2;3814:19;;;;-1:-1:-1;940:2:72;;297:9163;;-1:-1:-1;;;3952:59:72;;297:9163;;3952:59;;297:9163;;;697:10;;;297:9163;;;-1:-1:-1;;;;;;;;;;;697:10:72;;;297:9163;697:10;;;;;297:9163;;697:10;;;297:9163;;;;;-1:-1:-1;;;;;297:9163:72;;;;;;;;;;;697:10;;;;;;;;;;;;;297:9163;697:10;3952:59;;;;;;;;;;297:9163;3952:59;;;697:10;4027:13;297:9163;4042:23;697:10;4042:23;;;;297:9163;4067:3;4095:9;;;;:::i;:::-;;940:2;3879:1;940:2;;;;;;;;;4211:13;4122;4086:54;4095:41;4202:38;4122:13;;3879:1;4122:13;;;:::i;4095:41::-;297:9163;697:10;4086:54;:::i;4202:38::-;940:2;4027:13;;940:2;297:9163;;;;523:5:65;;297:9163:72;523:5:65;;297:9163:72;523:5:65;3952:59:72;;;;;;297:9163;3952:59;;;;;;:::i;:::-;;;;697:10;;;297:9163;;697:10;;-1:-1:-1;940:2:72;697:10;;;;297:9163;;;;3879:1;697:10;;;3835:3;3879:1;940:2;;;;;;;;523:5:65;3867:4:72;523:5:65;;3867:4:72;523:5:65;;;;;;;;;;;;3884:8:72;523:5:65;;;;;;;3879:1:72;3854:38;;;;;:::i;:::-;940:2;;3799:13;;297:9163;;;;;;-1:-1:-1;;297:9163:72;;;;;;-1:-1:-1;;;1133:20:72;;1590:14:0;297:9163:72;1133:20;;1590:14:0;;;;;297:9163:72;-1:-1:-1;;;297:9163:72;;;1590:14:0;-1:-1:-1;297:9163:72;1133:20;297:9163;-1:-1:-1;;;;;;;;;;;1133:20:72;;;;;;;1590:14:0;1133:20:72;1590:14:0;1133:20:72;297:9163;1133:20;;;297:9163;;;;1590:14:0;;;;;;;1113:52:72;;297:9163;;1113:52;;1590:14:0;297:9163:72;1590:14:0;;;;:::i;:::-;1095:8:72;1590:14:0;;;297:9163:72;1113:52;;297:9163;-1:-1:-1;;;;;;;;;;;1113:52:72;;;;;;;;297:9163;;;;1198:64;;;;;;;;-1:-1:-1;;;;;1198:64:72;;;;;297:9163;1198:64;;;;;;618:42;297:9163;;-1:-1:-1;;;;;;;;;;;1590:14:0;521:42:72;;297:9163;1198:64;;;297:9163;1198:64;;;;;1590:14:0;521:42:72;;-1:-1:-1;;;;;;521:42:72;-1:-1:-1;;;;;297:9163:72;;;;521:42;;;;;;297:9163;;-1:-1:-1;;;1297:35:72;;297:9163;;;;-1:-1:-1;;;;;;;;;;;1297:35:72;;;;;;;297:9163;1297:35;;;297:9163;;1198:64;297:9163;;;;;521:42;-1:-1:-1;;;;;521:42:72;;1272:62;521:42;;;1272:62;521:42;-1:-1:-1;;;;;521:42:72;;1344:34;521:42;;;1344:34;521:42;297:9163;;;1297:35;;;1590:14:0;1297:35:72;;1590:14:0;1297:35:72;;;;;;1590:14:0;1297:35:72;;;:::i;:::-;;;769:50;;;;;-1:-1:-1;;;;;297:9163:72;;;;;;1297:35;;;;;;-1:-1:-1;1297:35:72;;1198:64;297:9163;;;;;;;;1590:14:0;297:9163:72;;1113:52;1590:14:0;1113:52:72;;1590:14:0;1113:52:72;;;;;;1590:14:0;1113:52:72;;;:::i;:::-;;;1590:14:0;;;;;1113:52:72;;;;;-1:-1:-1;1113:52:72;;1133:20;;;;;;297:9163;1133:20;;;;;;:::i;:::-;;;;297:9163;;;;;;-1:-1:-1;;297:9163:72;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;297:9163:72;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;297:9163:72;;;;;;;:::o;:::-;;;940:2;;297:9163;;;;;;;;-1:-1:-1;;;;;297:9163:72;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;297:9163:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;297:9163:72;;;;;;;;-1:-1:-1;;297:9163:72;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;1198:64;297:9163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;297:9163:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;7505:10:8;297:9163:72;;;;;;7505:10:8;-1:-1:-1;297:9163:72;;-1:-1:-1;297:9163:72;;;-1:-1:-1;297:9163:72;:::o;:::-;;;;;;;;;;;;;534:59:65;297:9163:72;;;;;;534:59:65;-1:-1:-1;297:9163:72;;-1:-1:-1;297:9163:72;;;-1:-1:-1;297:9163:72;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;297:9163:72;;;;;;;;-1:-1:-1;297:9163:72;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;297:9163:72;;;;;;;;;:::o;523:5:65:-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;297:9163:72;;;523:5:65;;;;;;;;8534:180;297:9163:72;;523:5:65;;;;;;;;;;;;;;;8690:17;8655:52;8690:17;;297:9163:72;8655:52:65;;:::i;:::-;8534:180;:::o;1590:14:0:-;-1:-1:-1;;;;;1590:14:0;;;;297:9163:72;;-1:-1:-1;;297:9163:72;1590:14:0;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;1590:14:0;;;;;;;;;;;;;;;;;;;:::i;:::-;297:9163:72;;;;;;;:::i;:::-;1590:14:0;;;;;;;;;;;;-1:-1:-1;1590:14:0;;;;;;;;297:9163:72;;;;;1590:14:0;:::o;:::-;;;;;;;;;;;:::o;940:2:72:-;;;;;;;;;;:::o;:::-;297:9163;;940:2;;;;;;:::o;:::-;297:9163;;1865:1;940:2;;;;;;;:::o;:::-;297:9163;;940:2;;;;;;;;;;;;:::o;697:10::-;;;;;;;;;;;297:9163;;;;:::i;:::-;697:10;;;1590:14:0;;;697:10:72;;;1590:14:0;697:10:72;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;697:10:72;;;;;;;;;;;;;;;;;;:::i;:::-;297:9163;;;;;;;:::i;:::-;697:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;297:9163;697:10;;;;;:::i;:::-;;;;;;;;;;297:9163;697:10;;;;;297:9163;;;;1198:64;297:9163;;;;;697:10;;;297:9163;-1:-1:-1;;;;;;;;;;;697:10:72;;;297:9163;697:10;;;;;297:9163;;;;;;;;697:10;297:9163;697:10;;;;;;;;;;:::o;:::-;;;297:9163;;697:10;;;;;297:9163;;;;697:10;;;;;297:9163;697:10;;;;;;;297:9163;;;1198:64;297:9163;;;;;697:10;;;297:9163;1198:64;297:9163;;;;;697:10;;;297:9163;697:10;;;;;297:9163;;;;;;;;697:10;;;;;;;;;;;;:::o;:::-;;;297:9163;;697:10;;;;;297:9163;;;;697:10;;;;;;;;;;;;;;:::o;297:9163::-;;;;;;;;;;;-1:-1:-1;;;;;297:9163:72;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;297:9163:72;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;1590:14:0;;297:9163:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;1590:14:0;;297:9163:72;;;;;1590:14:0;297:9163:72;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;297:9163:72;;;;;;;;;;;;;-1:-1:-1;297:9163:72;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;297:9163:72;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;297:9163:72;;;;;;;;;;;;;;;;1243:204:1;1302:7;297:9163:72;;;;;;;1325:14:1;:::o;1298:143::-;297:9163:72;;;1590:14:0;;;1377:39:1;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;297:9163:72;192:59:1;;;;;;297:9163:72;192:59:1;1377:39;;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;;;;;297:9163:72;1377:39:1;;;1298:143;1377:53;;;1370:60;:::o;1377:39::-;;;192:59;1377:39;;192:59;1377:39;;;;;;1590:14:0;1377:39:1;;;:::i;:::-;;;1590:14:0;;;;;1377:39:1;;;;;;-1:-1:-1;1377:39:1;;426:547:59;688:35;426:547;637:17;619:35;297:9163:72;;637:17:59;;;297:9163:72;619:35:59;;:::i;:::-;297:9163:72;;706:17:59;;297:9163:72;688:35:59;;:::i;:::-;769:30;;;;;;801:8;;297:9163:72;801:8:59;:::o;765:201::-;867:29;;;;905:1;898:8;:::o;863:103::-;-1:-1:-1;;4822:17:72;957:9:59:o;2866:108:1:-;-1:-1:-1;;;;;;;;;;;2943:24:1;;;;297:9163:72;;1590:14:0;;;;2943:24:1;;;;;297:9163:72;;;;;;;2943:24:1;;;-1:-1:-1;;;;;;;;;;;2943:24:1;;;;;;;;2866:108;:::o;2943:24::-;297:9163:72;2943:24:1;;;:::i;:::-;2866:108::o;13112:110::-;-1:-1:-1;;;;;;;;;;;13191:24:1;;;;297:9163:72;;1590:14:0;;;;13191:24:1;;;;;297:9163:72;;;;;;;13191:24:1;;;-1:-1:-1;;;;;;;;;;;13191:24:1;;;;;;;;13112:110;:::o;2270:::-;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;297:9163:72;;1590:14:0;;;;2349:24:1;;;;;297:9163:72;8690:1;297:9163;;;;-1:-1:-1;2349:24:1;;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;;;;;2270:110;:::o;:::-;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;297:9163:72;;1590:14:0;;;;2349:24:1;;;;;297:9163:72;;;;;-1:-1:-1;2349:24:1;;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;;;;;2270:110;:::o;8720:323:65:-;297:9163:72;8906:3:65;297:9163:72;;8881:23:65;;;;;8929:15;;;;:::i;:::-;297:9163:72;;;;;;;;8929:29:65;8925:79;;940:2:72;;8866:13:65;;8925:79;8978:11;;940:2:72;8978:11:65;:::o;297:9163:72:-;;;;;;;;;;;;8881:23:65;;;297:9163:72;8720:323:65;:::o;:::-;297:9163:72;8906:3:65;297:9163:72;;8881:23:65;;;;;8929:15;;;;:::i;:::-;297:9163:72;;;;;;;2531:24:65;8929:29;8925:79;;940:2:72;;8866:13:65;;8720:323;297:9163:72;8906:3:65;297:9163:72;;8881:23:65;;;;;8929:15;;;;:::i;:::-;297:9163:72;;;;;;;6005:21:65;8929:29;8925:79;;940:2:72;;8866:13:65;;5926:434:58;297:9163:72;;6065:47:58;;;;1590:14:0;;;;6065:47:58;;1198:64:72;297:9163;;;;;6065:47:58;;;;;297:9163:72;4822:17;;297:9163;;;;6065:47:58;;;;;;;:::i;:::-;8511:25;;-1:-1:-1;;;;;297:9163:72;;;-1:-1:-1;;;;;297:9163:72;8511:25:58;;;;;:::i;:::-;8553:81;;;5926:434;8553:127;;;;5926:434;6127:45;;6123:231;;5926:434;;;:::o;6123:231::-;6232:43;6330:12;297:9163:72;;;1590:14:0;;;;6065:47:58;6232:43;;;6065:47;6232:43;;297:9163:72;-1:-1:-1;6065:47:58;297:9163:72;;;6065:47:58;6232:43;;;6065:47;6232:43;;:::i;:::-;;;:::i;:::-;6330:12;:::i;8553:127::-;8650:26;;;:30;;8553:127;;;:81;297:9163:72;;;;-1:-1:-1;8577:22:58;;;:56;;;;8553:81;;;;;;;8577:56;8603:30;;;6065:47;8603:30;;;;;;;;:::i;:::-;8577:56;;;;297:9163:72;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;297:9163:72;;;;;;;;;:::o;1911:4479:65:-;;;;;;297:9163:72;;-1:-1:-1;;;2117:44:65;;;;;297:9163:72;;;-1:-1:-1;;;;;297:9163:72;;;;;;;;;;;;;1911:4479:65;;;;;2117:44;297:9163:72;;;;;2117:44:65;;;;;297:9163:72;2117:44:65;-1:-1:-1;;;;;297:9163:72;;2117:44:65;;;;;;:47;:44;;;;;1911:4479;2117:47;;:::i;:::-;297:9163:72;;;-1:-1:-1;297:9163:72;1590:14:0;;;297:9163:72;;2174:61:65;;297:9163:72;;;;:::i;:::-;;;;;1590:14:0;297:9163:72;;;-1:-1:-1;;;297:9163:72;;;;2174:61:65;;;:::i;:::-;1590:14:0;;297:9163:72;2117:44:65;297:9163:72;;44640:78:15;297:9163:72;;;1590:14:0;;297:9163:72;;:::i;:::-;;;;;1590:14:0;297:9163:72;;;-1:-1:-1;;;297:9163:72;;;;;;44640:78:15;;;;;;1590:14:0;44640:78:15;;;297:9163:72;44640:78:15;;;297:9163:72;;;;;;:::i;:::-;-1:-1:-1;;;;;297:9163:72;;;;;;;;;;;;;;;;;;;44640:78:15;-1:-1:-1;;44640:78:15;;;;;;:::i;:::-;1222:159;297:9163:72;;1222:159:15;;591:42;1222:159;;-1:-1:-1;297:9163:72;;-1:-1:-1;;;2467:50:65;;2117:44;2467:50;;297:9163:72;;;-1:-1:-1;;;;;297:9163:72;;;;;;;;;;;;;2117:44:65;297:9163:72;;;;;2467:50:65;297:9163:72;;-1:-1:-1;;;;;297:9163:72;;2467:50:65;;;;;;2440:125;2467:50;2117:44;2467:50;;;1911:4479;2440:125;;:::i;:::-;940:2:72;297:9163;;;;;;;:::i;:::-;2117:44:65;940:2:72;;;;1590:14:0;940:2:72;;;8365:37:65;;;2117:44;8365:37;8352:50;;;:::i;:::-;940:2:72;8433:4:65;523:5;;;8412:25;;;:::i;:::-;940:2:72;297:9163;;8468:1:65;940:2:72;;;;1590:14:0;;940:2:72;;523:5:65;;8420:1;523:5;940:2:72;;297:9163;;8487:1:65;940:2:72;;;;;;297:9163;940:2;;;297:9163;;-1:-1:-1;;;2822:49:65;;297:9163:72;2117:44:65;297:9163:72;;2822:49:65;940:2:72;2822:49:65;;;2117:44;2822:49;;;:::i;:::-;;297:9163:72;;-1:-1:-1;;;;;297:9163:72;;2822:49:65;;;;;;;2117:44;2822:49;;;8365:37;2917:9;2903:24;2917:9;;;:::i;:::-;;2903:24;:::i;:::-;297:9163:72;;-1:-1:-1;;697:10:72;;;4822:17;697:10;;;;2941:40:65;2955:25;2881:174;2955:25;;;:::i;2941:40::-;1590:14:0;;297:9163:72;;;1590:14:0;297:9163:72;;;;:::i;:::-;;;;;1590:14:0;297:9163:72;;;-1:-1:-1;;;297:9163:72;;;;2881:174:65;:::i;:::-;3152:24;3166:9;;;:::i;3152:24::-;297:9163:72;;-1:-1:-1;;697:10:72;;;;;;;297:9163;12247:66:15;2117:44:65;3204:25;3190:40;3204:25;;;;;:::i;3190:40::-;1590:14:0;;297:9163:72;;;;;;;;;:::i;:::-;;;;;1590:14:0;297:9163:72;;;-1:-1:-1;;;297:9163:72;;;;;;12247:66:15;;;;;;1590:14:0;12247:66:15;;;1590:14:0;;44640:78:15;12247:66;;297:9163:72;;;;;;:::i;:::-;;;;;;;;;;12247:66:15;940:2:72;;12247:66:15;;;;;;:::i;:::-;1222:159;297:9163:72;;1222:159:15;;591:42;1222:159;;-1:-1:-1;1590:14:0;;297:9163:72;;3251:53:65;;297:9163:72;;;;:::i;:::-;;;;;1590:14:0;297:9163:72;;;-1:-1:-1;;;297:9163:72;;;;3251:53:65;:::i;:::-;3314:60;3323:9;;;:::i;:::-;;297:9163:72;;;1590:14:0;;;297:9163:72;;;;;;;;:::i;:::-;;;;;1590:14:0;297:9163:72;;;3314:60:65;:::i;:::-;3384:64;1590:14:0;3393:9:65;;;:::i;:::-;;:21;297:9163:72;;;;;;;;;;;:::i;:::-;;;;;1590:14:0;297:9163:72;;;3384:64:65;:::i;:::-;3480:24;3494:9;;;:::i;3480:24::-;297:9163:72;;;;3514:49:65;297:9163:72;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1590:14:0;297:9163:72;;;3514:49:65;:::i;:::-;297:9163:72;;;;;;:::i;:::-;2117:44:65;297:9163:72;;2117:44:65;1590:14:0;297:9163:72;;;;;;;;;;:::i;:::-;2117:44:65;297:9163:72;;;1590:14:0;297:9163:72;;;;;;;;;-1:-1:-1;;697:10:72;;;;;;;3635:27:65;;;;:::i;:::-;297:9163:72;940:2;523:5:65;;;;;;;;2117:44;297:9163:72;;;;1590:14:0;27501:38:3;;1590:14:0;;;;27501:38:3;;3624:4:65;44640:78:15;27501:38:3;;297:9163:72;44640:78:15;27501:38:3;;;297:9163:72;27501:38:3;;:::i;:::-;27484:56;;;;;;27568:30;27484:56;;:::i;27568:30::-;-1:-1:-1;6854:12:8;521:42:72;;-1:-1:-1;;;;;;521:42:72;-1:-1:-1;;;;;297:9163:72;;521:42;;;27524:10:3;297:9163:72;;7009:9:8;297:9163:72;;;7009:9:8;297:9163:72;7505:10:8;297:9163:72;-1:-1:-1;;;297:9163:72;;;;;;;8420:1:65;297:9163:72;;;7505:10:8;297:9163:72;;:::i;:::-;;;6854:12:8;297:9163:72;-1:-1:-1;;;;;297:9163:72;;;7009:9:8;297:9163:72;15610:11:8;297:9163:72;;1590:14:0;;15653:34:8;;:::i;:::-;15703:15;;-1:-1:-1;;;;;297:9163:72;;;;;27635:8:3;297:9163:72;;;;;15703:15:8;;297:9163:72;;;;;;2117:44:65;297:9163:72;1590:14:0;297:9163:72;;;2117:44:65;297:9163:72;;;;1590:14:0;15735:37:8;;;;;;;;;;:::i;:::-;297:9163:72;15725:48:8;;2117:44:65;297:9163:72;1590:14:0;297:9163:72;;8487:1:65;297:9163:72;;2117:44:65;297:9163:72;15703:77:8;297:9163:72;;15702:78:8;15698:126;;8365:37:65;15857:15:8;;-1:-1:-1;;;;;297:9163:72;;;;;27635:8:3;297:9163:72;;;;;;2117:44:65;297:9163:72;1590:14:0;297:9163:72;15889:37:8;;297:9163:72;;2117:44:65;297:9163:72;;;;;15889:37:8;;;1590:14:0;15889:37:8;;;;;:::i;:::-;297:9163:72;15879:48:8;;2117:44:65;297:9163:72;1590:14:0;297:9163:72;;;2117:44:65;297:9163:72;8420:1:65;15943:15:8;;297:9163:72;15961:16:8;8468:1:65;15961:16:8;;297:9163:72;15943:34:8;;;;:::i;:::-;15938:460;;8365:37:65;297:9163:72;;;;;-1:-1:-1;;;16424:32:8;;;;-1:-1:-1;;;;;297:9163:72;2117:44:65;16424:32:8;;297:9163:72;;;;;;;;;;;1590:14:0;297:9163:72;;;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;2117:44:65;16424:32:8;;;8365:37:65;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;297:9163:72;;;-1:-1:-1;;;16587:43:8;;;;-1:-1:-1;;;;;297:9163:72;2117:44:65;16587:43:8;;297:9163:72;12810:59:8;;;297:9163:72;;;;940:2;523:5:65;;297:9163:72;;;12656:92:8;12810:59;;;297:9163:72;-1:-1:-1;297:9163:72;12810:59:8;297:9163:72;-1:-1:-1;;;;;;;;;;;;16587:43:8;;;;;;;;8365:37:65;16678:31:8;;;:::i;:::-;16724:8;;297:9163:72;;;16724:29:8;;8365:37:65;16720:176:8;;;;14785:4;;;;:::i;:::-;297:9163:72;;;1590:14:0;;;3697:13:65;;1590:14:0;2117:44:65;;;;;-1:-1:-1;;;;;;;;;;;3697:13:65;;;;;;2117:44;;3697:13;;;;8365:37;-1:-1:-1;8420:1:65;3761:3;297:9163:72;;3741:18:65;;;;;1222:159:15;3878:14:65;297:9163:72;12952:65:15;3878:14:65;;;:::i;:::-;3910:10;;;;;:::i;:::-;297:9163:72;;;;;;;1590:14:0;297:9163:72;1590:14:0;;297:9163:72;;:::i;:::-;;;;;1590:14:0;297:9163:72;;;-1:-1:-1;;;297:9163:72;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1590:14:0;12952:65:15;;;1590:14:0;;44640:78:15;12952:65;;297:9163:72;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;297:9163:72;;;;;;;:::i;:::-;;;;;;12952:65:15;940:2:72;;12952:65:15;;;;;;:::i;:::-;1222:159;297:9163:72;;1222:159:15;;591:42;1222:159;;;3972:24:65;3986:9;;;;:::i;3972:24::-;1222:159:15;4051:10:65;297:9163:72;12771:66:15;4051:10:65;;;;;:::i;:::-;297:9163:72;;;;;;;;;;:::i;:::-;;;;;1590:14:0;297:9163:72;;;;;;12771:66:15;;;;;;1590:14:0;12771:66:15;;;1590:14:0;;44640:78:15;12771:66;;297:9163:72;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;297:9163:72;;;;;12771:66:15;-1:-1:-1;;12771:66:15;;;;;;:::i;:::-;1222:159;297:9163:72;;1222:159:15;;591:42;1222:159;;;4166:10:65;297:9163:72;4166:10:65;;4093:97;4166:10;;;;:::i;:::-;297:9163:72;;;;-1:-1:-1;;;4093:97:65;;297:9163:72;;;;;2117:44:65;4093:97;;;:::i;:::-;;2117:44;;;1198:64:72;297:9163;;;;;;4093:97:65;;;;;;;2117:44;;4093:97;;;3761:3;297:9163:72;;;523:5:65;;;;;;;;;;;;;4244:52;4335:26;4286:10;523:5;4286:10;;;;:::i;:::-;297:9163:72;523:5:65;;4244:52;:::i;:::-;297:9163:72;;;4349:11:65;;4335:26;:::i;:::-;297:9163:72;4375:60:65;297:9163:72;;;;;;;;;:::i;:::-;;;;;1590:14:0;297:9163:72;;;4375:60:65;:::i;:::-;4449;297:9163:72;;;;;;;;;:::i;:::-;;;;;1590:14:0;297:9163:72;;;4449:60:65;:::i;:::-;4523:61;297:9163:72;;;;;;;;;:::i;:::-;;;;;1590:14:0;297:9163:72;;;4523:61:65;:::i;:::-;4599:1176;;;;;1590:14:0;;297:9163:72;;;5013:164:65;;4819:176;;-1:-1:-1;;4637:164:65;;297:9163:72;-1:-1:-1;297:9163:72;;;;:::i;:::-;;;;;1590:14:0;297:9163:72;;;-1:-1:-1;;;297:9163:72;;;;;4637:164:65;;:::i;:::-;1590:14:0;;297:9163:72;;;;1590:14:0;297:9163:72;;;;:::i;:::-;;;;;1590:14:0;297:9163:72;;;;;;;;;4819:176:65;;:::i;:::-;1590:14:0;;297:9163:72;;;;1590:14:0;297:9163:72;;;;:::i;:::-;;;;;1590:14:0;297:9163:72;;;-1:-1:-1;;;297:9163:72;;;;;5013:164:65;;:::i;:::-;297:9163:72;;;1590:14:0;;;;5789:25:65;;297:9163:72;;2117:44:65;5789:25;;297:9163:72;1590:14:0;2117:44:65;44640:78:15;2117:44:65;;;-1:-1:-1;;;;;;;;;;;5789:25:65;;;;;;;8420:1;5789:25;;;4599:1176;3761:3;940:2:72;3726:13:65;;5789:25;;;1590:14:0;5789:25:65;;;;;;;;;:::i;:::-;;;;;;297:9163:72;;;1590:14:0;2117:44:65;;1590:14:0;;;;;4599:1176:65;5407:172;297:9163:72;5216:173:65;5597:163;297:9163:72;;;:::i;:::-;5216:173:65;;;:::i;:::-;297:9163:72;;:::i;:::-;5407:172:65;;;:::i;:::-;297:9163:72;;;1590:14:0;297:9163:72;1590:14:0;;297:9163:72;;:::i;:::-;;;;;1590:14:0;297:9163:72;;;-1:-1:-1;;;297:9163:72;;;;;5597:163:65;;:::i;:::-;4599:1176;;523:5;297:9163:72;;;2117:44:65;;523:5;6854:12:8;2117:44:65;523:5;44640:78:15;2117:44:65;;523:5;4093:97;;;;297:9163:72;4093:97:65;;;;;;;;;:::i;:::-;;;;3741:18;;;;;;;;;5873:3;523:5;;;;;;;5873:3;523:5;;;;;;;;297:9163:72;;;-1:-1:-1;;;5941:50:65;;2117:44;;;;5941:50;;297:9163:72;;;-1:-1:-1;;;;;297:9163:72;;;;;;;;;;;;;;2117:44:65;;297:9163:72;523:5:65;;;;;297:9163:72;2117:44:65;;297:9163:72;;;;;;;5941:50:65;;;;;;5914:122;2117:44;;;5941:50;;;3721:2104;5914:122;;:::i;:::-;;;;6590;297:9163:72;;;;;1590:14:0;;297:9163:72;;:::i;:::-;;;;;1590:14:0;297:9163:72;;;-1:-1:-1;;;297:9163:72;;;;;6590:122:65;:::i;:::-;297:9163:72;;;;;;;;;;:::i;:::-;8420:1:65;940:2:72;;297:9163;;-1:-1:-1;;940:2:72;;1590:14:0;940:2:72;;;6783:37:65;;;:::i;:::-;940:2:72;297:9163;;;-1:-1:-1;;;6835:57:65;;2117:44;;297:9163:72;;6835:57:65;;;;;2117:44;6835:57;;;:::i;:::-;;2117:44;;;1198:64:72;297:9163;;;;;;6835:57:65;;2117:44;;6835:57;;6047:287;-1:-1:-1;6831:346:65;;8420:1;6831:346;;:::i;:::-;;;;;;;;7259:18;297:9163:72;6831:346:65;7259:18;:::i;:::-;297:9163:72;;7190:97:65;297:9163:72;;;1590:14:0;;;;;;;;;;7190:97:65;;2117:44;7190:97;;;:::i;:::-;2117:44;;7190:97;;;;-1:-1:-1;;;;;297:9163:72;7190:97:65;;2117:44;;7190:97;;6831:346;-1:-1:-1;7186:342:65;;8420:1;7186:342;;:::i;:::-;;;;;;;;6047:287;6344:39;297:9163:72;;;;;;;;:::i;:::-;;;;;1590:14:0;297:9163:72;;;6344:39:65;:::i;7186:342::-;7375:153;;:::i;:::-;;;;7186:342;;;;7375:153;2117:44;;1590:14:0;;297:9163:72;;;2117:44:65;;-1:-1:-1;7418:99:65;;2117:44;297:9163:72;;;;;:::i;:::-;;;;;1590:14:0;297:9163:72;;;-1:-1:-1;;;297:9163:72;;;;;7418:99:65;:::i;:::-;7375:153;;;7186:342;297:9163:72;;;-1:-1:-1;;;7302:61:65;;1590:14:0;2117:44:65;7302:61;;297:9163:72;;44640:78:15;297:9163:72;;;;;;;;-1:-1:-1;;;297:9163:72;;;;;;7302:61:65;7190:97;;;297:9163:72;7190:97:65;297:9163:72;7190:97:65;;;;;;;:::i;:::-;;;6831:346;7018:159;;:::i;:::-;;;;6831:346;;;;7018:159;2117:44;;1590:14:0;;297:9163:72;;;2117:44:65;;-1:-1:-1;7061:105:65;;2117:44;297:9163:72;;;;;:::i;:::-;;;;;1590:14:0;297:9163:72;;;;;;;;;7061:105:65;:::i;:::-;7018:159;;;6831:346;297:9163:72;;;-1:-1:-1;;;6907:99:65;;1590:14:0;2117:44:65;6907:99;;297:9163:72;;44640:78:15;297:9163:72;;;;;;;;;;;;;;;6907:99:65;6835:57;;;;2117:44;;;6835:57;;;;;;:::i;:::-;;;6047:287;1590:14:0;;297:9163:72;;;7738:117:65;;297:9163:72;;;;;;;:::i;:::-;;;;;1590:14:0;297:9163:72;;;-1:-1:-1;;;297:9163:72;;;;;7738:117:65;:::i;:::-;297:9163:72;;;;;;;;;;:::i;:::-;8420:1:65;940:2:72;;297:9163;;-1:-1:-1;;940:2:72;;1590:14:0;940:2:72;;;7926:37:65;;;:::i;:::-;940:2:72;297:9163;;;1590:14:0;;;;7974:57:65;;2117:44;;7974:57;;;;;;;2117:44;7974:57;;;:::i;:::-;;2117:44;;;1198:64:72;297:9163;;;;;;7974:57:65;;;;;;;297:9163:72;;8110:18:65;;7974:57;;8110:18;;:::i;:::-;297:9163:72;;8041:97:65;297:9163:72;;;1590:14:0;;;;;;;;;;8041:97:65;;2117:44;8041:97;;;:::i;:::-;2117:44;;8041:97;;;;-1:-1:-1;;;;;297:9163:72;8041:97:65;;;;;;;;6047:287;;;;8041:97;;;297:9163:72;8041:97:65;297:9163:72;8041:97:65;;;;;;;:::i;:::-;;;;;7974:57;;;;2117:44;;;7974:57;;;;;;:::i;:::-;;;5941:50;;;;;2117:44;;;5941:50;;;;;;:::i;:::-;;;;3697:13;1590:14:0;3697:13:65;;1590:14:0;3697:13:65;;;;;;1590:14:0;3697:13:65;;;:::i;:::-;;;1590:14:0;;;;;3697:13:65;;;;;;;;-1:-1:-1;3697:13:65;;16720:176:8;297:9163:72;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;297:9163:72;;;-1:-1:-1;;;16769:41:8;;2117:44:65;;16769:41:8;;-1:-1:-1;;;;;297:9163:72;2117:44:65;16769:41:8;;297:9163:72;12810:59:8;;;297:9163:72;;;;12810:59:8;;;297:9163:72;;;;;;12810:59:8;;;16769:41;2117:44:65;;;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;;;;;16720:176;297:9163:72;;;-1:-1:-1;;;16824:61:8;;1590:14:0;2117:44:65;16824:61:8;;12810:59;297:9163:72;44640:78:15;12810:59:8;;297:9163:72;12810:59:8;297:9163:72;;;12810:59:8;-1:-1:-1;;;297:9163:72;12810:59:8;;;297:9163:72;;16824:61:8;16769:41;2117:44:65;;16769:41:8;;;:::i;:::-;297:9163:72;;;;16769:41:8;;;297:9163:72;2117:44:65;;;297:9163:72;16724:29:8;940:2:72;523:5:65;16736:17:8;;;-1:-1:-1;16724:29:8;;;;16587:43;2117:44:65;16587:43:8;;;:::i;:::-;2117:44:65;297:9163:72;;16587:43:8;;;;297:9163:72;;;1590:14:0;2117:44:65;1590:14:0;;;;;16424:32:8;;;;1590:14:0;16424:32:8;;1590:14:0;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;:::i;:::-;16021:3;697:10:72;16021:3:8;697:10:72;;;;297:9163;;;;;;;;-1:-1:-1;;;16314:19:8;;8420:1:65;297:9163:72;;2117:44:65;16314:19:8;;297:9163:72;-1:-1:-1;297:9163:72;44640:78:15;297:9163:72;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;16170:185;12810:59;1590:14:0;16314:19:8;8420:1:65;16314:19:8;2117:44:65;16314:19:8;;;15938:460;297:9163:72;;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;297:9163:72;;12810:59:8;;;-1:-1:-1;;;1590:14:0;;12810:59:8;;;297:9163:72;;;;;;12810:59:8;;;297:9163:72;;;2117:44:65;297:9163:72;;;;16170:185:8;;940:2:72;;16170:185:8;;;;;;:::i;:::-;297:9163:72;523:5:65;940:2:72;523:5:65;16103:21:8;12810:59;;;15938:460;;;12810:59;297:9163:72;;;-1:-1:-1;;;12810:59:8;;1590:14:0;2117:44:65;12810:59:8;;297:9163:72;;;;;;44640:78:15;297:9163:72;;;;:::i;16314:19:8:-;;;;;;2117:44:65;16314:19:8;;;;;;:::i;:::-;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;2822:49:65;;;;;;;2117:44;2822:49;;;;;;:::i;:::-;;;;;8365:37;8397:5;523;;;8365:37;;2467:50;;;;;;2117:44;2467:50;;;;;;:::i;:::-;;;;2117:44;;;;;;;;;;;;;:::i;:::-;;;;297:9163:72;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;297:9163:72;;;;:::o;:::-;;;:::o;6764:749:58:-;3256:31:33;;3304:55;;-1:-1:-1;;;;;297:9163:72;;;;2626:1:33;;;;3256:31;;2626:1;297:9163:72;3256:31:33;;;;:::i;:::-;3304:55;;:::i;:::-;297:9163:72;;7289:21:58;;7285:222;;6764:749;;:::o;7285:222::-;3256:31:33;7390:30:58;;;;;;;;;:::i;:::-;297:9163:72;;;6764:749:58:o;297:9163:72:-;;;-1:-1:-1;;;297:9163:72;;3256:31:33;297:9163:72;;;;;;;;;;;;;;-1:-1:-1;;;297:9163:72;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13228:134:1:-;-1:-1:-1;;;;;;;;;;;13326:29:1;;;;297:9163:72;;2117:44:65;297:9163:72;;;1590:14:0;;;;;;;;13326:29:1;;;;;297:9163:72;;;;;;;;;;;;;;;;:::i;:::-;13326:29:1;;-1:-1:-1;;;;;;;;;;;13326:29:1;;;;;;;;13228:134;:::o;:::-;;-1:-1:-1;;;;;;;;;;;13326:29:1;;;;;297:9163:72;13326:29:1;297:9163:72;;1590:14:0;;;;;;;;13326:29:1;;;;;;:::i;6598:121:15:-;1222:159;297:9163:72;6669:42:15;6598:121;;297:9163:72;;6669:42:15;;;;;;;;;;;;;;297:9163:72;;;;;;:::i;6669:42:15:-;1222:159;297:9163:72;;1222:159:15;;591:42;1222:159;;;6598:121::o;7546:145::-;1590:14:0;7629:54:15;1222:159;7546:145;;;;297:9163:72;;7629:54:15;;;;;;;;;;297:9163:72;7629:54:15;;;1590:14:0;;;;;;:::i;:::-;;;;;297:9163:72;7629:54:15;940:2:72;;7629:54:15;;;;;;:::i;15596:134:1:-;;-1:-1:-1;;;;;;;;;;;15694:29:1;;;;;297:9163:72;15694:29:1;297:9163:72;;1590:14:0;;;;;;;;15694:29:1;;;;;;:::i;297:9163:72:-;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;297:9163:72;;;;;;;;;;;;-1:-1:-1;;;;;297:9163:72;;;;;;;;;;;;-1:-1:-1;;;;;297:9163:72;;;;;;;-1:-1:-1;;297:9163:72;;;;;;;;;-1:-1:-1;297:9163:72;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;:::o;7846:150:15:-;297:9163:72;7935:53:15;1222:159;7846:150;;297:9163:72;7846:150:15;;297:9163:72;;7935:53:15;;;;;;;;;;297:9163:72;7935:53:15;;;297:9163:72;;;;;;:::i;:::-;;;;-1:-1:-1;;297:9163:72;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::o;953:236:8:-;297:9163:72;1052:14:8;297:9163:72;;:::i;:::-;1052:14:8;;297:9163:72;;;;;;1109:10:8;297:9163:72;;;;;;1109:10:8;1077:1;297:9163:72;;1077:1:8;297:9163:72;;1077:1:8;297:9163:72;;;;;;;;;;;;;;:::i;:::-;;;523:5:65;;;;;;;297:9163:72;523:5:65;;;;;;;297:9163:72;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;940:2;;297:9163;;:::i;:::-;;940:2;297:9163;;;940:2;1077:1:8;11360:3;297:9163:72;;11346:12:8;;;;;11391:4;;1109:10;11391:4;;;:::i;:::-;297:9163:72;;11456:84:8;523:5:65;11456:84:8;;;;;940:2:72;11331:13:8;;11346:12;-1:-1:-1;11346:12:8;-1:-1:-1;1094:26:8:o;297:9163:72:-;;;;;1109:10:8;297:9163:72;;;;;;-1:-1:-1;297:9163:72;;;;;;;;1048:135:8;297:9163:72;;;;;;1052:14:8;297:9163:72;:::i;953:236:8:-;1052:14;;;297:9163:72;;;;;:::i;:::-;1052:21:8;;1109:10;;;;297:9163:72;;;;;;;;;;;;;;;1077:1:8;297:9163:72;;1077:1:8;297:9163:72;;1077:1:8;297:9163:72;;;;;;;;;;;;;;:::i;:::-;;;523:5:65;;;;;;;297:9163:72;523:5:65;;;;;;;297:9163:72;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;940:2;;297:9163;;:::i;:::-;;940:2;297:9163;;;940:2;1077:1:8;11360:3;297:9163:72;;11346:12:8;;;;;11391:4;;1109:10;11391:4;;;:::i;:::-;297:9163:72;;11456:84:8;523:5:65;11456:84:8;;;;;940:2:72;11331:13:8;;297:9163:72;;;;;1109:10:8;297:9163:72;;;;;;-1:-1:-1;297:9163:72;;;;;;;;1048:135:8;297:9163:72;;;;;;;;;;;:::i;1251:343:8:-;-1:-1:-1;297:9163:72;1364:48:8;1381:9;297:9163:72;1590:14:0;;1364:48:8;297:9163:72;1392:19:8;27635:8:3;1392:19:8;:::i;:::-;297:9163:72;;1364:48:8;;;;;;297:9163:72;;;;;;;;;;;;;;;;;;;;;;;;1364:48:8;;940:2:72;;1364:48:8;;;;;;:::i;:::-;1458:12;297:9163:72;1458:29:8;;;-1:-1:-1;;;;;297:9163:72;1458:29:8;;;;;:::i;:::-;1540:11;297:9163:72;;;;523:5:65;;;;;-1:-1:-1;;;;;523:5:65;;;;;-1:-1:-1;297:9163:72;;;1364:48:8;11010:13;;:29;1364:48;;;11010:29;1364:48;11010:29;;-1:-1:-1;11049:106:8;11069:7;;;;;;1563:24;;;;;1251:343;:::o;11078:3::-;11114:10;;;;;;;;:::i;:::-;297:9163:72;;;;;;;;;1364:48:8;297:9163:72;;1540:11:8;523:5:65;;;;;-1:-1:-1;;;;;;297:9163:72;523:5:65;;11142:1:8;523:5:65;;;;;;;;940:2:72;297:9163;;11097:47:8;11078:3;940:2:72;11054:13:8;;;;;11010:29;;;;1251:343;;-1:-1:-1;1381:9:8;1364:48;1381:9;;;297:9163:72;1590:14:0;;1364:48:8;297:9163:72;1392:19:8;;;:::i;1364:48::-;297:9163:72;1458:12:8;;297:9163:72;1458:29:8;;;-1:-1:-1;;;;;297:9163:72;1458:29:8;;1540:11;1458:29;;:::i;:::-;1540:11;;297:9163:72;523:5:65;;;;;-1:-1:-1;;;;;523:5:65;;;;;-1:-1:-1;297:9163:72;;;1364:48:8;11010:13;;:29;1364:48;;;11010:29;1364:48;11010:29;;-1:-1:-1;11049:106:8;11069:7;;;;;;1563:24;;;;;1251:343;:::o;11078:3::-;11114:10;;;;;;;;:::i;:::-;297:9163:72;;;;;;;;;1364:48:8;297:9163:72;;1540:11:8;523:5:65;;;;;-1:-1:-1;;;;;;297:9163:72;523:5:65;;11142:1:8;523:5:65;;;;;;;;940:2:72;297:9163;;11097:47:8;11078:3;940:2:72;11054:13:8;;;;;11010:29;;;;4421:582:33;;4593:8;;-1:-1:-1;297:9163:72;;5674:21:33;:17;;5846:142;;;;;;5670:385;6025:19;;;5694:1;6025:19;;5694:1;6025:19;4589:408;297:9163:72;;4841:22:33;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:33;4917:24;;;-1:-1:-1;;;;;297:9163:72;;;;4917:24:33;297:9163:72;;;4917:24:33;4841:49;4867:18;;;:23;4841:49;;643:59:8;;;;;;;;;;;;;;;:::i;:::-;297:9163:72;;;;;;;:::i;:::-;643:59:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;192::1;;643::8;;;;;;;;;;4249:2493;4361:12;297:9163:72;4397:9:8;297:9163:72;4438:11:8;297:9163:72;-1:-1:-1;;;;;297:9163:72;;;;;;1590:14:0;;4481:19:8;27635:8:3;4481:19:8;:::i;:::-;4551:15;297:9163:72;;;27635:8:3;297:9163:72;;;;;;;;;;;;;;;;;;;;;;4583:37:8;;;;;;;;;;:::i;:::-;297:9163:72;4573:48:8;;297:9163:72;;;;;4438:11:8;297:9163:72;;;4551:77:8;297:9163:72;;4547:255:8;;-1:-1:-1;;;;;;;;;;;4811:11:8;;;;297:9163:72;;-1:-1:-1;;;4811:11:8;;297:9163:72;;4361:12:8;297:9163:72;;-1:-1:-1;;;;;;;;;;;4811:11:8;;;;;;;;4249:2493;4857:16;;27635:8:3;4857:16:8;:::i;:::-;297:9163:72;;;;1590:14:0;;;4911:25:8;;;4361:12;4911:25;;297:9163:72;4911:25:8;;;;;-1:-1:-1;;;;;;;;;;;4911:25:8;;;;;;;;;;;4249:2493;-1:-1:-1;297:9163:72;;4951:12:8;;4984:74;297:9163:72;;12810:59:8;;;4984:74;;297:9163:72;4361:12:8;4984:74;;643:59;297:9163:72;4911:25:8;643:59;;297:9163:72;643:59:8;297:9163:72;;;643:59:8;;;;;;4984:74;4947:1461;5094:13;5127:3;297:9163:72;;5109:16:8;;;;;5178:8;297:9163:72;5178:8:8;;5165:22;5178:8;;:::i;:::-;297:9163:72;;;-1:-1:-1;;;5165:22:8;;-1:-1:-1;;;;;297:9163:72;;4361:12:8;5165:22;;297:9163:72;;;;;;;;;;;;;;;;;;5165:22:8;;;-1:-1:-1;;;;;;;;;;;5165:22:8;;;;;;;;;;;5127:3;5209:18;;;5205:114;;5127:3;5369:8;;;;:::i;:::-;297:9163:72;4361:12:8;297:9163:72;;;-1:-1:-1;;;1978:27:8;;-1:-1:-1;;;;;297:9163:72;;;4361:12:8;1978:27;;297:9163:72;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1978:27:8;;;;;;;;;;;5127:3;2057:16;;27635:8:3;2057:16:8;:::i;:::-;2102:65;;;:29;;:65;:29;;;-1:-1:-1;;4822:17:72;2102:65:8;-1:-1:-1;;;;;;;;;;;2177:37:8;;;;297:9163:72;;-1:-1:-1;;;2177:37:8;;-1:-1:-1;;;;;297:9163:72;;;;4361:12:8;2177:37;;297:9163:72;12810:59:8;;;297:9163:72;;;12810:59:8;;;297:9163:72;;;;;;12810:59:8;297:9163:72;;-1:-1:-1;;;;;;;;;;;2177:37:8;;;;;;;;;;;2102:65;2254:16;;;27635:8:3;2254:16:8;:::i;:::-;4361:12;297:9163:72;;;;-1:-1:-1;;;;;;297:9163:72;-1:-1:-1;;;;;;;;;;;2281:43:8;;;;297:9163:72;;-1:-1:-1;;;2281:43:8;;-1:-1:-1;;;;;297:9163:72;;;;4361:12:8;2281:43;;297:9163:72;12810:59:8;;;297:9163:72;;;;12810:59:8;;;297:9163:72;;;;;;12810:59:8;297:9163:72;;-1:-1:-1;;;;;;;;;;;2281:43:8;;;;;;;;;;;2102:65;2343:46;;;;;2102:65;5341:37;;;5337:92;;5447:50;;;297:9163:72;;5520:25:8;297:9163:72;;5516:256:8;;2102:65;12275:113;;;;;;;-1:-1:-1;;12275:113:8;;;5902:57;297:9163:72;;5998:29:8;;5994:84;;297:9163:72;;6319:8:8;297:9163:72;6101:89:8;643:59;297:9163:72;;6132:37:8;;297:9163:72;;;6132:37:8;;;297:9163:72;6132:37:8;;;;;:::i;:::-;297:9163:72;6122:48:8;;6180:8;;;;:::i;:::-;297:9163:72;;;;;;;643:59:8;297:9163:72;643:59:8;;297:9163:72;;643:59:8;;297:9163:72;643:59:8;;;297:9163:72;6101:89:8;6319:8;:::i;:::-;297:9163:72;;;;;643:59:8;297:9163:72;;;;;;-1:-1:-1;;;;;297:9163:72;;;;;4438:11:8;297:9163:72;;;940:2;;297:9163;6302:58:8;;940:2:72;;;297:9163;6302:58:8;;940:2:72;;;643:59:8;6302:58;;643:59;940:2:72;643:59:8;;297:9163:72;;;27635:8:3;297:9163:72;;;;;;;;;;;;;;;;6240:37:8;;;;;;;;;;:::i;:::-;297:9163:72;6230:48:8;;297:9163:72;;;;;;;;;643:59:8;;297:9163:72;940:2;643:59:8;;;297:9163:72;4397:9:8;643:59;;;;;;297:9163:72;;;;;643:59:8;;;;;;;;5089:1309;297:9163:72;;;27635:8:3;297:9163:72;;;;;;;;;;;;;;;;6471:37:8;;;;;;;;;;:::i;:::-;297:9163:72;6461:48:8;;297:9163:72;;;;;4438:11:8;297:9163:72;;;6439:77:8;297:9163:72;;643:59:8;;;297:9163:72;6664:15:8;297:9163:72;;27635:8:3;297:9163:72;;;;;;;;;;6696:37:8;;297:9163:72;;;;;;6696:37:8;;;297:9163:72;6696:37:8;;;;;:::i;:::-;297:9163:72;6686:48:8;;297:9163:72;;;;;4249:2493:8;:::o;643:59::-;297:9163:72;;-1:-1:-1;;;643:59:8;;297:9163:72;4361:12:8;643:59;;;;4911:25;643:59;;297:9163:72;643:59:8;297:9163:72;;;643:59:8;-1:-1:-1;;;643:59:8;;;;;;;5994:84;6051:8;;;;940:2:72;6051:8:8;5094:13;940:2:72;5094:13:8;;5516:256;5654:8;;3216:27;5654:8;;;;;;:::i;:::-;297:9163:72;4361:12:8;297:9163:72;;;-1:-1:-1;;;3216:27:8;;-1:-1:-1;;;;;297:9163:72;;;4361:12:8;3216:27;;297:9163:72;;;;;;;;;;;;;;;;;;;;;;3216:27:8;;;-1:-1:-1;;;;;;;;;;;3216:27:8;;;;;;;;;;;5516:256;3293:28;;;27635:8:3;3293:28:8;:::i;:::-;3372:29;;;;;27635:8:3;3372:29:8;:::i;:::-;4361:12;297:9163:72;;;;;;-1:-1:-1;;;;;297:9163:72;-1:-1:-1;;;;;;;;;;;3497:43:8;;;;297:9163:72;;-1:-1:-1;;;3497:43:8;;-1:-1:-1;;;;;297:9163:72;;;;4361:12:8;3497:43;;297:9163:72;12810:59:8;;;297:9163:72;;;;12810:59:8;;;297:9163:72;;;;;;12810:59:8;297:9163:72;;-1:-1:-1;;;;;;;;;;;3497:43:8;;;;;;;;;;;5516:256;3558:23;;;;;5516:256;5601:62;;5689:6;5516:256;5685:69;5723:8;;;;;940:2:72;5723:8:8;;;3558:23;;-1:-1:-1;3558:23:8;;;3497:43;;;;;:::i;:::-;297:9163:72;;3497:43:8;;;;297:9163:72;;;;3497:43:8;297:9163:72;;1590:14:0;297:9163:72;;1590:14:0;;;;3497:43:8;297:9163:72;;;3216:27:8;;;;297:9163:72;3216:27:8;;;;;;;;;1590:14:0;3216:27:8;;;:::i;:::-;;;1590:14:0;;;;;3216:27:8;;;;;;;-1:-1:-1;3216:27:8;;5337:92;5402:8;;940:2:72;5402:8:8;;;2343:46;2355:33;;;-1:-1:-1;2343:46:8;;;;2281:43;;;;;:::i;:::-;297:9163:72;;2281:43:8;;;;297:9163:72;;;;2281:43:8;297:9163:72;;1590:14:0;297:9163:72;;1590:14:0;;;;2281:43:8;297:9163:72;;;2177:37:8;;;;;:::i;:::-;297:9163:72;;2177:37:8;;;;2102:65;;;;;1978:27;;;297:9163:72;1978:27:8;;;;;;;;;1590:14:0;1978:27:8;;;:::i;:::-;;;1590:14:0;;;;;1978:27:8;;;;;;-1:-1:-1;1978:27:8;;;297:9163:72;;1590:14:0;297:9163:72;;1590:14:0;;;;5205:114:8;5256:44;;5290:8;;;;:::i;:::-;297:9163:72;;;;-1:-1:-1;;;;;297:9163:72;;;;;;;;;;;;;;;;;;;5256:44:8;;;;5205:114;;5165:22;;;;297:9163:72;5165:22:8;;;;;;;;;1590:14:0;5165:22:8;;;:::i;:::-;;;1590:14:0;;;;;5165:22:8;;;;;;;-1:-1:-1;5165:22:8;;5109:16;;;;;;4911:25;;;;;;;;;;;;:::i;:::-;;;297:9163:72;643:59:8;;;;;;;;-1:-1:-1;;;;;643:59:8;;;;;;;;;;:::i;:::-;;297:9163:72;643:59:8;;;;-1:-1:-1;;;;;643:59:8;;;;;;;;;:::i;:::-;;4911:25;;;643:59;297:9163:72;;;4811:11:8;;;;;297:9163:72;4811:11:8;;:::i;:::-;297:9163:72;4811:11:8;;;;4547:255;4720:15;;;;;297:9163:72;;27635:8:3;297:9163:72;;;;;;;;;;4752:37:8;;297:9163:72;;;;;;4752:37:8;;;297:9163:72;4752:37:8;;;;;:::i;:::-;297:9163:72;4742:48:8;;297:9163:72;;;;;;;4713:78:8;:::o;11586:239::-;-1:-1:-1;;;;;521:42:72;;11652:12:8;297:9163:72;;11652:12:8;297:9163:72;;;11681:9:8;297:9163:72;;11681:9:8;297:9163:72;11707:10:8;297:9163:72;11645:19:8;11707:10;297:9163:72;;;;11586:239:8;297:9163:72;11645:19:8;11734:11;297:9163:72;;;11762:25:8;297:9163:72;;11762:25:8;297:9163:72;;11804:14:8;297:9163:72;;:::i;:::-;;;;11586:239:8;:::o;297:9163:72:-;;;;;;;;;11645:19:8;11804:14;297:9163:72;11586:239:8:o;297:9163:72:-;11804:14:8;11645:19;297:9163:72;;;;;;;;;;;;;;;;11804:14:8;11645:19;297:9163:72;11645:19:8;297:9163:72;;;;11804:14:8;297:9163:72;;2866:108:1:o;297:9163:72:-;;;;;;;;;11707:10:8;11645:19;297:9163:72;;;;;;;;;;;;;;;;11645:19:8;297:9163:72;;11707:10:8;297:9163:72;;;2560:514:8;;;2695:1;2698:12;2707:3;2698:12;;;;3050:17;;;;2695:1;3050:17;2695:1;2560:514;:::o;2712:8::-;697:10:72;2771:3:8;697:10:72;2771:3:8;697:10:72;;;;2824:12:8;;;297:9163:72;940:2;297:9163;;;;-1:-1:-1;;;;;297:9163:72;-1:-1:-1;;;;;;;;;;;2815:49:8;;;;297:9163:72;;-1:-1:-1;;;2815:49:8;;-1:-1:-1;;;;;297:9163:72;;;;2824:12:8;2815:49;;297:9163:72;12810:59:8;;;297:9163:72;;;12810:59:8;;;297:9163:72;;;;-1:-1:-1;297:9163:72;12810:59:8;297:9163:72;-1:-1:-1;;;;;;;;;;;;2815:49:8;;;;;;;;2712:8;2910:16;;;;:::i;:::-;2945:30;;;2712:8;2941:90;;;940:2:72;;2678:18:8;;2941:90;2995:21;;;940:2:72;2995:21:8;;:::o;2945:30::-;2957:17;;;;2945:30;;;2815:49;2695:1;2815:49;;;:::i;:::-;;;;2560:514;;;4551:10;2698:12;2707:3;2698:12;;;;3050:17;;;;4551:10;3050:17;4551:10;2560:514;:::o;2712:8::-;2824:12;;;297:9163:72;940:2;297:9163;;;-1:-1:-1;;;;;297:9163:72;-1:-1:-1;;;;;;;;;;;2815:49:8;;;;297:9163:72;;-1:-1:-1;;;2815:49:8;;-1:-1:-1;;;;;297:9163:72;;;;2824:12:8;2815:49;;297:9163:72;12810:59:8;;;297:9163:72;;;12810:59:8;;;297:9163:72;;;;-1:-1:-1;297:9163:72;12810:59:8;297:9163:72;-1:-1:-1;;;;;;;;;;;;2815:49:8;;;;;;;;2712:8;2910:16;;;;:::i;:::-;2945:30;;;2712:8;2941:90;;;940:2:72;;2678:18:8;;2945:30;2957:17;;;;2945:30;;;2815:49;4551:10;2815:49;;;:::i;:::-;;;","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","fractionToInt((uint256,uint256))":"08c41745","runPoolBehaviourTest(address,bytes32[])":"d170c3cc","setUp()":"0a9254e4","stringPctgs(uint256)":"a00872f1","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testGetCapabilitiesFraxEthV3()":"1a91bcf0","testGetLimitsFraxEthV3()":"34529dcb","testGetTokensFraxEthV3()":"a11c7998","testPriceFuzzFraxEthV3FraxEth(uint256,uint256)":"2b728826","testPriceKeepingSellEthFraxEthV3()":"10033ae4","testPriceKeepingSellFraxEthFraxEthV3()":"226212a2","testPriceKeepingSellSFraxEthFraxEthV3()":"8681f5b8","testSwapFuzzFraxEthV3WithSFraxEth(uint256,bool)":"bfdaf70f","testSwapFuzzsFraxEthV3WithFraxEth(uint256,bool)":"75c04aa7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"LimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"Unavailable\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"fsig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keysHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"SlotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"WARNING_UninitedSlot\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction\",\"name\":\"price\",\"type\":\"tuple\"}],\"name\":\"fractionToInt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISwapAdapter\",\"name\":\"adapter\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"poolIds\",\"type\":\"bytes32[]\"}],\"name\":\"runPoolBehaviourTest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"stringPctgs\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetCapabilitiesFraxEthV3\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetLimitsFraxEthV3\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetTokensFraxEthV3\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"testPriceFuzzFraxEthV3FraxEth\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testPriceKeepingSellEthFraxEthV3\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testPriceKeepingSellFraxEthFraxEthV3\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testPriceKeepingSellSFraxEthFraxEthV3\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isBuy\",\"type\":\"bool\"}],\"name\":\"testSwapFuzzFraxEthV3WithSFraxEth\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isBuy\",\"type\":\"bool\"}],\"name\":\"testSwapFuzzsFraxEthV3WithFraxEth\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"LimitExceeded(uint256)\":[{\"details\":\"The LimitExceeded error is thrown when a limit has been exceeded. E.g. the specified amount can't be traded safely.\"}],\"NotImplemented(string)\":[{\"details\":\"The NotImplemented error is thrown when a function is not implemented.\"}],\"Unavailable(string)\":[{\"details\":\"The Unavailable error is thrown when a pool or swap is not available for unexpected reason. E.g. it was paused due to a bug.\"}]},\"kind\":\"dev\",\"methods\":{\"testPriceFuzzFraxEthV3FraxEth(uint256,uint256)\":{\"details\":\"set lower limit to greater than 1, because previewDeposit returns 0 with an amountIn == 1\"},\"testPriceKeepingSellFraxEthFraxEthV3()\":{\"details\":\"The price is kept among swaps if no FRAX rewards are distributed in the contract during time\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/FraxV3FrxEthAdapter.t.sol\":\"FraxV3FrxEthAdapterTest\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b\",\"dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54\",\"dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678\",\"dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdToml.sol\":{\"keccak256\":\"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d\",\"dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e\",\"dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a\",\"dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12\",\"dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/libraries/EfficientERC20.sol\":{\"keccak256\":\"0x825d7f6aa98465b3c5b5a08d24cadfbb0a06f44693beec4e00ad2fe2824b4ef0\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2a5b53d7d634f50f27a1e45ce9136a054f1f19efc3dcfc1f85c8b1bbeac735fa\",\"dweb:/ipfs/QmQSeQyF86HLRnvKgQogia8W2eoWzncG2m1GkYMnp84DJZ\"]},\"src/libraries/FractionMath.sol\":{\"keccak256\":\"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c\",\"dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr\"]},\"src/sfraxeth/FraxV3FrxEthAdapter.sol\":{\"keccak256\":\"0xdbd9ad99addc8ac7771da9ff88057aac4754af575b8a5f818db47da8f64ff0fa\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://c10e743e259bdb1ac0b38e097bf9009d6b46b5d44e1874d500a7527b4103cc55\",\"dweb:/ipfs/QmdKFhhygHbb8tN448AJAVYt6bdzr68pBKi5CotxEv4WNn\"]},\"test/AdapterTest.sol\":{\"keccak256\":\"0x56850be2bb3898eee065c3d77aadb6d181ee789da32f30b1d415d5521397fa43\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://8ca34143db16aa27c42ee3f8566ee466095d4aedcc4ea1c7726aa9c593f4fbd0\",\"dweb:/ipfs/QmWBTLXZKbTuT5kVpAbyGCxKRdhsmzWRPZPiTqZMg9BXhd\"]},\"test/FraxV3FrxEthAdapter.t.sol\":{\"keccak256\":\"0x122c4c378bf71f99277abf1e32225748471668889bdd39658b77de938955d08d\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://8935437a2af20abcda2b834bedd4b0d45b1a47f6b5fc0149ab1478a677f40555\",\"dweb:/ipfs/Qmbn5H8svT1ZrEGEPHQowNRavNNP9dLMxrfU3T5QJmBCTh\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"type":"error","name":"LimitExceeded"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"NotImplemented"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"Unavailable"},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"bytes4","name":"fsig","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"keysHash","type":"bytes32","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"SlotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"WARNING_UninitedSlot","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct ISwapAdapterTypes.Fraction","name":"price","type":"tuple","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}],"stateMutability":"pure","type":"function","name":"fractionToInt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"contract ISwapAdapter","name":"adapter","type":"address"},{"internalType":"bytes32[]","name":"poolIds","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"runPoolBehaviourTest"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"stringPctgs","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testGetCapabilitiesFraxEthV3"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testGetLimitsFraxEthV3"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testGetTokensFraxEthV3"},{"inputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testPriceFuzzFraxEthV3FraxEth"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testPriceKeepingSellEthFraxEthV3"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testPriceKeepingSellFraxEthFraxEthV3"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testPriceKeepingSellSFraxEthFraxEthV3"},{"inputs":[{"internalType":"uint256","name":"specifiedAmount","type":"uint256"},{"internalType":"bool","name":"isBuy","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"testSwapFuzzFraxEthV3WithSFraxEth"},{"inputs":[{"internalType":"uint256","name":"specifiedAmount","type":"uint256"},{"internalType":"bool","name":"isBuy","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"testSwapFuzzsFraxEthV3WithFraxEth"}],"devdoc":{"kind":"dev","methods":{"testPriceFuzzFraxEthV3FraxEth(uint256,uint256)":{"details":"set lower limit to greater than 1, because previewDeposit returns 0 with an amountIn == 1"},"testPriceKeepingSellFraxEthFraxEthV3()":{"details":"The price is kept among swaps if no FRAX rewards are distributed in the contract during time"}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/FraxV3FrxEthAdapter.t.sol":"FraxV3FrxEthAdapterTest"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef","urls":["bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b","dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d","urls":["bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54","dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3","urls":["bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678","dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdToml.sol":{"keccak256":"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab","urls":["bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d","dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe","urls":["bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e","dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456","urls":["bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a","dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb","urls":["bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12","dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/libraries/EfficientERC20.sol":{"keccak256":"0x825d7f6aa98465b3c5b5a08d24cadfbb0a06f44693beec4e00ad2fe2824b4ef0","urls":["bzz-raw://2a5b53d7d634f50f27a1e45ce9136a054f1f19efc3dcfc1f85c8b1bbeac735fa","dweb:/ipfs/QmQSeQyF86HLRnvKgQogia8W2eoWzncG2m1GkYMnp84DJZ"],"license":"UNLICENSED"},"src/libraries/FractionMath.sol":{"keccak256":"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735","urls":["bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c","dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr"],"license":"AGPL-3.0-or-later"},"src/sfraxeth/FraxV3FrxEthAdapter.sol":{"keccak256":"0xdbd9ad99addc8ac7771da9ff88057aac4754af575b8a5f818db47da8f64ff0fa","urls":["bzz-raw://c10e743e259bdb1ac0b38e097bf9009d6b46b5d44e1874d500a7527b4103cc55","dweb:/ipfs/QmdKFhhygHbb8tN448AJAVYt6bdzr68pBKi5CotxEv4WNn"],"license":"AGPL-3.0-or-later"},"test/AdapterTest.sol":{"keccak256":"0x56850be2bb3898eee065c3d77aadb6d181ee789da32f30b1d415d5521397fa43","urls":["bzz-raw://8ca34143db16aa27c42ee3f8566ee466095d4aedcc4ea1c7726aa9c593f4fbd0","dweb:/ipfs/QmWBTLXZKbTuT5kVpAbyGCxKRdhsmzWRPZPiTqZMg9BXhd"],"license":"AGPL-3.0-or-later"},"test/FraxV3FrxEthAdapter.t.sol":{"keccak256":"0x122c4c378bf71f99277abf1e32225748471668889bdd39658b77de938955d08d","urls":["bzz-raw://8935437a2af20abcda2b834bedd4b0d45b1a47f6b5fc0149ab1478a677f40555","dweb:/ipfs/Qmbn5H8svT1ZrEGEPHQowNRavNNP9dLMxrfU3T5QJmBCTh"],"license":"AGPL-3.0-or-later"}},"version":1},"id":72} \ No newline at end of file diff --git a/evm/out/FraxV3SFraxAdapter.sol/FixedPointMathLib.json b/evm/out/FraxV3SFraxAdapter.sol/FixedPointMathLib.json deleted file mode 100644 index 0b06b23..0000000 --- a/evm/out/FraxV3SFraxAdapter.sol/FixedPointMathLib.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea26469706673582212201b7b58b45ebb957b09959891e386e2677edb7f84e666526c56ea3ae164e9e47f64736f6c634300081b0033","sourceMap":"380:634:61:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea26469706673582212201b7b58b45ebb957b09959891e386e2677edb7f84e666526c56ea3ae164e9e47f64736f6c634300081b0033","sourceMap":"380:634:61:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/sfrax/FraxV3SFraxAdapter.sol\":\"FixedPointMathLib\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12\",\"dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/sfrax/FraxV3SFraxAdapter.sol\":{\"keccak256\":\"0x2b7c13cd41026b764e488645a2d0ff419861e682cf9cb3386c321280422b1077\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://a22ef29e0035d00f629fe6db67f3e760feb97fb50aed65afe0ce628902b60be4\",\"dweb:/ipfs/Qmdf8ry4G8MFZob1Z88GZssky9nWe7FVGQW9NMCdesWzBw\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/sfrax/FraxV3SFraxAdapter.sol":"FixedPointMathLib"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb","urls":["bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12","dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/sfrax/FraxV3SFraxAdapter.sol":{"keccak256":"0x2b7c13cd41026b764e488645a2d0ff419861e682cf9cb3386c321280422b1077","urls":["bzz-raw://a22ef29e0035d00f629fe6db67f3e760feb97fb50aed65afe0ce628902b60be4","dweb:/ipfs/Qmdf8ry4G8MFZob1Z88GZssky9nWe7FVGQW9NMCdesWzBw"],"license":"AGPL-3.0-or-later"}},"version":1},"id":61} \ No newline at end of file diff --git a/evm/out/FraxV3SFraxAdapter.sol/FraxV3SFraxAdapter.json b/evm/out/FraxV3SFraxAdapter.sol/FraxV3SFraxAdapter.json deleted file mode 100644 index 9cdbce1..0000000 --- a/evm/out/FraxV3SFraxAdapter.sol/FraxV3SFraxAdapter.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_sFrax","type":"address","internalType":"address"},{"name":"_frax","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"getCapabilities","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"capabilities","type":"uint8[]","internalType":"enum ISwapAdapterTypes.Capability[]"}],"stateMutability":"pure"},{"type":"function","name":"getLimits","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"}],"outputs":[{"name":"limits","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getPoolIds","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"ids","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"getTokens","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"price","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"},{"name":"_specifiedAmounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"_prices","type":"tuple[]","internalType":"struct ISwapAdapterTypes.Fraction[]","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"swap","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"},{"name":"side","type":"uint8","internalType":"enum ISwapAdapterTypes.OrderSide"},{"name":"specifiedAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"trade","type":"tuple","internalType":"struct ISwapAdapterTypes.Trade","components":[{"name":"calculatedAmount","type":"uint256","internalType":"uint256"},{"name":"gasUsed","type":"uint256","internalType":"uint256"},{"name":"price","type":"tuple","internalType":"struct ISwapAdapterTypes.Fraction","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"nonpayable"},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LimitExceeded","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotImplemented","inputs":[{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"Unavailable","inputs":[{"name":"reason","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x60c03461012457601f61183e38819003918201601f19168301916001600160401b0383118484101761012857808492604094855283398101031261012457610052602061004b8361013c565b920161013c565b6001600160a01b039182166080521660a0526040516116ed9081610151823960805181818160be015281816103cc015281816104000152818161053d01528181610671015281816106a5015281816107fe015281816108320152818161099201528181610bc601528181610c7901528181610e4701528181610f6901528181610f9d01528181611016015281816111f6015281816112d601526113bb015260a051818181608a015281816101cf0152818161045d0152818161074801528181610b7c01528181610d6e0152610da30152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101245756fe60806040526004361015610011575f80fd5b5f3560e01c806323eeca011461096057806348bd7dfd146108785780638307c655146106d7578063a9270fbe14610442578063aad6e4881461013f5763ecbbc0331461005b575f80fd5b3461013b57602036600319011261013b5760405161007a606082610a8e565b60028152602081019060403683377f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166100bb82610ac8565b527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166100ef82610ad5565b52604051918291602083019060208452518091526040830191905f5b818110610119575050500390f35b82516001600160a01b031684528594506020938401939092019160010161010b565b5f80fd5b3461013b57608036600319011261013b57610158610a0c565b610160610a22565b6064359067ffffffffffffffff821161013b573660238301121561013b5781600401359161018d83610ab0565b9261019b6040519485610a8e565b8084526024602085019160051b8301019136831161013b57602401905b828210610432575050506001600160a01b038381167f00000000000000000000000000000000000000000000000000000000000000009091168181149291831591826103fe575b82156103aa575b508115610397575b5061033b5782519361021f85610ab0565b9461022d6040519687610a8e565b80865261023c601f1991610ab0565b015f5b8181106103185750509061025291610da1565b915f5b81518110156102c7578061026b60019284610ae5565b5161027586610ac8565b518111156102c1576102919061028a87610ac8565b5111610fcf565b6102a561029e8285610ae5565b5185611291565b6102af8288610ae5565b526102ba8187610ae5565b5001610255565b50610291565b846040518091602082016020835281518091526020604084019201905f5b8181106102f3575050500390f35b82518051855260209081015181860152869550604090940193909201916001016102e5565b60209060405161032781610a72565b5f81525f8382015282828a0101520161023f565b60405163643c60f360e01b815260206004820152602d60248201527f546869732061646170746572206f6e6c7920737570706f72747320465241583c60448201526c2d3e534652415820737761707360981b6064820152608490fd5b6001600160a01b0383161490508561020e565b9091506001600160a01b0383169081141590816103ca575b509086610206565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614159050866103c2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031682141592506101ff565b81358152602091820191016101b8565b3461013b5761045036610a38565b6001600160a01b039182167f000000000000000000000000000000000000000000000000000000000000000090921682811493508315929190836106a3575b831561064f575b50821561063c575b505061033b57604051906104b3606083610a8e565b60028252602082019060403683371561052e576001600160801b036104d783610ac8565b526001600160801b036104e983610ad5565b52905b604051918291602083019060208452518091526040830191905f5b818110610515575050500390f35b8251845285945060209384019390920191600101610507565b6040516361c1c5e960e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602081600481855afa9081156105ff575f9161060a575b5061058784610ad5565b52602061059384610ad5565b51602460405180948193630a28a47760e01b835260048301525afa9081156105ff575f916105cd575b506105c683610ac8565b52906104ec565b90506020813d6020116105f7575b816105e860209383610a8e565b8101031261013b5751836105bc565b3d91506105db565b6040513d5f823e3d90fd5b90506020813d602011610634575b8161062560209383610a8e565b8101031261013b57518461057d565b3d9150610618565b6001600160a01b0316149050828061049e565b9092506001600160a01b03831690811415908161066f575b509184610496565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161415905084610667565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316831415935061048f565b3461013b5760a036600319011261013b576106f0610a0c565b6106f8610a22565b90606435600281101561013b57604051906060820182811067ffffffffffffffff821117610864576040525f82525f602083015260405161073881610a72565b5f808252602082015260408301527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116908416818114159182610830575b82156107dc575b5081156107c9575b5061033b576080936107a49360843593610af9565b6020604080519280518452828101518385015201518051604084015201516060820152f35b6001600160a01b0386161490508561078f565b9091506001600160a01b0386169081141590816107fc575b509086610787565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614159050866107f4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168214159250610780565b634e487b7160e01b5f52604160045260245ffd5b3461013b5761088636610a38565b50505060405161089760c082610a8e565b600581526020810160a036823760016108af83610ac8565b5260026108bb83610ad5565b5281516002101561094c576003606083015281516003101561094c576005608083015281516004101561094c57600860a0830152604051906020820192602083525180935260408201905f935b8085106109155783830384f35b9091825190600a8210156109385760208160019382935201930194019390610908565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b3461013b57604036600319011261013b5760408051906109808183610a8e565b6001825260208201601f1982013682377f000000000000000000000000000000000000000000000000000000000000000060601b6bffffffffffffffffffffffff19166109cc84610ac8565b52815192839260208401916020855251809252830191905f5b8181106109f3575050500390f35b82518452859450602093840193909201916001016109e5565b602435906001600160a01b038216820361013b57565b604435906001600160a01b038216820361013b57565b606090600319011261013b57600435906024356001600160a01b038116810361013b57906044356001600160a01b038116810361013b5790565b6040810190811067ffffffffffffffff82111761086457604052565b90601f8019910116810190811067ffffffffffffffff82111761086457604052565b67ffffffffffffffff81116108645760051b60200190565b80511561094c5760200190565b80516001101561094c5760400190565b805182101561094c5760209160051b010190565b94939092918582158015610d60575b610d585750610b179084610da1565b9160028110928315610938578115918280610d46575b15610d0e5750610b3f610b4791610ac8565b518310610fcf565b5a92156109385715610cfd57610b5d90836111d9565b84525b5a8103908111610ce95760208401526001600160a01b039081167f000000000000000000000000000000000000000000000000000000000000000090911603610c565760405163ef8b30f760e01b8152670de0b6b3a764000060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105ff575f91610c24575b505b60405190610c0d82610a72565b8152670de0b6b3a764000060208201526040830152565b90506020813d602011610c4e575b81610c3f60209383610a8e565b8101031261013b57515f610bfe565b3d9150610c32565b60405163266d6a8360e11b8152670de0b6b3a764000060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105ff575f91610cb7575b50610c00565b90506020813d602011610ce1575b81610cd260209383610a8e565b8101031261013b57515f610cb1565b3d9150610cc5565b634e487b7160e01b5f52601160045260245ffd5b610d07908361100c565b8452610b60565b60011480610d34575b610d22575b50610b47565b610b3f610d2e91610ad5565b5f610d1c565b50610d3e81610ad5565b518311610d17565b50610d5082610ac8565b518411610b2d565b955050505050565b506001600160a01b038581167f0000000000000000000000000000000000000000000000000000000000000000909116148015610b08575060028310610b08565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691168181149283159283610f9b575b8315610f47575b508215610f34575b505061033b5760405190610e00606083610a8e565b60028252604036602084013715610e38576001600160801b03610e2282610ac8565b526001600160801b03610e3482610ad5565b5290565b6040516361c1c5e960e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602081600481855afa9081156105ff575f91610f02575b50610e9183610ad5565b526020610e9d83610ad5565b51602460405180948193630a28a47760e01b835260048301525afa9081156105ff575f91610ed0575b50610e3482610ac8565b90506020813d602011610efa575b81610eeb60209383610a8e565b8101031261013b57515f610ec6565b3d9150610ede565b90506020813d602011610f2c575b81610f1d60209383610a8e565b8101031261013b57515f610e87565b3d9150610f10565b6001600160a01b03161490505f80610deb565b9092506001600160a01b038316908114159081610f67575b50915f610de3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141590505f610f5f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168314159350610ddc565b15610fd657565b60405162461bcd60e51b815260206004820152600e60248201526d131a5b5a5d08195e18d95959195960921b6044820152606490fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911680820361112d57604051630a28a47760e01b81526004810184905290602082602481865afa9182156105ff575f926110f7575b50915f936110836110b39360209530903390611400565b604051632d182be560e21b8152600481019190915233602482015230604482015293849283919082906064820190565b03925af19081156105ff575f916110c8575090565b90506020813d6020116110ef575b816110e360209383610a8e565b8101031261013b575190565b3d91506110d6565b929091506020833d602011611125575b8161111460209383610a8e565b8101031261013b579151905f61106c565b3d9150611107565b60405163b3d7f6b960e01b81526004810184905290602082602481865afa9182156105ff575f926111a3575b50915f9361117983836020966111746110b397303384611400565b61144b565b6040516394bf804d60e01b8152600481019190915233602482015293849283919082906044820190565b929091506020833d6020116111d1575b816111c060209383610a8e565b8101031261013b579151905f611159565b3d91506111b3565b5f916020916001600160a01b0316906111f481303385611400565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690828214851461125957604051635d043b2960e11b8152600481019190915233602482015230604482015293849250829081606481016110b3565b61126781836110b39561144b565b604051636e553f6560e01b8152600481019190915233602482015293849283919082906044820190565b6001906040516112a081610a72565b5f80825260209091015215150361139e576002811061135a5760405163ef8b30f760e01b815260048101829052906020826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156105ff575f92611326575b506040519161131c83610a72565b8252602082015290565b9091506020813d602011611352575b8161134260209383610a8e565b8101031261013b5751905f61130e565b3d9150611335565b606460405162461bcd60e51b815260206004820152602060248201527f416d6f756e7420496e206d7573742062652067726561746572207468616e20316044820152fd5b60405163266d6a8360e11b815260048101829052906020826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156105ff575f9261132657506040519161131c83610a72565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815261144991611444608483610a8e565b6115af565b565b604051636eb1769f60e11b81523060048201526001600160a01b0392831660248201819052939092821690602084604481855afa9384156105ff575f94611563575b508301809311610ce9575f8060405194602086019063095ea7b360e01b82528760248801526044870152604486526114c6606487610a8e565b85519082855af1906114d661161a565b82611531575b5081611526575b50156114ee57505050565b611444611449936040519063095ea7b360e01b602083015260248201525f604482015260448152611520606482610a8e565b826115af565b90503b15155f6114e3565b80519192508115918215611549575b5050905f6114dc565b61155c9250602080918301019101611597565b5f80611540565b9093506020813d60201161158f575b8161157f60209383610a8e565b8101031261013b5751925f61148d565b3d9150611572565b9081602091031261013b5751801515810361013b5790565b5f806115d79260018060a01b03169360208151910182865af16115d061161a565b9083611659565b80519081151591826115ff575b50506115ed5750565b635274afe760e01b5f5260045260245ffd5b6116129250602080918301019101611597565b155f806115e4565b3d15611654573d9067ffffffffffffffff82116108645760405191611649601f8201601f191660200184610a8e565b82523d5f602084013e565b606090565b9061167d575080511561166e57805190602001fd5b63d6bda27560e01b5f5260045ffd5b815115806116ae575b61168e575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561168656fea264697066735822122067f54ef465d21af621c8dd49b39e0406a28ba995a2dfce93f120df14a9a875d164736f6c634300081b0033","sourceMap":"1127:7738:61:-:0;;;;;;;;;;;;;-1:-1:-1;;1127:7738:61;;;;-1:-1:-1;;;;;1127:7738:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;-1:-1:-1;;;;;1127:7738:61;;;1403:22;;1127:7738;;1435:20;1127:7738;;;;;;;;1403:22;1127:7738;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1435:20;1127:7738;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1127:7738:61;;;;;;-1:-1:-1;1127:7738:61;;;;;-1:-1:-1;1127:7738:61;;;;-1:-1:-1;;;;;1127:7738:61;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806323eeca011461096057806348bd7dfd146108785780638307c655146106d7578063a9270fbe14610442578063aad6e4881461013f5763ecbbc0331461005b575f80fd5b3461013b57602036600319011261013b5760405161007a606082610a8e565b60028152602081019060403683377f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166100bb82610ac8565b527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166100ef82610ad5565b52604051918291602083019060208452518091526040830191905f5b818110610119575050500390f35b82516001600160a01b031684528594506020938401939092019160010161010b565b5f80fd5b3461013b57608036600319011261013b57610158610a0c565b610160610a22565b6064359067ffffffffffffffff821161013b573660238301121561013b5781600401359161018d83610ab0565b9261019b6040519485610a8e565b8084526024602085019160051b8301019136831161013b57602401905b828210610432575050506001600160a01b038381167f00000000000000000000000000000000000000000000000000000000000000009091168181149291831591826103fe575b82156103aa575b508115610397575b5061033b5782519361021f85610ab0565b9461022d6040519687610a8e565b80865261023c601f1991610ab0565b015f5b8181106103185750509061025291610da1565b915f5b81518110156102c7578061026b60019284610ae5565b5161027586610ac8565b518111156102c1576102919061028a87610ac8565b5111610fcf565b6102a561029e8285610ae5565b5185611291565b6102af8288610ae5565b526102ba8187610ae5565b5001610255565b50610291565b846040518091602082016020835281518091526020604084019201905f5b8181106102f3575050500390f35b82518051855260209081015181860152869550604090940193909201916001016102e5565b60209060405161032781610a72565b5f81525f8382015282828a0101520161023f565b60405163643c60f360e01b815260206004820152602d60248201527f546869732061646170746572206f6e6c7920737570706f72747320465241583c60448201526c2d3e534652415820737761707360981b6064820152608490fd5b6001600160a01b0383161490508561020e565b9091506001600160a01b0383169081141590816103ca575b509086610206565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614159050866103c2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031682141592506101ff565b81358152602091820191016101b8565b3461013b5761045036610a38565b6001600160a01b039182167f000000000000000000000000000000000000000000000000000000000000000090921682811493508315929190836106a3575b831561064f575b50821561063c575b505061033b57604051906104b3606083610a8e565b60028252602082019060403683371561052e576001600160801b036104d783610ac8565b526001600160801b036104e983610ad5565b52905b604051918291602083019060208452518091526040830191905f5b818110610515575050500390f35b8251845285945060209384019390920191600101610507565b6040516361c1c5e960e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602081600481855afa9081156105ff575f9161060a575b5061058784610ad5565b52602061059384610ad5565b51602460405180948193630a28a47760e01b835260048301525afa9081156105ff575f916105cd575b506105c683610ac8565b52906104ec565b90506020813d6020116105f7575b816105e860209383610a8e565b8101031261013b5751836105bc565b3d91506105db565b6040513d5f823e3d90fd5b90506020813d602011610634575b8161062560209383610a8e565b8101031261013b57518461057d565b3d9150610618565b6001600160a01b0316149050828061049e565b9092506001600160a01b03831690811415908161066f575b509184610496565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161415905084610667565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316831415935061048f565b3461013b5760a036600319011261013b576106f0610a0c565b6106f8610a22565b90606435600281101561013b57604051906060820182811067ffffffffffffffff821117610864576040525f82525f602083015260405161073881610a72565b5f808252602082015260408301527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116908416818114159182610830575b82156107dc575b5081156107c9575b5061033b576080936107a49360843593610af9565b6020604080519280518452828101518385015201518051604084015201516060820152f35b6001600160a01b0386161490508561078f565b9091506001600160a01b0386169081141590816107fc575b509086610787565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614159050866107f4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168214159250610780565b634e487b7160e01b5f52604160045260245ffd5b3461013b5761088636610a38565b50505060405161089760c082610a8e565b600581526020810160a036823760016108af83610ac8565b5260026108bb83610ad5565b5281516002101561094c576003606083015281516003101561094c576005608083015281516004101561094c57600860a0830152604051906020820192602083525180935260408201905f935b8085106109155783830384f35b9091825190600a8210156109385760208160019382935201930194019390610908565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b3461013b57604036600319011261013b5760408051906109808183610a8e565b6001825260208201601f1982013682377f000000000000000000000000000000000000000000000000000000000000000060601b6bffffffffffffffffffffffff19166109cc84610ac8565b52815192839260208401916020855251809252830191905f5b8181106109f3575050500390f35b82518452859450602093840193909201916001016109e5565b602435906001600160a01b038216820361013b57565b604435906001600160a01b038216820361013b57565b606090600319011261013b57600435906024356001600160a01b038116810361013b57906044356001600160a01b038116810361013b5790565b6040810190811067ffffffffffffffff82111761086457604052565b90601f8019910116810190811067ffffffffffffffff82111761086457604052565b67ffffffffffffffff81116108645760051b60200190565b80511561094c5760200190565b80516001101561094c5760400190565b805182101561094c5760209160051b010190565b94939092918582158015610d60575b610d585750610b179084610da1565b9160028110928315610938578115918280610d46575b15610d0e5750610b3f610b4791610ac8565b518310610fcf565b5a92156109385715610cfd57610b5d90836111d9565b84525b5a8103908111610ce95760208401526001600160a01b039081167f000000000000000000000000000000000000000000000000000000000000000090911603610c565760405163ef8b30f760e01b8152670de0b6b3a764000060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105ff575f91610c24575b505b60405190610c0d82610a72565b8152670de0b6b3a764000060208201526040830152565b90506020813d602011610c4e575b81610c3f60209383610a8e565b8101031261013b57515f610bfe565b3d9150610c32565b60405163266d6a8360e11b8152670de0b6b3a764000060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105ff575f91610cb7575b50610c00565b90506020813d602011610ce1575b81610cd260209383610a8e565b8101031261013b57515f610cb1565b3d9150610cc5565b634e487b7160e01b5f52601160045260245ffd5b610d07908361100c565b8452610b60565b60011480610d34575b610d22575b50610b47565b610b3f610d2e91610ad5565b5f610d1c565b50610d3e81610ad5565b518311610d17565b50610d5082610ac8565b518411610b2d565b955050505050565b506001600160a01b038581167f0000000000000000000000000000000000000000000000000000000000000000909116148015610b08575060028310610b08565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691168181149283159283610f9b575b8315610f47575b508215610f34575b505061033b5760405190610e00606083610a8e565b60028252604036602084013715610e38576001600160801b03610e2282610ac8565b526001600160801b03610e3482610ad5565b5290565b6040516361c1c5e960e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602081600481855afa9081156105ff575f91610f02575b50610e9183610ad5565b526020610e9d83610ad5565b51602460405180948193630a28a47760e01b835260048301525afa9081156105ff575f91610ed0575b50610e3482610ac8565b90506020813d602011610efa575b81610eeb60209383610a8e565b8101031261013b57515f610ec6565b3d9150610ede565b90506020813d602011610f2c575b81610f1d60209383610a8e565b8101031261013b57515f610e87565b3d9150610f10565b6001600160a01b03161490505f80610deb565b9092506001600160a01b038316908114159081610f67575b50915f610de3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141590505f610f5f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168314159350610ddc565b15610fd657565b60405162461bcd60e51b815260206004820152600e60248201526d131a5b5a5d08195e18d95959195960921b6044820152606490fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911680820361112d57604051630a28a47760e01b81526004810184905290602082602481865afa9182156105ff575f926110f7575b50915f936110836110b39360209530903390611400565b604051632d182be560e21b8152600481019190915233602482015230604482015293849283919082906064820190565b03925af19081156105ff575f916110c8575090565b90506020813d6020116110ef575b816110e360209383610a8e565b8101031261013b575190565b3d91506110d6565b929091506020833d602011611125575b8161111460209383610a8e565b8101031261013b579151905f61106c565b3d9150611107565b60405163b3d7f6b960e01b81526004810184905290602082602481865afa9182156105ff575f926111a3575b50915f9361117983836020966111746110b397303384611400565b61144b565b6040516394bf804d60e01b8152600481019190915233602482015293849283919082906044820190565b929091506020833d6020116111d1575b816111c060209383610a8e565b8101031261013b579151905f611159565b3d91506111b3565b5f916020916001600160a01b0316906111f481303385611400565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690828214851461125957604051635d043b2960e11b8152600481019190915233602482015230604482015293849250829081606481016110b3565b61126781836110b39561144b565b604051636e553f6560e01b8152600481019190915233602482015293849283919082906044820190565b6001906040516112a081610a72565b5f80825260209091015215150361139e576002811061135a5760405163ef8b30f760e01b815260048101829052906020826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156105ff575f92611326575b506040519161131c83610a72565b8252602082015290565b9091506020813d602011611352575b8161134260209383610a8e565b8101031261013b5751905f61130e565b3d9150611335565b606460405162461bcd60e51b815260206004820152602060248201527f416d6f756e7420496e206d7573742062652067726561746572207468616e20316044820152fd5b60405163266d6a8360e11b815260048101829052906020826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156105ff575f9261132657506040519161131c83610a72565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815261144991611444608483610a8e565b6115af565b565b604051636eb1769f60e11b81523060048201526001600160a01b0392831660248201819052939092821690602084604481855afa9384156105ff575f94611563575b508301809311610ce9575f8060405194602086019063095ea7b360e01b82528760248801526044870152604486526114c6606487610a8e565b85519082855af1906114d661161a565b82611531575b5081611526575b50156114ee57505050565b611444611449936040519063095ea7b360e01b602083015260248201525f604482015260448152611520606482610a8e565b826115af565b90503b15155f6114e3565b80519192508115918215611549575b5050905f6114dc565b61155c9250602080918301019101611597565b5f80611540565b9093506020813d60201161158f575b8161157f60209383610a8e565b8101031261013b5751925f61148d565b3d9150611572565b9081602091031261013b5751801515810361013b5790565b5f806115d79260018060a01b03169360208151910182865af16115d061161a565b9083611659565b80519081151591826115ff575b50506115ed5750565b635274afe760e01b5f5260045260245ffd5b6116129250602080918301019101611597565b155f806115e4565b3d15611654573d9067ffffffffffffffff82116108645760405191611649601f8201601f191660200184610a8e565b82523d5f602084013e565b606090565b9061167d575080511561166e57805190602001fd5b63d6bda27560e01b5f5260045ffd5b815115806116ae575b61168e575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561168656fea264697066735822122067f54ef465d21af621c8dd49b39e0406a28ba995a2dfce93f120df14a9a875d164736f6c634300081b0033","sourceMap":"1127:7738:61:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1127:7738:61;;;;;;;;;;:::i;:::-;5345:1;1127:7738;;;;;;;;;;5378:4;-1:-1:-1;;;;;1127:7738:61;5358:25;;;:::i;:::-;1127:7738;5413:5;-1:-1:-1;;;;;1127:7738:61;5393:26;;;:::i;:::-;1127:7738;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1127:7738:61;;;;;-1:-1:-1;1127:7738:61;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1127:7738:61;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;1127:7738:61;;;1635:4;1127:7738;;;1614:26;;;;1127:7738;1614:26;;;;:57;;1127:7738;1613:136;;;;1127:7738;1613:177;;;;;1127:7738;1596:297;;;1127:7738;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;4294:23;;;;;;:::i;:::-;2383:13;1127:7738;2428:3;1127:7738;;2398:28;;;;;2605:20;;1127:7738;2605:20;;;:::i;:::-;1127:7738;8624:9;;;:::i;:::-;1127:7738;8606:27;;8576:281;;;8649:54;8675:9;;;;:::i;:::-;1127:7738;-1:-1:-1;8649:54:61;:::i;:::-;2670:60;2709:20;;;;:::i;:::-;1127:7738;2670:60;;:::i;:::-;2641:89;;;;:::i;:::-;;;;;;:::i;:::-;;1127:7738;2383:13;;8576:281;1127:7738;8576:281;;2398:28;;1127:7738;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1127:7738:61;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1127:7738:61;;-1:-1:-1;1127:7738:61;;;;;;;;;;;;;1596:297;1127:7738;;-1:-1:-1;;;1822:60:61;;1127:7738;;1822:60;;1127:7738;;;;;;;;;;;-1:-1:-1;;;1127:7738:61;;;;;;1822:60;1613:177;-1:-1:-1;;;;;1127:7738:61;;1769:21;;-1:-1:-1;1613:177:61;;;:136;1127:7738;;-1:-1:-1;;;;;;1127:7738:61;;1693:25;;;;;;:55;;1613:136;;;;;;1693:55;1742:5;-1:-1:-1;;;;;1127:7738:61;1722:26;;;-1:-1:-1;1693:55:61;;;1614:57;1665:5;-1:-1:-1;;;;;1127:7738:61;1644:27;;;;-1:-1:-1;1614:57:61;;1127:7738;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1127:7738:61;;;1635:4;1127:7738;;;1614:26;;;;-1:-1:-1;1614:26:61;;;1127:7738;4294:23;1614:26;:57;;1127:7738;1613:136;;;;1127:7738;1613:177;;;;;1127:7738;1596:297;;;;1127:7738;;;;;;;:::i;:::-;4356:1;1127:7738;;;;;;;;;;4373:26;;;-1:-1:-1;;;;;4445:29:61;;;:::i;:::-;1127:7738;-1:-1:-1;;;;;4488:29:61;;;:::i;:::-;1127:7738;4369:285;;1127:7738;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1127:7738:61;;;;;;;;;;;;;4369:285;1127:7738;;-1:-1:-1;;;4560:25:61;;:5;-1:-1:-1;;;;;1127:7738:61;;;;;;;4560:25;;;;;;;1127:7738;4560:25;;;4369:285;4548:37;;;;:::i;:::-;1127:7738;;4633:9;;;:::i;:::-;1127:7738;4611:32;1127:7738;;1283:4;;;;;;;4611:32;;1127:7738;4611:32;;1127:7738;4611:32;;;;;;;1127:7738;4611:32;;;4369:285;4599:44;;;;:::i;:::-;1127:7738;4369:285;;;4611:32;;;1127:7738;4611:32;;1127:7738;4611:32;;;;;;1283:4;4611:32;;;:::i;:::-;;;1283:4;;;;;4611:32;;;;;;-1:-1:-1;4611:32:61;;;1127:7738;;1283:4;1127:7738;1283:4;;;;;4560:25;;;1127:7738;4560:25;;1127:7738;4560:25;;;;;;1283:4;4560:25;;;:::i;:::-;;;1283:4;;;;;4560:25;;;;;;-1:-1:-1;4560:25:61;;1613:177;-1:-1:-1;;;;;1127:7738:61;1769:21;;-1:-1:-1;1613:177:61;;;;:136;1127:7738;;-1:-1:-1;;;;;;1127:7738:61;;1693:25;;;;;;:55;;1613:136;;;;;;1693:55;1742:5;-1:-1:-1;;;;;1127:7738:61;1722:26;;;-1:-1:-1;1693:55:61;;;1614:57;1665:5;-1:-1:-1;;;;;1127:7738:61;1644:27;;;;-1:-1:-1;1614:57:61;;1127:7738;;;;;;-1:-1:-1;;1127:7738:61;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1127:7738:61;;;;;;;;;;;1635:4;-1:-1:-1;;;;;1127:7738:61;;;;;;1614:26;;;;;;:57;;1127:7738;1613:136;;;;1127:7738;1613:177;;;;;1127:7738;1596:297;;;1127:7738;;2786:1232;1127:7738;;;2786:1232;;:::i;:::-;1127:7738;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1613:177;-1:-1:-1;;;;;1127:7738:61;;1769:21;;-1:-1:-1;1613:177:61;;;:136;1127:7738;;-1:-1:-1;;;;;;1127:7738:61;;1693:25;;;;;;:55;;1613:136;;;;;;1693:55;1742:5;-1:-1:-1;;;;;1127:7738:61;1722:26;;;-1:-1:-1;1693:55:61;;;1614:57;1665:5;-1:-1:-1;;;;;1127:7738:61;1644:27;;;;-1:-1:-1;1614:57:61;;1127:7738;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;4895:1;1127:7738;;;;;;;;;4925:20;4907:38;;;:::i;:::-;1127:7738;4973:19;4955:37;;;:::i;:::-;1127:7738;;;4973:19;1127:7738;;;;5020:24;1127:7738;;;;;;5020:24;1127:7738;;;;4895:1;1127:7738;;;;;;;;;;;5124:21;1127:7738;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4925:20;1127:7738;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1127:7738:61;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;1127:7738:61;;;;;5771:5;1127:7738;;-1:-1:-1;;1127:7738:61;5738:41;;;:::i;:::-;1127:7738;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1127:7738:61;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1127:7738:61;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;1127:7738:61;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;1127:7738:61;;;;;;;;;-1:-1:-1;;;;;1127:7738:61;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;4925:20;1127:7738;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;2786:1232::-;;;;;;;3084:20;;:91;;;;2786:1232;3067:156;;4294:23;;;;;:::i;:::-;1127:7738;;;;;;;;;8580:22;;;;;:53;;2786:1232;8576:281;;;8675:9;;8649:54;8675:9;;:::i;:::-;1127:7738;8657:27;;8649:54;:::i;:::-;3498:9;1127:7738;;;;3521:22;;;3604:32;;;;:::i;:::-;1127:7738;;3517:236;3790:9;1127:7738;;;;;;;3762:13;;;1127:7738;-1:-1:-1;;;;;1127:7738:61;;;3851:4;1127:7738;;;3830:26;1127:7738;;;;-1:-1:-1;;;3871:34:61;;1283:4;3871:34;;;1127:7738;3762:13;1127:7738;3871:34;1127:7738;3871:5;-1:-1:-1;;;;;1127:7738:61;3871:34;;;;;;;3103:1;3871:34;;;3830:123;;;1127:7738;;;;;;:::i;:::-;;;1283:4;3762:13;3978:33;;1127:7738;;3964:11;;:47;2786:1232::o;3871:34::-;;;3762:13;3871:34;;3762:13;3871:34;;;;;;1283:4;3871:34;;;:::i;:::-;;;1283:4;;;;;3871:34;;;;;;-1:-1:-1;3871:34:61;;3830:123;1127:7738;;-1:-1:-1;;;3920:33:61;;1283:4;3920:33;;;1127:7738;3762:13;1127:7738;3920:33;1127:7738;3920:5;-1:-1:-1;;;;;1127:7738:61;3920:33;;;;;;;3103:1;3920:33;;;3830:123;;;;3920:33;;;3762:13;3920:33;;3762:13;3920:33;;;;;;1283:4;3920:33;;;:::i;:::-;;;1283:4;;;;;3920:33;;;;;;-1:-1:-1;3920:33:61;;1127:7738;;;;3103:1;1127:7738;;;;;3103:1;1127:7738;3517:236;3711:31;;;;:::i;:::-;1127:7738;;3517:236;;8576:281;1127:7738;8724:21;:52;;;8576:281;8720:137;;8576:281;;;;8720:137;8818:9;8792:54;8818:9;;:::i;8792:54::-;8720:137;;;8724:52;8767:9;;;;:::i;:::-;1127:7738;8749:27;;8724:52;;8580:53;8624:9;;;;:::i;:::-;1127:7738;8606:27;;8580:53;;3067:156;3200:12;-1:-1:-1;;;;;3200:12:61:o;3084:91::-;-1:-1:-1;;;;;;1127:7738:61;;;3146:4;1127:7738;;;3125:26;:49;;3084:91;3125:49;3155:19;3173:1;3155:19;;3084:91;;1520:390;1635:4;-1:-1:-1;;;;;1127:7738:61;;;;;1614:26;;;;;;;;:57;;1520:390;1613:136;;;;1520:390;1613:177;;;;;1520:390;1596:297;;;;1127:7738;;;;;;;:::i;:::-;4356:1;1127:7738;;;;;;;;4373:26;;;-1:-1:-1;;;;;4445:29:61;;;:::i;:::-;1127:7738;-1:-1:-1;;;;;4488:29:61;;;:::i;:::-;1127:7738;1520:390;:::o;4369:285::-;1127:7738;;-1:-1:-1;;;4560:25:61;;:5;-1:-1:-1;;;;;1127:7738:61;;;;4560:25;1127:7738;;4560:25;;;;;;;1127:7738;4560:25;;;4369:285;4548:37;;;;:::i;:::-;1127:7738;;4633:9;;;:::i;:::-;1127:7738;4611:32;1127:7738;;1283:4;;;;;;;4611:32;;4560:25;4611:32;;1127:7738;4611:32;;;;;;;1127:7738;4611:32;;;4369:285;4599:44;;;;:::i;4611:32::-;;;1127:7738;4611:32;;1127:7738;4611:32;;;;;;1283:4;4611:32;;;:::i;:::-;;;1283:4;;;;;4611:32;;;;;;-1:-1:-1;4611:32:61;;4560:25;;;1127:7738;4560:25;;1127:7738;4560:25;;;;;;1283:4;4560:25;;;:::i;:::-;;;1283:4;;;;;4560:25;;;;;;-1:-1:-1;4560:25:61;;1613:177;-1:-1:-1;;;;;1127:7738:61;1769:21;;-1:-1:-1;1613:177:61;;;;:136;1127:7738;;-1:-1:-1;;;;;;1127:7738:61;;1693:25;;;;;;:55;;1613:136;;;;;;1693:55;1742:5;-1:-1:-1;;;;;1127:7738:61;1722:26;;;-1:-1:-1;1693:55:61;;;1614:57;1665:5;-1:-1:-1;;;;;1127:7738:61;1644:27;;;;-1:-1:-1;1614:57:61;;1127:7738;;;;:::o;:::-;;;-1:-1:-1;;;1127:7738:61;;;;;;;;;;;;-1:-1:-1;;;1127:7738:61;;;;;;;6701:739;-1:-1:-1;;;;;6848:5:61;1127:7738;;;;6827:27;;;1127:7738;;;;-1:-1:-1;;;6889:29:61;;;;;1127:7738;;;;1283:4;1127:7738;6889:29;1127:7738;6889:29;;;;;;;;1127:7738;6889:29;;;6823:611;7004:4;;1127:7738;7004:4;7011:8;7054:49;7004:4;1283;7004;;6984:10;;7011:8;;:::i;:::-;1127:7738;;-1:-1:-1;;;7054:49:61;;6889:29;7054:49;;1127:7738;;;;6984:10;1127:7738;;;;7004:4;1127:7738;;;;;;;;;1283:4;1127:7738;;;;;;;7054:49;;;;;;;;;;1127:7738;7054:49;;;7047:56;;:::o;7054:49::-;;;1283:4;7054:49;;1283:4;7054:49;;;;;;1283:4;7054:49;;;:::i;:::-;;;1283:4;;;;;7047:56;:::o;7054:49::-;;;-1:-1:-1;7054:49:61;;6889:29;;;;;1283:4;6889:29;;1283:4;6889:29;;;;;;1283:4;6889:29;;;:::i;:::-;;;1283:4;;;;;;;1127:7738;6889:29;;;;;-1:-1:-1;6889:29:61;;6823:611;1127:7738;;-1:-1:-1;;;7153:25:61;;;;;1127:7738;;;;1283:4;1127:7738;7153:25;1127:7738;7153:25;;;;;;;;1127:7738;7153:25;;;6823:611;7264:4;;1127:7738;7264:4;7363:8;7264:4;;1283;7264;7271:8;7393:30;7264:4;;7244:10;7271:8;;:::i;:::-;7363;:::i;:::-;1127:7738;;-1:-1:-1;;;7393:30:61;;7153:25;7393:30;;1127:7738;;;;7244:10;1127:7738;;;;;;;;;1283:4;1127:7738;;;;;;;7153:25;;;;;1283:4;7153:25;;1283:4;7153:25;;;;;;1283:4;7153:25;;;:::i;:::-;;;1283:4;;;;;;;1127:7738;7153:25;;;;;-1:-1:-1;7153:25:61;;6005:468;1127:7738;;6261:47;;-1:-1:-1;;;;;1127:7738:61;;6190:6;6005:468;6183:4;6163:10;1127:7738;6190:6;:::i;:::-;6232:5;-1:-1:-1;;;;;1127:7738:61;;6211:27;;;1127:7738;;;;;;-1:-1:-1;;;6261:47:61;;;;;1127:7738;;;;6163:10;1127:7738;;;;6183:4;1127:7738;;;;;;;-1:-1:-1;1127:7738:61;;;;;;6261:47;1127:7738;6207:260;6395:6;;;6423:33;6395:6;;:::i;:::-;1127:7738;;-1:-1:-1;;;6423:33:61;;;;;1127:7738;;;;6163:10;1127:7738;;;;;;;;;1283:4;1127:7738;;;;;;;7727:439;7878:4;7727:439;1127:7738;;;;;:::i;:::-;-1:-1:-1;1127:7738:61;;;;;;;;;;7864:18;7878:4;;7913:1;7902:12;;7898:93;;1127:7738;;-1:-1:-1;;;8021:30:61;;;;;1127:7738;;;;1283:4;1127:7738;8021:30;1127:7738;8021:5;-1:-1:-1;;;;;1127:7738:61;8021:30;;;;;;;1127:7738;8021:30;;;7860:300;1127:7738;;;;;;;:::i;:::-;;;1283:4;8012:50;;1127:7738;8005:57;:::o;8021:30::-;;;;1283:4;8021:30;;1283:4;8021:30;;;;;;1283:4;8021:30;;;:::i;:::-;;;1283:4;;;;;8021:30;;;;;;;-1:-1:-1;8021:30:61;;7898:93;7934:42;1127:7738;;;;;7934:42;;1127:7738;7934:42;;;1127:7738;;;;;;;;;;;7934:42;7860:300;1127:7738;;-1:-1:-1;;;8109:29:61;;;;;1127:7738;;;;1283:4;1127:7738;8109:29;1127:7738;8109:5;-1:-1:-1;;;;;1127:7738:61;8109:29;;;;;;;1127:7738;8109:29;;;1127:7738;;;;;;;:::i;1702:188:32:-;1127:7738:61;;-1:-1:-1;;;1829:53:32;;;;-1:-1:-1;;;;;1127:7738:61;;;1829:53:32;;;1127:7738:61;;;;;;;;;;;;;;;;;1829:53:32;;;;;;;1127:7738:61;1829:53:32;:::i;:::-;;:::i;:::-;1702:188::o;2081:225::-;1127:7738:61;;-1:-1:-1;;;2200:39:32;;2224:4;2200:39;;;1127:7738:61;-1:-1:-1;;;;;1127:7738:61;;;;;;;;;;;;;;;;;2200:39:32;1127:7738:61;;2200:39:32;;;;;;;-1:-1:-1;2200:39:32;;;2081:225;1127:7738:61;;;;;;;;-1:-1:-1;1127:7738:61;;;3411:47:32;1127:7738:61;3411:47:32;;1283:4:61;;;;3411:47:32;;;1127:7738:61;3411:47:32;;1127:7738:61;2200:39:32;1127:7738:61;;;2200:39:32;3411:47;;;;;;:::i;:::-;8024:25;;;;;;;;;;:::i;:::-;8066:69;;;2081:225;8066:103;;;;2081:225;3473:45;;3469:201;;2081:225;;;:::o;3469:201::-;3561:43;3646:12;1127:7738:61;;;1283:4;;;;1127:7738;3561:43:32;;;1127:7738:61;3561:43:32;;1127:7738:61;-1:-1:-1;2200:39:32;1127:7738:61;;;2200:39:32;3561:43;;;3411:47;3561:43;;:::i;:::-;;;:::i;8066:103::-;8139:26;;;:30;;8066:103;;;:69;1127:7738:61;;;;-1:-1:-1;8078:22:32;;;:56;;;;8066:69;;;;;;;8078:56;8104:30;;;1127:7738:61;8104:30:32;;;;;;;;:::i;:::-;8078:56;;;;2200:39;;;;1127:7738:61;2200:39:32;;1127:7738:61;2200:39:32;;;;;;1283:4:61;2200:39:32;;;:::i;:::-;;;1283:4:61;;;;;2200:39:32;;;;;;;-1:-1:-1;2200:39:32;;1127:7738:61;;;;;;;;;;;;;;;;;;:::o;6468:629:32:-;2626:1:33;6468:629:32;3304:55:33;6468:629:32;1127:7738:61;;;;;;3256:31:33;;;;;;;;;;;;:::i;:::-;3304:55;;;:::i;:::-;1127:7738:61;;6960:22:32;;;;:57;;;;6468:629;6956:135;;;;6468:629;:::o;6956:135::-;7040:40;;;2626:1:33;7040:40:32;;1127:7738:61;;2626:1:33;7040:40:32;6960:57;6987:30;;;3256:31:33;6987:30:32;;;;;;;;:::i;:::-;6986:31;6960:57;;;;1127:7738:61;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1127:7738:61;;;;;:::i;:::-;;;;-1:-1:-1;1127:7738:61;;;;:::o;:::-;;;:::o;4421:582:33:-;;4593:8;;-1:-1:-1;1127:7738:61;;5674:21:33;:17;;5846:142;;;;;;5670:385;6025:19;;;5694:1;6025:19;;5694:1;6025:19;4589:408;1127:7738:61;;4841:22:33;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:33;4917:24;;;-1:-1:-1;;;;;1127:7738:61;;;;4917:24:33;1127:7738:61;;;4917:24:33;4841:49;4867:18;;;:23;4841:49;","linkReferences":{},"immutableReferences":{"66921":[{"start":190,"length":32},{"start":972,"length":32},{"start":1024,"length":32},{"start":1341,"length":32},{"start":1649,"length":32},{"start":1701,"length":32},{"start":2046,"length":32},{"start":2098,"length":32},{"start":2450,"length":32},{"start":3014,"length":32},{"start":3193,"length":32},{"start":3655,"length":32},{"start":3945,"length":32},{"start":3997,"length":32},{"start":4118,"length":32},{"start":4598,"length":32},{"start":4822,"length":32},{"start":5051,"length":32}],"66924":[{"start":138,"length":32},{"start":463,"length":32},{"start":1117,"length":32},{"start":1864,"length":32},{"start":2940,"length":32},{"start":3438,"length":32},{"start":3491,"length":32}]}},"methodIdentifiers":{"getCapabilities(bytes32,address,address)":"48bd7dfd","getLimits(bytes32,address,address)":"a9270fbe","getPoolIds(uint256,uint256)":"23eeca01","getTokens(bytes32)":"ecbbc033","price(bytes32,address,address,uint256[])":"aad6e488","swap(bytes32,address,address,uint8,uint256)":"8307c655"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sFrax\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_frax\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"LimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"Unavailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getCapabilities\",\"outputs\":[{\"internalType\":\"enum ISwapAdapterTypes.Capability[]\",\"name\":\"capabilities\",\"type\":\"uint8[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"}],\"name\":\"getLimits\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"limits\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getPoolIds\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"ids\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"getTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_specifiedAmounts\",\"type\":\"uint256[]\"}],\"name\":\"price\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction[]\",\"name\":\"_prices\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"enum ISwapAdapterTypes.OrderSide\",\"name\":\"side\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"calculatedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction\",\"name\":\"price\",\"type\":\"tuple\"}],\"internalType\":\"struct ISwapAdapterTypes.Trade\",\"name\":\"trade\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Adapter for FraxV3 protocol, supports Frax --> sFrax and sFrax --> Frax\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"LimitExceeded(uint256)\":[{\"details\":\"The LimitExceeded error is thrown when a limit has been exceeded. E.g. the specified amount can't be traded safely.\"}],\"NotImplemented(string)\":[{\"details\":\"The NotImplemented error is thrown when a function is not implemented.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}],\"Unavailable(string)\":[{\"details\":\"The Unavailable error is thrown when a pool or swap is not available for unexpected reason. E.g. it was paused due to a bug.\"}]},\"kind\":\"dev\",\"methods\":{\"getCapabilities(bytes32,address,address)\":{\"params\":{\"poolId\":\"The ID of the trading pool.\"},\"returns\":{\"capabilities\":\"An array of Capability.\"}},\"getLimits(bytes32,address,address)\":{\"details\":\"there is no hard capped limit\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\"},\"returns\":{\"limits\":\"An array of size two indicating the limit amount for the sell token (maximum the pool is willing to buy in sell token) as well as the limit amount of the buy token (maximum the pool is willing to sell in buy token).\"}},\"getPoolIds(uint256,uint256)\":{\"details\":\"Since FraxV3 is a single pool that supports FRAX and SFRAX, we return it directly\",\"params\":{\"limit\":\"The maximum number of pool IDs to retrieve.\",\"offset\":\"The starting index from which to retrieve pool IDs.\"},\"returns\":{\"ids\":\"An array of pool IDs.\"}},\"getTokens(bytes32)\":{\"details\":\"Mainly used for testing as this is redundant with the required substreams implementation.\",\"params\":{\"poolId\":\"The ID of the trading pool.\"},\"returns\":{\"tokens\":\"An array of address contracts.\"}},\"price(bytes32,address,address,uint256[])\":{\"details\":\"The returned prices should include all dex fees. In case the fee is dynamic on the amount traded, the returned price is expected to include the minimum fee. Note that the returned price should be the marginal price which is distinct from the executed price `swap(amount_in) / amount_in`! The marginal price is defined as the price to trade an arbitrarily small (almost zero) amount after the trade of (amount). E.g. the marginal price of a uniswap v2 pool at amount=0 is `reserve0/reserve1`. Ideally this method should be implemented, although it is optional as the price function can be numerically derived from the swap function. In case it is not available, it should be flagged via capabilities and calling it should revert using the `NotImplemented` error. The method needs to be implemented as view as this is usually more efficient and can be run in parallel.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\",\"specifiedAmounts\":\"Amounts to calculate marginal prices at.\"},\"returns\":{\"_prices\":\"array of prices as fractions corresponding to the provided amounts.\"}},\"swap(bytes32,address,address,uint8,uint256)\":{\"details\":\"This function should be state modifying, meaning it should actually execute the swap and change the state of the EVM accordingly. Please include a gas usage estimate for each amount. This can be achieved e.g. by using the `gasleft()` function. The return type `Trade` has an attribute called price which should contain the value of `price(specifiedAmount)`. As this is optional, defined via `Capability.PriceFunction`, it is valid to return a Fraction(0, 0) value for this price. In that case the price will be estimated numerically.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\",\"side\":\"The side of the trade (Sell or Buy).\",\"specifiedAmount\":\"The amount to be traded.\"},\"returns\":{\"trade\":\"Trade struct representing the executed trade.\"}}},\"title\":\"FraxV3SFraxAdapter\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCapabilities(bytes32,address,address)\":{\"notice\":\"Retrieves the capabilities of the selected pool.\"},\"getLimits(bytes32,address,address)\":{\"notice\":\"Retrieves the limits for each token.\"},\"getPoolIds(uint256,uint256)\":{\"notice\":\"Retrieves a range of pool IDs.\"},\"getTokens(bytes32)\":{\"notice\":\"Retrieves the tokens in the selected pool.\"},\"price(bytes32,address,address,uint256[])\":{\"notice\":\"Calculates marginal prices for specified amounts (optional).\"},\"swap(bytes32,address,address,uint8,uint256)\":{\"notice\":\"Simulates swapping tokens on a given pool.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/sfrax/FraxV3SFraxAdapter.sol\":\"FraxV3SFraxAdapter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12\",\"dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/sfrax/FraxV3SFraxAdapter.sol\":{\"keccak256\":\"0x2b7c13cd41026b764e488645a2d0ff419861e682cf9cb3386c321280422b1077\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://a22ef29e0035d00f629fe6db67f3e760feb97fb50aed65afe0ce628902b60be4\",\"dweb:/ipfs/Qmdf8ry4G8MFZob1Z88GZssky9nWe7FVGQW9NMCdesWzBw\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_sFrax","type":"address"},{"internalType":"address","name":"_frax","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"type":"error","name":"LimitExceeded"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"NotImplemented"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"Unavailable"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function","name":"getCapabilities","outputs":[{"internalType":"enum ISwapAdapterTypes.Capability[]","name":"capabilities","type":"uint8[]"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"}],"stateMutability":"view","type":"function","name":"getLimits","outputs":[{"internalType":"uint256[]","name":"limits","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPoolIds","outputs":[{"internalType":"bytes32[]","name":"ids","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getTokens","outputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"},{"internalType":"uint256[]","name":"_specifiedAmounts","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"price","outputs":[{"internalType":"struct ISwapAdapterTypes.Fraction[]","name":"_prices","type":"tuple[]","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"},{"internalType":"enum ISwapAdapterTypes.OrderSide","name":"side","type":"uint8"},{"internalType":"uint256","name":"specifiedAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swap","outputs":[{"internalType":"struct ISwapAdapterTypes.Trade","name":"trade","type":"tuple","components":[{"internalType":"uint256","name":"calculatedAmount","type":"uint256"},{"internalType":"uint256","name":"gasUsed","type":"uint256"},{"internalType":"struct ISwapAdapterTypes.Fraction","name":"price","type":"tuple","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]}]}],"devdoc":{"kind":"dev","methods":{"getCapabilities(bytes32,address,address)":{"params":{"poolId":"The ID of the trading pool."},"returns":{"capabilities":"An array of Capability."}},"getLimits(bytes32,address,address)":{"details":"there is no hard capped limit","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold."},"returns":{"limits":"An array of size two indicating the limit amount for the sell token (maximum the pool is willing to buy in sell token) as well as the limit amount of the buy token (maximum the pool is willing to sell in buy token)."}},"getPoolIds(uint256,uint256)":{"details":"Since FraxV3 is a single pool that supports FRAX and SFRAX, we return it directly","params":{"limit":"The maximum number of pool IDs to retrieve.","offset":"The starting index from which to retrieve pool IDs."},"returns":{"ids":"An array of pool IDs."}},"getTokens(bytes32)":{"details":"Mainly used for testing as this is redundant with the required substreams implementation.","params":{"poolId":"The ID of the trading pool."},"returns":{"tokens":"An array of address contracts."}},"price(bytes32,address,address,uint256[])":{"details":"The returned prices should include all dex fees. In case the fee is dynamic on the amount traded, the returned price is expected to include the minimum fee. Note that the returned price should be the marginal price which is distinct from the executed price `swap(amount_in) / amount_in`! The marginal price is defined as the price to trade an arbitrarily small (almost zero) amount after the trade of (amount). E.g. the marginal price of a uniswap v2 pool at amount=0 is `reserve0/reserve1`. Ideally this method should be implemented, although it is optional as the price function can be numerically derived from the swap function. In case it is not available, it should be flagged via capabilities and calling it should revert using the `NotImplemented` error. The method needs to be implemented as view as this is usually more efficient and can be run in parallel.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold.","specifiedAmounts":"Amounts to calculate marginal prices at."},"returns":{"_prices":"array of prices as fractions corresponding to the provided amounts."}},"swap(bytes32,address,address,uint8,uint256)":{"details":"This function should be state modifying, meaning it should actually execute the swap and change the state of the EVM accordingly. Please include a gas usage estimate for each amount. This can be achieved e.g. by using the `gasleft()` function. The return type `Trade` has an attribute called price which should contain the value of `price(specifiedAmount)`. As this is optional, defined via `Capability.PriceFunction`, it is valid to return a Fraction(0, 0) value for this price. In that case the price will be estimated numerically.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold.","side":"The side of the trade (Sell or Buy).","specifiedAmount":"The amount to be traded."},"returns":{"trade":"Trade struct representing the executed trade."}}},"version":1},"userdoc":{"kind":"user","methods":{"getCapabilities(bytes32,address,address)":{"notice":"Retrieves the capabilities of the selected pool."},"getLimits(bytes32,address,address)":{"notice":"Retrieves the limits for each token."},"getPoolIds(uint256,uint256)":{"notice":"Retrieves a range of pool IDs."},"getTokens(bytes32)":{"notice":"Retrieves the tokens in the selected pool."},"price(bytes32,address,address,uint256[])":{"notice":"Calculates marginal prices for specified amounts (optional)."},"swap(bytes32,address,address,uint8,uint256)":{"notice":"Simulates swapping tokens on a given pool."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/sfrax/FraxV3SFraxAdapter.sol":"FraxV3SFraxAdapter"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb","urls":["bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12","dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/sfrax/FraxV3SFraxAdapter.sol":{"keccak256":"0x2b7c13cd41026b764e488645a2d0ff419861e682cf9cb3386c321280422b1077","urls":["bzz-raw://a22ef29e0035d00f629fe6db67f3e760feb97fb50aed65afe0ce628902b60be4","dweb:/ipfs/Qmdf8ry4G8MFZob1Z88GZssky9nWe7FVGQW9NMCdesWzBw"],"license":"AGPL-3.0-or-later"}},"version":1},"id":61} \ No newline at end of file diff --git a/evm/out/FraxV3SFraxAdapter.sol/ISFrax.json b/evm/out/FraxV3SFraxAdapter.sol/ISFrax.json deleted file mode 100644 index 071838d..0000000 --- a/evm/out/FraxV3SFraxAdapter.sol/ISFrax.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"asset","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ERC20"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"}],"outputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"mint","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"}],"outputs":[{"name":"assets","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"previewDeposit","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"previewDistributeRewards","inputs":[],"outputs":[{"name":"_rewardToDistribute","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"previewMint","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"previewRedeem","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"previewWithdraw","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pricePerShare","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"redeem","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"assets","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"storedTotalAssets","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalAssets","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdraw","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"asset()":"38d52e0f","deposit(uint256,address)":"6e553f65","mint(uint256,address)":"94bf804d","previewDeposit(uint256)":"ef8b30f7","previewDistributeRewards()":"358245fc","previewMint(uint256)":"b3d7f6b9","previewRedeem(uint256)":"4cdad506","previewWithdraw(uint256)":"0a28a477","pricePerShare()":"99530b06","redeem(uint256,address,address)":"ba087652","storedTotalAssets()":"61c1c5e9","totalAssets()":"01e1d114","totalSupply()":"18160ddd","withdraw(uint256,address,address)":"b460af94"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"contract ERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"previewDistributeRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_rewardToDistribute\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pricePerShare\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"storedTotalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/sfrax/FraxV3SFraxAdapter.sol\":\"ISFrax\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12\",\"dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/sfrax/FraxV3SFraxAdapter.sol\":{\"keccak256\":\"0x2b7c13cd41026b764e488645a2d0ff419861e682cf9cb3386c321280422b1077\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://a22ef29e0035d00f629fe6db67f3e760feb97fb50aed65afe0ce628902b60be4\",\"dweb:/ipfs/Qmdf8ry4G8MFZob1Z88GZssky9nWe7FVGQW9NMCdesWzBw\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"asset","outputs":[{"internalType":"contract ERC20","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deposit","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"mint","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function","name":"previewDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"previewDistributeRewards","outputs":[{"internalType":"uint256","name":"_rewardToDistribute","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function","name":"previewMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function","name":"previewRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function","name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pricePerShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"redeem","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"storedTotalAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"withdraw","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/sfrax/FraxV3SFraxAdapter.sol":"ISFrax"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb","urls":["bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12","dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/sfrax/FraxV3SFraxAdapter.sol":{"keccak256":"0x2b7c13cd41026b764e488645a2d0ff419861e682cf9cb3386c321280422b1077","urls":["bzz-raw://a22ef29e0035d00f629fe6db67f3e760feb97fb50aed65afe0ce628902b60be4","dweb:/ipfs/Qmdf8ry4G8MFZob1Z88GZssky9nWe7FVGQW9NMCdesWzBw"],"license":"AGPL-3.0-or-later"}},"version":1},"id":61} \ No newline at end of file diff --git a/evm/out/FraxV3SFraxAdapter.t.sol/FraxV3SFraxAdapterTest.json b/evm/out/FraxV3SFraxAdapter.t.sol/FraxV3SFraxAdapterTest.json deleted file mode 100644 index 0298af5..0000000 --- a/evm/out/FraxV3SFraxAdapter.t.sol/FraxV3SFraxAdapterTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"fractionToInt","inputs":[{"name":"price","type":"tuple","internalType":"struct ISwapAdapterTypes.Fraction","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"runPoolBehaviourTest","inputs":[{"name":"adapter","type":"address","internalType":"contract ISwapAdapter"},{"name":"poolIds","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stringPctgs","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testGetCapabilitiesFraxV3SFrax","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testGetLimitsFraxV3","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testGetTokensFraxV3","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPriceFuzzFraxV3SFrax","inputs":[{"name":"amount0","type":"uint256","internalType":"uint256"},{"name":"amount1","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapBuyIncreasingFraxV3","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapFuzzFraxV3WithFrax","inputs":[{"name":"specifiedAmount","type":"uint256","internalType":"uint256"},{"name":"isBuy","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapFuzzFraxV3WithSFrax","inputs":[{"name":"specifiedAmount","type":"uint256","internalType":"uint256"},{"name":"isBuy","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapSellIncreasingFraxV3","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LimitExceeded","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotImplemented","inputs":[{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"Unavailable","inputs":[{"name":"reason","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x6080604052346102be57600160ff19600c541617600c55600160ff19601e541617601e556040516080810181811060018060401b0382111761020c5760405261004860406102c2565b6002815261302560f01b6020820152815261006360406102c2565b6004815263302e312560e01b6020820152602082015261008360406102c2565b600381526235302560e81b602082015260408201526100a260406102c2565b60048152633130302560e01b60208201526060820152601f546004601f5580600410610220575b50601f5f9081525f51602061aca15f395f51905f52915b600482106100f75760405161a96b90816103368239f35b80518051906001600160401b03821161020c5761011485546102e7565b601f81116101d1575b50602090601f83116001146101685792826001949360209386955f9261015d575b50505f19600383901b1c191690841b1786555b019301910190916100e0565b015190505f8061013e565b90601f19831691865f52815f20925f5b8181106101b957509360209360019693879693838895106101a1575b505050811b018655610151565b01515f1960f88460031b161c191690555f8080610194565b82840151855560019094019360209384019301610178565b6101fc90865f5260205f20601f850160051c81019160208610610202575b601f0160051c019061031f565b5f61011d565b90915081906101ef565b634e487b7160e01b5f52604160045260245ffd5b601f5f525f51602061aca15f395f51905f52017fa03837a25210ee280c2113ff4b77ca23440b19d4866cca721c801278fd08d80b5b81811061026257506100c9565b8061026f600192546102e7565b8061027c575b5001610255565b601f8111831461029157505f81555b5f610275565b6102ad90825f5283601f60205f20920160051c8201910161031f565b805f525f602081208183555561028b565b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761020c57604052565b90600182811c92168015610315575b602083101461030157565b634e487b7160e01b5f52602260045260245ffd5b91607f16916102f6565b81811061032a575050565b5f815560010161031f56fe610160806040526004361015610013575f80fd5b5f905f3560e01c9081630543ce85146150165750806308c4174514614fd95780630a9254e414614d5a5780631510ba6b146139a65780631ed7831c146139285780632ade3880146137695780633e5e3c23146136eb5780633f7286f41461366d5780634a9a720e14611ffe57806366d9a9a014611e505780636f6e799214611ae15780637b2fb7b914611a0357806385226c8114611971578063916a17c6146116e5578063a00872f114611679578063a930fe9214610735578063b5508aa91461069c578063ba414fa614610677578063d0a372591461050a578063d170c3cc146102d4578063e20c9f7114610246578063fa7626d4146102235763ff1100f61461011c575f80fd5b346101f057806003193601126101f05760205460405163549387df60e11b8152600481018390525f51602061a8f65f395f51905f5260248201525f51602061a8d65f395f51905f52604482015282918290829060649082906001600160a01b03165afa9081156101f3578291610201575b50515f51602061a8b65f395f51905f523b156101fe576040519063260a5b1560e21b825260048201526002602482015281816044815f51602061a8b65f395f51905f525afa80156101f3576101df5750f35b816101e991615bee565b6101f05780f35b80fd5b6040513d84823e3d90fd5b50fd5b61021d91503d8084833e6102158183615bee565b810190615e97565b5f61018d565b50346101f057806003193601126101f057602060ff601e54166040519015158152f35b50346101f057806003193601126101f05760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b8181106102b5576102b1856102a581870382615bee565b60405191829182615c0f565b0390f35b82546001600160a01b031684526020909301926001928301920161028e565b50346101f05760403660031901126101f0576004356001600160a01b03811680820361050657602435916001600160401b03831161050257366023840112156105025782600401359261032684615e80565b936103346040519586615bee565b8085526024602086019160051b830101913683116104fe57602401905b8282106104ee5750505061036483615f10565b51604051906348bd7dfd60e01b82526004820152846024820152846044820152848160648183875af180156104e3576103a49186916104c1575b50616516565b1591845b84518110156104bd576103bb8186615f2d565b51906040519163ecbbc03360e01b83526004830152868260248183875af180156104b2578561048a916001948a91610490575b5061040986868060a01b0361040284615f10565b51166165ad565b61041c86868060a01b0361040284615f1d565b6104548261042a868c615f2d565b51878060a01b0361043a85615f10565b5116888060a01b0361044b86615f1d565b5116918b6166ef565b61045e848a615f2d565b5190858060a01b0361046f82615f1d565b511690610481878060a01b0391615f10565b511691886166ef565b016103a8565b6104ac91503d808c833e6104a48183615bee565b8101906163a3565b5f6103ee565b6040513d89823e3d90fd5b8580f35b6104dd91503d8088833e6104d58183615bee565b810190616285565b5f61039e565b6040513d87823e3d90fd5b8135815260209182019101610351565b8680fd5b8380fd5b8280fd5b50346101f057806003193601126101f05760205460405163ecbbc03360e01b81526004810183905282918290829060249082906001600160a01b03165afa9081156101f357829161065d575b506001600160a01b0361056882615f10565b51165f51602061a8b65f395f51905f523b1561065957604051906328a9b0fb60e11b825260048201525f51602061a8f65f395f51905f52602482015282816044815f51602061a8b65f395f51905f525afa90811561064e578391610639575b506001600160a01b03916105db9150615f1d565b51165f51602061a8b65f395f51905f523b156101fe57604051906328a9b0fb60e11b825260048201525f51602061a8d65f395f51905f52602482015281816044815f51602061a8b65f395f51905f525afa80156101f3576101df5750f35b8161064391615bee565b6101fe57815f6105c7565b6040513d85823e3d90fd5b5050fd5b61067191503d8084833e6104a48183615bee565b5f610556565b50346101f057806003193601126101f0576020610692616308565b6040519015158152f35b50346101f057806003193601126101f0576019546106b981615e80565b916106c76040519384615bee565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b83831061070957604051806102b18782615d24565b600160208192604051610727816107208189615dff565b0382615bee565b8152019201920191906106f4565b50346101f05761074436615b99565b156116735760015b60205460405163549387df60e11b8152600481018590525f51602061a8f65f395f51905f5260248201525f51602061a8d65f395f51905f526044820152908490829060649082906001600160a01b03165afa908115610ca8578491611659575b50600282101561164557836001831491825f14611180576107cc90615f1d565b5184105f51602061a8b65f395f51905f523b1561117c5760405190632631f2b160e11b8252600482015281816024815f51602061a8b65f395f51905f525afa80156101f357611167575b508060405160208101906370a0823160e01b82523060248201526024815261083f604482615bee565b51905f51602061a8f65f395f51905f525afa5061086c61085d617d2f565b60208082518301019101615f59565b50610875616186565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015611153576108aa8160016108c39301600e55615d83565b919091309083549060031b91821b915f19901b19161790565b905560018060a01b0360115416600f5460e01b601054906108e26180b0565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b169081895260205260408820604051602081019061093481610926888886618099565b03601f198101835282615bee565b519020895260205260ff600360408a2001541615611145575b6001600160a01b0384165f908152600d602052604090209088526020526109266109866040892093604051928391602083019586618099565b519020865260205284604081209160018301549260028101546109a98186616488565b611023578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f51602061a8b65f395f51905f525afa968715610ce7578697610fea575b506001908201610100031b5f1901811b1986165f51602061a8b65f395f51905f523b15610fe6576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528381606481835f51602061a8b65f395f51905f525af1908115610ca8578491610fd1575b5050610a7e618269565b9015908115610fc5575b50610ee85750505050610a99618da2565b6020805460405163095ea7b360e01b81526001600160a01b0390911660048201525f1960248201529081604481885f51602061a8f65f395f51905f525af180156104e357610eb9575b505b6040516370a0823160e01b8152306004820152926020846024815f51602061a8f65f395f51905f525afa9384156104e3578594610e85575b506040516370a0823160e01b8152306004820152916020836024815f51602061a8d65f395f51905f525afa928315610ce7578693610e51575b506040516278744560e21b81526020816004815f51602061a8d65f395f51905f525afa80156104b257610e1e575b50608082610bb49560018060a01b03602054169089604051809981958294638307c65560e01b84526004840161600f565b03925af1938415610ce7578694610ded575b508351610bd1578580f35b15610cf2576040516370a0823160e01b81523060048201526020816024815f51602061a8d65f395f51905f525afa908115610ce7578691610cb3575b50610c2192610c1b91616083565b9061642d565b516040516370a0823160e01b81523060048201526020816024815f51602061a8f65f395f51905f525afa908115610ca8578491610c70575b50610c1b90610c6793616083565b5f808080808580f35b90506020813d602011610ca0575b81610c8b60209383615bee565b81010312610c9c5751610c67610c59565b5f80fd5b3d9150610c7e565b6040513d86823e3d90fd5b90506020813d602011610cdf575b81610cce60209383615bee565b81010312610c9c5751610c21610c0d565b3d9150610cc1565b6040513d88823e3d90fd5b6040516370a0823160e01b81523060048201529193916020816024815f51602061a8f65f395f51905f525afa908115610ce7578691610db9575b50610c1b90610d3a93616083565b516040516370a0823160e01b81523060048201526020816024815f51602061a8d65f395f51905f525afa908115610ca8578491610d85575b50610d8092610c1b91616083565b610c67565b90506020813d602011610db1575b81610da060209383615bee565b81010312610c9c5751610d80610d72565b3d9150610d93565b90506020813d602011610de5575b81610dd460209383615bee565b81010312610c9c5751610d3a610d2c565b3d9150610dc7565b610e1091945060803d608011610e17575b610e088183615bee565b810190615f90565b925f610bc6565b503d610dfe565b936020853d602011610e49575b81610e3860209383615bee565b81010312610c9c5793506080610b83565b3d9150610e2b565b9092506020813d602011610e7d575b81610e6d60209383615bee565b81010312610c9c5751915f610b55565b3d9150610e60565b9093506020813d602011610eb1575b81610ea160209383615bee565b81010312610c9c5751925f610b1c565b3d9150610e94565b610eda9060203d602011610ee1575b610ed28183615bee565b810190615f41565b505f610ae2565b503d610ec8565b82945054905f51602061a8b65f395f51905f523b15610506576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810191909152604481019290925281606481835f51602061a8b65f395f51905f525af180156101f357610fb0575b60405162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b610fbb828092615bee565b6101f05780610f4f565b5f19141590505f610a88565b81610fdb91615bee565b61050657825f610a74565b8580fd5b955095506020853d60201161101b575b8161100760209383615bee565b81010312610c9c57935194899490816109fa565b3d9150610ffa565b61102e849186616488565b6101000361010081116111315760ff81116111315760405163348051d760e11b8152600190911b600482015281816024815f51602061a8b65f395f51905f525afa9081156101f357606a602092846110e993611109969261110d575b506040519485925f51602061a9165f395f51905f52828501525f51602061a8965f395f51905f52604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f198101835282615bee565b60405162461bcd60e51b8152602060048201529182916024830190615c51565b0390fd5b61112a9192503d8084833e6111228183615bee565b810190616103565b908661108a565b634e487b7160e01b82526011600452602482fd5b61114d6184e3565b5061094d565b634e487b7160e01b85526041600452602485fd5b8161117191615bee565b61050257835f610816565b5080fd5b61118990615f10565b5184105f51602061a8b65f395f51905f523b1561117c5760405190632631f2b160e11b8252600482015281816024815f51602061a8b65f395f51905f525afa80156101f357611630575b508060405160208101906370a0823160e01b8252306024820152602481526111fc604482615bee565b51905f51602061a8f65f395f51905f525afa5061121a61085d617d2f565b50611223616186565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015611153576108aa8160016112589301600e55615d83565b905560018060a01b0360115416600f5460e01b601054906112776180b0565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908189526020526040882060405160208101906112bb81610926888886618099565b519020895260205260ff600360408a2001541615611622575b6001600160a01b0384165f908152600d6020526040902090885260205261092661130d6040892093604051928391602083019586618099565b519020865260205284604081209160018301549260028101546113308186616488565b6114ee575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f51602061a8b65f395f51905f525afa968715610ce75786976114b5575b506001908201610100031b5f1901811b198616915f51602061a8b65f395f51905f523b15610fe6576040516370ca10bb60e01b81526001600160a01b038616600482015260248101919091529089901b9190911760448201528381606481835f51602061a8b65f395f51905f525af1908115610ca85784916114a0575b50508661140a618269565b919015918215611495575b5050610ee85750505050611427618da2565b6020805460405163095ea7b360e01b81526001600160a01b039091166004820152602481018590529081604481885f51602061a8f65f395f51905f525af180156104e357611476575b50610ae4565b61148e9060203d602011610ee157610ed28183615bee565b505f611470565b14159050875f611415565b816114aa91615bee565b61050657825f6113ff565b955095506020853d6020116114e6575b816114d260209383615bee565b81010312610c9c5793519489949081611382565b3d91506114c5565b909192506114fc8185616488565b61010003610100811161160e5760ff811161160e5760405163348051d760e11b8152600190911b6004820181905289826024815f51602061a8b65f395f51905f525afa801561160357606a6115b4916020948d916115e9575b506040519485915f51602061a9165f395f51905f52828401525f51602061a8965f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018d838201520301601f198101845283615bee565b8810156115c5575090879291611335565b60405162461bcd60e51b815260206004820152908190611109906024830190615c51565b6115fd91503d808f833e6111228183615bee565b5f611555565b6040513d8c823e3d90fd5b634e487b7160e01b89526011600452602489fd5b61162a6184e3565b506112d4565b8161163a91615bee565b61050257835f6111d3565b634e487b7160e01b84526021600452602484fd5b61166d91503d8086833e6102158183615bee565b5f6107ac565b8161074c565b50346101f05760203660031901126101f057600435601f5481101561117c576116a190615daf565b9190916116d1576040516102b1906116bd816107208187615dff565b604051918291602083526020830190615c51565b634e487b7160e01b81526004819052602490fd5b50346101f057806003193601126101f057601c5461170281615e80565b906117106040519283615bee565b808252601c8352827f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b83831061175357604051806102b18782615c75565b60405161175f81615bb8565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b8160078401106118d257846001979460029794602097946117ea9454918181106118b6575b81811061189a575b81811061187e575b818110611862575b818110611846575b81811061182a575b818110611810575b106117fc575b500382615bee565b8382015281520192019201919061173e565b6001600160e01b031916815286015f6117e2565b828a1b6001600160e01b0319168452928901928b016117dc565b604083901b6001600160e01b0319168452928901928b016117d4565b606083901b6001600160e01b0319168452928901928b016117cc565b608083901b6001600160e01b0319168452928901928b016117c4565b60a083901b6001600160e01b0319168452928901928b016117bc565b60c083901b6001600160e01b0319168452928901928b016117b4565b60e083901b6001600160e01b0319168452928901928b016117ac565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e0820152019401920191611787565b50346101f057806003193601126101f057601a5461198e81615e80565b9161199c6040519384615bee565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b8383106119de57604051806102b18782615d24565b6001602081926040516119f5816107208189615dff565b8152019201920191906119c9565b50346101f057806003193601126101f0576020546040516348bd7dfd60e01b8152600481018390525f51602061a8f65f395f51905f5260248201525f51602061a8d65f395f51905f52604482015282918290829060649082906001600160a01b03165afa9081156101f3578291611ac7575b50515f51602061a8b65f395f51905f523b156101fe576040519063260a5b1560e21b825260048201526005602482015281816044815f51602061a8b65f395f51905f525afa80156101f3576101df5750f35b611adb91503d8084833e6104d58183615bee565b5f611a75565b50346101f05760403660031901126101f057600435906024359160018060a01b03602054169060405163549387df60e11b81528360048201525f51602061a8f65f395f51905f5260248201525f51602061a8d65f395f51905f5260448201528381606481865afa908115610ca8578491611e36575b50611b6081615f10565b5182105f51602061a8b65f395f51905f523b15611e325760405190632631f2b160e11b8252600482015284816024815f51602061a8b65f395f51905f525afa80156104e357908591611e1d575b50505f51602061a8b65f395f51905f523b1561050257604051632631f2b160e11b815260018311600482015284816024815f51602061a8b65f395f51905f525afa80156104e357908591611e08575b5050611c0790615f10565b5184105f51602061a8b65f395f51905f523b156105025760405190632631f2b160e11b8252600482015283816024815f51602061a8b65f395f51905f525afa8015610ca857908491611df3575b50505f51602061a8b65f395f51905f523b1561050657604051632631f2b160e11b815260018511600482015283816024815f51602061a8b65f395f51905f525afa8015610ca857908491611dde575b506040519194909290611cb7606084615bee565b6002835260208301956040368837611cce84615f10565b52611cd883615f1d565b5260405194859263155adc9160e31b845260848401908560048601525f51602061a8f65f395f51905f5260248601525f51602061a8d65f395f51905f526044860152608060648601525180915260a484019190855b818110611dc2575050508290039082905afa918215611db5578192611d91575b50805b8251811015611d8d5780611d70611d6960019386615f2d565b51516164c7565b611d876020611d7f8387615f2d565b5101516164c7565b01611d50565b5080f35b611dae9192503d8084833e611da68183615bee565b8101906161a7565b905f611d4d565b50604051903d90823e3d90fd5b8251845287965088955060209384019390920191600101611d2d565b81611de891615bee565b61050657825f611ca3565b81611dfd91615bee565b61050657825f611c54565b81611e1291615bee565b61050257835f611bfc565b81611e2791615bee565b61050257835f611bad565b8480fd5b611e4a91503d8086833e6102158183615bee565b5f611b56565b50346101f057806003193601126101f057601b54611e6d81615e80565b90611e7b6040519283615bee565b808252601b8352827f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1602084015b838310611ebe57604051806102b18782615c75565b604051611eca81615bb8565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b816007840110611f5f5784600197946002979460209794611f4d9454918181106118b65781811061189a5781811061187e57818110611862578181106118465781811061182a5781811061181057106117fc57500382615bee565b83820152815201920192019190611ea9565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e0820152019401920191611ef2565b50346101f057806003193601126101f0576001610ca06040516120218282615bee565b60648152601f1982019081366020830137845b6064811061361d5750836040519161204c8584615bee565b60648352865b848110613601575086915b612c8f575b505083805b612c4b575b5050826040519161207d8484615bee565b606483528036602085013785825b612bbe575b5061209e6040519485615bee565b6064845285825b612b99575b50509084915b612149575b50509080929181935b6120c6578280f35b6063841015612145576120d98482615f2d565b51519382810194858211612131579061212986612106869798946120fe889688615f2d565b515190617d5e565b6020612120816121168689615f2d565b5101519287615f2d565b51015190617d5e565b0193926120be565b634e487b7160e01b85526011600452602485fd5b8280f35b836064831015612b935750604051634b88b8ad60e11b815291602083600481895f51602061a8b65f395f51905f525af1928315610ce7578693612b60575b50851561267757858060405160208101906370a0823160e01b8252306024820152602481526121b7604482615bee565b51905f51602061a8f65f395f51905f525afa506121d561085d617d2f565b506121de616186565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015612663576108aa81876122129301600e55615d83565b905560018060a01b0360115416600f5460e01b601054906122316180b0565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818b5260205260408a20604051602081019061227581610926888886618099565b5190208b5260205260ff600360408c2001541615612655575b6001600160a01b0384165f908152600d60205260409020908a526020526109266122c760408b2093604051928391602083019586618099565b5190208852602052866040812091878301549260028101546122e98186616488565b61257d578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f51602061a8b65f395f51905f525afa968715610ce7578697612545575b506001908201610100031b5f1901811b1986165f51602061a8b65f395f51905f523b15610fe6576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528381606481835f51602061a8b65f395f51905f525af1908115610ca8578491612530575b50506123be618269565b9015908115612524575b50610ee857505050506123d9618da2565b6020805460405163095ea7b360e01b81526001600160a01b0390911660048201525f19602482015290816044818a5f51602061a8f65f395f51905f525af180156104b257612508575b506020548690608090612460906001600160a01b03166124428587615f2d565b51604051948580948193638307c65560e01b83528d6004840161600f565b03925af19081156104b25787916124ea575b5061247d8286615f2d565b526124888185615f2d565b505b60405192631135fc2960e21b84526004840152602083602481895f51602061a8b65f395f51905f525af1908115610ce757859384926124cc575b5001916120b0565b6124e39060203d8111610ee157610ed28183615bee565b505f6124c4565b612502915060803d8111610e1757610e088183615bee565b5f612472565b61251f9060203d8111610ee157610ed28183615bee565b612422565b5f19141590505f6123c8565b8161253a91615bee565b61050657825f6123b4565b955095506020853d8211612575575b8161256160209383615bee565b81010312610c9c579351948b94908161233a565b3d9150612554565b89612589859287616488565b610100039061010082116126415760ff82116126415760405163348051d760e11b8152911b600482015281816024815f51602061a8b65f395f51905f525afa9081156101f357606a602092846110e993611109969261110d57506040519485925f51602061a9165f395f51905f52828501525f51602061a8965f395f51905f52604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f198101835282615bee565b634e487b7160e01b83526011600452602483fd5b61265d6184e3565b5061228e565b634e487b7160e01b87526041600452602487fd5b6126818183615f2d565b515f8060405160208101906370a0823160e01b8252306024820152602481526126ab604482615bee565b51905f51602061a8d65f395f51905f525afa506126c961085d617d2f565b506126d2616165565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015612b4c576108aa81886127069301600e55615d83565b905560018060a01b0360115416600f5460e01b601054906127256180b0565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690815f5260205260405f20604051602081019061276981610926888886618099565b5190205f5260205260ff600360405f2001541615612b3e575b6001600160a01b0384165f908152600d60205260409020905f526020526109266127bb60405f2093604051928391602083019586618099565b5190205f5260205260405f20878101549260028201546127db8186616488565b612a42575b8254604051630667f9d760e41b81526001600160a01b038616600482015260248101829052959091906020876044815f51602061a8b65f395f51905f525afa968715612a04575f97612a0f575b506001908201610100031b5f1901811b198616915f51602061a8b65f395f51905f523b15610c9c576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201525f81606481835f51602061a8b65f395f51905f525af18015612a04576129eb575b50908992916128b4618269565b9190159182156129e0575b5050610ee857505050506128d1618da2565b6020805461291c91906001600160a01b03166128ed8486615f2d565b5160405163095ea7b360e01b81526001600160a01b039092166004830152602482015291829081906044820190565b03818a5f51602061a8d65f395f51905f525af180156104b2576129c4575b506020548690608090612978906001600160a01b031661295a8587615f2d565b51604051948580948193638307c65560e01b83528d60048401615fc9565b03925af19081156104b25787916129a6575b506129958286615f2d565b526129a08185615f2d565b5061248a565b6129be915060803d8111610e1757610e088183615bee565b5f61298a565b6129db9060203d8111610ee157610ed28183615bee565b61293a565b141590505f806128bf565b6129fa9193929a505f90615bee565b5f9890915f6128a7565b6040513d5f823e3d90fd5b9096506020813d8211612a3a575b81612a2a60209383615bee565b81010312610c9c5751958161282d565b3d9150612a1d565b612a4c8186616488565b610100036101008111612b2a5760ff8111612b2a5760405163348051d760e11b8152908b901b600482018190525f826024815f51602061a8b65f395f51905f525afa8015612a0457606a612b03916020945f91612b10575b506040519485915f51602061a9165f395f51905f52828401525f51602061a8965f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81015f838201520301601f198101845283615bee565b8310156115c557506127e0565b612b2491503d805f833e6111228183615bee565b5f612aa4565b634e487b7160e01b5f52601160045260245ffd5b612b466184e3565b50612782565b634e487b7160e01b5f52604160045260245ffd5b9092506020813d8211612b8b575b81612b7b60209383615bee565b81010312610c9c5751915f612187565b3d9150612b6e565b506120b5565b81811015612bb957602090612bac616495565b82828801015201826120a5565b6120aa565b90916064821015612c44578101808211612c1c57806103e802906103e882048103612c3057683635c9adc5dea000000290808204670de0b6b3a76400001490151715612c1c5785918291612c128287615f2d565b520181929161208b565b634e487b7160e01b87526011600452602487fd5b634e487b7160e01b88526011600452602488fd5b9190612090565b6063811015612c8a57612c5e8183615f2d565b515185820190818311612c305791612c828261210686956120fe8b98968997615f2d565b019091612067565b61206c565b8560648310156135fb5750604051634b88b8ad60e11b8152916020836004818b5f51602061a8b65f395f51905f525af19283156130305788936135c8575b50861561310757878060405160208101906370a0823160e01b825230602482015260248152612cfd604482615bee565b51905f51602061a8f65f395f51905f525afa50612d1b61085d617d2f565b50612d24616186565b6370a0823163ffffffff19600f541617600f55600e54600160401b8110156130f3576108aa8189612d589301600e55615d83565b905560018060a01b0360115416600f5460e01b896010549160ff60036040612d7e6180b0565b6001600160a01b0388165f908152600d602052604090209095909463ffffffff60e01b169485825260205281812082516020810190612dc2816109268c8c86618099565b519020825260205220015416156130e5575b6001600160a01b0384165f908152600d60205260409020908c52602052610926612e0d60408d2093604051928391602083019586618099565b5190208a5260205288604081209189830154926002810154612e2f8186616488565b6130d9578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f51602061a8b65f395f51905f525afa968715610ce75786976130a1575b506001908201610100031b5f1901811b1986165f51602061a8b65f395f51905f523b15610fe6576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528381606481835f51602061a8b65f395f51905f525af1908115610ca857849161308c575b5050612f04618269565b9015908115613080575b50610ee85750505050612f1f618da2565b6020805460405163095ea7b360e01b81526001600160a01b0390911660048201525f19602482015290816044818c5f51602061a8f65f395f51905f525af1801561305957613064575b50602054612fa6906080906001600160a01b0316612f868486615f2d565b51908a8c604051809681958294638307c65560e01b84526004840161600f565b03925af190811561305957899161303b575b50612fc38286615f2d565b52612fce8185615f2d565b505b60405192631135fc2960e21b845260048401526020836024818b5f51602061a8b65f395f51905f525af19081156130305787938492613012575b50019161205d565b6130299060203d8111610ee157610ed28183615bee565b505f61300a565b6040513d8a823e3d90fd5b613053915060803d8111610e1757610e088183615bee565b5f612fb8565b6040513d8b823e3d90fd5b61307b9060203d8111610ee157610ed28183615bee565b612f68565b5f19141590505f612f0e565b8161309691615bee565b61050657825f612efa565b955095506020853d82116130d1575b816130bd60209383615bee565b81010312610c9c579351948d949081612e80565b3d91506130b0565b8b612589859287616488565b6130ed6184e3565b50612dd4565b634e487b7160e01b89526041600452602489fd5b6131118183615f2d565b51888060405160208101906370a0823160e01b82523060248201526024815261313b604482615bee565b51905f51602061a8d65f395f51905f525afa5061315961085d617d2f565b50613162616165565b6370a0823163ffffffff19600f541617600f55600e54600160401b8110156135b4576108aa8161319492600e55615d83565b9055601154600f546010548b926001600160a01b03169160e01b6131b66180b0565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908186526020526040852060405160208101906131fa81610926888886618099565b519020865260205260ff600360408720015416156135a6575b6001600160a01b0384165f908152600d6020526040902090855260205261092661324c6040862093604051928391602083019586618099565b519020835260205260408220805493600282015461326a8187616488565b613498575b8254604051630667f9d760e41b81526001600160a01b038616600482015260248101829052969091906020886044815f51602061a8b65f395f51905f525afa9788156104b2578798613460575b506001908201610100031b5f1901811b198716915f51602061a8b65f395f51905f523b156104fe576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528481606481835f51602061a8b65f395f51905f525af19081156104e357859161344b575b5050613343618269565b919015918215613440575b5050610ee85750505050613360618da2565b6020805461337c91906001600160a01b03166128ed8486615f2d565b03818c5f51602061a8d65f395f51905f525af1801561305957613424575b5060205488906080906133d8906001600160a01b03166133ba8587615f2d565b51604051948580948193638307c65560e01b83528360048401615fc9565b03925af1908115613059578991613406575b506133f58286615f2d565b526134008185615f2d565b50612fd0565b61341e915060803d8111610e1757610e088183615bee565b5f6133ea565b61343b9060203d8111610ee157610ed28183615bee565b61339a565b141590505f8061334e565b8161345591615bee565b61050257835f613339565b965096506020863d8211613490575b8161347c60209383615bee565b81010312610c9c579451958e9590816132bc565b3d915061346f565b9b50919250906134a88b85616488565b6101000361010081116135925760ff1061357e57908b929160405163348051d760e11b815284600482015284816024815f51602061a8b65f395f51905f525afa80156104e357606a60209161355d938891613564575b506040519283915f51602061a9165f395f51905f52828401525f51602061a8965f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018883820152030190601f1982018152615bee565b5f9b61326f565b61357891503d808a833e6111228183615bee565b5f6134fe565b634e487b7160e01b8c52601160045260248cfd5b634e487b7160e01b8d52601160045260248dfd5b6135ae6184e3565b50613213565b634e487b7160e01b8a52604160045260248afd5b9092506020813d82116135f3575b816135e360209383615bee565b81010312610c9c5751915f612ccd565b3d91506135d6565b50612062565b602091925061360e616495565b82828601015201908591612052565b848101808211612c1c57806103e802906103e882048103612c3057683635c9adc5dea000000290808204670de0b6b3a76400001490151715612c1c579085916136668285615f2d565b5201612034565b50346101f057806003193601126101f05760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b8181106136cc576102b1856102a581870382615bee565b82546001600160a01b03168452602090930192600192830192016136b5565b50346101f057806003193601126101f05760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b81811061374a576102b1856102a581870382615bee565b82546001600160a01b0316845260209093019260019283019201613733565b50346101f057806003193601126101f057601d5461378681615e80565b6137936040519182615bee565b818152601d83526020810191837f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f845b8383106138975786858760405192839260208401906020855251809152604084019160408260051b8601019392815b8383106137ff5786860387f35b919395509193603f198782030183528551906020604082019260018060a01b0381511683520151916040602083015282518091526060820190602060608260051b850101940192855b82811061386c575050505050602080600192970193019301909286959492936137f2565b909192939460208061388a600193605f198782030189528951615c51565b9701950193929101613848565b6040516138a381615bb8565b82546001600160a01b031681526001830180546138bf81615e80565b916138cd6040519384615bee565b8183528a526020808b20908b9084015b8382106139035750505050600192826020928360029501528152019201920191906137c3565b60016020819260405161391a81610720818a615dff565b8152019301910190916138dd565b50346101f057806003193601126101f05760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b818110613987576102b1856102a581870382615bee565b82546001600160a01b0316845260209093019260019283019201613970565b50346101f057806003193601126101f0576001610ca06040516139c98282615bee565b60648152601f1982019081366020830137845b60648110614d0a575083604051916139f48584615bee565b60648352865b848110614cee575086915b614445575b505083805b614401575b50508260405191613a258484615bee565b606483528036602085013785825b61439c575b50613a466040519485615bee565b6064845285825b614377575b50509084915b613aae575b50509080929181935b613a6e578280f35b606384101561214557613a818482615f2d565b515193828101948582116121315790613aa686612106869798946120fe889688615f2d565b019392613a66565b8360648310156143715750604051634b88b8ad60e11b815291602083600481895f51602061a8b65f395f51905f525af1928315610ce757869361433e575b508515613ef057858060405160208101906370a0823160e01b825230602482015260248152613b1c604482615bee565b51905f51602061a8f65f395f51905f525afa50613b3a61085d617d2f565b50613b43616186565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015612663576108aa8187613b779301600e55615d83565b905560018060a01b0360115416600f5460e01b60105490613b966180b0565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818b5260205260408a206040516020810190613bda81610926888886618099565b5190208b5260205260ff600360408c2001541615613ee2575b6001600160a01b0384165f908152600d60205260409020908a52602052610926613c2c60408b2093604051928391602083019586618099565b519020885260205286604081209187830154926002810154613c4e8186616488565b61257d578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f51602061a8b65f395f51905f525afa968715610ce7578697613eaa575b506001908201610100031b5f1901811b1986165f51602061a8b65f395f51905f523b15610fe6576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528381606481835f51602061a8b65f395f51905f525af1908115610ca8578491613e95575b5050613d23618269565b9015908115613e89575b50610ee85750505050613d3e618da2565b6020805460405163095ea7b360e01b81526001600160a01b0390911660048201525f19602482015290816044818a5f51602061a8f65f395f51905f525af180156104b257613e6d575b506020548690608090613dc5906001600160a01b0316613da78587615f2d565b51604051948580948193638307c65560e01b8352836004840161600f565b03925af19081156104b2578791613e4f575b50613de28286615f2d565b52613ded8185615f2d565b505b60405192631135fc2960e21b84526004840152602083602481895f51602061a8b65f395f51905f525af1908115610ce75785938492613e31575b500191613a58565b613e489060203d8111610ee157610ed28183615bee565b505f613e29565b613e67915060803d8111610e1757610e088183615bee565b5f613dd7565b613e849060203d8111610ee157610ed28183615bee565b613d87565b5f19141590505f613d2d565b81613e9f91615bee565b61050657825f613d19565b955095506020853d8211613eda575b81613ec660209383615bee565b81010312610c9c579351948b949081613c9f565b3d9150613eb9565b613eea6184e3565b50613bf3565b613efa8183615f2d565b515f8060405160208101906370a0823160e01b825230602482015260248152613f24604482615bee565b51905f51602061a8d65f395f51905f525afa50613f4261085d617d2f565b50613f4b616165565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015612b4c576108aa8188613f7f9301600e55615d83565b905560018060a01b0360115416600f5460e01b60105490613f9e6180b0565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690815f5260205260405f206040516020810190613fe281610926888886618099565b5190205f5260205260ff600360405f2001541615614330575b6001600160a01b0384165f908152600d60205260409020905f5260205261092661403460405f2093604051928391602083019586618099565b5190205f5260205260405f20878101549260028201546140548186616488565b614263575b8254604051630667f9d760e41b81526001600160a01b038616600482015260248101829052959091906020876044815f51602061a8b65f395f51905f525afa968715612a04575f97614230575b506001908201610100031b5f1901811b198616915f51602061a8b65f395f51905f523b15610c9c576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201525f81606481835f51602061a8b65f395f51905f525af18015612a0457614217575b509089929161412d618269565b91901591821561420c575b5050610ee8575050505061414a618da2565b6020805461416691906001600160a01b03166128ed8486615f2d565b03818a5f51602061a8d65f395f51905f525af180156104b2576141f0575b5060205486906080906141a4906001600160a01b03166133ba8587615f2d565b03925af19081156104b25787916141d2575b506141c18286615f2d565b526141cc8185615f2d565b50613def565b6141ea915060803d8111610e1757610e088183615bee565b5f6141b6565b6142079060203d8111610ee157610ed28183615bee565b614184565b141590505f80614138565b6142269193929a505f90615bee565b5f9890915f614120565b9096506020813d821161425b575b8161424b60209383615bee565b81010312610c9c575195816140a6565b3d915061423e565b61426d8186616488565b610100036101008111612b2a5760ff8111612b2a5760405163348051d760e11b8152908b901b600482018190525f826024815f51602061a8b65f395f51905f525afa8015612a0457606a614323916020945f91612b1057506040519485915f51602061a9165f395f51905f52828401525f51602061a8965f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81015f838201520301601f198101845283615bee565b8310156115c55750614059565b6143386184e3565b50613ffb565b9092506020813d8211614369575b8161435960209383615bee565b81010312610c9c5751915f613aec565b3d915061434c565b50613a5d565b818110156143975760209061438a616495565b8282880101520182613a4d565b613a52565b909160648210156143fa578101808211612c1c57806103e802906103e882048103612c3057683635c9adc5dea000000290808204670de0b6b3a76400001490151715612c1c57859182916143f08287615f2d565b5201819291613a33565b9190613a38565b6063811015614440576144148183615f2d565b515185820190818311612c3057916144388261210686956120fe8b98968997615f2d565b019091613a0f565b613a14565b856064831015614ce85750604051634b88b8ad60e11b8152916020836004818b5f51602061a8b65f395f51905f525af1928315613030578893614cb5575b50861561486957878060405160208101906370a0823160e01b8252306024820152602481526144b3604482615bee565b51905f51602061a8f65f395f51905f525afa506144d161085d617d2f565b506144da616186565b6370a0823163ffffffff19600f541617600f55600e54600160401b8110156130f3576108aa818961450e9301600e55615d83565b905560018060a01b0360115416600f5460e01b896010549160ff600360406145346180b0565b6001600160a01b0388165f908152600d602052604090209095909463ffffffff60e01b169485825260205281812082516020810190614578816109268c8c86618099565b5190208252602052200154161561485b575b6001600160a01b0384165f908152600d60205260409020908c526020526109266145c360408d2093604051928391602083019586618099565b5190208a52602052886040812091898301549260028101546145e58186616488565b6130d9578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f51602061a8b65f395f51905f525afa968715610ce7578697614823575b506001908201610100031b5f1901811b1986165f51602061a8b65f395f51905f523b15610fe6576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528381606481835f51602061a8b65f395f51905f525af1908115610ca857849161480e575b50506146ba618269565b9015908115614802575b50610ee857505050506146d5618da2565b6020805460405163095ea7b360e01b81526001600160a01b0390911660048201525f19602482015290816044818c5f51602061a8f65f395f51905f525af18015613059576147e6575b50602054889060809061473e906001600160a01b0316613da78587615f2d565b03925af19081156130595789916147c8575b5061475b8286615f2d565b526147668185615f2d565b505b60405192631135fc2960e21b845260048401526020836024818b5f51602061a8b65f395f51905f525af190811561303057879384926147aa575b500191613a05565b6147c19060203d8111610ee157610ed28183615bee565b505f6147a2565b6147e0915060803d8111610e1757610e088183615bee565b5f614750565b6147fd9060203d8111610ee157610ed28183615bee565b61471e565b5f19141590505f6146c4565b8161481891615bee565b61050657825f6146b0565b955095506020853d8211614853575b8161483f60209383615bee565b81010312610c9c579351948d949081614636565b3d9150614832565b6148636184e3565b5061458a565b6148738183615f2d565b51888060405160208101906370a0823160e01b82523060248201526024815261489d604482615bee565b51905f51602061a8d65f395f51905f525afa506148bb61085d617d2f565b506148c4616165565b6370a0823163ffffffff19600f541617600f55600e54600160401b8110156135b4576108aa816148f692600e55615d83565b9055601154600f546010548b926001600160a01b03169160e01b6149186180b0565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b169081865260205260408520604051602081019061495c81610926888886618099565b519020865260205260ff60036040872001541615614ca7575b6001600160a01b0384165f908152600d602052604090209085526020526109266149ae6040862093604051928391602083019586618099565b51902083526020526040822080549360028201546149cc8187616488565b614bdc575b8254604051630667f9d760e41b81526001600160a01b038616600482015260248101829052969091906020886044815f51602061a8b65f395f51905f525afa9788156104b2578798614ba4575b506001908201610100031b5f1901811b198716915f51602061a8b65f395f51905f523b156104fe576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528481606481835f51602061a8b65f395f51905f525af19081156104e3578591614b8f575b5050614aa5618269565b919015918215614b84575b5050610ee85750505050614ac2618da2565b60208054614ade91906001600160a01b03166128ed8486615f2d565b03818c5f51602061a8d65f395f51905f525af1801561305957614b68575b506020548890608090614b1c906001600160a01b03166133ba8587615f2d565b03925af1908115613059578991614b4a575b50614b398286615f2d565b52614b448185615f2d565b50614768565b614b62915060803d8111610e1757610e088183615bee565b5f614b2e565b614b7f9060203d8111610ee157610ed28183615bee565b614afc565b141590505f80614ab0565b81614b9991615bee565b61050257835f614a9b565b965096506020863d8211614bd4575b81614bc060209383615bee565b81010312610c9c579451958e959081614a1e565b3d9150614bb3565b9b5091925090614bec8b85616488565b6101000361010081116135925760ff1061357e57908b929160405163348051d760e11b815284600482015284816024815f51602061a8b65f395f51905f525afa80156104e357606a602091614ca093889161356457506040519283915f51602061a9165f395f51905f52828401525f51602061a8965f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018883820152030190601f1982018152615bee565b5f9b6149d1565b614caf6184e3565b50614975565b9092506020813d8211614ce0575b81614cd060209383615bee565b81010312610c9c5751915f614483565b3d9150614cc3565b50613a0a565b6020919250614cfb616495565b828286010152019085916139fa565b848101808211612c1c57806103e802906103e882048103612c3057683635c9adc5dea000000290808204670de0b6b3a76400001490151715612c1c57908591614d538285615f2d565b52016139dc565b50346101f057806003193601126101f05760405163975a6ce960e01b81526020600482015260076024820152661b585a5b9b995d60ca1b604482015281816064815f51602061a8b65f395f51905f525afa9081156101f357614de3916020918491614fbf575b50604051809381926371ee464d60e01b8352604060048401526044830190615c51565b6301260bd460248301520381855f51602061a8b65f395f51905f525af180156101f357614f90575b5060405161183e808201908282106001600160401b03831117614f7c57604091839161905883395f51602061a8d65f395f51905f5281525f51602061a8f65f395f51905f52602082015203019082f08015611db55760018060a01b03166bffffffffffffffffffffffff60a01b60205416176020555f51602061a8b65f395f51905f523b156101f057806040516318caf8e360e31b81525f51602061a8f65f395f51905f52600482015260406024820152600460448201526308ca482b60e31b60648201528181608481835f51602061a8b65f395f51905f525af180156101f357614f67575b50505f51602061a8b65f395f51905f523b156101f057806040516318caf8e360e31b81525f51602061a8d65f395f51905f5260048201526040602482015260056044820152640a68ca482b60db1b60648201528181608481835f51602061a8b65f395f51905f525af180156101f3576101df5750f35b81614f7191615bee565b6101f057805f614ef1565b634e487b7160e01b84526041600452602484fd5b6020813d602011614fb7575b81614fa960209383615bee565b81010312610c9c5751614e0b565b3d9150614f9c565b614fd391503d8086833e6111228183615bee565b5f614dc0565b50346101f05760403660031901126101f05750602061500e604051614ffd81615bb8565b6004358152602435838201526160ae565b604051908152f35b905034610c9c5761502636615b99565b90919015615b92576001905b60205463549387df60e11b82525f600483018190525f51602061a8d65f395f51905f5260248401525f51602061a8f65f395f51905f52604484015290829060649082906001600160a01b03165afa908115612a04575f91615b78575b506002821015615b6457836001831491825f146156fb576150ae90615f1d565b5184105f51602061a8b65f395f51905f523b1561117c5760405190632631f2b160e11b8252600482015281816024815f51602061a8b65f395f51905f525afa80156101f3576156e6575b508060405160208101906370a0823160e01b825230602482015260248152615121604482615bee565b51905f51602061a8d65f395f51905f525afa5061513f61085d617d2f565b50615148616165565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015611153576108aa81600161517d9301600e55615d83565b905560018060a01b0360115416600f5460e01b6010549061519c6180b0565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908189526020526040882060405160208101906151e081610926888886618099565b519020895260205260ff600360408a20015416156156d8575b6001600160a01b0384165f908152600d602052604090209088526020526109266152326040892093604051928391602083019586618099565b519020865260205284604081209160018301549260028101546152558186616488565b611023578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f51602061a8b65f395f51905f525afa968715610ce757869761569f575b506001908201610100031b5f1901811b1986165f51602061a8b65f395f51905f523b15610fe6576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528381606481835f51602061a8b65f395f51905f525af1908115610ca857849161568a575b505061532a618269565b901590811561567e575b50610ee85750505050615345618da2565b6020805460405163095ea7b360e01b81526001600160a01b0390911660048201525f1960248201529081604481885f51602061a8d65f395f51905f525af180156104e35761565f575b505b6040516370a0823160e01b8152306004820152926020846024815f51602061a8d65f395f51905f525afa9384156104e357859461562b575b506040516370a0823160e01b8152306004820152916020836024815f51602061a8f65f395f51905f525afa928315610ce75786936155f4575b506080826154329560018060a01b03602054169089604051809981958294638307c65560e01b845260048401615fc9565b03925af1938415610ce75786946155d3575b50835161544f578580f35b15615512576040516370a0823160e01b81523060048201526020816024815f51602061a8f65f395f51905f525afa908115610ce75786916154de575b5061549992610c1b91616083565b516040516370a0823160e01b81523060048201526020816024815f51602061a8d65f395f51905f525afa908115610ca8578491610c705750610c1b90610c6793616083565b90506020813d60201161550a575b816154f960209383615bee565b81010312610c9c575161549961548b565b3d91506154ec565b6040516370a0823160e01b81523060048201529193916020816024815f51602061a8d65f395f51905f525afa908115610ce757869161559f575b50610c1b9061555a93616083565b516040516370a0823160e01b81523060048201526020816024815f51602061a8f65f395f51905f525afa908115610ca8578491610d855750610d8092610c1b91616083565b90506020813d6020116155cb575b816155ba60209383615bee565b81010312610c9c575161555a61554c565b3d91506155ad565b6155ed91945060803d608011610e1757610e088183615bee565b925f615444565b9392506020843d602011615623575b8161561060209383615bee565b81010312610c9c57925191926080615401565b3d9150615603565b9093506020813d602011615657575b8161564760209383615bee565b81010312610c9c5751925f6153c8565b3d915061563a565b6156779060203d602011610ee157610ed28183615bee565b505f61538e565b5f19141590505f615334565b8161569491615bee565b61050657825f615320565b955095506020853d6020116156d0575b816156bc60209383615bee565b81010312610c9c57935194899490816152a6565b3d91506156af565b6156e06184e3565b506151f9565b816156f091615bee565b61050257835f6150f8565b6157059150615f10565b5183105f51602061a8b65f395f51905f523b15610c9c5760405190632631f2b160e11b825260048201525f816024815f51602061a8b65f395f51905f525afa8015612a0457615b4f575b50838060405160208101906370a0823160e01b825230602482015260248152615779604482615bee565b51905f51602061a8d65f395f51905f525afa5061579761085d617d2f565b506157a0616165565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015611153576108aa8160016157d59301600e55615d83565b905560018060a01b0360115416600f5460e01b601054906157f46180b0565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b169081895260205260408820604051602081019061583881610926888886618099565b519020895260205260ff600360408a2001541615615b41575b6001600160a01b0384165f908152600d6020526040902090885260205261092661588a6040892093604051928391602083019586618099565b519020865260205284604081209160018301549260028101546158ad8186616488565b615a6b575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f51602061a8b65f395f51905f525afa968715610ce7578697615a32575b506001908201610100031b5f1901811b198616915f51602061a8b65f395f51905f523b15610fe6576040516370ca10bb60e01b81526001600160a01b038616600482015260248101919091529089901b9190911760448201528381606481835f51602061a8b65f395f51905f525af1908115610ca8578491615a1d575b505086615987618269565b919015918215615a12575b5050610ee857505050506159a4618da2565b6020805460405163095ea7b360e01b81526001600160a01b039091166004820152602481018590529081604481885f51602061a8d65f395f51905f525af180156104e3576159f3575b50615390565b615a0b9060203d602011610ee157610ed28183615bee565b505f6159ed565b14159050875f615992565b81615a2791615bee565b61050657825f61597c565b955095506020853d602011615a63575b81615a4f60209383615bee565b81010312610c9c57935194899490816158ff565b3d9150615a42565b90919250615a798185616488565b61010003610100811161160e5760ff811161160e5760405163348051d760e11b8152600190911b6004820181905289826024815f51602061a8b65f395f51905f525afa801561160357606a615b30916020948d916115e957506040519485915f51602061a9165f395f51905f52828401525f51602061a8965f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018d838201520301601f198101845283615bee565b8810156115c55750908792916158b2565b615b496184e3565b50615851565b615b5c9194505f90615bee565b5f925f61574f565b634e487b7160e01b5f52602160045260245ffd5b615b8c91503d805f833e6102158183615bee565b5f61508e565b5f90615032565b6040906003190112610c9c57600435906024358015158103610c9c5790565b604081019081106001600160401b03821117612b4c57604052565b606081019081106001600160401b03821117612b4c57604052565b90601f801991011681019081106001600160401b03821117612b4c57604052565b60206040818301928281528451809452019201905f5b818110615c325750505090565b82516001600160a01b0316845260209384019390920191600101615c25565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310615ca757505050505090565b9091929394603f1982820301835285516020606081604085019360018060a01b0381511686520151936040838201528451809452019201905f905b808210615d015750505060208060019297019301930191939290615c98565b82516001600160e01b031916845260209384019390920191600190910190615ce2565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310615d5657505050505090565b9091929394602080615d74600193603f198682030187528951615c51565b97019301930191939290615d47565b600e54811015615d9b57600e5f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b601f54811015615d9b57601f5f5260205f2001905f90565b90600182811c92168015615df5575b6020831014615de157565b634e487b7160e01b5f52602260045260245ffd5b91607f1691615dd6565b5f9291815491615e0e83615dc7565b8083529260018116908115615e635750600114615e2a57505050565b5f9081526020812093945091925b838310615e49575060209250010190565b600181602092949394548385870101520191019190615e38565b915050602093945060ff929192191683830152151560051b010190565b6001600160401b038111612b4c5760051b60200190565b602081830312610c9c578051906001600160401b038211610c9c57019080601f83011215610c9c578151615eca81615e80565b92615ed86040519485615bee565b81845260208085019260051b820101928311610c9c57602001905b828210615f005750505090565b8151815260209182019101615ef3565b805115615d9b5760200190565b805160011015615d9b5760400190565b8051821015615d9b5760209160051b010190565b90816020910312610c9c57518015158103610c9c5790565b90816020910312610c9c575190565b9190826040910312610c9c57604051615f8081615bb8565b6020808294805184520151910152565b90608082820312610c9c57615fc1906040805193615fad85615bd3565b805185526020810151602086015201615f68565b604082015290565b92919060a08401935f81525f51602061a8d65f395f51905f5260208201525f51602061a8f65f395f51905f5260408201526002821015615b645760809160608201520152565b92919060a08401935f81525f51602061a8f65f395f51905f5260208201525f51602061a8d65f395f51905f5260408201526002821015615b645760809160608201520152565b9081526001600160a01b039182166020820152911660408201525f6060820152608081019190915260a00190565b91908203918211612b2a57565b811561609a570490565b634e487b7160e01b5f52601260045260245ffd5b80516a084595161401484a0000008102908082046a084595161401484a0000001490151715612b2a5760206160e592015190616090565b90565b6001600160401b038111612b4c57601f01601f191660200190565b602081830312610c9c578051906001600160401b038211610c9c570181601f82011215610c9c57805190616136826160e8565b926161446040519485615bee565b82845260208383010111610c9c57815f9260208093018386015e8301015290565b601180546001600160a01b0319165f51602061a8d65f395f51905f52179055565b601180546001600160a01b0319165f51602061a8f65f395f51905f52179055565b602081830312610c9c578051906001600160401b038211610c9c570181601f82011215610c9c5780516161d981615e80565b926161e76040519485615bee565b81845260208085019260061b84010192818411610c9c57602001915b838310616211575050505090565b60206040916162208486615f68565b815201920191616203565b60a0919360209360808301958352600180851b031684830152600180841b03166040820152608060608201528451809452019201905f5b81811061626f5750505090565b8251845260209384019390920191600101616262565b602081830312610c9c578051906001600160401b038211610c9c57019080601f83011215610c9c578151906162b982615e80565b926162c76040519485615bee565b82845260208085019360051b820101918211610c9c57602001915b8183106162ef5750505090565b8251600a811015610c9c578152602092830192016162e2565b60085460ff1680156163175790565b50604051630667f9d760e41b81525f51602061a8b65f395f51905f5260048201526519985a5b195960d21b60248201526020816044815f51602061a8b65f395f51905f525afa908115612a04575f91616371575b50151590565b90506020813d60201161639b575b8161638c60209383615bee565b81010312610c9c57515f61636b565b3d915061637f565b602081830312610c9c578051906001600160401b038211610c9c57019080601f83011215610c9c578151906163d782615e80565b926163e56040519485615bee565b82845260208085019360051b820101918211610c9c57602001915b81831061640d5750505090565b82516001600160a01b0381168103610c9c57815260209283019201616400565b905f51602061a8b65f395f51905f523b15610c9c576040519163260a5b1560e21b8352600483015260248201525f816044815f51602061a8b65f395f51905f525afa8015612a045761647c5750565b5f61648691615bee565b565b91908201809211612b2a57565b604051906164a282615bd3565b815f81525f602082015260408051916164ba83615bb8565b5f83525f60208401520152565b5f51602061a8b65f395f51905f523b15610c9c5760405190636d83fe6960e11b825260048201525f60248201525f816044815f51602061a8b65f395f51905f525afa8015612a045761647c5750565b5f5b815181101561654b5761652b8183615f2d565b51600a811015615b645760051461654457600101616518565b5050600190565b50505f90565b5f5b815181101561654b576165668183615f2d565b51600a811015615b645760091461654457600101616553565b5f5b815181101561654b576165948183615f2d565b51600a811015615b645760081461654457600101616581565b60405190602082019263095ea7b360e01b845260018060a01b0316928360248401525f196044840152604483526165e5606484615bee565b82516001600160a01b038316915f91829182855af190616603617d2f565b82616663575b5081616658575b501561661b57505050565b616653616486936040519063095ea7b360e01b602083015260248201525f60448201526044815261664d606482615bee565b82617dad565b617dad565b90503b15155f616610565b8051919250811591821561667b575b5050905f616609565b61668e9250602080918301019101615f41565b5f80616672565b604051906166a4606083615bee565b603682527536103a3790383934b1b29030b33a32b91039bbb0b81760511b6040837f45786563757465642070726963652073686f756c64206265206f72206571756160208201520152565b60c09490945260405163549387df60e11b8152600481018290526001600160a01b0380841660248301528416604482015291939290915f8180606481016101208490520381836001600160a01b0389165af18015612a0457616758915f91617d15575b50615f10565b5161010052606060a08190526040516167b4916167759082615bee565b602381527f53656c6c206c696d69742073686f756c6420626520677265617465722074686160208201526206e20360ec1b604082015261010051617e70565b60a051505f8061683c61686a6040516167cf60a05182615bee565b603681527f544553543a2054657374696e672070726963657320666f722070616972202573602082015275080b4f88095ccb8814d95b1b081b1a5b5a5d0e88095960521b6040820152604051928391638ef3f39960e01b60208401526080602484015260a4830190615c51565b6001600160a01b038a811660448401528716606483015261010051608483015203601f198101835282615bee565b6020815191016a636f6e736f6c652e6c6f675afa506040516348bd7dfd60e01b8152600481018390526001600160a01b038086166024830152821660448201525f8180606481010381836001600160a01b0389165af18015612a04576168d7915f91617cfb575b50616551565b90604051916168e760a084615bee565b60048352608036602085013715617cee575f5b61690383615f10565b526103e8610100510461691583615f1d565b52815160021015615d9b5760a05182016101005160011c9052815160031015615d9b5761010051608083015260405163155adc9160e31b8152935f858061696286868b8a6004860161622b565b0381836001600160a01b0386165af1948515612a04575f95617cd2575b5061699261698c86615f10565b516160ae565b85515f19810191908211612b2a576169b061698c616a0a9389615f2d565b60a05160405192906169c29084615bee565b603083527f5072696365206174206c696d69742073686f756c6420626520736d616c6c657260208401526f0207468616e20707269636520617420360841b6040840152617ed7565b616a1661698c86615f10565b85515f198101908111612b2a57616ab1616aca5f93616a3961698c86958c615f2d565b60a051604051929190616a4c9084615bee565b602d83527f544553543a20507269636520617420303a2025642c207072696365206174207360208401526c195b1b081b1a5b5a5d0e880959609a1b604084015260405194859363ca47c4eb60e01b602086015260a05160248601526084850190615c51565b916044840152606483015203601f198101835282615bee565b6020815191016a636f6e736f6c652e6c6f675afa5060a051604051616b3091616af39082615bee565b602581527f544553543a2054657374696e67206265686176696f7220666f72207072696365602082015264020617420360dc1b6040820152617f0c565b616b82616b3c86615f10565b5151604060e081905280519190616b539083615bee565b601882527f4e6f6d696e61746f722073686f756c646e2774206265203000000000000000006020830152617e70565b616bd36020616b9087615f10565b51015160e05180519190616ba49083615bee565b601a82527f44656e6f6d696e61746f722073686f756c646e277420626520300000000000006020830152617e70565b616bdf61698c86615f10565b9460e05150616c1e8660e05151616bf860e05182615bee565b6014815273151154d50e88141c9a58d948185d080c0e88095960621b6020820152617f50565b616c26616495565b5083515f198101908111612b2a57616c3e9085615f2d565b516005818102048103612b2a575f8060e0515160208101906370a0823160e01b825230602482015260248152616c75604482615bee565b51908b5afa50616c8661085d617d2f565b50601180546001600160a01b0319166001600160a01b038a16179055600f805463ffffffff19166370a08231179055600e54600160401b811015612b4c576108aa816001616cd79301600e55615d83565b90556011546001600160a01b031661014052600f546010549060e01b616cfb6180b0565b610140516001600160a01b03165f908152600d60205260409020909163ffffffff60e01b1690815f5260205260e0515f2060e051516020810190616d4481610926888886618099565b5190205f5260205260ff600360e0515f2001541615617cc4575b610140516001600160a01b03165f908152600d60205260409020905f52602052610926616d9c60e0515f209360e05151928391602083019586618099565b5190205f5260205260e0515f206001810154916002820154616dbe8185616488565b617bae575b825460e05151630667f9d760e41b8152610140516001600160a01b0316600482015260248101829052949091906020866044815f51602061a8b65f395f51905f525afa958615617b6e575f96617b7a575b506001908201610100031b5f1901811b1985165f51602061a8b65f395f51905f523b15610c9c5760e051516370ca10bb60e01b8152610140516001600160a01b0316600482015260248101939093526005840290911b1760448201525f81606481835f51602061a8b65f395f51905f525af18015617b6e57617b59575b50616e9a618269565b9015918215617b4b575b5050617a57575050616eb4618da2565b60e05151634b88b8ad60e11b8152602081600481610120515f51602061a8b65f395f51905f525af180156173ab5761012051608052617a24575b5060015b8451811015617478575f80616fa9616fcf616f0c85615daf565b50616f17868b615f2d565b51616fbb610720616f8360e0515194616f3260a05187615bee565b603086527f544553543a2054657374696e67206265686176696f7220666f7220707269636560208701526f1030ba1012b99037b3103634b6b4ba1760811b60e05187015260e0515192838092615dff565b60e05151635821efa160e01b602082015260a05160248201529586946084860190615c51565b84810360231901604486015290615c51565b90606483015203601f198101835282615bee565b6020815191016a636f6e736f6c652e6c6f675afa50616ff161698c8284615f2d565b5f8061706661708a8c617004878c615f2d565b5160e051519161701660e05184615bee565b601783527f544553543a205377617070696e67202564206f66202573000000000000000000602084015260e0515194859363038fd88960e31b602086015260a05160248601526084850190615c51565b60448401929092526001600160a01b0316606483015203601f198101835282615bee565b6020815191016a636f6e736f6c652e6c6f675afa508460808a896170ce6170b1878c615f2d565b5160e05151638307c65560e01b8152958694859460048601616055565b03816101205160018060a01b038a165af19081156173ab57610120519161745a575b508051806a084595161401484a0000008102046a084595161401484a00000014811517156174405761713d617148916a084595161401484a000000617135878c615f2d565b519102616090565b9160e05101516160ae565b9161718c8260e0515161715d60e05182615bee565b601d81527f544553543a20202d2045786563757465642070726963653a20202025640000006020820152617f50565b6171cf8160e051516171a060e05182615bee565b601d81527f544553543a20202d20507269636520617420616d6f756e743a202025640000006020820152617f50565b6172128360e051516171e360e05182615bee565b601d81527f544553543a20202d20507269636520616674657220737761703a2025640000006020820152617f50565b60c051156173ba5760a05160e05151617346946172eb93909261728192919061723b9083615bee565b602c82527f50726963652073686f756c642062652067726561746564207468616e2065786560208301526b31baba32b210383934b1b29760a11b60e05183015285617f93565b60a05160e0515191906172949083615bee565b603782527f45786563757465642070726963652073686f756c64206265206772656174657260208301527f207468616e20707269636520616674657220737761702e00000000000000000060e05183015283617ed7565b60a05160e0515191906172fe9083615bee565b602e82527f50726963652073686f756c642062652067726561746564207468616e2070726960208301526d31b29030b33a32b91039bbb0b81760911b60e05183015289617ed7565b60e0515190631135fc2960e21b82526080516004830152602082602481610120515f51602061a8b65f395f51905f525af19182156173ab5760019261738d575b5001616ef2565b6173a49060203d8111610ee157610ed28183615bee565b505f617386565b60e051513d61012051823e3d90fd5b6173e3906173d461743b946173cd616695565b908d617f93565b6173dc616695565b908b617f93565b60e05151906173f460a05183615bee565b602d82527f50726963652073686f756c64206265206f7220657175616c20746f207072696360208301526c329030b33a32b91039bbb0b81760991b60e05183015289617f93565b617346565b634e487b7160e01b61012051526011600452602461012051fd5b617472915060803d8111610e1757610e088183615bee565b5f6170f0565b505091509193925060696101005102610100518104606914610100511517156174405760e051516348bd7dfd60e01b81526101208051600483018890526001600160a01b0387811660248501528681166044850152915160649485900497949192849291839188165af180156173ab576174fc916101205191617a07575b5061657f565b156178aa576175648460e0515161751560a05182615bee565b603681527f544553543a2054657374696e6720726576657274206265686176696f722061626020820152751bdd99481d1a19481cd95b1b081b1a5b5a5d0e88095960521b60e051820152617f50565b60e051805194906175759086615bee565b6001855260e051601f190136602087013761758f85615f10565b5260e0515163155adc9160e31b81526101205181806175b48888878c6004860161622b565b03816101205160018060a01b0388165af1908161788f575b506178235760016175db617fc8565b6308c379a014617795575b6173ab576175f5608094615f10565b519461761860e0515196879586948594638307c65560e01b865260048601616055565b61012051919003926001600160a01b03165af19081617778575b50617716576001617641617fc8565b6308c379a014617693575b6173ab575b61648660e0515161766460e05182615bee565b601781527f544553543a20416c6c207465737473207061737365642e0000000000000000006020820152617f0c565b61769b617fe3565b806176a7575b5061764c565b6101205160a05160e051519193506177109291906176c59082615bee565b603281527f544553543a204578706563746564206572726f72207768656e207377617070696020820152716e672061626f7665206c696d69743a20257360701b60e051820152618055565b5f6176a1565b60e0515162461bcd60e51b815260206004820152603360248201527f506f6f6c2073686f756c646e27742062652061626c6520746f20737761702061604482015272189bdd99481d1a19481cd95b1b081b1a5b5a5d606a1b6064820152608490fd5b6177909060803d608011610e1757610e088183615bee565b617632565b61779d617fe3565b806177a9575b506175e6565b6101205160a05160e0515191935061781d9291906177c79082615bee565b603881527f544553543a204578706563746564206572726f72207768656e2066657463686960208201527f6e672070726963652061626f7665206c696d69743a202573000000000000000060e051820152618055565b5f6177a3565b60e0515162461bcd60e51b815260206004820152603b60248201527f506f6f6c2073686f756c646e27742062652061626c6520746f2066657463682060448201527f7072696365732061626f7665207468652073656c6c206c696d697400000000006064820152608490fd5b6178a5903d8061012051833e611da68183615bee565b6175cc565b60a05160e0515161790c918691906178c29082615bee565b603181527f544553543a2054657374696e67206f7065726174696f6e732061626f766520746020820152701a19481cd95b1b081b1a5b5a5d0e880959607a1b60e051820152617f50565b60e0518051949061791d9086615bee565b6001855260e051601f190136602087013761793785615f10565b5260e051519363155adc9160e31b855261012051858061795d8488878c6004860161622b565b03816101205160018060a01b0388165af19081156173ab57608095617986926179ec5750615f10565b51946179a960e0515196879586948594638307c65560e01b865260048601616055565b61012051919003926001600160a01b03165af180156173ab576179cd575b50617651565b6179e59060803d608011610e1757610e088183615bee565b505f6179c7565b617a02903d8061012051833e611da68183615bee565b616752565b617a1e91503d8061012051833e6104d58183615bee565b5f6174f6565b6020813d602011617a4f575b81617a3d60209383615bee565b81010312610c9c57516080525f616eee565b3d9150617a30565b545f51602061a8b65f395f51905f523b15617b445760e051516370ca10bb60e01b815261012051610140516001600160a01b03166004830152602482019290925260448101929092528180606481010381610120515f51602061a8b65f395f51905f525af180156173ab57617b29575b60e0515162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b61012051617b3691615bee565b61012051617b445780617ac7565b6101205180fd5b600502141590505f80616ea4565b5f617b6391615bee565b5f610120525f616e91565b60e051513d5f823e3d90fd5b9095506020813d602011617ba6575b81617b9660209383615bee565b81010312610c9c57519481616e14565b3d9150617b89565b617bb88185616488565b610100036101008111612b2a5760ff8111612b2a5760e0515163348051d760e11b81526001821b60048201525f816024815f51602061a8b65f395f51905f525afa918215617b6e57617c74606a6020946001945f91617caa575b5060e051519586915f51602061a9165f395f51905f52828401525f51602061a8965f395f51905f5260e05184015269030ba32b9103a3430b7160b51b60a0518401528051918291018484015e81015f838201520301601f198101855284615bee565b1b836005021015617c855750616dc3565b60e0515162461bcd60e51b815260206004820152908190611109906024830190615c51565b617cbe91503d805f833e6111228183615bee565b5f617c12565b617ccc6184e3565b50616d5e565b617ce79195503d805f833e611da68183615bee565b935f61697f565b61271061010051046168fa565b617d0f91503d805f833e6104d58183615bee565b5f6168d1565b617d2991503d805f833e6102158183615bee565b5f616752565b3d15617d59573d90617d40826160e8565b91617d4e6040519384615bee565b82523d5f602084013e565b606090565b905f51602061a8b65f395f51905f523b15610c9c5760405191638466f41560e01b8352600483015260248201525f816044815f51602061a8b65f395f51905f525afa8015612a045761647c5750565b8151617dd8926001600160a01b03909216915f91829160200182855af1617dd2617d2f565b91618428565b80519081617de4575050565b602080617df5938301019101615f41565b15617dfc57565b60405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b6160e59392606092825260208201528160408201520190615c51565b5f51602061a8b65f395f51905f523b15610c9c57617eb8915f916040519384928392636cd1e26960e11b84526004840152846024840152606060448401526064830190615c51565b03815f51602061a8b65f395f51905f525afa8015612a045761647c5750565b905f51602061a8b65f395f51905f523b15610c9c575f91617eb86040519485938493636cd1e26960e11b855260048501617e54565b5f610926617f39829360405192839163104c13eb60e21b6020840152602060248401526044830190615c51565b6020815191016a636f6e736f6c652e6c6f675afa50565b617f7f617f395f93928493604051938492632d839cb360e21b6020850152604060248501526064840190615c51565b90604483015203601f198101835282615bee565b905f51602061a8b65f395f51905f523b15610c9c575f91617eb86040519485938493630389490b60e61b855260048501617e54565b5f9060033d11617fd457565b905060045f803e5f5160e01c90565b5f60443d106160e5576040513d600319016004823e8051913d60248401116001600160401b0384111761804f57828201928351916001600160401b038311618047573d8401600319018584016020011161804757506160e592910160200190615bee565b949350505050565b92915050565b618087617f395f93926109268594604051948593634b5c427760e01b6020860152604060248601526064850190615c51565b83810360231901604485015290615c51565b60209291908391805192839101825e019081520190565b6180bb601454615dc7565b618178576040519081826020600e549283815201600e5f5260205f20925f5b81811061815f5750506180ef92500383615bee565b81518060051b9080820460201490151715612b2a5761810d816160e8565b9061811b6040519283615bee565b80825261812a601f19916160e8565b013660208301375f5b835181101561815a578061814960019286615f2d565b5160208260051b8501015201618133565b509150565b84548352600194850194879450602090930192016180da565b6040516160e581610720816014615dff565b60078101906181998254615dc7565b61825557600191500190604051808360208295549384815201905f5260205f20925f5b81811061823c5750506181d192500383615bee565b81518060051b9080820460201490151715612b2a576181ef816160e8565b906181fd6040519283615bee565b80825261820c601f19916160e8565b013660208301375f5b835181101561815a578061822b60019286615f2d565b5160208260051b8501015201618215565b84548352600194850194879450602090930192016181bc565b506160e56107209160405192838092615dff565b5f806020600f5460e01b6182b76024618282600d61818a565b6040519485918183019563ffffffff60e01b1686528051918291018484015e810186838201520301601f198101845283615bee565b6011549151916001600160a01b03165afa906182d1617d2f565b601054909290600581901b906001600160fb1b03811603612b2a575f938051602081115f1461835c57506020905b5f925b82841061831157505050509190565b9091929561831f8783616488565b8351811015615d9b57830160200151600388901b91906001600160f81b031916881560088a8504141715612b2a576001921c179601929190618302565b906182ff565b905f806020600285015460e01b61837d60246182828861818a565b60048601549151916001600160a01b03165afa600361839a617d2f565b930154600581901b906001600160fb1b03811603612b2a575f938051602081115f1461842257506020905b5f925b8284106183d757505050509190565b909192956183e58783616488565b8351811015615d9b57830160200151600388901b91906001600160f81b031916881560088a8504141715612b2a576001921c1796019291906183c8565b906183c5565b9061844c575080511561843d57805190602001fd5b63d6bda27560e01b5f5260045ffd5b8151158061847d575b61845d575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15618455565b9080601f83011215610c9c57815161849d81615e80565b926184ab6040519485615bee565b81845260208085019260051b820101928311610c9c57602001905b8282106184d35750505090565b81518152602091820191016184c6565b601154600f546010546001600160a01b03909216915f9160e01b618507600d61818a565b90845f52600d60205260405f209063ffffffff60e01b1690815f5260205260405f20604051602081019061854081610926888886618099565b5190205f5260205260ff600360405f20015416618d61575f51602061a8b65f395f51905f523b15610c9c5760405163266cf10960e01b81525f81600481835f51602061a8b65f395f51905f525af18015612a0457618d4c575b506185a4600d618362565b90506040516365bc948160e01b81528660048201528581602481835f51602061a8b65f395f51905f525af1908115610ce7578691618ce4575b50805161864e57608460405162461bcd60e51b815260206004820152604060248201527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152fd5b855b8151811015618cdc578160206186698361869a95615f2d565b51604051630667f9d760e41b81526001600160a01b038c166004820152602481019190915293849081906044820190565b03815f51602061a8b65f395f51905f525afa928315613030578893618ca9575b508215618c51575b6186cc8282615f2d565b51601154604051630667f9d760e41b81526001600160a01b03909116600482018190526024820183905291906020816044815f51602061a8b65f395f51905f525afa908115618c46578b91618c15575b50618727600d618362565b91909382155f14618c0e575f19905b5f51602061a8b65f395f51905f523b15618bf5576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810185905260448101919091528c81606481835f51602061a8b65f395f51905f525af18015618b7a57908d91618bf9575b50506187a7600d618362565b601154909491506001600160a01b03165f51602061a8b65f395f51905f523b15618bf5576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528b81606481835f51602061a8b65f395f51905f525af18015618bea57908c91618bd1575b505082618bc6575b505015618bbc578793889360ff60135416618a41575b6001868601610100031b5f1901851b16841c8103618a335750906188c1917f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed60808b896109266188968d604051928391602083019586618099565b5190206188a38686615f2d565b51906040519283528a602084015260408301526060820152a1615f2d565b51906040519060808201928284106001600160401b03851117612b4c5760039360405282526020820193845260408201908152606082019360018552898952600d60205260408920868a5260205260408920604051602081019061892a816109268d8d86618099565b5190208a526020526040892092518355516001830155516002820155019051151560ff801983541691161790555b848452600d6020526040842081855260205260408420604051602081019061898581610926888886618099565b519020855260205260ff600360408620015416156189d6576040948452600d6020528484209084526020526109266189ca858520938651928391602083019586618099565b51902082526020522090565b60405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201526e3a143994903737ba103337bab7321760891b6064820152608490fd5b935091506001905b01618650565b9450618a8c9350618a528383615f2d565b51601154604051630667f9d760e41b81526001600160a01b0390911660048201526024810182905290959094602090869081906044820190565b03815f51602061a8b65f395f51905f525afa948515611603578a95618b89575b50618ab886600d618ebb565b959096618ac681600d618f94565b60115490939192906001600160a01b03165f51602061a8b65f395f51905f523b15618b85576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528c81606481835f51602061a8b65f395f51905f525af18015618b7a57908d91618b61575b505087618b59575b50949561883b575093509150600190618a3b565b96505f618b45565b81618b6b91615bee565b618b76578b5f618b3d565b8b80fd5b6040513d8f823e3d90fd5b8e80fd5b9094506020813d8211618bb4575b81618ba460209383615bee565b81010312610c9c5751935f618aac565b3d9150618b97565b9150600190618a3b565b141590505f80618825565b81618bdb91615bee565b618be6578a5f61881d565b8a80fd5b6040513d8e823e3d90fd5b8d80fd5b81618c0391615bee565b618b76578b5f61879b565b8c90618736565b90506020813d8211618c3e575b81618c2f60209383615bee565b81010312610c9c57515f61871c565b3d9150618c22565b6040513d8d823e3d90fd5b7f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5618ca1618c7f8484615f2d565b51604080516001600160a01b038e168152602081019290925290918291820190565b0390a16186c2565b9092506020813d8211618cd4575b81618cc460209383615bee565b81010312610c9c5751915f6186ba565b3d9150618cb7565b505050618958565b90503d8087833e618cf58183615bee565b81016040828203126104fe5781516001600160401b038111618d485781618d1d918401618486565b916020810151906001600160401b038211618d4457618d3d929101618486565b505f6185dd565b8880fd5b8780fd5b618d599194505f90615bee565b5f925f618599565b91939092505f52600d60205260405f20905f52602052610926618d9360405f2093604051928391602083019586618099565b5190205f5260205260405f2090565b6bffffffffffffffffffffffff60a01b6011541660115563ffffffff19600f5416600f55600e545f600e5580618e79575b505f60105560ff1960135416601355618ded601454615dc7565b80618df55750565b601f8111600114618e0757505f601455565b60145f52601f0160051c7fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec017fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ed5b818110618e6e57505060145f525f602081208160145555565b5f8155600101618e55565b600e5f527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd908101905b818110618eb05750618dd3565b5f8155600101618ea3565b91905f5b6101008110618ed257505090505f905f90565b8060ff0360ff8111612b2a576004850154600190911b906001600160a01b03165f51602061a8b65f395f51905f523b15610c9c576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f51602061a8b65f395f51905f525af18015612a0457618f84575b50618f5e84618362565b81618f7a575b50618f7157600101618ebf565b92505060019190565b905015155f618f64565b5f618f8e91615bee565b5f618f54565b91905f5b6101008110618fab57505090505f905f90565b60048401546001821b906001600160a01b03165f51602061a8b65f395f51905f523b15610c9c576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f51602061a8b65f395f51905f525af18015612a0457619047575b5061902a84618362565b8161903d575b50618f7157600101618f98565b905015155f619030565b5f61905191615bee565b5f61902056fe60c03461012457601f61183e38819003918201601f19168301916001600160401b0383118484101761012857808492604094855283398101031261012457610052602061004b8361013c565b920161013c565b6001600160a01b039182166080521660a0526040516116ed9081610151823960805181818160be015281816103cc015281816104000152818161053d01528181610671015281816106a5015281816107fe015281816108320152818161099201528181610bc601528181610c7901528181610e4701528181610f6901528181610f9d01528181611016015281816111f6015281816112d601526113bb015260a051818181608a015281816101cf0152818161045d0152818161074801528181610b7c01528181610d6e0152610da30152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101245756fe60806040526004361015610011575f80fd5b5f3560e01c806323eeca011461096057806348bd7dfd146108785780638307c655146106d7578063a9270fbe14610442578063aad6e4881461013f5763ecbbc0331461005b575f80fd5b3461013b57602036600319011261013b5760405161007a606082610a8e565b60028152602081019060403683377f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166100bb82610ac8565b527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166100ef82610ad5565b52604051918291602083019060208452518091526040830191905f5b818110610119575050500390f35b82516001600160a01b031684528594506020938401939092019160010161010b565b5f80fd5b3461013b57608036600319011261013b57610158610a0c565b610160610a22565b6064359067ffffffffffffffff821161013b573660238301121561013b5781600401359161018d83610ab0565b9261019b6040519485610a8e565b8084526024602085019160051b8301019136831161013b57602401905b828210610432575050506001600160a01b038381167f00000000000000000000000000000000000000000000000000000000000000009091168181149291831591826103fe575b82156103aa575b508115610397575b5061033b5782519361021f85610ab0565b9461022d6040519687610a8e565b80865261023c601f1991610ab0565b015f5b8181106103185750509061025291610da1565b915f5b81518110156102c7578061026b60019284610ae5565b5161027586610ac8565b518111156102c1576102919061028a87610ac8565b5111610fcf565b6102a561029e8285610ae5565b5185611291565b6102af8288610ae5565b526102ba8187610ae5565b5001610255565b50610291565b846040518091602082016020835281518091526020604084019201905f5b8181106102f3575050500390f35b82518051855260209081015181860152869550604090940193909201916001016102e5565b60209060405161032781610a72565b5f81525f8382015282828a0101520161023f565b60405163643c60f360e01b815260206004820152602d60248201527f546869732061646170746572206f6e6c7920737570706f72747320465241583c60448201526c2d3e534652415820737761707360981b6064820152608490fd5b6001600160a01b0383161490508561020e565b9091506001600160a01b0383169081141590816103ca575b509086610206565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614159050866103c2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031682141592506101ff565b81358152602091820191016101b8565b3461013b5761045036610a38565b6001600160a01b039182167f000000000000000000000000000000000000000000000000000000000000000090921682811493508315929190836106a3575b831561064f575b50821561063c575b505061033b57604051906104b3606083610a8e565b60028252602082019060403683371561052e576001600160801b036104d783610ac8565b526001600160801b036104e983610ad5565b52905b604051918291602083019060208452518091526040830191905f5b818110610515575050500390f35b8251845285945060209384019390920191600101610507565b6040516361c1c5e960e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602081600481855afa9081156105ff575f9161060a575b5061058784610ad5565b52602061059384610ad5565b51602460405180948193630a28a47760e01b835260048301525afa9081156105ff575f916105cd575b506105c683610ac8565b52906104ec565b90506020813d6020116105f7575b816105e860209383610a8e565b8101031261013b5751836105bc565b3d91506105db565b6040513d5f823e3d90fd5b90506020813d602011610634575b8161062560209383610a8e565b8101031261013b57518461057d565b3d9150610618565b6001600160a01b0316149050828061049e565b9092506001600160a01b03831690811415908161066f575b509184610496565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161415905084610667565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316831415935061048f565b3461013b5760a036600319011261013b576106f0610a0c565b6106f8610a22565b90606435600281101561013b57604051906060820182811067ffffffffffffffff821117610864576040525f82525f602083015260405161073881610a72565b5f808252602082015260408301527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116908416818114159182610830575b82156107dc575b5081156107c9575b5061033b576080936107a49360843593610af9565b6020604080519280518452828101518385015201518051604084015201516060820152f35b6001600160a01b0386161490508561078f565b9091506001600160a01b0386169081141590816107fc575b509086610787565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614159050866107f4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168214159250610780565b634e487b7160e01b5f52604160045260245ffd5b3461013b5761088636610a38565b50505060405161089760c082610a8e565b600581526020810160a036823760016108af83610ac8565b5260026108bb83610ad5565b5281516002101561094c576003606083015281516003101561094c576005608083015281516004101561094c57600860a0830152604051906020820192602083525180935260408201905f935b8085106109155783830384f35b9091825190600a8210156109385760208160019382935201930194019390610908565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b3461013b57604036600319011261013b5760408051906109808183610a8e565b6001825260208201601f1982013682377f000000000000000000000000000000000000000000000000000000000000000060601b6bffffffffffffffffffffffff19166109cc84610ac8565b52815192839260208401916020855251809252830191905f5b8181106109f3575050500390f35b82518452859450602093840193909201916001016109e5565b602435906001600160a01b038216820361013b57565b604435906001600160a01b038216820361013b57565b606090600319011261013b57600435906024356001600160a01b038116810361013b57906044356001600160a01b038116810361013b5790565b6040810190811067ffffffffffffffff82111761086457604052565b90601f8019910116810190811067ffffffffffffffff82111761086457604052565b67ffffffffffffffff81116108645760051b60200190565b80511561094c5760200190565b80516001101561094c5760400190565b805182101561094c5760209160051b010190565b94939092918582158015610d60575b610d585750610b179084610da1565b9160028110928315610938578115918280610d46575b15610d0e5750610b3f610b4791610ac8565b518310610fcf565b5a92156109385715610cfd57610b5d90836111d9565b84525b5a8103908111610ce95760208401526001600160a01b039081167f000000000000000000000000000000000000000000000000000000000000000090911603610c565760405163ef8b30f760e01b8152670de0b6b3a764000060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105ff575f91610c24575b505b60405190610c0d82610a72565b8152670de0b6b3a764000060208201526040830152565b90506020813d602011610c4e575b81610c3f60209383610a8e565b8101031261013b57515f610bfe565b3d9150610c32565b60405163266d6a8360e11b8152670de0b6b3a764000060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105ff575f91610cb7575b50610c00565b90506020813d602011610ce1575b81610cd260209383610a8e565b8101031261013b57515f610cb1565b3d9150610cc5565b634e487b7160e01b5f52601160045260245ffd5b610d07908361100c565b8452610b60565b60011480610d34575b610d22575b50610b47565b610b3f610d2e91610ad5565b5f610d1c565b50610d3e81610ad5565b518311610d17565b50610d5082610ac8565b518411610b2d565b955050505050565b506001600160a01b038581167f0000000000000000000000000000000000000000000000000000000000000000909116148015610b08575060028310610b08565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691168181149283159283610f9b575b8315610f47575b508215610f34575b505061033b5760405190610e00606083610a8e565b60028252604036602084013715610e38576001600160801b03610e2282610ac8565b526001600160801b03610e3482610ad5565b5290565b6040516361c1c5e960e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602081600481855afa9081156105ff575f91610f02575b50610e9183610ad5565b526020610e9d83610ad5565b51602460405180948193630a28a47760e01b835260048301525afa9081156105ff575f91610ed0575b50610e3482610ac8565b90506020813d602011610efa575b81610eeb60209383610a8e565b8101031261013b57515f610ec6565b3d9150610ede565b90506020813d602011610f2c575b81610f1d60209383610a8e565b8101031261013b57515f610e87565b3d9150610f10565b6001600160a01b03161490505f80610deb565b9092506001600160a01b038316908114159081610f67575b50915f610de3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141590505f610f5f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168314159350610ddc565b15610fd657565b60405162461bcd60e51b815260206004820152600e60248201526d131a5b5a5d08195e18d95959195960921b6044820152606490fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911680820361112d57604051630a28a47760e01b81526004810184905290602082602481865afa9182156105ff575f926110f7575b50915f936110836110b39360209530903390611400565b604051632d182be560e21b8152600481019190915233602482015230604482015293849283919082906064820190565b03925af19081156105ff575f916110c8575090565b90506020813d6020116110ef575b816110e360209383610a8e565b8101031261013b575190565b3d91506110d6565b929091506020833d602011611125575b8161111460209383610a8e565b8101031261013b579151905f61106c565b3d9150611107565b60405163b3d7f6b960e01b81526004810184905290602082602481865afa9182156105ff575f926111a3575b50915f9361117983836020966111746110b397303384611400565b61144b565b6040516394bf804d60e01b8152600481019190915233602482015293849283919082906044820190565b929091506020833d6020116111d1575b816111c060209383610a8e565b8101031261013b579151905f611159565b3d91506111b3565b5f916020916001600160a01b0316906111f481303385611400565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690828214851461125957604051635d043b2960e11b8152600481019190915233602482015230604482015293849250829081606481016110b3565b61126781836110b39561144b565b604051636e553f6560e01b8152600481019190915233602482015293849283919082906044820190565b6001906040516112a081610a72565b5f80825260209091015215150361139e576002811061135a5760405163ef8b30f760e01b815260048101829052906020826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156105ff575f92611326575b506040519161131c83610a72565b8252602082015290565b9091506020813d602011611352575b8161134260209383610a8e565b8101031261013b5751905f61130e565b3d9150611335565b606460405162461bcd60e51b815260206004820152602060248201527f416d6f756e7420496e206d7573742062652067726561746572207468616e20316044820152fd5b60405163266d6a8360e11b815260048101829052906020826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156105ff575f9261132657506040519161131c83610a72565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815261144991611444608483610a8e565b6115af565b565b604051636eb1769f60e11b81523060048201526001600160a01b0392831660248201819052939092821690602084604481855afa9384156105ff575f94611563575b508301809311610ce9575f8060405194602086019063095ea7b360e01b82528760248801526044870152604486526114c6606487610a8e565b85519082855af1906114d661161a565b82611531575b5081611526575b50156114ee57505050565b611444611449936040519063095ea7b360e01b602083015260248201525f604482015260448152611520606482610a8e565b826115af565b90503b15155f6114e3565b80519192508115918215611549575b5050905f6114dc565b61155c9250602080918301019101611597565b5f80611540565b9093506020813d60201161158f575b8161157f60209383610a8e565b8101031261013b5751925f61148d565b3d9150611572565b9081602091031261013b5751801515810361013b5790565b5f806115d79260018060a01b03169360208151910182865af16115d061161a565b9083611659565b80519081151591826115ff575b50506115ed5750565b635274afe760e01b5f5260045260245ffd5b6116129250602080918301019101611597565b155f806115e4565b3d15611654573d9067ffffffffffffffff82116108645760405191611649601f8201601f191660200184610a8e565b82523d5f602084013e565b606090565b9061167d575080511561166e57805190602001fd5b63d6bda27560e01b5f5260045ffd5b815115806116ae575b61168e575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561168656fea264697066735822122067f54ef465d21af621c8dd49b39e0406a28ba995a2dfce93f120df14a9a875d164736f6c634300081b00336b656420736c6f742e2057652063616e2774206669742076616c7565206772650000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d000000000000000000000000a663b02cf0a4b149d2ad41910cb81e23e1c41c32000000000000000000000000853d955acef822db058eb8505911ed77f175b99e73746453746f726167652066696e642853746453746f72616765293a20506163a2646970667358221220d45ad83531160355d9201b068ea13f477a68f6bf65085117ad53d514b7e0860d64736f6c634300081b0033a03837a25210ee280c2113ff4b77ca23440b19d4866cca721c801278fd08d807","sourceMap":"604:8022:73:-:0;;;;;;3166:4:2;604:8022:73;;3166:4:2;604:8022:73;;;3166:4:2;604:8022:73;3166:4:2;604:8022:73;;1038:4:12;604:8022:73;;;1038:4:12;604:8022:73;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;604:8022:73;;;;;;;;;:::i;:::-;564:29:65;604:8022:73;;-1:-1:-1;;;604:8022:73;;;;;564:29:65;;604:8022:73;;;;:::i;:::-;;;;-1:-1:-1;;;604:8022:73;;;;;564:29:65;;604:8022:73;;;;:::i;:::-;564:29:65;604:8022:73;;-1:-1:-1;;;604:8022:73;;;;564:29:65;;;604:8022:73;;;564:29:65;604:8022:73;;;564:29:65;604:8022:73;;;-1:-1:-1;;604:8022:73;;;;;-1:-1:-1;;;;;;;;;;;604:8022:73;;564:29:65;604:8022:73;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;604:8022:73;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3166:4:2;604:8022:73;;;;;;;;;;;-1:-1:-1;;;;604:8022:73;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;604:8022:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3166:4:2;604:8022:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3166:4:2;604:8022:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;604:8022:73;;;;;;;;;;;564:29:65;604:8022:73;;;;;;;;-1:-1:-1;;;;;;;;;;;604:8022:73;;;;;;;;;;;;;;3166:4:2;604:8022:73;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;604:8022:73;;;-1:-1:-1;;;;;604:8022:73;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x610160806040526004361015610013575f80fd5b5f905f3560e01c9081630543ce85146150165750806308c4174514614fd95780630a9254e414614d5a5780631510ba6b146139a65780631ed7831c146139285780632ade3880146137695780633e5e3c23146136eb5780633f7286f41461366d5780634a9a720e14611ffe57806366d9a9a014611e505780636f6e799214611ae15780637b2fb7b914611a0357806385226c8114611971578063916a17c6146116e5578063a00872f114611679578063a930fe9214610735578063b5508aa91461069c578063ba414fa614610677578063d0a372591461050a578063d170c3cc146102d4578063e20c9f7114610246578063fa7626d4146102235763ff1100f61461011c575f80fd5b346101f057806003193601126101f05760205460405163549387df60e11b8152600481018390525f51602061a8f65f395f51905f5260248201525f51602061a8d65f395f51905f52604482015282918290829060649082906001600160a01b03165afa9081156101f3578291610201575b50515f51602061a8b65f395f51905f523b156101fe576040519063260a5b1560e21b825260048201526002602482015281816044815f51602061a8b65f395f51905f525afa80156101f3576101df5750f35b816101e991615bee565b6101f05780f35b80fd5b6040513d84823e3d90fd5b50fd5b61021d91503d8084833e6102158183615bee565b810190615e97565b5f61018d565b50346101f057806003193601126101f057602060ff601e54166040519015158152f35b50346101f057806003193601126101f05760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b8181106102b5576102b1856102a581870382615bee565b60405191829182615c0f565b0390f35b82546001600160a01b031684526020909301926001928301920161028e565b50346101f05760403660031901126101f0576004356001600160a01b03811680820361050657602435916001600160401b03831161050257366023840112156105025782600401359261032684615e80565b936103346040519586615bee565b8085526024602086019160051b830101913683116104fe57602401905b8282106104ee5750505061036483615f10565b51604051906348bd7dfd60e01b82526004820152846024820152846044820152848160648183875af180156104e3576103a49186916104c1575b50616516565b1591845b84518110156104bd576103bb8186615f2d565b51906040519163ecbbc03360e01b83526004830152868260248183875af180156104b2578561048a916001948a91610490575b5061040986868060a01b0361040284615f10565b51166165ad565b61041c86868060a01b0361040284615f1d565b6104548261042a868c615f2d565b51878060a01b0361043a85615f10565b5116888060a01b0361044b86615f1d565b5116918b6166ef565b61045e848a615f2d565b5190858060a01b0361046f82615f1d565b511690610481878060a01b0391615f10565b511691886166ef565b016103a8565b6104ac91503d808c833e6104a48183615bee565b8101906163a3565b5f6103ee565b6040513d89823e3d90fd5b8580f35b6104dd91503d8088833e6104d58183615bee565b810190616285565b5f61039e565b6040513d87823e3d90fd5b8135815260209182019101610351565b8680fd5b8380fd5b8280fd5b50346101f057806003193601126101f05760205460405163ecbbc03360e01b81526004810183905282918290829060249082906001600160a01b03165afa9081156101f357829161065d575b506001600160a01b0361056882615f10565b51165f51602061a8b65f395f51905f523b1561065957604051906328a9b0fb60e11b825260048201525f51602061a8f65f395f51905f52602482015282816044815f51602061a8b65f395f51905f525afa90811561064e578391610639575b506001600160a01b03916105db9150615f1d565b51165f51602061a8b65f395f51905f523b156101fe57604051906328a9b0fb60e11b825260048201525f51602061a8d65f395f51905f52602482015281816044815f51602061a8b65f395f51905f525afa80156101f3576101df5750f35b8161064391615bee565b6101fe57815f6105c7565b6040513d85823e3d90fd5b5050fd5b61067191503d8084833e6104a48183615bee565b5f610556565b50346101f057806003193601126101f0576020610692616308565b6040519015158152f35b50346101f057806003193601126101f0576019546106b981615e80565b916106c76040519384615bee565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b83831061070957604051806102b18782615d24565b600160208192604051610727816107208189615dff565b0382615bee565b8152019201920191906106f4565b50346101f05761074436615b99565b156116735760015b60205460405163549387df60e11b8152600481018590525f51602061a8f65f395f51905f5260248201525f51602061a8d65f395f51905f526044820152908490829060649082906001600160a01b03165afa908115610ca8578491611659575b50600282101561164557836001831491825f14611180576107cc90615f1d565b5184105f51602061a8b65f395f51905f523b1561117c5760405190632631f2b160e11b8252600482015281816024815f51602061a8b65f395f51905f525afa80156101f357611167575b508060405160208101906370a0823160e01b82523060248201526024815261083f604482615bee565b51905f51602061a8f65f395f51905f525afa5061086c61085d617d2f565b60208082518301019101615f59565b50610875616186565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015611153576108aa8160016108c39301600e55615d83565b919091309083549060031b91821b915f19901b19161790565b905560018060a01b0360115416600f5460e01b601054906108e26180b0565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b169081895260205260408820604051602081019061093481610926888886618099565b03601f198101835282615bee565b519020895260205260ff600360408a2001541615611145575b6001600160a01b0384165f908152600d602052604090209088526020526109266109866040892093604051928391602083019586618099565b519020865260205284604081209160018301549260028101546109a98186616488565b611023578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f51602061a8b65f395f51905f525afa968715610ce7578697610fea575b506001908201610100031b5f1901811b1986165f51602061a8b65f395f51905f523b15610fe6576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528381606481835f51602061a8b65f395f51905f525af1908115610ca8578491610fd1575b5050610a7e618269565b9015908115610fc5575b50610ee85750505050610a99618da2565b6020805460405163095ea7b360e01b81526001600160a01b0390911660048201525f1960248201529081604481885f51602061a8f65f395f51905f525af180156104e357610eb9575b505b6040516370a0823160e01b8152306004820152926020846024815f51602061a8f65f395f51905f525afa9384156104e3578594610e85575b506040516370a0823160e01b8152306004820152916020836024815f51602061a8d65f395f51905f525afa928315610ce7578693610e51575b506040516278744560e21b81526020816004815f51602061a8d65f395f51905f525afa80156104b257610e1e575b50608082610bb49560018060a01b03602054169089604051809981958294638307c65560e01b84526004840161600f565b03925af1938415610ce7578694610ded575b508351610bd1578580f35b15610cf2576040516370a0823160e01b81523060048201526020816024815f51602061a8d65f395f51905f525afa908115610ce7578691610cb3575b50610c2192610c1b91616083565b9061642d565b516040516370a0823160e01b81523060048201526020816024815f51602061a8f65f395f51905f525afa908115610ca8578491610c70575b50610c1b90610c6793616083565b5f808080808580f35b90506020813d602011610ca0575b81610c8b60209383615bee565b81010312610c9c5751610c67610c59565b5f80fd5b3d9150610c7e565b6040513d86823e3d90fd5b90506020813d602011610cdf575b81610cce60209383615bee565b81010312610c9c5751610c21610c0d565b3d9150610cc1565b6040513d88823e3d90fd5b6040516370a0823160e01b81523060048201529193916020816024815f51602061a8f65f395f51905f525afa908115610ce7578691610db9575b50610c1b90610d3a93616083565b516040516370a0823160e01b81523060048201526020816024815f51602061a8d65f395f51905f525afa908115610ca8578491610d85575b50610d8092610c1b91616083565b610c67565b90506020813d602011610db1575b81610da060209383615bee565b81010312610c9c5751610d80610d72565b3d9150610d93565b90506020813d602011610de5575b81610dd460209383615bee565b81010312610c9c5751610d3a610d2c565b3d9150610dc7565b610e1091945060803d608011610e17575b610e088183615bee565b810190615f90565b925f610bc6565b503d610dfe565b936020853d602011610e49575b81610e3860209383615bee565b81010312610c9c5793506080610b83565b3d9150610e2b565b9092506020813d602011610e7d575b81610e6d60209383615bee565b81010312610c9c5751915f610b55565b3d9150610e60565b9093506020813d602011610eb1575b81610ea160209383615bee565b81010312610c9c5751925f610b1c565b3d9150610e94565b610eda9060203d602011610ee1575b610ed28183615bee565b810190615f41565b505f610ae2565b503d610ec8565b82945054905f51602061a8b65f395f51905f523b15610506576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810191909152604481019290925281606481835f51602061a8b65f395f51905f525af180156101f357610fb0575b60405162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b610fbb828092615bee565b6101f05780610f4f565b5f19141590505f610a88565b81610fdb91615bee565b61050657825f610a74565b8580fd5b955095506020853d60201161101b575b8161100760209383615bee565b81010312610c9c57935194899490816109fa565b3d9150610ffa565b61102e849186616488565b6101000361010081116111315760ff81116111315760405163348051d760e11b8152600190911b600482015281816024815f51602061a8b65f395f51905f525afa9081156101f357606a602092846110e993611109969261110d575b506040519485925f51602061a9165f395f51905f52828501525f51602061a8965f395f51905f52604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f198101835282615bee565b60405162461bcd60e51b8152602060048201529182916024830190615c51565b0390fd5b61112a9192503d8084833e6111228183615bee565b810190616103565b908661108a565b634e487b7160e01b82526011600452602482fd5b61114d6184e3565b5061094d565b634e487b7160e01b85526041600452602485fd5b8161117191615bee565b61050257835f610816565b5080fd5b61118990615f10565b5184105f51602061a8b65f395f51905f523b1561117c5760405190632631f2b160e11b8252600482015281816024815f51602061a8b65f395f51905f525afa80156101f357611630575b508060405160208101906370a0823160e01b8252306024820152602481526111fc604482615bee565b51905f51602061a8f65f395f51905f525afa5061121a61085d617d2f565b50611223616186565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015611153576108aa8160016112589301600e55615d83565b905560018060a01b0360115416600f5460e01b601054906112776180b0565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908189526020526040882060405160208101906112bb81610926888886618099565b519020895260205260ff600360408a2001541615611622575b6001600160a01b0384165f908152600d6020526040902090885260205261092661130d6040892093604051928391602083019586618099565b519020865260205284604081209160018301549260028101546113308186616488565b6114ee575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f51602061a8b65f395f51905f525afa968715610ce75786976114b5575b506001908201610100031b5f1901811b198616915f51602061a8b65f395f51905f523b15610fe6576040516370ca10bb60e01b81526001600160a01b038616600482015260248101919091529089901b9190911760448201528381606481835f51602061a8b65f395f51905f525af1908115610ca85784916114a0575b50508661140a618269565b919015918215611495575b5050610ee85750505050611427618da2565b6020805460405163095ea7b360e01b81526001600160a01b039091166004820152602481018590529081604481885f51602061a8f65f395f51905f525af180156104e357611476575b50610ae4565b61148e9060203d602011610ee157610ed28183615bee565b505f611470565b14159050875f611415565b816114aa91615bee565b61050657825f6113ff565b955095506020853d6020116114e6575b816114d260209383615bee565b81010312610c9c5793519489949081611382565b3d91506114c5565b909192506114fc8185616488565b61010003610100811161160e5760ff811161160e5760405163348051d760e11b8152600190911b6004820181905289826024815f51602061a8b65f395f51905f525afa801561160357606a6115b4916020948d916115e9575b506040519485915f51602061a9165f395f51905f52828401525f51602061a8965f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018d838201520301601f198101845283615bee565b8810156115c5575090879291611335565b60405162461bcd60e51b815260206004820152908190611109906024830190615c51565b6115fd91503d808f833e6111228183615bee565b5f611555565b6040513d8c823e3d90fd5b634e487b7160e01b89526011600452602489fd5b61162a6184e3565b506112d4565b8161163a91615bee565b61050257835f6111d3565b634e487b7160e01b84526021600452602484fd5b61166d91503d8086833e6102158183615bee565b5f6107ac565b8161074c565b50346101f05760203660031901126101f057600435601f5481101561117c576116a190615daf565b9190916116d1576040516102b1906116bd816107208187615dff565b604051918291602083526020830190615c51565b634e487b7160e01b81526004819052602490fd5b50346101f057806003193601126101f057601c5461170281615e80565b906117106040519283615bee565b808252601c8352827f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b83831061175357604051806102b18782615c75565b60405161175f81615bb8565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b8160078401106118d257846001979460029794602097946117ea9454918181106118b6575b81811061189a575b81811061187e575b818110611862575b818110611846575b81811061182a575b818110611810575b106117fc575b500382615bee565b8382015281520192019201919061173e565b6001600160e01b031916815286015f6117e2565b828a1b6001600160e01b0319168452928901928b016117dc565b604083901b6001600160e01b0319168452928901928b016117d4565b606083901b6001600160e01b0319168452928901928b016117cc565b608083901b6001600160e01b0319168452928901928b016117c4565b60a083901b6001600160e01b0319168452928901928b016117bc565b60c083901b6001600160e01b0319168452928901928b016117b4565b60e083901b6001600160e01b0319168452928901928b016117ac565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e0820152019401920191611787565b50346101f057806003193601126101f057601a5461198e81615e80565b9161199c6040519384615bee565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b8383106119de57604051806102b18782615d24565b6001602081926040516119f5816107208189615dff565b8152019201920191906119c9565b50346101f057806003193601126101f0576020546040516348bd7dfd60e01b8152600481018390525f51602061a8f65f395f51905f5260248201525f51602061a8d65f395f51905f52604482015282918290829060649082906001600160a01b03165afa9081156101f3578291611ac7575b50515f51602061a8b65f395f51905f523b156101fe576040519063260a5b1560e21b825260048201526005602482015281816044815f51602061a8b65f395f51905f525afa80156101f3576101df5750f35b611adb91503d8084833e6104d58183615bee565b5f611a75565b50346101f05760403660031901126101f057600435906024359160018060a01b03602054169060405163549387df60e11b81528360048201525f51602061a8f65f395f51905f5260248201525f51602061a8d65f395f51905f5260448201528381606481865afa908115610ca8578491611e36575b50611b6081615f10565b5182105f51602061a8b65f395f51905f523b15611e325760405190632631f2b160e11b8252600482015284816024815f51602061a8b65f395f51905f525afa80156104e357908591611e1d575b50505f51602061a8b65f395f51905f523b1561050257604051632631f2b160e11b815260018311600482015284816024815f51602061a8b65f395f51905f525afa80156104e357908591611e08575b5050611c0790615f10565b5184105f51602061a8b65f395f51905f523b156105025760405190632631f2b160e11b8252600482015283816024815f51602061a8b65f395f51905f525afa8015610ca857908491611df3575b50505f51602061a8b65f395f51905f523b1561050657604051632631f2b160e11b815260018511600482015283816024815f51602061a8b65f395f51905f525afa8015610ca857908491611dde575b506040519194909290611cb7606084615bee565b6002835260208301956040368837611cce84615f10565b52611cd883615f1d565b5260405194859263155adc9160e31b845260848401908560048601525f51602061a8f65f395f51905f5260248601525f51602061a8d65f395f51905f526044860152608060648601525180915260a484019190855b818110611dc2575050508290039082905afa918215611db5578192611d91575b50805b8251811015611d8d5780611d70611d6960019386615f2d565b51516164c7565b611d876020611d7f8387615f2d565b5101516164c7565b01611d50565b5080f35b611dae9192503d8084833e611da68183615bee565b8101906161a7565b905f611d4d565b50604051903d90823e3d90fd5b8251845287965088955060209384019390920191600101611d2d565b81611de891615bee565b61050657825f611ca3565b81611dfd91615bee565b61050657825f611c54565b81611e1291615bee565b61050257835f611bfc565b81611e2791615bee565b61050257835f611bad565b8480fd5b611e4a91503d8086833e6102158183615bee565b5f611b56565b50346101f057806003193601126101f057601b54611e6d81615e80565b90611e7b6040519283615bee565b808252601b8352827f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1602084015b838310611ebe57604051806102b18782615c75565b604051611eca81615bb8565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b816007840110611f5f5784600197946002979460209794611f4d9454918181106118b65781811061189a5781811061187e57818110611862578181106118465781811061182a5781811061181057106117fc57500382615bee565b83820152815201920192019190611ea9565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e0820152019401920191611ef2565b50346101f057806003193601126101f0576001610ca06040516120218282615bee565b60648152601f1982019081366020830137845b6064811061361d5750836040519161204c8584615bee565b60648352865b848110613601575086915b612c8f575b505083805b612c4b575b5050826040519161207d8484615bee565b606483528036602085013785825b612bbe575b5061209e6040519485615bee565b6064845285825b612b99575b50509084915b612149575b50509080929181935b6120c6578280f35b6063841015612145576120d98482615f2d565b51519382810194858211612131579061212986612106869798946120fe889688615f2d565b515190617d5e565b6020612120816121168689615f2d565b5101519287615f2d565b51015190617d5e565b0193926120be565b634e487b7160e01b85526011600452602485fd5b8280f35b836064831015612b935750604051634b88b8ad60e11b815291602083600481895f51602061a8b65f395f51905f525af1928315610ce7578693612b60575b50851561267757858060405160208101906370a0823160e01b8252306024820152602481526121b7604482615bee565b51905f51602061a8f65f395f51905f525afa506121d561085d617d2f565b506121de616186565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015612663576108aa81876122129301600e55615d83565b905560018060a01b0360115416600f5460e01b601054906122316180b0565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818b5260205260408a20604051602081019061227581610926888886618099565b5190208b5260205260ff600360408c2001541615612655575b6001600160a01b0384165f908152600d60205260409020908a526020526109266122c760408b2093604051928391602083019586618099565b5190208852602052866040812091878301549260028101546122e98186616488565b61257d578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f51602061a8b65f395f51905f525afa968715610ce7578697612545575b506001908201610100031b5f1901811b1986165f51602061a8b65f395f51905f523b15610fe6576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528381606481835f51602061a8b65f395f51905f525af1908115610ca8578491612530575b50506123be618269565b9015908115612524575b50610ee857505050506123d9618da2565b6020805460405163095ea7b360e01b81526001600160a01b0390911660048201525f19602482015290816044818a5f51602061a8f65f395f51905f525af180156104b257612508575b506020548690608090612460906001600160a01b03166124428587615f2d565b51604051948580948193638307c65560e01b83528d6004840161600f565b03925af19081156104b25787916124ea575b5061247d8286615f2d565b526124888185615f2d565b505b60405192631135fc2960e21b84526004840152602083602481895f51602061a8b65f395f51905f525af1908115610ce757859384926124cc575b5001916120b0565b6124e39060203d8111610ee157610ed28183615bee565b505f6124c4565b612502915060803d8111610e1757610e088183615bee565b5f612472565b61251f9060203d8111610ee157610ed28183615bee565b612422565b5f19141590505f6123c8565b8161253a91615bee565b61050657825f6123b4565b955095506020853d8211612575575b8161256160209383615bee565b81010312610c9c579351948b94908161233a565b3d9150612554565b89612589859287616488565b610100039061010082116126415760ff82116126415760405163348051d760e11b8152911b600482015281816024815f51602061a8b65f395f51905f525afa9081156101f357606a602092846110e993611109969261110d57506040519485925f51602061a9165f395f51905f52828501525f51602061a8965f395f51905f52604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f198101835282615bee565b634e487b7160e01b83526011600452602483fd5b61265d6184e3565b5061228e565b634e487b7160e01b87526041600452602487fd5b6126818183615f2d565b515f8060405160208101906370a0823160e01b8252306024820152602481526126ab604482615bee565b51905f51602061a8d65f395f51905f525afa506126c961085d617d2f565b506126d2616165565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015612b4c576108aa81886127069301600e55615d83565b905560018060a01b0360115416600f5460e01b601054906127256180b0565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690815f5260205260405f20604051602081019061276981610926888886618099565b5190205f5260205260ff600360405f2001541615612b3e575b6001600160a01b0384165f908152600d60205260409020905f526020526109266127bb60405f2093604051928391602083019586618099565b5190205f5260205260405f20878101549260028201546127db8186616488565b612a42575b8254604051630667f9d760e41b81526001600160a01b038616600482015260248101829052959091906020876044815f51602061a8b65f395f51905f525afa968715612a04575f97612a0f575b506001908201610100031b5f1901811b198616915f51602061a8b65f395f51905f523b15610c9c576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201525f81606481835f51602061a8b65f395f51905f525af18015612a04576129eb575b50908992916128b4618269565b9190159182156129e0575b5050610ee857505050506128d1618da2565b6020805461291c91906001600160a01b03166128ed8486615f2d565b5160405163095ea7b360e01b81526001600160a01b039092166004830152602482015291829081906044820190565b03818a5f51602061a8d65f395f51905f525af180156104b2576129c4575b506020548690608090612978906001600160a01b031661295a8587615f2d565b51604051948580948193638307c65560e01b83528d60048401615fc9565b03925af19081156104b25787916129a6575b506129958286615f2d565b526129a08185615f2d565b5061248a565b6129be915060803d8111610e1757610e088183615bee565b5f61298a565b6129db9060203d8111610ee157610ed28183615bee565b61293a565b141590505f806128bf565b6129fa9193929a505f90615bee565b5f9890915f6128a7565b6040513d5f823e3d90fd5b9096506020813d8211612a3a575b81612a2a60209383615bee565b81010312610c9c5751958161282d565b3d9150612a1d565b612a4c8186616488565b610100036101008111612b2a5760ff8111612b2a5760405163348051d760e11b8152908b901b600482018190525f826024815f51602061a8b65f395f51905f525afa8015612a0457606a612b03916020945f91612b10575b506040519485915f51602061a9165f395f51905f52828401525f51602061a8965f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81015f838201520301601f198101845283615bee565b8310156115c557506127e0565b612b2491503d805f833e6111228183615bee565b5f612aa4565b634e487b7160e01b5f52601160045260245ffd5b612b466184e3565b50612782565b634e487b7160e01b5f52604160045260245ffd5b9092506020813d8211612b8b575b81612b7b60209383615bee565b81010312610c9c5751915f612187565b3d9150612b6e565b506120b5565b81811015612bb957602090612bac616495565b82828801015201826120a5565b6120aa565b90916064821015612c44578101808211612c1c57806103e802906103e882048103612c3057683635c9adc5dea000000290808204670de0b6b3a76400001490151715612c1c5785918291612c128287615f2d565b520181929161208b565b634e487b7160e01b87526011600452602487fd5b634e487b7160e01b88526011600452602488fd5b9190612090565b6063811015612c8a57612c5e8183615f2d565b515185820190818311612c305791612c828261210686956120fe8b98968997615f2d565b019091612067565b61206c565b8560648310156135fb5750604051634b88b8ad60e11b8152916020836004818b5f51602061a8b65f395f51905f525af19283156130305788936135c8575b50861561310757878060405160208101906370a0823160e01b825230602482015260248152612cfd604482615bee565b51905f51602061a8f65f395f51905f525afa50612d1b61085d617d2f565b50612d24616186565b6370a0823163ffffffff19600f541617600f55600e54600160401b8110156130f3576108aa8189612d589301600e55615d83565b905560018060a01b0360115416600f5460e01b896010549160ff60036040612d7e6180b0565b6001600160a01b0388165f908152600d602052604090209095909463ffffffff60e01b169485825260205281812082516020810190612dc2816109268c8c86618099565b519020825260205220015416156130e5575b6001600160a01b0384165f908152600d60205260409020908c52602052610926612e0d60408d2093604051928391602083019586618099565b5190208a5260205288604081209189830154926002810154612e2f8186616488565b6130d9578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f51602061a8b65f395f51905f525afa968715610ce75786976130a1575b506001908201610100031b5f1901811b1986165f51602061a8b65f395f51905f523b15610fe6576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528381606481835f51602061a8b65f395f51905f525af1908115610ca857849161308c575b5050612f04618269565b9015908115613080575b50610ee85750505050612f1f618da2565b6020805460405163095ea7b360e01b81526001600160a01b0390911660048201525f19602482015290816044818c5f51602061a8f65f395f51905f525af1801561305957613064575b50602054612fa6906080906001600160a01b0316612f868486615f2d565b51908a8c604051809681958294638307c65560e01b84526004840161600f565b03925af190811561305957899161303b575b50612fc38286615f2d565b52612fce8185615f2d565b505b60405192631135fc2960e21b845260048401526020836024818b5f51602061a8b65f395f51905f525af19081156130305787938492613012575b50019161205d565b6130299060203d8111610ee157610ed28183615bee565b505f61300a565b6040513d8a823e3d90fd5b613053915060803d8111610e1757610e088183615bee565b5f612fb8565b6040513d8b823e3d90fd5b61307b9060203d8111610ee157610ed28183615bee565b612f68565b5f19141590505f612f0e565b8161309691615bee565b61050657825f612efa565b955095506020853d82116130d1575b816130bd60209383615bee565b81010312610c9c579351948d949081612e80565b3d91506130b0565b8b612589859287616488565b6130ed6184e3565b50612dd4565b634e487b7160e01b89526041600452602489fd5b6131118183615f2d565b51888060405160208101906370a0823160e01b82523060248201526024815261313b604482615bee565b51905f51602061a8d65f395f51905f525afa5061315961085d617d2f565b50613162616165565b6370a0823163ffffffff19600f541617600f55600e54600160401b8110156135b4576108aa8161319492600e55615d83565b9055601154600f546010548b926001600160a01b03169160e01b6131b66180b0565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908186526020526040852060405160208101906131fa81610926888886618099565b519020865260205260ff600360408720015416156135a6575b6001600160a01b0384165f908152600d6020526040902090855260205261092661324c6040862093604051928391602083019586618099565b519020835260205260408220805493600282015461326a8187616488565b613498575b8254604051630667f9d760e41b81526001600160a01b038616600482015260248101829052969091906020886044815f51602061a8b65f395f51905f525afa9788156104b2578798613460575b506001908201610100031b5f1901811b198716915f51602061a8b65f395f51905f523b156104fe576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528481606481835f51602061a8b65f395f51905f525af19081156104e357859161344b575b5050613343618269565b919015918215613440575b5050610ee85750505050613360618da2565b6020805461337c91906001600160a01b03166128ed8486615f2d565b03818c5f51602061a8d65f395f51905f525af1801561305957613424575b5060205488906080906133d8906001600160a01b03166133ba8587615f2d565b51604051948580948193638307c65560e01b83528360048401615fc9565b03925af1908115613059578991613406575b506133f58286615f2d565b526134008185615f2d565b50612fd0565b61341e915060803d8111610e1757610e088183615bee565b5f6133ea565b61343b9060203d8111610ee157610ed28183615bee565b61339a565b141590505f8061334e565b8161345591615bee565b61050257835f613339565b965096506020863d8211613490575b8161347c60209383615bee565b81010312610c9c579451958e9590816132bc565b3d915061346f565b9b50919250906134a88b85616488565b6101000361010081116135925760ff1061357e57908b929160405163348051d760e11b815284600482015284816024815f51602061a8b65f395f51905f525afa80156104e357606a60209161355d938891613564575b506040519283915f51602061a9165f395f51905f52828401525f51602061a8965f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018883820152030190601f1982018152615bee565b5f9b61326f565b61357891503d808a833e6111228183615bee565b5f6134fe565b634e487b7160e01b8c52601160045260248cfd5b634e487b7160e01b8d52601160045260248dfd5b6135ae6184e3565b50613213565b634e487b7160e01b8a52604160045260248afd5b9092506020813d82116135f3575b816135e360209383615bee565b81010312610c9c5751915f612ccd565b3d91506135d6565b50612062565b602091925061360e616495565b82828601015201908591612052565b848101808211612c1c57806103e802906103e882048103612c3057683635c9adc5dea000000290808204670de0b6b3a76400001490151715612c1c579085916136668285615f2d565b5201612034565b50346101f057806003193601126101f05760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b8181106136cc576102b1856102a581870382615bee565b82546001600160a01b03168452602090930192600192830192016136b5565b50346101f057806003193601126101f05760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b81811061374a576102b1856102a581870382615bee565b82546001600160a01b0316845260209093019260019283019201613733565b50346101f057806003193601126101f057601d5461378681615e80565b6137936040519182615bee565b818152601d83526020810191837f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f845b8383106138975786858760405192839260208401906020855251809152604084019160408260051b8601019392815b8383106137ff5786860387f35b919395509193603f198782030183528551906020604082019260018060a01b0381511683520151916040602083015282518091526060820190602060608260051b850101940192855b82811061386c575050505050602080600192970193019301909286959492936137f2565b909192939460208061388a600193605f198782030189528951615c51565b9701950193929101613848565b6040516138a381615bb8565b82546001600160a01b031681526001830180546138bf81615e80565b916138cd6040519384615bee565b8183528a526020808b20908b9084015b8382106139035750505050600192826020928360029501528152019201920191906137c3565b60016020819260405161391a81610720818a615dff565b8152019301910190916138dd565b50346101f057806003193601126101f05760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b818110613987576102b1856102a581870382615bee565b82546001600160a01b0316845260209093019260019283019201613970565b50346101f057806003193601126101f0576001610ca06040516139c98282615bee565b60648152601f1982019081366020830137845b60648110614d0a575083604051916139f48584615bee565b60648352865b848110614cee575086915b614445575b505083805b614401575b50508260405191613a258484615bee565b606483528036602085013785825b61439c575b50613a466040519485615bee565b6064845285825b614377575b50509084915b613aae575b50509080929181935b613a6e578280f35b606384101561214557613a818482615f2d565b515193828101948582116121315790613aa686612106869798946120fe889688615f2d565b019392613a66565b8360648310156143715750604051634b88b8ad60e11b815291602083600481895f51602061a8b65f395f51905f525af1928315610ce757869361433e575b508515613ef057858060405160208101906370a0823160e01b825230602482015260248152613b1c604482615bee565b51905f51602061a8f65f395f51905f525afa50613b3a61085d617d2f565b50613b43616186565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015612663576108aa8187613b779301600e55615d83565b905560018060a01b0360115416600f5460e01b60105490613b966180b0565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818b5260205260408a206040516020810190613bda81610926888886618099565b5190208b5260205260ff600360408c2001541615613ee2575b6001600160a01b0384165f908152600d60205260409020908a52602052610926613c2c60408b2093604051928391602083019586618099565b519020885260205286604081209187830154926002810154613c4e8186616488565b61257d578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f51602061a8b65f395f51905f525afa968715610ce7578697613eaa575b506001908201610100031b5f1901811b1986165f51602061a8b65f395f51905f523b15610fe6576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528381606481835f51602061a8b65f395f51905f525af1908115610ca8578491613e95575b5050613d23618269565b9015908115613e89575b50610ee85750505050613d3e618da2565b6020805460405163095ea7b360e01b81526001600160a01b0390911660048201525f19602482015290816044818a5f51602061a8f65f395f51905f525af180156104b257613e6d575b506020548690608090613dc5906001600160a01b0316613da78587615f2d565b51604051948580948193638307c65560e01b8352836004840161600f565b03925af19081156104b2578791613e4f575b50613de28286615f2d565b52613ded8185615f2d565b505b60405192631135fc2960e21b84526004840152602083602481895f51602061a8b65f395f51905f525af1908115610ce75785938492613e31575b500191613a58565b613e489060203d8111610ee157610ed28183615bee565b505f613e29565b613e67915060803d8111610e1757610e088183615bee565b5f613dd7565b613e849060203d8111610ee157610ed28183615bee565b613d87565b5f19141590505f613d2d565b81613e9f91615bee565b61050657825f613d19565b955095506020853d8211613eda575b81613ec660209383615bee565b81010312610c9c579351948b949081613c9f565b3d9150613eb9565b613eea6184e3565b50613bf3565b613efa8183615f2d565b515f8060405160208101906370a0823160e01b825230602482015260248152613f24604482615bee565b51905f51602061a8d65f395f51905f525afa50613f4261085d617d2f565b50613f4b616165565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015612b4c576108aa8188613f7f9301600e55615d83565b905560018060a01b0360115416600f5460e01b60105490613f9e6180b0565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690815f5260205260405f206040516020810190613fe281610926888886618099565b5190205f5260205260ff600360405f2001541615614330575b6001600160a01b0384165f908152600d60205260409020905f5260205261092661403460405f2093604051928391602083019586618099565b5190205f5260205260405f20878101549260028201546140548186616488565b614263575b8254604051630667f9d760e41b81526001600160a01b038616600482015260248101829052959091906020876044815f51602061a8b65f395f51905f525afa968715612a04575f97614230575b506001908201610100031b5f1901811b198616915f51602061a8b65f395f51905f523b15610c9c576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201525f81606481835f51602061a8b65f395f51905f525af18015612a0457614217575b509089929161412d618269565b91901591821561420c575b5050610ee8575050505061414a618da2565b6020805461416691906001600160a01b03166128ed8486615f2d565b03818a5f51602061a8d65f395f51905f525af180156104b2576141f0575b5060205486906080906141a4906001600160a01b03166133ba8587615f2d565b03925af19081156104b25787916141d2575b506141c18286615f2d565b526141cc8185615f2d565b50613def565b6141ea915060803d8111610e1757610e088183615bee565b5f6141b6565b6142079060203d8111610ee157610ed28183615bee565b614184565b141590505f80614138565b6142269193929a505f90615bee565b5f9890915f614120565b9096506020813d821161425b575b8161424b60209383615bee565b81010312610c9c575195816140a6565b3d915061423e565b61426d8186616488565b610100036101008111612b2a5760ff8111612b2a5760405163348051d760e11b8152908b901b600482018190525f826024815f51602061a8b65f395f51905f525afa8015612a0457606a614323916020945f91612b1057506040519485915f51602061a9165f395f51905f52828401525f51602061a8965f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81015f838201520301601f198101845283615bee565b8310156115c55750614059565b6143386184e3565b50613ffb565b9092506020813d8211614369575b8161435960209383615bee565b81010312610c9c5751915f613aec565b3d915061434c565b50613a5d565b818110156143975760209061438a616495565b8282880101520182613a4d565b613a52565b909160648210156143fa578101808211612c1c57806103e802906103e882048103612c3057683635c9adc5dea000000290808204670de0b6b3a76400001490151715612c1c57859182916143f08287615f2d565b5201819291613a33565b9190613a38565b6063811015614440576144148183615f2d565b515185820190818311612c3057916144388261210686956120fe8b98968997615f2d565b019091613a0f565b613a14565b856064831015614ce85750604051634b88b8ad60e11b8152916020836004818b5f51602061a8b65f395f51905f525af1928315613030578893614cb5575b50861561486957878060405160208101906370a0823160e01b8252306024820152602481526144b3604482615bee565b51905f51602061a8f65f395f51905f525afa506144d161085d617d2f565b506144da616186565b6370a0823163ffffffff19600f541617600f55600e54600160401b8110156130f3576108aa818961450e9301600e55615d83565b905560018060a01b0360115416600f5460e01b896010549160ff600360406145346180b0565b6001600160a01b0388165f908152600d602052604090209095909463ffffffff60e01b169485825260205281812082516020810190614578816109268c8c86618099565b5190208252602052200154161561485b575b6001600160a01b0384165f908152600d60205260409020908c526020526109266145c360408d2093604051928391602083019586618099565b5190208a52602052886040812091898301549260028101546145e58186616488565b6130d9578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f51602061a8b65f395f51905f525afa968715610ce7578697614823575b506001908201610100031b5f1901811b1986165f51602061a8b65f395f51905f523b15610fe6576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528381606481835f51602061a8b65f395f51905f525af1908115610ca857849161480e575b50506146ba618269565b9015908115614802575b50610ee857505050506146d5618da2565b6020805460405163095ea7b360e01b81526001600160a01b0390911660048201525f19602482015290816044818c5f51602061a8f65f395f51905f525af18015613059576147e6575b50602054889060809061473e906001600160a01b0316613da78587615f2d565b03925af19081156130595789916147c8575b5061475b8286615f2d565b526147668185615f2d565b505b60405192631135fc2960e21b845260048401526020836024818b5f51602061a8b65f395f51905f525af190811561303057879384926147aa575b500191613a05565b6147c19060203d8111610ee157610ed28183615bee565b505f6147a2565b6147e0915060803d8111610e1757610e088183615bee565b5f614750565b6147fd9060203d8111610ee157610ed28183615bee565b61471e565b5f19141590505f6146c4565b8161481891615bee565b61050657825f6146b0565b955095506020853d8211614853575b8161483f60209383615bee565b81010312610c9c579351948d949081614636565b3d9150614832565b6148636184e3565b5061458a565b6148738183615f2d565b51888060405160208101906370a0823160e01b82523060248201526024815261489d604482615bee565b51905f51602061a8d65f395f51905f525afa506148bb61085d617d2f565b506148c4616165565b6370a0823163ffffffff19600f541617600f55600e54600160401b8110156135b4576108aa816148f692600e55615d83565b9055601154600f546010548b926001600160a01b03169160e01b6149186180b0565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b169081865260205260408520604051602081019061495c81610926888886618099565b519020865260205260ff60036040872001541615614ca7575b6001600160a01b0384165f908152600d602052604090209085526020526109266149ae6040862093604051928391602083019586618099565b51902083526020526040822080549360028201546149cc8187616488565b614bdc575b8254604051630667f9d760e41b81526001600160a01b038616600482015260248101829052969091906020886044815f51602061a8b65f395f51905f525afa9788156104b2578798614ba4575b506001908201610100031b5f1901811b198716915f51602061a8b65f395f51905f523b156104fe576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528481606481835f51602061a8b65f395f51905f525af19081156104e3578591614b8f575b5050614aa5618269565b919015918215614b84575b5050610ee85750505050614ac2618da2565b60208054614ade91906001600160a01b03166128ed8486615f2d565b03818c5f51602061a8d65f395f51905f525af1801561305957614b68575b506020548890608090614b1c906001600160a01b03166133ba8587615f2d565b03925af1908115613059578991614b4a575b50614b398286615f2d565b52614b448185615f2d565b50614768565b614b62915060803d8111610e1757610e088183615bee565b5f614b2e565b614b7f9060203d8111610ee157610ed28183615bee565b614afc565b141590505f80614ab0565b81614b9991615bee565b61050257835f614a9b565b965096506020863d8211614bd4575b81614bc060209383615bee565b81010312610c9c579451958e959081614a1e565b3d9150614bb3565b9b5091925090614bec8b85616488565b6101000361010081116135925760ff1061357e57908b929160405163348051d760e11b815284600482015284816024815f51602061a8b65f395f51905f525afa80156104e357606a602091614ca093889161356457506040519283915f51602061a9165f395f51905f52828401525f51602061a8965f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018883820152030190601f1982018152615bee565b5f9b6149d1565b614caf6184e3565b50614975565b9092506020813d8211614ce0575b81614cd060209383615bee565b81010312610c9c5751915f614483565b3d9150614cc3565b50613a0a565b6020919250614cfb616495565b828286010152019085916139fa565b848101808211612c1c57806103e802906103e882048103612c3057683635c9adc5dea000000290808204670de0b6b3a76400001490151715612c1c57908591614d538285615f2d565b52016139dc565b50346101f057806003193601126101f05760405163975a6ce960e01b81526020600482015260076024820152661b585a5b9b995d60ca1b604482015281816064815f51602061a8b65f395f51905f525afa9081156101f357614de3916020918491614fbf575b50604051809381926371ee464d60e01b8352604060048401526044830190615c51565b6301260bd460248301520381855f51602061a8b65f395f51905f525af180156101f357614f90575b5060405161183e808201908282106001600160401b03831117614f7c57604091839161905883395f51602061a8d65f395f51905f5281525f51602061a8f65f395f51905f52602082015203019082f08015611db55760018060a01b03166bffffffffffffffffffffffff60a01b60205416176020555f51602061a8b65f395f51905f523b156101f057806040516318caf8e360e31b81525f51602061a8f65f395f51905f52600482015260406024820152600460448201526308ca482b60e31b60648201528181608481835f51602061a8b65f395f51905f525af180156101f357614f67575b50505f51602061a8b65f395f51905f523b156101f057806040516318caf8e360e31b81525f51602061a8d65f395f51905f5260048201526040602482015260056044820152640a68ca482b60db1b60648201528181608481835f51602061a8b65f395f51905f525af180156101f3576101df5750f35b81614f7191615bee565b6101f057805f614ef1565b634e487b7160e01b84526041600452602484fd5b6020813d602011614fb7575b81614fa960209383615bee565b81010312610c9c5751614e0b565b3d9150614f9c565b614fd391503d8086833e6111228183615bee565b5f614dc0565b50346101f05760403660031901126101f05750602061500e604051614ffd81615bb8565b6004358152602435838201526160ae565b604051908152f35b905034610c9c5761502636615b99565b90919015615b92576001905b60205463549387df60e11b82525f600483018190525f51602061a8d65f395f51905f5260248401525f51602061a8f65f395f51905f52604484015290829060649082906001600160a01b03165afa908115612a04575f91615b78575b506002821015615b6457836001831491825f146156fb576150ae90615f1d565b5184105f51602061a8b65f395f51905f523b1561117c5760405190632631f2b160e11b8252600482015281816024815f51602061a8b65f395f51905f525afa80156101f3576156e6575b508060405160208101906370a0823160e01b825230602482015260248152615121604482615bee565b51905f51602061a8d65f395f51905f525afa5061513f61085d617d2f565b50615148616165565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015611153576108aa81600161517d9301600e55615d83565b905560018060a01b0360115416600f5460e01b6010549061519c6180b0565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908189526020526040882060405160208101906151e081610926888886618099565b519020895260205260ff600360408a20015416156156d8575b6001600160a01b0384165f908152600d602052604090209088526020526109266152326040892093604051928391602083019586618099565b519020865260205284604081209160018301549260028101546152558186616488565b611023578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f51602061a8b65f395f51905f525afa968715610ce757869761569f575b506001908201610100031b5f1901811b1986165f51602061a8b65f395f51905f523b15610fe6576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528381606481835f51602061a8b65f395f51905f525af1908115610ca857849161568a575b505061532a618269565b901590811561567e575b50610ee85750505050615345618da2565b6020805460405163095ea7b360e01b81526001600160a01b0390911660048201525f1960248201529081604481885f51602061a8d65f395f51905f525af180156104e35761565f575b505b6040516370a0823160e01b8152306004820152926020846024815f51602061a8d65f395f51905f525afa9384156104e357859461562b575b506040516370a0823160e01b8152306004820152916020836024815f51602061a8f65f395f51905f525afa928315610ce75786936155f4575b506080826154329560018060a01b03602054169089604051809981958294638307c65560e01b845260048401615fc9565b03925af1938415610ce75786946155d3575b50835161544f578580f35b15615512576040516370a0823160e01b81523060048201526020816024815f51602061a8f65f395f51905f525afa908115610ce75786916154de575b5061549992610c1b91616083565b516040516370a0823160e01b81523060048201526020816024815f51602061a8d65f395f51905f525afa908115610ca8578491610c705750610c1b90610c6793616083565b90506020813d60201161550a575b816154f960209383615bee565b81010312610c9c575161549961548b565b3d91506154ec565b6040516370a0823160e01b81523060048201529193916020816024815f51602061a8d65f395f51905f525afa908115610ce757869161559f575b50610c1b9061555a93616083565b516040516370a0823160e01b81523060048201526020816024815f51602061a8f65f395f51905f525afa908115610ca8578491610d855750610d8092610c1b91616083565b90506020813d6020116155cb575b816155ba60209383615bee565b81010312610c9c575161555a61554c565b3d91506155ad565b6155ed91945060803d608011610e1757610e088183615bee565b925f615444565b9392506020843d602011615623575b8161561060209383615bee565b81010312610c9c57925191926080615401565b3d9150615603565b9093506020813d602011615657575b8161564760209383615bee565b81010312610c9c5751925f6153c8565b3d915061563a565b6156779060203d602011610ee157610ed28183615bee565b505f61538e565b5f19141590505f615334565b8161569491615bee565b61050657825f615320565b955095506020853d6020116156d0575b816156bc60209383615bee565b81010312610c9c57935194899490816152a6565b3d91506156af565b6156e06184e3565b506151f9565b816156f091615bee565b61050257835f6150f8565b6157059150615f10565b5183105f51602061a8b65f395f51905f523b15610c9c5760405190632631f2b160e11b825260048201525f816024815f51602061a8b65f395f51905f525afa8015612a0457615b4f575b50838060405160208101906370a0823160e01b825230602482015260248152615779604482615bee565b51905f51602061a8d65f395f51905f525afa5061579761085d617d2f565b506157a0616165565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015611153576108aa8160016157d59301600e55615d83565b905560018060a01b0360115416600f5460e01b601054906157f46180b0565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b169081895260205260408820604051602081019061583881610926888886618099565b519020895260205260ff600360408a2001541615615b41575b6001600160a01b0384165f908152600d6020526040902090885260205261092661588a6040892093604051928391602083019586618099565b519020865260205284604081209160018301549260028101546158ad8186616488565b615a6b575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f51602061a8b65f395f51905f525afa968715610ce7578697615a32575b506001908201610100031b5f1901811b198616915f51602061a8b65f395f51905f523b15610fe6576040516370ca10bb60e01b81526001600160a01b038616600482015260248101919091529089901b9190911760448201528381606481835f51602061a8b65f395f51905f525af1908115610ca8578491615a1d575b505086615987618269565b919015918215615a12575b5050610ee857505050506159a4618da2565b6020805460405163095ea7b360e01b81526001600160a01b039091166004820152602481018590529081604481885f51602061a8d65f395f51905f525af180156104e3576159f3575b50615390565b615a0b9060203d602011610ee157610ed28183615bee565b505f6159ed565b14159050875f615992565b81615a2791615bee565b61050657825f61597c565b955095506020853d602011615a63575b81615a4f60209383615bee565b81010312610c9c57935194899490816158ff565b3d9150615a42565b90919250615a798185616488565b61010003610100811161160e5760ff811161160e5760405163348051d760e11b8152600190911b6004820181905289826024815f51602061a8b65f395f51905f525afa801561160357606a615b30916020948d916115e957506040519485915f51602061a9165f395f51905f52828401525f51602061a8965f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018d838201520301601f198101845283615bee565b8810156115c55750908792916158b2565b615b496184e3565b50615851565b615b5c9194505f90615bee565b5f925f61574f565b634e487b7160e01b5f52602160045260245ffd5b615b8c91503d805f833e6102158183615bee565b5f61508e565b5f90615032565b6040906003190112610c9c57600435906024358015158103610c9c5790565b604081019081106001600160401b03821117612b4c57604052565b606081019081106001600160401b03821117612b4c57604052565b90601f801991011681019081106001600160401b03821117612b4c57604052565b60206040818301928281528451809452019201905f5b818110615c325750505090565b82516001600160a01b0316845260209384019390920191600101615c25565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310615ca757505050505090565b9091929394603f1982820301835285516020606081604085019360018060a01b0381511686520151936040838201528451809452019201905f905b808210615d015750505060208060019297019301930191939290615c98565b82516001600160e01b031916845260209384019390920191600190910190615ce2565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310615d5657505050505090565b9091929394602080615d74600193603f198682030187528951615c51565b97019301930191939290615d47565b600e54811015615d9b57600e5f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b601f54811015615d9b57601f5f5260205f2001905f90565b90600182811c92168015615df5575b6020831014615de157565b634e487b7160e01b5f52602260045260245ffd5b91607f1691615dd6565b5f9291815491615e0e83615dc7565b8083529260018116908115615e635750600114615e2a57505050565b5f9081526020812093945091925b838310615e49575060209250010190565b600181602092949394548385870101520191019190615e38565b915050602093945060ff929192191683830152151560051b010190565b6001600160401b038111612b4c5760051b60200190565b602081830312610c9c578051906001600160401b038211610c9c57019080601f83011215610c9c578151615eca81615e80565b92615ed86040519485615bee565b81845260208085019260051b820101928311610c9c57602001905b828210615f005750505090565b8151815260209182019101615ef3565b805115615d9b5760200190565b805160011015615d9b5760400190565b8051821015615d9b5760209160051b010190565b90816020910312610c9c57518015158103610c9c5790565b90816020910312610c9c575190565b9190826040910312610c9c57604051615f8081615bb8565b6020808294805184520151910152565b90608082820312610c9c57615fc1906040805193615fad85615bd3565b805185526020810151602086015201615f68565b604082015290565b92919060a08401935f81525f51602061a8d65f395f51905f5260208201525f51602061a8f65f395f51905f5260408201526002821015615b645760809160608201520152565b92919060a08401935f81525f51602061a8f65f395f51905f5260208201525f51602061a8d65f395f51905f5260408201526002821015615b645760809160608201520152565b9081526001600160a01b039182166020820152911660408201525f6060820152608081019190915260a00190565b91908203918211612b2a57565b811561609a570490565b634e487b7160e01b5f52601260045260245ffd5b80516a084595161401484a0000008102908082046a084595161401484a0000001490151715612b2a5760206160e592015190616090565b90565b6001600160401b038111612b4c57601f01601f191660200190565b602081830312610c9c578051906001600160401b038211610c9c570181601f82011215610c9c57805190616136826160e8565b926161446040519485615bee565b82845260208383010111610c9c57815f9260208093018386015e8301015290565b601180546001600160a01b0319165f51602061a8d65f395f51905f52179055565b601180546001600160a01b0319165f51602061a8f65f395f51905f52179055565b602081830312610c9c578051906001600160401b038211610c9c570181601f82011215610c9c5780516161d981615e80565b926161e76040519485615bee565b81845260208085019260061b84010192818411610c9c57602001915b838310616211575050505090565b60206040916162208486615f68565b815201920191616203565b60a0919360209360808301958352600180851b031684830152600180841b03166040820152608060608201528451809452019201905f5b81811061626f5750505090565b8251845260209384019390920191600101616262565b602081830312610c9c578051906001600160401b038211610c9c57019080601f83011215610c9c578151906162b982615e80565b926162c76040519485615bee565b82845260208085019360051b820101918211610c9c57602001915b8183106162ef5750505090565b8251600a811015610c9c578152602092830192016162e2565b60085460ff1680156163175790565b50604051630667f9d760e41b81525f51602061a8b65f395f51905f5260048201526519985a5b195960d21b60248201526020816044815f51602061a8b65f395f51905f525afa908115612a04575f91616371575b50151590565b90506020813d60201161639b575b8161638c60209383615bee565b81010312610c9c57515f61636b565b3d915061637f565b602081830312610c9c578051906001600160401b038211610c9c57019080601f83011215610c9c578151906163d782615e80565b926163e56040519485615bee565b82845260208085019360051b820101918211610c9c57602001915b81831061640d5750505090565b82516001600160a01b0381168103610c9c57815260209283019201616400565b905f51602061a8b65f395f51905f523b15610c9c576040519163260a5b1560e21b8352600483015260248201525f816044815f51602061a8b65f395f51905f525afa8015612a045761647c5750565b5f61648691615bee565b565b91908201809211612b2a57565b604051906164a282615bd3565b815f81525f602082015260408051916164ba83615bb8565b5f83525f60208401520152565b5f51602061a8b65f395f51905f523b15610c9c5760405190636d83fe6960e11b825260048201525f60248201525f816044815f51602061a8b65f395f51905f525afa8015612a045761647c5750565b5f5b815181101561654b5761652b8183615f2d565b51600a811015615b645760051461654457600101616518565b5050600190565b50505f90565b5f5b815181101561654b576165668183615f2d565b51600a811015615b645760091461654457600101616553565b5f5b815181101561654b576165948183615f2d565b51600a811015615b645760081461654457600101616581565b60405190602082019263095ea7b360e01b845260018060a01b0316928360248401525f196044840152604483526165e5606484615bee565b82516001600160a01b038316915f91829182855af190616603617d2f565b82616663575b5081616658575b501561661b57505050565b616653616486936040519063095ea7b360e01b602083015260248201525f60448201526044815261664d606482615bee565b82617dad565b617dad565b90503b15155f616610565b8051919250811591821561667b575b5050905f616609565b61668e9250602080918301019101615f41565b5f80616672565b604051906166a4606083615bee565b603682527536103a3790383934b1b29030b33a32b91039bbb0b81760511b6040837f45786563757465642070726963652073686f756c64206265206f72206571756160208201520152565b60c09490945260405163549387df60e11b8152600481018290526001600160a01b0380841660248301528416604482015291939290915f8180606481016101208490520381836001600160a01b0389165af18015612a0457616758915f91617d15575b50615f10565b5161010052606060a08190526040516167b4916167759082615bee565b602381527f53656c6c206c696d69742073686f756c6420626520677265617465722074686160208201526206e20360ec1b604082015261010051617e70565b60a051505f8061683c61686a6040516167cf60a05182615bee565b603681527f544553543a2054657374696e672070726963657320666f722070616972202573602082015275080b4f88095ccb8814d95b1b081b1a5b5a5d0e88095960521b6040820152604051928391638ef3f39960e01b60208401526080602484015260a4830190615c51565b6001600160a01b038a811660448401528716606483015261010051608483015203601f198101835282615bee565b6020815191016a636f6e736f6c652e6c6f675afa506040516348bd7dfd60e01b8152600481018390526001600160a01b038086166024830152821660448201525f8180606481010381836001600160a01b0389165af18015612a04576168d7915f91617cfb575b50616551565b90604051916168e760a084615bee565b60048352608036602085013715617cee575f5b61690383615f10565b526103e8610100510461691583615f1d565b52815160021015615d9b5760a05182016101005160011c9052815160031015615d9b5761010051608083015260405163155adc9160e31b8152935f858061696286868b8a6004860161622b565b0381836001600160a01b0386165af1948515612a04575f95617cd2575b5061699261698c86615f10565b516160ae565b85515f19810191908211612b2a576169b061698c616a0a9389615f2d565b60a05160405192906169c29084615bee565b603083527f5072696365206174206c696d69742073686f756c6420626520736d616c6c657260208401526f0207468616e20707269636520617420360841b6040840152617ed7565b616a1661698c86615f10565b85515f198101908111612b2a57616ab1616aca5f93616a3961698c86958c615f2d565b60a051604051929190616a4c9084615bee565b602d83527f544553543a20507269636520617420303a2025642c207072696365206174207360208401526c195b1b081b1a5b5a5d0e880959609a1b604084015260405194859363ca47c4eb60e01b602086015260a05160248601526084850190615c51565b916044840152606483015203601f198101835282615bee565b6020815191016a636f6e736f6c652e6c6f675afa5060a051604051616b3091616af39082615bee565b602581527f544553543a2054657374696e67206265686176696f7220666f72207072696365602082015264020617420360dc1b6040820152617f0c565b616b82616b3c86615f10565b5151604060e081905280519190616b539083615bee565b601882527f4e6f6d696e61746f722073686f756c646e2774206265203000000000000000006020830152617e70565b616bd36020616b9087615f10565b51015160e05180519190616ba49083615bee565b601a82527f44656e6f6d696e61746f722073686f756c646e277420626520300000000000006020830152617e70565b616bdf61698c86615f10565b9460e05150616c1e8660e05151616bf860e05182615bee565b6014815273151154d50e88141c9a58d948185d080c0e88095960621b6020820152617f50565b616c26616495565b5083515f198101908111612b2a57616c3e9085615f2d565b516005818102048103612b2a575f8060e0515160208101906370a0823160e01b825230602482015260248152616c75604482615bee565b51908b5afa50616c8661085d617d2f565b50601180546001600160a01b0319166001600160a01b038a16179055600f805463ffffffff19166370a08231179055600e54600160401b811015612b4c576108aa816001616cd79301600e55615d83565b90556011546001600160a01b031661014052600f546010549060e01b616cfb6180b0565b610140516001600160a01b03165f908152600d60205260409020909163ffffffff60e01b1690815f5260205260e0515f2060e051516020810190616d4481610926888886618099565b5190205f5260205260ff600360e0515f2001541615617cc4575b610140516001600160a01b03165f908152600d60205260409020905f52602052610926616d9c60e0515f209360e05151928391602083019586618099565b5190205f5260205260e0515f206001810154916002820154616dbe8185616488565b617bae575b825460e05151630667f9d760e41b8152610140516001600160a01b0316600482015260248101829052949091906020866044815f51602061a8b65f395f51905f525afa958615617b6e575f96617b7a575b506001908201610100031b5f1901811b1985165f51602061a8b65f395f51905f523b15610c9c5760e051516370ca10bb60e01b8152610140516001600160a01b0316600482015260248101939093526005840290911b1760448201525f81606481835f51602061a8b65f395f51905f525af18015617b6e57617b59575b50616e9a618269565b9015918215617b4b575b5050617a57575050616eb4618da2565b60e05151634b88b8ad60e11b8152602081600481610120515f51602061a8b65f395f51905f525af180156173ab5761012051608052617a24575b5060015b8451811015617478575f80616fa9616fcf616f0c85615daf565b50616f17868b615f2d565b51616fbb610720616f8360e0515194616f3260a05187615bee565b603086527f544553543a2054657374696e67206265686176696f7220666f7220707269636560208701526f1030ba1012b99037b3103634b6b4ba1760811b60e05187015260e0515192838092615dff565b60e05151635821efa160e01b602082015260a05160248201529586946084860190615c51565b84810360231901604486015290615c51565b90606483015203601f198101835282615bee565b6020815191016a636f6e736f6c652e6c6f675afa50616ff161698c8284615f2d565b5f8061706661708a8c617004878c615f2d565b5160e051519161701660e05184615bee565b601783527f544553543a205377617070696e67202564206f66202573000000000000000000602084015260e0515194859363038fd88960e31b602086015260a05160248601526084850190615c51565b60448401929092526001600160a01b0316606483015203601f198101835282615bee565b6020815191016a636f6e736f6c652e6c6f675afa508460808a896170ce6170b1878c615f2d565b5160e05151638307c65560e01b8152958694859460048601616055565b03816101205160018060a01b038a165af19081156173ab57610120519161745a575b508051806a084595161401484a0000008102046a084595161401484a00000014811517156174405761713d617148916a084595161401484a000000617135878c615f2d565b519102616090565b9160e05101516160ae565b9161718c8260e0515161715d60e05182615bee565b601d81527f544553543a20202d2045786563757465642070726963653a20202025640000006020820152617f50565b6171cf8160e051516171a060e05182615bee565b601d81527f544553543a20202d20507269636520617420616d6f756e743a202025640000006020820152617f50565b6172128360e051516171e360e05182615bee565b601d81527f544553543a20202d20507269636520616674657220737761703a2025640000006020820152617f50565b60c051156173ba5760a05160e05151617346946172eb93909261728192919061723b9083615bee565b602c82527f50726963652073686f756c642062652067726561746564207468616e2065786560208301526b31baba32b210383934b1b29760a11b60e05183015285617f93565b60a05160e0515191906172949083615bee565b603782527f45786563757465642070726963652073686f756c64206265206772656174657260208301527f207468616e20707269636520616674657220737761702e00000000000000000060e05183015283617ed7565b60a05160e0515191906172fe9083615bee565b602e82527f50726963652073686f756c642062652067726561746564207468616e2070726960208301526d31b29030b33a32b91039bbb0b81760911b60e05183015289617ed7565b60e0515190631135fc2960e21b82526080516004830152602082602481610120515f51602061a8b65f395f51905f525af19182156173ab5760019261738d575b5001616ef2565b6173a49060203d8111610ee157610ed28183615bee565b505f617386565b60e051513d61012051823e3d90fd5b6173e3906173d461743b946173cd616695565b908d617f93565b6173dc616695565b908b617f93565b60e05151906173f460a05183615bee565b602d82527f50726963652073686f756c64206265206f7220657175616c20746f207072696360208301526c329030b33a32b91039bbb0b81760991b60e05183015289617f93565b617346565b634e487b7160e01b61012051526011600452602461012051fd5b617472915060803d8111610e1757610e088183615bee565b5f6170f0565b505091509193925060696101005102610100518104606914610100511517156174405760e051516348bd7dfd60e01b81526101208051600483018890526001600160a01b0387811660248501528681166044850152915160649485900497949192849291839188165af180156173ab576174fc916101205191617a07575b5061657f565b156178aa576175648460e0515161751560a05182615bee565b603681527f544553543a2054657374696e6720726576657274206265686176696f722061626020820152751bdd99481d1a19481cd95b1b081b1a5b5a5d0e88095960521b60e051820152617f50565b60e051805194906175759086615bee565b6001855260e051601f190136602087013761758f85615f10565b5260e0515163155adc9160e31b81526101205181806175b48888878c6004860161622b565b03816101205160018060a01b0388165af1908161788f575b506178235760016175db617fc8565b6308c379a014617795575b6173ab576175f5608094615f10565b519461761860e0515196879586948594638307c65560e01b865260048601616055565b61012051919003926001600160a01b03165af19081617778575b50617716576001617641617fc8565b6308c379a014617693575b6173ab575b61648660e0515161766460e05182615bee565b601781527f544553543a20416c6c207465737473207061737365642e0000000000000000006020820152617f0c565b61769b617fe3565b806176a7575b5061764c565b6101205160a05160e051519193506177109291906176c59082615bee565b603281527f544553543a204578706563746564206572726f72207768656e207377617070696020820152716e672061626f7665206c696d69743a20257360701b60e051820152618055565b5f6176a1565b60e0515162461bcd60e51b815260206004820152603360248201527f506f6f6c2073686f756c646e27742062652061626c6520746f20737761702061604482015272189bdd99481d1a19481cd95b1b081b1a5b5a5d606a1b6064820152608490fd5b6177909060803d608011610e1757610e088183615bee565b617632565b61779d617fe3565b806177a9575b506175e6565b6101205160a05160e0515191935061781d9291906177c79082615bee565b603881527f544553543a204578706563746564206572726f72207768656e2066657463686960208201527f6e672070726963652061626f7665206c696d69743a202573000000000000000060e051820152618055565b5f6177a3565b60e0515162461bcd60e51b815260206004820152603b60248201527f506f6f6c2073686f756c646e27742062652061626c6520746f2066657463682060448201527f7072696365732061626f7665207468652073656c6c206c696d697400000000006064820152608490fd5b6178a5903d8061012051833e611da68183615bee565b6175cc565b60a05160e0515161790c918691906178c29082615bee565b603181527f544553543a2054657374696e67206f7065726174696f6e732061626f766520746020820152701a19481cd95b1b081b1a5b5a5d0e880959607a1b60e051820152617f50565b60e0518051949061791d9086615bee565b6001855260e051601f190136602087013761793785615f10565b5260e051519363155adc9160e31b855261012051858061795d8488878c6004860161622b565b03816101205160018060a01b0388165af19081156173ab57608095617986926179ec5750615f10565b51946179a960e0515196879586948594638307c65560e01b865260048601616055565b61012051919003926001600160a01b03165af180156173ab576179cd575b50617651565b6179e59060803d608011610e1757610e088183615bee565b505f6179c7565b617a02903d8061012051833e611da68183615bee565b616752565b617a1e91503d8061012051833e6104d58183615bee565b5f6174f6565b6020813d602011617a4f575b81617a3d60209383615bee565b81010312610c9c57516080525f616eee565b3d9150617a30565b545f51602061a8b65f395f51905f523b15617b445760e051516370ca10bb60e01b815261012051610140516001600160a01b03166004830152602482019290925260448101929092528180606481010381610120515f51602061a8b65f395f51905f525af180156173ab57617b29575b60e0515162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b61012051617b3691615bee565b61012051617b445780617ac7565b6101205180fd5b600502141590505f80616ea4565b5f617b6391615bee565b5f610120525f616e91565b60e051513d5f823e3d90fd5b9095506020813d602011617ba6575b81617b9660209383615bee565b81010312610c9c57519481616e14565b3d9150617b89565b617bb88185616488565b610100036101008111612b2a5760ff8111612b2a5760e0515163348051d760e11b81526001821b60048201525f816024815f51602061a8b65f395f51905f525afa918215617b6e57617c74606a6020946001945f91617caa575b5060e051519586915f51602061a9165f395f51905f52828401525f51602061a8965f395f51905f5260e05184015269030ba32b9103a3430b7160b51b60a0518401528051918291018484015e81015f838201520301601f198101855284615bee565b1b836005021015617c855750616dc3565b60e0515162461bcd60e51b815260206004820152908190611109906024830190615c51565b617cbe91503d805f833e6111228183615bee565b5f617c12565b617ccc6184e3565b50616d5e565b617ce79195503d805f833e611da68183615bee565b935f61697f565b61271061010051046168fa565b617d0f91503d805f833e6104d58183615bee565b5f6168d1565b617d2991503d805f833e6102158183615bee565b5f616752565b3d15617d59573d90617d40826160e8565b91617d4e6040519384615bee565b82523d5f602084013e565b606090565b905f51602061a8b65f395f51905f523b15610c9c5760405191638466f41560e01b8352600483015260248201525f816044815f51602061a8b65f395f51905f525afa8015612a045761647c5750565b8151617dd8926001600160a01b03909216915f91829160200182855af1617dd2617d2f565b91618428565b80519081617de4575050565b602080617df5938301019101615f41565b15617dfc57565b60405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b6160e59392606092825260208201528160408201520190615c51565b5f51602061a8b65f395f51905f523b15610c9c57617eb8915f916040519384928392636cd1e26960e11b84526004840152846024840152606060448401526064830190615c51565b03815f51602061a8b65f395f51905f525afa8015612a045761647c5750565b905f51602061a8b65f395f51905f523b15610c9c575f91617eb86040519485938493636cd1e26960e11b855260048501617e54565b5f610926617f39829360405192839163104c13eb60e21b6020840152602060248401526044830190615c51565b6020815191016a636f6e736f6c652e6c6f675afa50565b617f7f617f395f93928493604051938492632d839cb360e21b6020850152604060248501526064840190615c51565b90604483015203601f198101835282615bee565b905f51602061a8b65f395f51905f523b15610c9c575f91617eb86040519485938493630389490b60e61b855260048501617e54565b5f9060033d11617fd457565b905060045f803e5f5160e01c90565b5f60443d106160e5576040513d600319016004823e8051913d60248401116001600160401b0384111761804f57828201928351916001600160401b038311618047573d8401600319018584016020011161804757506160e592910160200190615bee565b949350505050565b92915050565b618087617f395f93926109268594604051948593634b5c427760e01b6020860152604060248601526064850190615c51565b83810360231901604485015290615c51565b60209291908391805192839101825e019081520190565b6180bb601454615dc7565b618178576040519081826020600e549283815201600e5f5260205f20925f5b81811061815f5750506180ef92500383615bee565b81518060051b9080820460201490151715612b2a5761810d816160e8565b9061811b6040519283615bee565b80825261812a601f19916160e8565b013660208301375f5b835181101561815a578061814960019286615f2d565b5160208260051b8501015201618133565b509150565b84548352600194850194879450602090930192016180da565b6040516160e581610720816014615dff565b60078101906181998254615dc7565b61825557600191500190604051808360208295549384815201905f5260205f20925f5b81811061823c5750506181d192500383615bee565b81518060051b9080820460201490151715612b2a576181ef816160e8565b906181fd6040519283615bee565b80825261820c601f19916160e8565b013660208301375f5b835181101561815a578061822b60019286615f2d565b5160208260051b8501015201618215565b84548352600194850194879450602090930192016181bc565b506160e56107209160405192838092615dff565b5f806020600f5460e01b6182b76024618282600d61818a565b6040519485918183019563ffffffff60e01b1686528051918291018484015e810186838201520301601f198101845283615bee565b6011549151916001600160a01b03165afa906182d1617d2f565b601054909290600581901b906001600160fb1b03811603612b2a575f938051602081115f1461835c57506020905b5f925b82841061831157505050509190565b9091929561831f8783616488565b8351811015615d9b57830160200151600388901b91906001600160f81b031916881560088a8504141715612b2a576001921c179601929190618302565b906182ff565b905f806020600285015460e01b61837d60246182828861818a565b60048601549151916001600160a01b03165afa600361839a617d2f565b930154600581901b906001600160fb1b03811603612b2a575f938051602081115f1461842257506020905b5f925b8284106183d757505050509190565b909192956183e58783616488565b8351811015615d9b57830160200151600388901b91906001600160f81b031916881560088a8504141715612b2a576001921c1796019291906183c8565b906183c5565b9061844c575080511561843d57805190602001fd5b63d6bda27560e01b5f5260045ffd5b8151158061847d575b61845d575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15618455565b9080601f83011215610c9c57815161849d81615e80565b926184ab6040519485615bee565b81845260208085019260051b820101928311610c9c57602001905b8282106184d35750505090565b81518152602091820191016184c6565b601154600f546010546001600160a01b03909216915f9160e01b618507600d61818a565b90845f52600d60205260405f209063ffffffff60e01b1690815f5260205260405f20604051602081019061854081610926888886618099565b5190205f5260205260ff600360405f20015416618d61575f51602061a8b65f395f51905f523b15610c9c5760405163266cf10960e01b81525f81600481835f51602061a8b65f395f51905f525af18015612a0457618d4c575b506185a4600d618362565b90506040516365bc948160e01b81528660048201528581602481835f51602061a8b65f395f51905f525af1908115610ce7578691618ce4575b50805161864e57608460405162461bcd60e51b815260206004820152604060248201527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152fd5b855b8151811015618cdc578160206186698361869a95615f2d565b51604051630667f9d760e41b81526001600160a01b038c166004820152602481019190915293849081906044820190565b03815f51602061a8b65f395f51905f525afa928315613030578893618ca9575b508215618c51575b6186cc8282615f2d565b51601154604051630667f9d760e41b81526001600160a01b03909116600482018190526024820183905291906020816044815f51602061a8b65f395f51905f525afa908115618c46578b91618c15575b50618727600d618362565b91909382155f14618c0e575f19905b5f51602061a8b65f395f51905f523b15618bf5576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810185905260448101919091528c81606481835f51602061a8b65f395f51905f525af18015618b7a57908d91618bf9575b50506187a7600d618362565b601154909491506001600160a01b03165f51602061a8b65f395f51905f523b15618bf5576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528b81606481835f51602061a8b65f395f51905f525af18015618bea57908c91618bd1575b505082618bc6575b505015618bbc578793889360ff60135416618a41575b6001868601610100031b5f1901851b16841c8103618a335750906188c1917f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed60808b896109266188968d604051928391602083019586618099565b5190206188a38686615f2d565b51906040519283528a602084015260408301526060820152a1615f2d565b51906040519060808201928284106001600160401b03851117612b4c5760039360405282526020820193845260408201908152606082019360018552898952600d60205260408920868a5260205260408920604051602081019061892a816109268d8d86618099565b5190208a526020526040892092518355516001830155516002820155019051151560ff801983541691161790555b848452600d6020526040842081855260205260408420604051602081019061898581610926888886618099565b519020855260205260ff600360408620015416156189d6576040948452600d6020528484209084526020526109266189ca858520938651928391602083019586618099565b51902082526020522090565b60405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201526e3a143994903737ba103337bab7321760891b6064820152608490fd5b935091506001905b01618650565b9450618a8c9350618a528383615f2d565b51601154604051630667f9d760e41b81526001600160a01b0390911660048201526024810182905290959094602090869081906044820190565b03815f51602061a8b65f395f51905f525afa948515611603578a95618b89575b50618ab886600d618ebb565b959096618ac681600d618f94565b60115490939192906001600160a01b03165f51602061a8b65f395f51905f523b15618b85576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528c81606481835f51602061a8b65f395f51905f525af18015618b7a57908d91618b61575b505087618b59575b50949561883b575093509150600190618a3b565b96505f618b45565b81618b6b91615bee565b618b76578b5f618b3d565b8b80fd5b6040513d8f823e3d90fd5b8e80fd5b9094506020813d8211618bb4575b81618ba460209383615bee565b81010312610c9c5751935f618aac565b3d9150618b97565b9150600190618a3b565b141590505f80618825565b81618bdb91615bee565b618be6578a5f61881d565b8a80fd5b6040513d8e823e3d90fd5b8d80fd5b81618c0391615bee565b618b76578b5f61879b565b8c90618736565b90506020813d8211618c3e575b81618c2f60209383615bee565b81010312610c9c57515f61871c565b3d9150618c22565b6040513d8d823e3d90fd5b7f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5618ca1618c7f8484615f2d565b51604080516001600160a01b038e168152602081019290925290918291820190565b0390a16186c2565b9092506020813d8211618cd4575b81618cc460209383615bee565b81010312610c9c5751915f6186ba565b3d9150618cb7565b505050618958565b90503d8087833e618cf58183615bee565b81016040828203126104fe5781516001600160401b038111618d485781618d1d918401618486565b916020810151906001600160401b038211618d4457618d3d929101618486565b505f6185dd565b8880fd5b8780fd5b618d599194505f90615bee565b5f925f618599565b91939092505f52600d60205260405f20905f52602052610926618d9360405f2093604051928391602083019586618099565b5190205f5260205260405f2090565b6bffffffffffffffffffffffff60a01b6011541660115563ffffffff19600f5416600f55600e545f600e5580618e79575b505f60105560ff1960135416601355618ded601454615dc7565b80618df55750565b601f8111600114618e0757505f601455565b60145f52601f0160051c7fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec017fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ed5b818110618e6e57505060145f525f602081208160145555565b5f8155600101618e55565b600e5f527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd908101905b818110618eb05750618dd3565b5f8155600101618ea3565b91905f5b6101008110618ed257505090505f905f90565b8060ff0360ff8111612b2a576004850154600190911b906001600160a01b03165f51602061a8b65f395f51905f523b15610c9c576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f51602061a8b65f395f51905f525af18015612a0457618f84575b50618f5e84618362565b81618f7a575b50618f7157600101618ebf565b92505060019190565b905015155f618f64565b5f618f8e91615bee565b5f618f54565b91905f5b6101008110618fab57505090505f905f90565b60048401546001821b906001600160a01b03165f51602061a8b65f395f51905f523b15610c9c576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f51602061a8b65f395f51905f525af18015612a0457619047575b5061902a84618362565b8161903d575b50618f7157600101618f98565b905015155f619030565b5f61905191615bee565b5f61902056fe60c03461012457601f61183e38819003918201601f19168301916001600160401b0383118484101761012857808492604094855283398101031261012457610052602061004b8361013c565b920161013c565b6001600160a01b039182166080521660a0526040516116ed9081610151823960805181818160be015281816103cc015281816104000152818161053d01528181610671015281816106a5015281816107fe015281816108320152818161099201528181610bc601528181610c7901528181610e4701528181610f6901528181610f9d01528181611016015281816111f6015281816112d601526113bb015260a051818181608a015281816101cf0152818161045d0152818161074801528181610b7c01528181610d6e0152610da30152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101245756fe60806040526004361015610011575f80fd5b5f3560e01c806323eeca011461096057806348bd7dfd146108785780638307c655146106d7578063a9270fbe14610442578063aad6e4881461013f5763ecbbc0331461005b575f80fd5b3461013b57602036600319011261013b5760405161007a606082610a8e565b60028152602081019060403683377f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166100bb82610ac8565b527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166100ef82610ad5565b52604051918291602083019060208452518091526040830191905f5b818110610119575050500390f35b82516001600160a01b031684528594506020938401939092019160010161010b565b5f80fd5b3461013b57608036600319011261013b57610158610a0c565b610160610a22565b6064359067ffffffffffffffff821161013b573660238301121561013b5781600401359161018d83610ab0565b9261019b6040519485610a8e565b8084526024602085019160051b8301019136831161013b57602401905b828210610432575050506001600160a01b038381167f00000000000000000000000000000000000000000000000000000000000000009091168181149291831591826103fe575b82156103aa575b508115610397575b5061033b5782519361021f85610ab0565b9461022d6040519687610a8e565b80865261023c601f1991610ab0565b015f5b8181106103185750509061025291610da1565b915f5b81518110156102c7578061026b60019284610ae5565b5161027586610ac8565b518111156102c1576102919061028a87610ac8565b5111610fcf565b6102a561029e8285610ae5565b5185611291565b6102af8288610ae5565b526102ba8187610ae5565b5001610255565b50610291565b846040518091602082016020835281518091526020604084019201905f5b8181106102f3575050500390f35b82518051855260209081015181860152869550604090940193909201916001016102e5565b60209060405161032781610a72565b5f81525f8382015282828a0101520161023f565b60405163643c60f360e01b815260206004820152602d60248201527f546869732061646170746572206f6e6c7920737570706f72747320465241583c60448201526c2d3e534652415820737761707360981b6064820152608490fd5b6001600160a01b0383161490508561020e565b9091506001600160a01b0383169081141590816103ca575b509086610206565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614159050866103c2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031682141592506101ff565b81358152602091820191016101b8565b3461013b5761045036610a38565b6001600160a01b039182167f000000000000000000000000000000000000000000000000000000000000000090921682811493508315929190836106a3575b831561064f575b50821561063c575b505061033b57604051906104b3606083610a8e565b60028252602082019060403683371561052e576001600160801b036104d783610ac8565b526001600160801b036104e983610ad5565b52905b604051918291602083019060208452518091526040830191905f5b818110610515575050500390f35b8251845285945060209384019390920191600101610507565b6040516361c1c5e960e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602081600481855afa9081156105ff575f9161060a575b5061058784610ad5565b52602061059384610ad5565b51602460405180948193630a28a47760e01b835260048301525afa9081156105ff575f916105cd575b506105c683610ac8565b52906104ec565b90506020813d6020116105f7575b816105e860209383610a8e565b8101031261013b5751836105bc565b3d91506105db565b6040513d5f823e3d90fd5b90506020813d602011610634575b8161062560209383610a8e565b8101031261013b57518461057d565b3d9150610618565b6001600160a01b0316149050828061049e565b9092506001600160a01b03831690811415908161066f575b509184610496565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161415905084610667565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316831415935061048f565b3461013b5760a036600319011261013b576106f0610a0c565b6106f8610a22565b90606435600281101561013b57604051906060820182811067ffffffffffffffff821117610864576040525f82525f602083015260405161073881610a72565b5f808252602082015260408301527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116908416818114159182610830575b82156107dc575b5081156107c9575b5061033b576080936107a49360843593610af9565b6020604080519280518452828101518385015201518051604084015201516060820152f35b6001600160a01b0386161490508561078f565b9091506001600160a01b0386169081141590816107fc575b509086610787565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614159050866107f4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168214159250610780565b634e487b7160e01b5f52604160045260245ffd5b3461013b5761088636610a38565b50505060405161089760c082610a8e565b600581526020810160a036823760016108af83610ac8565b5260026108bb83610ad5565b5281516002101561094c576003606083015281516003101561094c576005608083015281516004101561094c57600860a0830152604051906020820192602083525180935260408201905f935b8085106109155783830384f35b9091825190600a8210156109385760208160019382935201930194019390610908565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b3461013b57604036600319011261013b5760408051906109808183610a8e565b6001825260208201601f1982013682377f000000000000000000000000000000000000000000000000000000000000000060601b6bffffffffffffffffffffffff19166109cc84610ac8565b52815192839260208401916020855251809252830191905f5b8181106109f3575050500390f35b82518452859450602093840193909201916001016109e5565b602435906001600160a01b038216820361013b57565b604435906001600160a01b038216820361013b57565b606090600319011261013b57600435906024356001600160a01b038116810361013b57906044356001600160a01b038116810361013b5790565b6040810190811067ffffffffffffffff82111761086457604052565b90601f8019910116810190811067ffffffffffffffff82111761086457604052565b67ffffffffffffffff81116108645760051b60200190565b80511561094c5760200190565b80516001101561094c5760400190565b805182101561094c5760209160051b010190565b94939092918582158015610d60575b610d585750610b179084610da1565b9160028110928315610938578115918280610d46575b15610d0e5750610b3f610b4791610ac8565b518310610fcf565b5a92156109385715610cfd57610b5d90836111d9565b84525b5a8103908111610ce95760208401526001600160a01b039081167f000000000000000000000000000000000000000000000000000000000000000090911603610c565760405163ef8b30f760e01b8152670de0b6b3a764000060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105ff575f91610c24575b505b60405190610c0d82610a72565b8152670de0b6b3a764000060208201526040830152565b90506020813d602011610c4e575b81610c3f60209383610a8e565b8101031261013b57515f610bfe565b3d9150610c32565b60405163266d6a8360e11b8152670de0b6b3a764000060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105ff575f91610cb7575b50610c00565b90506020813d602011610ce1575b81610cd260209383610a8e565b8101031261013b57515f610cb1565b3d9150610cc5565b634e487b7160e01b5f52601160045260245ffd5b610d07908361100c565b8452610b60565b60011480610d34575b610d22575b50610b47565b610b3f610d2e91610ad5565b5f610d1c565b50610d3e81610ad5565b518311610d17565b50610d5082610ac8565b518411610b2d565b955050505050565b506001600160a01b038581167f0000000000000000000000000000000000000000000000000000000000000000909116148015610b08575060028310610b08565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691168181149283159283610f9b575b8315610f47575b508215610f34575b505061033b5760405190610e00606083610a8e565b60028252604036602084013715610e38576001600160801b03610e2282610ac8565b526001600160801b03610e3482610ad5565b5290565b6040516361c1c5e960e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602081600481855afa9081156105ff575f91610f02575b50610e9183610ad5565b526020610e9d83610ad5565b51602460405180948193630a28a47760e01b835260048301525afa9081156105ff575f91610ed0575b50610e3482610ac8565b90506020813d602011610efa575b81610eeb60209383610a8e565b8101031261013b57515f610ec6565b3d9150610ede565b90506020813d602011610f2c575b81610f1d60209383610a8e565b8101031261013b57515f610e87565b3d9150610f10565b6001600160a01b03161490505f80610deb565b9092506001600160a01b038316908114159081610f67575b50915f610de3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141590505f610f5f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168314159350610ddc565b15610fd657565b60405162461bcd60e51b815260206004820152600e60248201526d131a5b5a5d08195e18d95959195960921b6044820152606490fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911680820361112d57604051630a28a47760e01b81526004810184905290602082602481865afa9182156105ff575f926110f7575b50915f936110836110b39360209530903390611400565b604051632d182be560e21b8152600481019190915233602482015230604482015293849283919082906064820190565b03925af19081156105ff575f916110c8575090565b90506020813d6020116110ef575b816110e360209383610a8e565b8101031261013b575190565b3d91506110d6565b929091506020833d602011611125575b8161111460209383610a8e565b8101031261013b579151905f61106c565b3d9150611107565b60405163b3d7f6b960e01b81526004810184905290602082602481865afa9182156105ff575f926111a3575b50915f9361117983836020966111746110b397303384611400565b61144b565b6040516394bf804d60e01b8152600481019190915233602482015293849283919082906044820190565b929091506020833d6020116111d1575b816111c060209383610a8e565b8101031261013b579151905f611159565b3d91506111b3565b5f916020916001600160a01b0316906111f481303385611400565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690828214851461125957604051635d043b2960e11b8152600481019190915233602482015230604482015293849250829081606481016110b3565b61126781836110b39561144b565b604051636e553f6560e01b8152600481019190915233602482015293849283919082906044820190565b6001906040516112a081610a72565b5f80825260209091015215150361139e576002811061135a5760405163ef8b30f760e01b815260048101829052906020826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156105ff575f92611326575b506040519161131c83610a72565b8252602082015290565b9091506020813d602011611352575b8161134260209383610a8e565b8101031261013b5751905f61130e565b3d9150611335565b606460405162461bcd60e51b815260206004820152602060248201527f416d6f756e7420496e206d7573742062652067726561746572207468616e20316044820152fd5b60405163266d6a8360e11b815260048101829052906020826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156105ff575f9261132657506040519161131c83610a72565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815261144991611444608483610a8e565b6115af565b565b604051636eb1769f60e11b81523060048201526001600160a01b0392831660248201819052939092821690602084604481855afa9384156105ff575f94611563575b508301809311610ce9575f8060405194602086019063095ea7b360e01b82528760248801526044870152604486526114c6606487610a8e565b85519082855af1906114d661161a565b82611531575b5081611526575b50156114ee57505050565b611444611449936040519063095ea7b360e01b602083015260248201525f604482015260448152611520606482610a8e565b826115af565b90503b15155f6114e3565b80519192508115918215611549575b5050905f6114dc565b61155c9250602080918301019101611597565b5f80611540565b9093506020813d60201161158f575b8161157f60209383610a8e565b8101031261013b5751925f61148d565b3d9150611572565b9081602091031261013b5751801515810361013b5790565b5f806115d79260018060a01b03169360208151910182865af16115d061161a565b9083611659565b80519081151591826115ff575b50506115ed5750565b635274afe760e01b5f5260045260245ffd5b6116129250602080918301019101611597565b155f806115e4565b3d15611654573d9067ffffffffffffffff82116108645760405191611649601f8201601f191660200184610a8e565b82523d5f602084013e565b606090565b9061167d575080511561166e57805190602001fd5b63d6bda27560e01b5f5260045ffd5b815115806116ae575b61168e575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561168656fea264697066735822122067f54ef465d21af621c8dd49b39e0406a28ba995a2dfce93f120df14a9a875d164736f6c634300081b00336b656420736c6f742e2057652063616e2774206669742076616c7565206772650000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d000000000000000000000000a663b02cf0a4b149d2ad41910cb81e23e1c41c32000000000000000000000000853d955acef822db058eb8505911ed77f175b99e73746453746f726167652066696e642853746453746f72616765293a20506163a2646970667358221220d45ad83531160355d9201b068ea13f477a68f6bf65085117ad53d514b7e0860d64736f6c634300081b0033","sourceMap":"604:8022:73:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7798:7;604:8022;;;-1:-1:-1;;;7798:58:73;;604:8022;7798:58;;604:8022;;;-1:-1:-1;;;;;;;;;;;943:13:73;;;604:8022;-1:-1:-1;;;;;;;;;;;943:13:73;;;604:8022;;;;;;;7798:58;;604:8022;;-1:-1:-1;;;;;604:8022:73;7798:58;;;;;;;;;;;604:8022;;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;604:8022:73;;943:13;;;;2349:24:1;;604:8022:73;2349:24:1;;604:8022:73;7890:1;943:13;604:8022;;;2349:24:1;;943:13:73;2349:24:1;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;;;;;604:8022:73;;2349:24:1;;;;;:::i;:::-;604:8022:73;;2349:24:1;604:8022:73;;;;2349:24:1;604:8022:73;;943:13;604:8022;;943:13;;;;2349:24:1;604:8022:73;;7798:58;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;604:8022;;;;;;;;;;;;;;;1016:26:12;604:8022:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;2421:18:5;604:8022:73;;;;;;;2421:18:5;604:8022:73;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;604:8022:73;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;604:8022:73;;;;;;-1:-1:-1;;;;;604:8022:73;;;;;;;;;;-1:-1:-1;;;;;604:8022:73;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1126:10:65;;;;;;:::i;:::-;1590:14:0;604:8022:73;;943:13;;;;1102:59:65;;604:8022:73;1102:59:65;;604:8022:73;943:13;604:8022;943:13;;604:8022;943:13;;;;604:8022;1102:59:65;;;;;;;;;;;;1075:134;1102:59;;;;;604:8022:73;1075:134:65;;:::i;:::-;1074:135;1224:13;;1259:3;604:8022:73;;1239:18:65;;;;;1322:10;;;;:::i;:::-;1590:14:0;604:8022:73;;;943:13;;;;1304:29:65;;604:8022:73;1304:29:65;;604:8022:73;1304:29:65;;604:8022:73;1304:29:65;;;;;;;;;;1708:14;1304:29;1442:1;1304:29;;;;;1259:3;604:8022:73;1396:17:65;604:8022:73;;;;;;1354:9:65;;;:::i;:::-;604:8022:73;;1396:17:65;:::i;:::-;1477;604:8022:73;;;;;;1435:9:65;;;:::i;1477:17::-;1588:14;1554:10;;;;;:::i;:::-;1590:14:0;604:8022:73;;;;;1566:9:65;;;:::i;:::-;604:8022:73;;;;;;;1577:9:65;;;:::i;:::-;604:8022:73;;1588:14:65;;;:::i;:::-;1674:10;;;;:::i;:::-;1590:14:0;604:8022:73;;;;;;1686:9:65;;;:::i;:::-;604:8022:73;;;1697:9:65;604:8022:73;;;;;1697:9:65;;:::i;:::-;604:8022:73;;1708:14:65;;;:::i;:::-;604:8022:73;1224:13:65;;1304:29;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;604:8022:73;;943:13;604:8022;;943:13;;;;1239:18:65;;604:8022:73;;1102:59:65;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;604:8022:73;;943:13;604:8022;;943:13;;;;604:8022;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7979:7;604:8022;;;-1:-1:-1;;;7979:29:73;;604:8022;7979:29;;604:8022;;;;;;;;;7979:29;;604:8022;;-1:-1:-1;;;;;604:8022:73;7979:29;;;;;;;;;;;604:8022;-1:-1:-1;;;;;;8028:9:73;;;:::i;:::-;604:8022;;-1:-1:-1;;;;;;;;;;;3533:24:1;;;;604:8022:73;;943:13;;;;3533:24:1;;604:8022:73;3533:24:1;;604:8022:73;-1:-1:-1;;;;;;;;;;;7979:29:73;604:8022;;;3533:24:1;;;;-1:-1:-1;;;;;;;;;;;3533:24:1;;;;;;;;;;;604:8022:73;-1:-1:-1;;;;;;604:8022:73;8071:9;;-1:-1:-1;8071:9:73;:::i;:::-;604:8022;;-1:-1:-1;;;;;;;;;;;3533:24:1;;;;604:8022:73;;943:13;;;;3533:24:1;;604:8022:73;3533:24:1;;604:8022:73;-1:-1:-1;;;;;;;;;;;7979:29:73;604:8022;;;3533:24:1;;;;-1:-1:-1;;;;;;;;;;;3533:24:1;;;;;;;;604:8022:73;;3533:24:1;;;;;:::i;:::-;604:8022:73;;3533:24:1;;;;;604:8022:73;;943:13;604:8022;;943:13;;;;3533:24:1;604:8022:73;;;7979:29;;;;;;;;;;;;;:::i;:::-;;;;604:8022;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;2273:18:5;604:8022:73;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;2273:18:5;604:8022:73;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;2372:38;;;2380:13;2372:38;2494:7;604:8022;;;-1:-1:-1;;;2494:52:73;;604:8022;2494:52;;604:8022;;;-1:-1:-1;;;;;;;;;;;943:13:73;;;604:8022;-1:-1:-1;;;;;;;;;;;943:13:73;;;604:8022;;;;;;2494:52;;604:8022;;-1:-1:-1;;;;;604:8022:73;2494:52;;;;;;;;;;;2372:38;943:13;;;;;;;2561:21;2569:13;2561:21;;2557:417;;;2561:21;;;2626:9;;;:::i;:::-;1590:14:0;2608:27:73;;-1:-1:-1;;;;;;;;;;;2598:38:73;;;;604:8022;;943:13;;;;2598:38;;604:8022;2598:38;;604:8022;2598:38;;943:13;2598:38;-1:-1:-1;;;;;;;;;;;2598:38:73;;;;;;;;2557:417;604:8022;;;;2494:7;27501:38:3;;943:13:73;;;;27501:38:3;;2679:4:73;943:13;27501:38:3;;604:8022:73;943:13;27501:38:3;;;943:13:73;27501:38:3;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;:::-;2494:7:73;604:8022;;;27568:30:3;;;;;;:::i;:::-;;6854:22:8;;:::i;:::-;27524:10:3;604:8022:73;;7009:9:8;604:8022:73;;;7009:9:8;604:8022:73;7505:10:8;604:8022:73;-1:-1:-1;;;604:8022:73;;;;;;;2569:13;604:8022;;;7505:10:8;604:8022:73;;:::i;:::-;2679:4;;;;604:8022;;;;;;;;;4548:17;;;604:8022;;;;;;;;;;;;;;;6854:12:8;604:8022:73;;7009:9:8;604:8022:73;;943:13;15610:11:8;604:8022:73;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;604:8022:73;;;;;;27635:8:3;604:8022:73;;;;;15703:15:8;;604:8022:73;;;;;;;;2494:7;604:8022;;;;;;2494:7;15735:37:8;;;;;;;;;;:::i;:::-;;27501:38:3;;15735:37:8;;;;;;:::i;:::-;604:8022:73;15725:48:8;;604:8022:73;;2494:7;604:8022;;15610:11:8;604:8022:73;;;15703:77:8;604:8022:73;;15702:78:8;15698:126;;2557:417:73;-1:-1:-1;;;;;604:8022:73;;;;;;27635:8:3;604:8022:73;;;;;;;;2494:7;604:8022;15889:37:8;;604:8022:73;;;;;;15889:37:8;;;2494:7:73;15889:37:8;;;;;:::i;:::-;604:8022:73;15879:48:8;;604:8022:73;;2494:7;604:8022;;;;;15943:15:8;2569:13:73;15943:15:8;;604:8022:73;15961:16:8;943:13:73;15961:16:8;;604:8022:73;15943:34:8;;;;:::i;:::-;15938:460;;604:8022:73;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;604:8022:73;;;16424:32:8;;604:8022:73;1590:14:0;;;604:8022:73;;;;;;;2494:7;604:8022;1590:14:0;604:8022:73;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;2557:417:73;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;604:8022:73;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;604:8022:73;;;16587:43:8;;604:8022:73;12810:59:8;;;604:8022:73;;;;-1:-1:-1;;604:8022:73;;;12656:92:8;12810:59;;;604:8022:73;;;12810:59:8;604:8022:73;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;2557:417:73;16678:31:8;;;;:::i;:::-;16724:8;;604:8022:73;;;16724:29:8;;2557:417:73;16720:176:8;;;14785:4;;;;;;:::i;:::-;2494:7:73;604:8022;;;;-1:-1:-1;;;2718:49:73;;-1:-1:-1;;;;;604:8022:73;;;;2718:49;;604:8022;-1:-1:-1;;943:13:73;1590:14:0;;604:8022:73;;;943:13;604:8022;2718:49;-1:-1:-1;;;;;;;;;;;2718:49:73;;;;;;;;2557:417;;;604:8022;;-1:-1:-1;;;3007:29:73;;3030:4;604:8022;3007:29;;604:8022;;2494:7;604:8022;943:13;604:8022;-1:-1:-1;;;;;;;;;;;3007:29:73;;;;;;;;;;;2557:417;-1:-1:-1;604:8022:73;;-1:-1:-1;;;3070:46:73;;3030:4;604:8022;3070:46;;604:8022;;2494:7;604:8022;943:13;604:8022;-1:-1:-1;;;;;;;;;;;3070:46:73;;;;;;;;;;;2557:417;-1:-1:-1;604:8022:73;;-1:-1:-1;;;3127:35:73;;2494:7;604:8022;;;-1:-1:-1;;;;;;;;;;;3127:35:73;;;;;;;;2557:417;604:8022;3194:92;604:8022;3194:92;604:8022;;;;;;2494:7;604:8022;;;;;;943:13;;;;;;;;;3194:92;;604:8022;3194:92;;;:::i;:::-;;;;;;;;;;;;;;2557:417;1590:14:0;;;3297:805:73;;604:8022;;;3297:805;3347:21;;;604:8022;;-1:-1:-1;;;3455:46:73;;3030:4;604:8022;3455:46;;604:8022;2494:7;604:8022;943:13;604:8022;-1:-1:-1;;;;;;;;;;;3455:46:73;;;;;;;;;;;3343:749;3455:86;;;;;;:::i;:::-;;;:::i;:::-;1590:14:0;604:8022:73;;-1:-1:-1;;;3666:29:73;;3030:4;604:8022;3666:29;;604:8022;2494:7;604:8022;943:13;604:8022;-1:-1:-1;;;;;;;;;;;3666:29:73;;;;;;;;;;;3343:749;3651:44;;;;;;:::i;:::-;3297:805;;;;;604:8022;;;3666:29;;;2494:7;3666:29;;2494:7;3666:29;;;;;;1590:14:0;3666:29:73;;;:::i;:::-;;;1590:14:0;;;;943:13:73;3651:44;3666:29;;1590:14:0;-1:-1:-1;604:8022:73;;3666:29;;;-1:-1:-1;3666:29:73;;;604:8022;;943:13;604:8022;;943:13;;;;3455:46;;;2494:7;3455:46;;2494:7;3455:46;;;;;;1590:14:0;3455:46:73;;;:::i;:::-;;;1590:14:0;;;;943:13:73;3455:86;:46;;;;;-1:-1:-1;3455:46:73;;;604:8022;;943:13;604:8022;;943:13;;;;3343:749;604:8022;;-1:-1:-1;;;3834:29:73;;3030:4;604:8022;3834:29;;604:8022;;;;2494:7;604:8022;943:13;604:8022;-1:-1:-1;;;;;;;;;;;3834:29:73;;;;;;;;;;;3343:749;3819:44;;;;;;:::i;:::-;1590:14:0;604:8022:73;;-1:-1:-1;;;3973:46:73;;3030:4;604:8022;3973:46;;604:8022;2494:7;604:8022;943:13;604:8022;-1:-1:-1;;;;;;;;;;;3973:46:73;;;;;;;;;;;3343:749;3973:86;;;;;;:::i;:::-;3343:749;;3973:46;;;2494:7;3973:46;;2494:7;3973:46;;;;;;1590:14:0;3973:46:73;;;:::i;:::-;;;1590:14:0;;;;943:13:73;3973:86;:46;;;;;-1:-1:-1;3973:46:73;;3834:29;;;2494:7;3834:29;;2494:7;3834:29;;;;;;1590:14:0;3834:29:73;;;:::i;:::-;;;1590:14:0;;;;943:13:73;3819:44;3834:29;;;;;-1:-1:-1;3834:29:73;;3194:92;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;3127:35;;2494:7;3127:35;;2494:7;3127:35;;;;;;1590:14:0;3127:35:73;;;:::i;:::-;;;1590:14:0;;;;943:13:73;-1:-1:-1;3194:92:73;3127:35;;;;;-1:-1:-1;3127:35:73;;3070:46;;;;2494:7;3070:46;;2494:7;3070:46;;;;;;1590:14:0;3070:46:73;;;:::i;:::-;;;1590:14:0;;;;943:13:73;3070:46;;;;;;;-1:-1:-1;3070:46:73;;3007:29;;;;2494:7;3007:29;;2494:7;3007:29;;;;;;1590:14:0;3007:29:73;;;:::i;:::-;;;1590:14:0;;;;943:13:73;3007:29;;;;;;;-1:-1:-1;3007:29:73;;2718:49;;;2494:7;2718:49;2494:7;2718:49;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;16720:176:8;604:8022:73;;;;16769:41:8;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;604:8022:73;;-1:-1:-1;;;16769:41:8;;-1:-1:-1;;;;;604:8022:73;;;;;16769:41:8;;604:8022:73;12810:59:8;;;604:8022:73;;;;12810:59:8;;;604:8022:73;;;;;12810:59:8;604:8022:73;16769:41:8;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;;;;;16720:176;604:8022:73;;-1:-1:-1;;;16824:61:8;;2494:7:73;604:8022;16824:61:8;;12810:59;;943:13:73;12810:59:8;;604:8022:73;12810:59:8;943:13:73;604:8022;;12810:59:8;-1:-1:-1;;;2494:52:73;12810:59:8;;;16824:61;;;16769:41;;;;;;:::i;:::-;604:8022:73;;16769:41:8;;;16724:29;-1:-1:-1;;16736:17:8;;;-1:-1:-1;4548:17:73;16724:29:8;;16587:43;;;;;:::i;:::-;604:8022:73;;16587:43:8;;;;;604:8022:73;;;16424:32:8;;;;;2494:7:73;16424:32:8;;2494:7:73;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;943:13:73;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;:::i;:::-;16021:3;1590:14:0;16021:3:8;1590:14:0;;;;604:8022:73;;;;;;;-1:-1:-1;;;16314:19:8;;2569:13:73;604:8022;;;;16314:19:8;;604:8022:73;16314:19:8;604:8022:73;943:13;604:8022;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;12810:59;2494:7:73;16314:19:8;;16170:185;16314:19;604:8022:73;16314:19:8;;;;15938:460;604:8022:73;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;604:8022:73;12810:59:8;;;-1:-1:-1;;;943:13:73;12810:59:8;;;604:8022:73;;;;;;12810:59:8;;;604:8022:73;;;;;;;;16170:185:8;;27501:38:3;;16170:185:8;;;;;;:::i;:::-;604:8022:73;;-1:-1:-1;;;12810:59:8;;2494:7:73;604:8022;12810:59:8;;604:8022:73;;;;943:13;604:8022;;;;:::i;:::-;12810:59:8;;;16314:19;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;604:8022:73;-1:-1:-1;;;1590:14:0;;6854:12:8;604:8022:73;1590:14:0;943:13:73;;1590:14:0;15698:126:8;13208:33;;:::i;:::-;;15698:126;;604:8022:73;-1:-1:-1;;;604:8022:73;;;;;943:13;;604:8022;2598:38;;;;;:::i;:::-;604:8022;;2598:38;;;;;604:8022;;;2557:417;2826:9;;;:::i;:::-;1590:14:0;2808:27:73;;-1:-1:-1;;;;;;;;;;;2798:38:73;;;;604:8022;;943:13;;;;2798:38;;604:8022;2798:38;;604:8022;2798:38;;943:13;2798:38;-1:-1:-1;;;;;;;;;;;2798:38:73;;;;;;;;2557:417;604:8022;;;;2494:7;27501:38:3;;943:13:73;;;;27501:38:3;;2879:4:73;943:13;27501:38:3;;604:8022:73;943:13;27501:38:3;;;943:13:73;27501:38:3;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;;6854:22:8;;:::i;:::-;27524:10:3;604:8022:73;;7009:9:8;604:8022:73;;;7009:9:8;604:8022:73;7505:10:8;604:8022:73;-1:-1:-1;;;604:8022:73;;;;;;;2569:13;604:8022;;;7505:10:8;604:8022:73;;:::i;:::-;;;;;;;;6854:12:8;604:8022:73;;7009:9:8;604:8022:73;;943:13;15610:11:8;604:8022:73;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;604:8022:73;;;;;;27635:8:3;604:8022:73;;;;;15703:15:8;;604:8022:73;;;;;;;;2494:7;604:8022;;;;;;2494:7;15735:37:8;;;;;;;;;;:::i;:::-;604:8022:73;15725:48:8;;604:8022:73;;2494:7;604:8022;;15610:11:8;604:8022:73;;;15703:77:8;604:8022:73;;15702:78:8;15698:126;;2557:417:73;-1:-1:-1;;;;;604:8022:73;;;;;;27635:8:3;604:8022:73;;;;;;;;2494:7;604:8022;15889:37:8;;604:8022:73;;;;;;15889:37:8;;;2494:7:73;15889:37:8;;;;;:::i;:::-;604:8022:73;15879:48:8;;604:8022:73;;2494:7;604:8022;;;;;15943:15:8;2569:13:73;15943:15:8;;604:8022:73;15961:16:8;943:13:73;15961:16:8;;604:8022:73;15943:34:8;;;;:::i;:::-;15938:460;;2557:417:73;604:8022;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;604:8022:73;;;16424:32:8;;604:8022:73;1590:14:0;;;604:8022:73;;;;;;;2494:7;604:8022;1590:14:0;604:8022:73;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;2557:417:73;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;604:8022:73;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;604:8022:73;;;16587:43:8;;604:8022:73;12810:59:8;;;604:8022:73;;;;;;;;12656:92:8;;;;12810:59;;;604:8022:73;;;12810:59:8;604:8022:73;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;2557:417:73;16678:31:8;;;;;:::i;:::-;16724:8;;;604:8022:73;;;16724:29:8;;2557:417:73;16720:176:8;;;;14785:4;;;;;;:::i;:::-;2494:7:73;604:8022;;;;-1:-1:-1;;;2916:47:73;;-1:-1:-1;;;;;604:8022:73;;;;2916:47;;604:8022;1590:14:0;;;604:8022:73;;;;;1590:14:0;604:8022:73;2916:47;-1:-1:-1;;;;;;;;;;;2916:47:73;;;;;;;;2557:417;;;;2916:47;;;2494:7;2916:47;2494:7;2916:47;;;;;;;:::i;:::-;;;;;16724:29:8;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;604:8022:73;;16587:43:8;;;;16424:32;;;;;2494:7:73;16424:32:8;;2494:7:73;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;943:13:73;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;;;;:::i;:::-;16021:3;1590:14:0;16021:3:8;1590:14:0;;;;604:8022:73;;;;;;;-1:-1:-1;;;16314:19:8;;2569:13:73;604:8022;;;;16314:19:8;;604:8022:73;;;16314:19:8;604:8022:73;943:13;604:8022;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;12810:59;16170:185;16314:19;2494:7:73;16314:19:8;;;;;15938:460;604:8022:73;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;604:8022:73;12810:59:8;;;-1:-1:-1;;;943:13:73;12810:59:8;;;604:8022:73;;;;;;12810:59:8;;;604:8022:73;;;;;;;;16170:185:8;;27501:38:3;;16170:185:8;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;;;;;12810:59;604:8022:73;;-1:-1:-1;;;12810:59:8;;2494:7:73;604:8022;12810:59:8;;604:8022:73;;;;;;943:13;604:8022;;;;:::i;16314:19:8:-;;;-1:-1:-1;16314:19:8;;;;;;;;;:::i;:::-;;;;;604:8022:73;;943:13;604:8022;;943:13;;;;604:8022;-1:-1:-1;;;1590:14:0;;6854:12:8;604:8022:73;1590:14:0;943:13:73;;1590:14:0;15698:126:8;13208:33;;:::i;:::-;;15698:126;;2798:38:73;;;;;:::i;:::-;604:8022;;2798:38;;;;943:13;-1:-1:-1;;;943:13:73;;;604:8022;943:13;;;;2494:52;;;;;;;;;;;;;:::i;:::-;;;;2372:38;;;;604:8022;;;;;;;-1:-1:-1;;604:8022:73;;;;;;534:59:65;604:8022:73;534:59:65;;;;;;;;:::i;:::-;604:8022:73;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;604:8022:73;;;;;;;;;;;;;;;;;;;;;;3190:18:5;604:8022:73;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;3190:18:5;604:8022:73;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;-1:-1:-1;;;;;604:8022:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;943:13:73;604:8022;;;;;;;;943:13;;;-1:-1:-1;;;;;;943:13:73;604:8022;;;;;;;;;;;;943:13;;;-1:-1:-1;;;;;;943:13:73;604:8022;;;;;;;;;;;;943:13;;;-1:-1:-1;;;;;;943:13:73;604:8022;;;;;;;;;;;;943:13;;;-1:-1:-1;;;;;;943:13:73;604:8022;;;;;;;;;;;;943:13;;;-1:-1:-1;;;;;;943:13:73;604:8022;;;;;;;;;;;;943:13;;;-1:-1:-1;;;;;;943:13:73;604:8022;;;;;;;;;;;;943:13;;;-1:-1:-1;;;;;;604:8022:73;;;;;;;;;;;;;;;;;;;;;;943:13;604:8022;943:13;604:8022;;;;;;943:13;604:8022;943:13;;604:8022;;;;;;;943:13;604:8022;943:13;;604:8022;;;;;;;943:13;604:8022;943:13;;604:8022;;;;;;;943:13;604:8022;943:13;;604:8022;;;;;;;943:13;604:8022;943:13;;604:8022;;;;;;;943:13;604:8022;943:13;;604:8022;;;;;;;943:13;604:8022;;;;;;;;;;;;;;;;;;;;;;;;;2707:18:5;604:8022:73;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;2707:18:5;604:8022:73;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;8206:7;604:8022;;;-1:-1:-1;;;8206:64:73;;604:8022;8206:64;;604:8022;;;-1:-1:-1;;;;;;;;;;;943:13:73;;;604:8022;-1:-1:-1;;;;;;;;;;;943:13:73;;;604:8022;;;;;;;8206:64;;604:8022;;-1:-1:-1;;;;;604:8022:73;8206:64;;;;;;;;;;;604:8022;;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;604:8022:73;;943:13;;;;2349:24:1;;604:8022:73;2349:24:1;;604:8022:73;8302:1;943:13;604:8022;;;2349:24:1;;943:13:73;2349:24:1;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;;;;;604:8022:73;;8206:64;;;;;;;;;;;;;:::i;:::-;;;;604:8022;;;;;;;-1:-1:-1;;604:8022:73;;;;;;;;;;;;;;;;;;;;;943:13;;;1652:58;;;604:8022;1652:58;;604:8022;-1:-1:-1;;;;;;;;;;;604:8022:73;943:13;;604:8022;-1:-1:-1;;;;;;;;;;;943:13:73;;;604:8022;1652:58;;;;;;;;;;;;;;;;604:8022;1740:9;;;;:::i;:::-;1590:14:0;1730:19:73;;-1:-1:-1;;;;;;;;;;;1720:30:73;;;;604:8022;;943:13;;;;1720:30;;604:8022;1720:30;;604:8022;1720:30;;604:8022;1720:30;-1:-1:-1;;;;;;;;;;;1720:30:73;;;;;;;;;;;604:8022;1760:22;;-1:-1:-1;;;;;;;;;;;1760:22:73;;;;604:8022;;-1:-1:-1;;;1760:22:73;;604:8022;1770:11;;604:8022;1760:22;;604:8022;1760:22;604:8022;;;-1:-1:-1;;;;;;;;;;;1760:22:73;;;;;;;;;;;604:8022;1812:9;;;;;:::i;:::-;1590:14:0;1802:19:73;;-1:-1:-1;;;;;;;;;;;1792:30:73;;;;604:8022;;943:13;;;;1792:30;;604:8022;1792:30;;604:8022;1792:30;;604:8022;1792:30;-1:-1:-1;;;;;;;;;;;1792:30:73;;;;;;;;;;;604:8022;1832:22;;-1:-1:-1;;;;;;;;;;;1832:22:73;;;;604:8022;;-1:-1:-1;;;1832:22:73;;604:8022;1842:11;;604:8022;1832:22;;604:8022;1832:22;604:8022;;;-1:-1:-1;;;;;;;;;;;1832:22:73;;;;;;;;;;;604:8022;-1:-1:-1;604:8022:73;;;;;;;;;;;:::i;:::-;1906:1;604:8022;;;;;;;;;;1918:20;;;:::i;:::-;604:8022;1948:20;;;:::i;:::-;604:8022;;;943:13;;;;;;2018:63;;604:8022;;;2018:63;;604:8022;2018:63;;604:8022;-1:-1:-1;;;;;;;;;;;604:8022:73;;;;-1:-1:-1;;;;;;;;;;;943:13:73;604:8022;;;;1652:58;604:8022;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2018:63:73;;;;604:8022;;2018:63;;;;;;;;;;;604:8022;2097:13;;2131:3;604:8022;;2112:17;;;;;2159:9;2150:32;2159:9;604:8022;2159:9;;;:::i;:::-;;1590:14:0;2150:32:73;:::i;:::-;2196:34;604:8022;2205:9;;;;:::i;:::-;;:21;1590:14:0;2196:34:73;:::i;:::-;604:8022;2097:13;;2112:17;;604:8022;;2018:63;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;604:8022;;;943:13;;;;;;;;604:8022;;;;;;;-1:-1:-1;604:8022:73;;-1:-1:-1;604:8022:73;;;;;;;;;;;;;1832:22;;;;;:::i;:::-;604:8022;;1832:22;;;;1792:30;;;;;:::i;:::-;604:8022;;1792:30;;;;1760:22;;;;;:::i;:::-;604:8022;;1760:22;;;;1720:30;;;;;:::i;:::-;604:8022;;1720:30;;;;;604:8022;;;1652:58;;;;;;;;;;;;;:::i;:::-;;;;604:8022;;;;;;;;;;;;;2883:26:5;604:8022:73;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;2883:26:5;604:8022:73;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;-1:-1:-1;;;;;604:8022:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;943:13;604:8022;943:13;604:8022;;;;;;943:13;604:8022;943:13;;604:8022;;;;;;;943:13;604:8022;943:13;;604:8022;;;;;;;943:13;604:8022;943:13;;604:8022;;;;;;;943:13;604:8022;943:13;;604:8022;;;;;;;943:13;604:8022;943:13;;604:8022;;;;;;;943:13;604:8022;943:13;;604:8022;;;;;;;943:13;604:8022;;;;;;;;;;;;;;;;;;;;;;;;;6239:13;604:8022;;;;;;;:::i;:::-;1051:3;604:8022;;-1:-1:-1;;604:8022:73;;;;;;;;;6538:13;6553:19;1051:3;6553:19;;;;604:8022;;;;;;;;;:::i;:::-;1051:3;604:8022;;1051:3;;;;;;;6747:13;;6742:741;6618:1;;;6742:741;7498:13;;;;6618:1;;;7493:207;604:8022;;;;;;;;;;:::i;:::-;1051:3;604:8022;;;;;;;;6538:13;;6239;;;6533:109;604:8022;;;;;;;:::i;:::-;1051:3;604:8022;;1051:3;;6239:13;;;1051:3;6747:13;;;;6742:741;6239:13;;;6742:741;7498:13;;;;;;;7493:207;6239:13;;;604:8022;;;7538:3;1590:14:0;7513:23:73;;;;;7566:9;;;;:::i;:::-;;1590:14:0;1051:3:73;;;;;;;;;;7594:13;7667:21;7594:13;:30;:13;;;;;;;;;:::i;:::-;;1590:14:0;7594:30:73;;:::i;:::-;604:8022;7667:13;7648:9;;;;;:::i;:::-;;:17;1590:14:0;1051:3:73;7667:13;;:::i;:::-;;:21;1590:14:0;7667:21:73;;:::i;:::-;604:8022;7498:13;;;;1051:3;-1:-1:-1;;;1590:14:0;;;604:8022:73;1590:14:0;7449:23:73;943:13;1590:14:0;7513:23:73;604:8022;;;6783:3;6762:19;1051:3;6762:19;;;;;-1:-1:-1;604:8022:73;;-1:-1:-1;;;6815:13:73;;604:8022;;;;;6815:13;-1:-1:-1;;;;;;;;;;;6815:13:73;;;;;;;;;;;6783:3;-1:-1:-1;6843:592:73;;;;604:8022;;;;;27501:38:3;;943:13:73;;;;27501:38:3;;6900:4:73;7449:23;27501:38:3;;604:8022:73;7449:23;27501:38:3;;;;;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;;6854:22:8;;:::i;:::-;27524:10:3;604:8022:73;;7009:9:8;604:8022:73;;;7009:9:8;604:8022:73;7505:10:8;604:8022:73;-1:-1:-1;;;604:8022:73;;;;;;;;;;;7505:10:8;604:8022:73;;:::i;:::-;;;;;;;;6854:12:8;604:8022:73;;7009:9:8;604:8022:73;;943:13;15610:11:8;604:8022:73;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;604:8022:73;;;;;;27635:8:3;604:8022:73;;;;;15703:15:8;;604:8022:73;;;;;;;;;;;;;;;;15735:37:8;;;;;;;;;;:::i;:::-;604:8022:73;15725:48:8;;604:8022:73;;;;;15610:11:8;604:8022:73;;;15703:77:8;604:8022:73;;15702:78:8;15698:126;;6843:592:73;-1:-1:-1;;;;;604:8022:73;;;;;;27635:8:3;604:8022:73;;;;;;;;;;15889:37:8;;604:8022:73;;;;;;15889:37:8;;;604:8022:73;15889:37:8;;;;;:::i;:::-;604:8022:73;15879:48:8;;604:8022:73;;;;;;;;15943:15:8;;;;604:8022:73;15961:16:8;7009:9;15961:16;;604:8022:73;15943:34:8;;;;:::i;:::-;15938:460;;604:8022:73;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;604:8022:73;;;16424:32:8;;604:8022:73;1590:14:0;;;604:8022:73;;;;;;;;;1590:14:0;604:8022:73;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;6843:592:73;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;604:8022:73;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;604:8022:73;;;16587:43:8;;604:8022:73;12810:59:8;;;604:8022:73;;;;-1:-1:-1;;604:8022:73;;;12656:92:8;12810:59;;;604:8022:73;;;12810:59:8;604:8022:73;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;6843:592:73;16678:31:8;;;;:::i;:::-;16724:8;;604:8022:73;;;16724:29:8;;6843:592:73;16720:176:8;;;14785:4;;;;;;:::i;:::-;604:8022:73;;;;;-1:-1:-1;;;6943:49:73;;-1:-1:-1;;;;;604:8022:73;;;;6943:49;;604:8022;-1:-1:-1;;7449:23:73;1590:14:0;;604:8022:73;;;27501:38:3;604:8022:73;6943:49;-1:-1:-1;;;;;;;;;;;6943:49:73;;;;;;;;6843:592;-1:-1:-1;604:8022:73;;;;7022:103;;;;-1:-1:-1;;;;;604:8022:73;7097:10;;;;:::i;:::-;1590:14:0;604:8022:73;;943:13;;;;;;;;;7022:103;;;604:8022;7022:103;;;:::i;:::-;;;;;;;;;;;;;;6843:592;7010:115;;;;;:::i;:::-;;;;;;:::i;:::-;;6843:592;604:8022;;943:13;;;;7449:23;;604:8022;7449:23;;604:8022;;7449:23;;;;-1:-1:-1;;;;;;;;;;;7449:23:73;;;;;;;;;;;;;6843:592;6783:3;604:8022;6747:13;;;7449:23;;;604:8022;7449:23;;;;;;;;;:::i;:::-;;;;;7022:103;;;;;;;;;;;;;;:::i;:::-;;;;6943:49;;;604:8022;6943:49;;;;;;;;;:::i;:::-;;;16724:29:8;-1:-1:-1;;16736:17:8;;;-1:-1:-1;4548:17:73;16724:29:8;;16587:43;;;;;:::i;:::-;604:8022:73;;16587:43:8;;;;16424:32;;;;;604:8022:73;16424:32:8;;;;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;943:13:73;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;;:::i;:::-;16021:3;1590:14:0;;16021:3:8;1590:14:0;;;;604:8022:73;;;;;;;-1:-1:-1;;;16314:19:8;;604:8022:73;;;16314:19:8;;604:8022:73;16314:19:8;604:8022:73;7449:23;604:8022;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;12810:59;604:8022:73;16314:19:8;;16170:185;16314:19;604:8022:73;16314:19:8;;;;604:8022:73;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;604:8022:73;12810:59:8;;;-1:-1:-1;;;12810:59:8;;;;604:8022:73;;;;;;12810:59:8;;;604:8022:73;;;;;;;;16170:185:8;;27501:38:3;;16170:185:8;;;;;;:::i;604:8022:73:-;-1:-1:-1;;;1590:14:0;;6854:12:8;604:8022:73;1590:14:0;7449:23:73;943:13;1590:14:0;15698:126:8;13208:33;;:::i;:::-;;15698:126;;604:8022:73;-1:-1:-1;;;604:8022:73;;;;;7449:23;943:13;604:8022;6843:592;7199:10;;;;:::i;:::-;1590:14:0;6843:592:73;604:8022;;;;27501:38:3;;943:13:73;;;;27501:38:3;;7192:4:73;7449:23;27501:38:3;;604:8022:73;7449:23;27501:38:3;;;;;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;;6854:22:8;;:::i;:::-;27524:10:3;604:8022:73;;7009:9:8;604:8022:73;;;7009:9:8;604:8022:73;7505:10:8;604:8022:73;-1:-1:-1;;;604:8022:73;;;;;;;;;;;7505:10:8;604:8022:73;;:::i;:::-;;;;;;;;6854:12:8;604:8022:73;;7009:9:8;604:8022:73;;943:13;15610:11:8;604:8022:73;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;604:8022:73;;;;;;27635:8:3;604:8022:73;;;;;15703:15:8;;604:8022:73;;;;;;6843:592;604:8022;;;;6843:592;604:8022;;;;15735:37:8;;;;;;;;;;:::i;:::-;604:8022:73;15725:48:8;;6843:592:73;604:8022;;;;15610:11:8;604:8022:73;6843:592;604:8022;15703:77:8;604:8022:73;;15702:78:8;15698:126;;6843:592:73;-1:-1:-1;;;;;604:8022:73;;;;;;27635:8:3;604:8022:73;;;;;;6843:592;604:8022;;;15889:37:8;;604:8022:73;6843:592;604:8022;;;;15889:37:8;;;604:8022:73;15889:37:8;;;;;:::i;:::-;604:8022:73;15879:48:8;;6843:592:73;604:8022;;;;6843:592;604:8022;15943:15:8;;;604:8022:73;15961:16:8;7009:9;15961:16;;604:8022:73;15943:34:8;;;;:::i;:::-;15938:460;;6843:592:73;604:8022;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;604:8022:73;;;16424:32:8;;604:8022:73;1590:14:0;;;604:8022:73;;;;;;;;;1590:14:0;604:8022:73;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;6843:592:73;16424:32:8;;;6843:592:73;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;604:8022:73;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;604:8022:73;;;16587:43:8;;604:8022:73;12810:59:8;;;604:8022:73;;;;;;;;12656:92:8;;;;12810:59;;;604:8022:73;-1:-1:-1;604:8022:73;12810:59:8;604:8022:73;-1:-1:-1;;;;;;;;;;;;16587:43:8;;;;;;;;6843:592:73;16678:31:8;;;;;;;:::i;:::-;16724:8;;;604:8022:73;;;16724:29:8;;6843:592:73;16720:176:8;;;;14785:4;;;;;;:::i;:::-;604:8022:73;;;7228:59;;604:8022;-1:-1:-1;;;;;604:8022:73;7276:10;;;;:::i;:::-;1590:14:0;604:8022:73;;-1:-1:-1;;;7228:59:73;;-1:-1:-1;;;;;604:8022:73;;;;7228:59;;604:8022;1590:14:0;;;604:8022:73;;;;;;1590:14:0;;;;;7228:59:73;;;;-1:-1:-1;;;;;;;;;;;7228:59:73;;;;;;;;6843:592;-1:-1:-1;604:8022:73;;;;7317:103;;;;-1:-1:-1;;;;;604:8022:73;7392:10;;;;:::i;:::-;1590:14:0;604:8022:73;;943:13;;;;;;;;;7317:103;;;604:8022;7317:103;;;:::i;:::-;;;;;;;;;;;;;;6843:592;7305:115;;;;;:::i;:::-;;;;;;:::i;:::-;;6843:592;;7317:103;;;;;;;;;;;;;;:::i;:::-;;;;7228:59;;;604:8022;7228:59;;;;;;;;;:::i;:::-;;;16724:29:8;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;;;6843:592:73;16587:43:8;;:::i;:::-;6843:592:73;16587:43:8;;;;;;;604:8022:73;;943:13;6843:592;943:13;;;;;16424:32:8;;;;604:8022:73;16424:32:8;;;;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;943:13:73;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;:::i;:::-;16021:3;1590:14:0;16021:3:8;1590:14:0;;;;604:8022:73;;;;;;;-1:-1:-1;;;16314:19:8;;604:8022:73;;;;;16314:19:8;;604:8022:73;;;-1:-1:-1;604:8022:73;7449:23;604:8022;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;12810:59;16170:185;16314:19;604:8022:73;16314:19:8;6843:592:73;16314:19:8;;;15938:460;604:8022:73;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;604:8022:73;12810:59:8;;;-1:-1:-1;;;12810:59:8;;;;604:8022:73;;;;;;12810:59:8;;;604:8022:73;;;6843:592;604:8022;;;;16170:185:8;;27501:38:3;;16170:185:8;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;16314:19;;;;;;6843:592:73;16314:19:8;;;;;;:::i;:::-;;;;604:8022:73;943:13;;;6843:592;1590:14:0;6854:12:8;604:8022:73;1590:14:0;7449:23:73;6843:592;1590:14:0;15698:126:8;13208:33;;:::i;:::-;;15698:126;;604:8022:73;943:13;;;6843:592;604:8022;;;;7449:23;6843:592;604:8022;6815:13;;;;604:8022;6815:13;;;;;;;;;1590:14:0;6815:13:73;;;:::i;:::-;;;1590:14:0;;;;943:13:73;6815;;;;;;;-1:-1:-1;6815:13:73;;6762:19;;;;1051:3;;;;;;;604:8022;1051:3;;;:::i;:::-;;;;;;;;;;;;;;6574;6553:19;;1051:3;6553:19;;;;;1051:3;;;;;;;523:5:65;6606:4:73;523:5:65;;6606:4:73;523:5:65;;;;;;;;;;;;6623:8:73;523:5:65;;;;;;;6593:38:73;;;;;;;;:::i;:::-;604:8022;;6538:13;;;;;523:5:65;-1:-1:-1;;;1590:14:0;;;604:8022:73;1590:14:0;7449:23:73;943:13;1590:14:0;523:5:65;-1:-1:-1;;;1590:14:0;;;604:8022:73;1590:14:0;7449:23:73;943:13;1590:14:0;6553:19:73;;;;;7538:3;1590:14:0;7513:23:73;;;;;7566:9;;;;:::i;:::-;;1590:14:0;1051:3:73;;;;;;;;;7594:13;7667:21;7594:13;:30;:13;;;;;;;;;:::i;7667:21::-;604:8022;7498:13;;;;7513:23;;;6783:3;6762:19;1051:3;6762:19;;;;;-1:-1:-1;604:8022:73;;-1:-1:-1;;;6815:13:73;;604:8022;;;;;6815:13;-1:-1:-1;;;;;;;;;;;6815:13:73;;;;;;;;;;;6783:3;-1:-1:-1;6843:592:73;;;;604:8022;;;;;27501:38:3;;943:13:73;;;;27501:38:3;;6900:4:73;7449:23;27501:38:3;;604:8022:73;7449:23;27501:38:3;;;;;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;;6854:22:8;;:::i;:::-;27524:10:3;604:8022:73;;7009:9:8;604:8022:73;;;7009:9:8;604:8022:73;7505:10:8;604:8022:73;-1:-1:-1;;;604:8022:73;;;;;;;;;;;7505:10:8;604:8022:73;;:::i;:::-;;;;;;;;6854:12:8;604:8022:73;;7009:9:8;604:8022:73;;943:13;604:8022;15610:11:8;604:8022:73;15653:34:8;604:8022:73;15610:11:8;604:8022:73;15653:34:8;;:::i;:::-;-1:-1:-1;;;;;604:8022:73;;;;;;27635:8:3;604:8022:73;;;;;15703:15:8;;;604:8022:73;;;;;;;;;;;;;;;;;15735:37:8;;;;;;;;;;:::i;:::-;604:8022:73;15725:48:8;;604:8022:73;;;;;15703:77:8;604:8022:73;;15702:78:8;15698:126;;6843:592:73;-1:-1:-1;;;;;604:8022:73;;;;;;27635:8:3;604:8022:73;;;;;;;;;;15889:37:8;;604:8022:73;;;;;;15889:37:8;;;604:8022:73;15889:37:8;;;;;:::i;:::-;604:8022:73;15879:48:8;;604:8022:73;;;;;;;;15943:15:8;;;;604:8022:73;15961:16:8;7009:9;15961:16;;604:8022:73;15943:34:8;;;;:::i;:::-;15938:460;;604:8022:73;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;604:8022:73;;;16424:32:8;;604:8022:73;1590:14:0;;;604:8022:73;;;;;;;;;1590:14:0;604:8022:73;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;6843:592:73;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;604:8022:73;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;604:8022:73;;;16587:43:8;;604:8022:73;12810:59:8;;;604:8022:73;;;;-1:-1:-1;;604:8022:73;;;12656:92:8;12810:59;;;604:8022:73;;;12810:59:8;604:8022:73;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;6843:592:73;16678:31:8;;;;:::i;:::-;16724:8;;604:8022:73;;;16724:29:8;;6843:592:73;16720:176:8;;;14785:4;;;;;;:::i;:::-;604:8022:73;;;;;-1:-1:-1;;;6943:49:73;;-1:-1:-1;;;;;604:8022:73;;;;6943:49;;604:8022;-1:-1:-1;;7449:23:73;1590:14:0;;604:8022:73;;;27501:38:3;604:8022:73;6943:49;-1:-1:-1;;;;;;;;;;;6943:49:73;;;;;;;;6843:592;-1:-1:-1;604:8022:73;;7022:103;;;;-1:-1:-1;;;;;604:8022:73;7097:10;;;;:::i;:::-;1590:14:0;604:8022:73;;;;;943:13;;;;;;;;;7022:103;;604:8022;7022:103;;;:::i;:::-;;;;;;;;;;;;;;6843:592;7010:115;;;;;:::i;:::-;;;;;;:::i;:::-;;6843:592;604:8022;;943:13;;;;7449:23;;604:8022;7449:23;;604:8022;;7449:23;;;;-1:-1:-1;;;;;;;;;;;7449:23:73;;;;;;;;;;;;;6843:592;6783:3;604:8022;6747:13;;;7449:23;;;604:8022;7449:23;;;;;;;;;:::i;:::-;;;;;;604:8022;;943:13;604:8022;;943:13;;;;7022:103;;;;;;;;;;;;;;:::i;:::-;;;;;604:8022;;943:13;604:8022;;943:13;;;;6943:49;;;604:8022;6943:49;;;;;;;;;:::i;:::-;;;16724:29:8;-1:-1:-1;;16736:17:8;;;-1:-1:-1;4548:17:73;16724:29:8;;16587:43;;;;;:::i;:::-;604:8022:73;;16587:43:8;;;;16424:32;;;;;604:8022:73;16424:32:8;;;;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;943:13:73;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;;:::i;15698:126::-;13208:33;;:::i;:::-;;15698:126;;604:8022:73;-1:-1:-1;;;604:8022:73;;;;;7449:23;943:13;604:8022;6843:592;7199:10;;;;:::i;:::-;1590:14:0;604:8022:73;;;;;27501:38:3;;943:13:73;;;;27501:38:3;;7192:4:73;7449:23;27501:38:3;;604:8022:73;7449:23;27501:38:3;;;;;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;;6854:22:8;;:::i;:::-;27524:10:3;604:8022:73;;7009:9:8;604:8022:73;;;7009:9:8;604:8022:73;7505:10:8;604:8022:73;-1:-1:-1;;;604:8022:73;;;;;;;;;7505:10:8;604:8022:73;;:::i;:::-;;;6854:12:8;604:8022:73;7009:9:8;604:8022:73;15610:11:8;604:8022:73;;;-1:-1:-1;;;;;604:8022:73;;;943:13;15653:34:8;;:::i;:::-;-1:-1:-1;;;;;604:8022:73;;;;;;27635:8:3;604:8022:73;;;;;15703:15:8;;604:8022:73;;;;;;;;;;;;;;;;15735:37:8;;;;;;;;;;:::i;:::-;604:8022:73;15725:48:8;;604:8022:73;;;;;15610:11:8;604:8022:73;;;15703:77:8;604:8022:73;;15702:78:8;15698:126;;6843:592:73;-1:-1:-1;;;;;604:8022:73;;;;;;27635:8:3;604:8022:73;;;;;;;;;;15889:37:8;;604:8022:73;;;;;;15889:37:8;;;604:8022:73;15889:37:8;;;;;:::i;:::-;604:8022:73;15879:48:8;;604:8022:73;;;;;;;;;15961:16:8;7009:9;15961:16;;604:8022:73;15943:34:8;;;;:::i;:::-;15938:460;;6843:592:73;604:8022;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;604:8022:73;;;16424:32:8;;604:8022:73;1590:14:0;;;604:8022:73;;;;;;;;;1590:14:0;604:8022:73;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;6843:592:73;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;604:8022:73;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;604:8022:73;;;16587:43:8;;604:8022:73;12810:59:8;;;604:8022:73;;;;;;;;12656:92:8;;;;12810:59;;;604:8022:73;;;12810:59:8;604:8022:73;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;6843:592:73;16678:31:8;;;;:::i;:::-;16724:8;;;604:8022:73;;;16724:29:8;;6843:592:73;16720:176:8;;;;14785:4;;;;;;:::i;:::-;604:8022:73;;;7228:59;;604:8022;-1:-1:-1;;;;;604:8022:73;7276:10;;;;:::i;7228:59::-;;;;-1:-1:-1;;;;;;;;;;;7228:59:73;;;;;;;;6843:592;-1:-1:-1;604:8022:73;;;;7317:103;;;;-1:-1:-1;;;;;604:8022:73;7392:10;;;;:::i;:::-;1590:14:0;604:8022:73;;943:13;;;;;;;;;7317:103;;;604:8022;7317:103;;;:::i;:::-;;;;;;;;;;;;;;6843:592;7305:115;;;;;:::i;:::-;;;;;;:::i;:::-;;6843:592;;7317:103;;;;;;;;;;;;;;:::i;:::-;;;;7228:59;;;604:8022;7228:59;;;;;;;;;:::i;:::-;;;16724:29:8;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;604:8022:73;;16587:43:8;;;;16424:32;;;;;604:8022:73;16424:32:8;;;;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;943:13:73;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;-1:-1:-1;16028:34:8;;-1:-1:-1;16028:34:8;;;;;:::i;:::-;16021:3;1590:14:0;16021:3:8;1590:14:0;;;;604:8022:73;-1:-1:-1;604:8022:73;;;;;;;;943:13;;;16314:19:8;;;604:8022:73;16314:19:8;;604:8022:73;16314:19:8;;7449:23:73;16314:19:8;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;12810:59;604:8022:73;16314:19:8;16170:185;16314:19;;;;;15938:460;604:8022:73;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;604:8022:73;12810:59:8;;;-1:-1:-1;;;12810:59:8;;;;604:8022:73;;;;;;12810:59:8;;;604:8022:73;;;;;;;;16170:185:8;;27501:38:3;;;16170:185:8;;;;;:::i;:::-;6843:592:73;15938:460:8;;;16314:19;;;;;;;;;;;;;:::i;:::-;;;;604:8022:73;-1:-1:-1;;;1590:14:0;;6854:12:8;604:8022:73;1590:14:0;7449:23:73;943:13;1590:14:0;;-1:-1:-1;;;1590:14:0;;6854:12:8;604:8022:73;1590:14:0;7449:23:73;943:13;1590:14:0;15698:126:8;13208:33;;:::i;:::-;;15698:126;;604:8022:73;-1:-1:-1;;;604:8022:73;;;;;7449:23;943:13;604:8022;6815:13;;;;604:8022;6815:13;;;;;;;;;1590:14:0;6815:13:73;;;:::i;:::-;;;1590:14:0;;;;943:13:73;6815;;;;;;;-1:-1:-1;6815:13:73;;6762:19;;;;1051:3;604:8022;1051:3;;;;;:::i;:::-;;;;;;;;;;;;;6574;1051;;;;;;;;523:5:65;6606:4:73;523:5:65;;6606:4:73;523:5:65;;;;;;;;;;;;6623:8:73;523:5:65;;;;;;;6593:38:73;;;;;;;:::i;:::-;604:8022;;6538:13;;604:8022;;;;;;;;;;;;;;;;;;3038:18:5;604:8022:73;;;;;;;3038:18:5;604:8022:73;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;604:8022:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3331:16:5;604:8022:73;;;;;;;3331:16:5;604:8022:73;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;604:8022:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3485:19:5;604:8022:73;;;;:::i;:::-;;;;;;;:::i;:::-;;;;3485:19:5;604:8022:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;604:8022:73;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2563:16:5;604:8022:73;;;;;;;2563:16:5;604:8022:73;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;604:8022:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6075:4;604:8022;;;;;;;:::i;:::-;1051:3;604:8022;;-1:-1:-1;;604:8022:73;;;;;;;;;6538:13;6553:19;1051:3;6553:19;;;;604:8022;;;;;;;;;:::i;:::-;1051:3;604:8022;;1051:3;;;;;;;6747:13;;6742:741;6618:1;;;6742:741;7498:13;;;;6618:1;;;7493:207;604:8022;;;;;;;;;;:::i;:::-;1051:3;604:8022;;;;;;;;6538:13;;6618:1;;;6533:109;604:8022;;;;;;;:::i;:::-;1051:3;604:8022;;1051:3;;6618:1;;;1051:3;6747:13;;;;6742:741;6618:1;;;6742:741;7498:13;;;;;;;7493:207;6618:1;;;604:8022;;;7538:3;1590:14:0;7513:23:73;;;;;7566:9;;;;:::i;:::-;;1590:14:0;1051:3:73;;;;;;;;;;7594:13;7667:21;7594:13;:30;:13;;;;;;;;;:::i;7667:21::-;604:8022;7498:13;;;;6783:3;6762:19;1051:3;6762:19;;;;;-1:-1:-1;604:8022:73;;-1:-1:-1;;;6815:13:73;;604:8022;;;;;6815:13;-1:-1:-1;;;;;;;;;;;6815:13:73;;;;;;;;;;;6783:3;-1:-1:-1;6843:592:73;;;;604:8022;;;;;27501:38:3;;943:13:73;;;;27501:38:3;;6900:4:73;7449:23;27501:38:3;;604:8022:73;7449:23;27501:38:3;;;;;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;;6854:22:8;;:::i;:::-;27524:10:3;604:8022:73;;7009:9:8;604:8022:73;;;7009:9:8;604:8022:73;7505:10:8;604:8022:73;-1:-1:-1;;;604:8022:73;;;;;;;;;;;7505:10:8;604:8022:73;;:::i;:::-;;;;;;;;6854:12:8;604:8022:73;;7009:9:8;604:8022:73;;943:13;15610:11:8;604:8022:73;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;604:8022:73;;;;;;27635:8:3;604:8022:73;;;;;15703:15:8;;604:8022:73;;;;;;;;;;;;;;;;15735:37:8;;;;;;;;;;:::i;:::-;604:8022:73;15725:48:8;;604:8022:73;;;;;15610:11:8;604:8022:73;;;15703:77:8;604:8022:73;;15702:78:8;15698:126;;6843:592:73;-1:-1:-1;;;;;604:8022:73;;;;;;27635:8:3;604:8022:73;;;;;;;;;;15889:37:8;;604:8022:73;;;;;;15889:37:8;;;604:8022:73;15889:37:8;;;;;:::i;:::-;604:8022:73;15879:48:8;;604:8022:73;;;;;;;;15943:15:8;;;;604:8022:73;15961:16:8;7009:9;15961:16;;604:8022:73;15943:34:8;;;;:::i;:::-;15938:460;;604:8022:73;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;604:8022:73;;;16424:32:8;;604:8022:73;1590:14:0;;;604:8022:73;;;;;;;;;1590:14:0;604:8022:73;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;6843:592:73;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;604:8022:73;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;604:8022:73;;;16587:43:8;;604:8022:73;12810:59:8;;;604:8022:73;;;;-1:-1:-1;;604:8022:73;;;12656:92:8;12810:59;;;604:8022:73;;;12810:59:8;604:8022:73;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;6843:592:73;16678:31:8;;;;:::i;:::-;16724:8;;604:8022:73;;;16724:29:8;;6843:592:73;16720:176:8;;;14785:4;;;;;;:::i;:::-;604:8022:73;;;;;-1:-1:-1;;;6943:49:73;;-1:-1:-1;;;;;604:8022:73;;;;6943:49;;604:8022;-1:-1:-1;;7449:23:73;1590:14:0;;604:8022:73;;;27501:38:3;604:8022:73;6943:49;-1:-1:-1;;;;;;;;;;;6943:49:73;;;;;;;;6843:592;-1:-1:-1;604:8022:73;;;;7022:103;;;;-1:-1:-1;;;;;604:8022:73;7097:10;;;;:::i;:::-;1590:14:0;604:8022:73;;943:13;;;;;;;;;7022:103;;;604:8022;7022:103;;;:::i;:::-;;;;;;;;;;;;;;6843:592;7010:115;;;;;:::i;:::-;;;;;;:::i;:::-;;6843:592;604:8022;;943:13;;;;7449:23;;604:8022;7449:23;;604:8022;;7449:23;;;;-1:-1:-1;;;;;;;;;;;7449:23:73;;;;;;;;;;;;;6843:592;6783:3;604:8022;6747:13;;;7449:23;;;604:8022;7449:23;;;;;;;;;:::i;:::-;;;;;7022:103;;;;;;;;;;;;;;:::i;:::-;;;;6943:49;;;604:8022;6943:49;;;;;;;;;:::i;:::-;;;16724:29:8;-1:-1:-1;;16736:17:8;;;-1:-1:-1;4548:17:73;16724:29:8;;16587:43;;;;;:::i;:::-;604:8022:73;;16587:43:8;;;;16424:32;;;;;604:8022:73;16424:32:8;;;;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;943:13:73;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15698:126;13208:33;;:::i;:::-;;15698:126;;6843:592:73;7199:10;;;;:::i;:::-;1590:14:0;6843:592:73;604:8022;;;;27501:38:3;;943:13:73;;;;27501:38:3;;7192:4:73;7449:23;27501:38:3;;604:8022:73;7449:23;27501:38:3;;;;;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;;6854:22:8;;:::i;:::-;27524:10:3;604:8022:73;;7009:9:8;604:8022:73;;;7009:9:8;604:8022:73;7505:10:8;604:8022:73;-1:-1:-1;;;604:8022:73;;;;;;;;;;;7505:10:8;604:8022:73;;:::i;:::-;;;;;;;;6854:12:8;604:8022:73;;7009:9:8;604:8022:73;;943:13;15610:11:8;604:8022:73;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;604:8022:73;;;;;;27635:8:3;604:8022:73;;;;;15703:15:8;;604:8022:73;;;;;;6843:592;604:8022;;;;6843:592;604:8022;;;;15735:37:8;;;;;;;;;;:::i;:::-;604:8022:73;15725:48:8;;6843:592:73;604:8022;;;;15610:11:8;604:8022:73;6843:592;604:8022;15703:77:8;604:8022:73;;15702:78:8;15698:126;;6843:592:73;-1:-1:-1;;;;;604:8022:73;;;;;;27635:8:3;604:8022:73;;;;;;6843:592;604:8022;;;15889:37:8;;604:8022:73;6843:592;604:8022;;;;15889:37:8;;;604:8022:73;15889:37:8;;;;;:::i;:::-;604:8022:73;15879:48:8;;6843:592:73;604:8022;;;;6843:592;604:8022;15943:15:8;;;604:8022:73;15961:16:8;7009:9;15961:16;;604:8022:73;15943:34:8;;;;:::i;:::-;15938:460;;6843:592:73;604:8022;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;604:8022:73;;;16424:32:8;;604:8022:73;1590:14:0;;;604:8022:73;;;;;;;;;1590:14:0;604:8022:73;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;6843:592:73;16424:32:8;;;6843:592:73;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;604:8022:73;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;604:8022:73;;;16587:43:8;;604:8022:73;12810:59:8;;;604:8022:73;;;;;;;;12656:92:8;;;;12810:59;;;604:8022:73;-1:-1:-1;604:8022:73;12810:59:8;604:8022:73;-1:-1:-1;;;;;;;;;;;;16587:43:8;;;;;;;;6843:592:73;16678:31:8;;;;;;;:::i;:::-;16724:8;;;604:8022:73;;;16724:29:8;;6843:592:73;16720:176:8;;;;14785:4;;;;;;:::i;:::-;604:8022:73;;;7228:59;;604:8022;-1:-1:-1;;;;;604:8022:73;7276:10;;;;:::i;7228:59::-;;;;-1:-1:-1;;;;;;;;;;;7228:59:73;;;;;;;;6843:592;-1:-1:-1;604:8022:73;;;;7317:103;;;;-1:-1:-1;;;;;604:8022:73;7392:10;;;;:::i;7317:103::-;;;;;;;;;;;;;;6843:592;7305:115;;;;;:::i;:::-;;;;;;:::i;:::-;;6843:592;;7317:103;;;;;;;;;;;;;;:::i;:::-;;;;7228:59;;;604:8022;7228:59;;;;;;;;;:::i;:::-;;;16724:29:8;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;;;6843:592:73;16587:43:8;;:::i;:::-;6843:592:73;16587:43:8;;;;;;16424:32;;;;604:8022:73;16424:32:8;;;;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;943:13:73;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;:::i;:::-;16021:3;1590:14:0;16021:3:8;1590:14:0;;;;604:8022:73;;;;;;;-1:-1:-1;;;16314:19:8;;604:8022:73;;;;;16314:19:8;;604:8022:73;;;-1:-1:-1;604:8022:73;7449:23;604:8022;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;12810:59;16170:185;16314:19;604:8022:73;16314:19:8;6843:592:73;16314:19:8;;;604:8022:73;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;604:8022:73;12810:59:8;;;-1:-1:-1;;;12810:59:8;;;;604:8022:73;;;;;;12810:59:8;;;604:8022:73;;;6843:592;604:8022;;;;16170:185:8;;27501:38:3;;16170:185:8;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;15698:126;13208:33;;:::i;:::-;;15698:126;;6815:13:73;;;;604:8022;6815:13;;;;;;;;;1590:14:0;6815:13:73;;;:::i;:::-;;;1590:14:0;;;;943:13:73;6815;;;;;;;-1:-1:-1;6815:13:73;;6762:19;;;;1051:3;;;;;;;604:8022;1051:3;;;:::i;:::-;;;;;;;;;;;;;;6574;6553:19;;1051:3;6553:19;;;;;1051:3;;;;;;;523:5:65;6606:4:73;523:5:65;;6606:4:73;523:5:65;;;;;;;;;;;;6623:8:73;523:5:65;;;;;;;6593:38:73;;;;;;;;:::i;:::-;604:8022;;6538:13;;;;;6553:19;;;;;7538:3;1590:14:0;7513:23:73;;;;;7566:9;;;;:::i;:::-;;1590:14:0;1051:3:73;;;;;;;;;7594:13;7667:21;7594:13;:30;:13;;;;;;;;;:::i;7667:21::-;604:8022;7498:13;;;;7513:23;;;6783:3;6762:19;1051:3;6762:19;;;;;-1:-1:-1;604:8022:73;;-1:-1:-1;;;6815:13:73;;604:8022;;;;;6815:13;-1:-1:-1;;;;;;;;;;;6815:13:73;;;;;;;;;;;6783:3;-1:-1:-1;6843:592:73;;;;604:8022;;;;;27501:38:3;;943:13:73;;;;27501:38:3;;6900:4:73;7449:23;27501:38:3;;604:8022:73;7449:23;27501:38:3;;;;;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;;6854:22:8;;:::i;:::-;27524:10:3;604:8022:73;;7009:9:8;604:8022:73;;;7009:9:8;604:8022:73;7505:10:8;604:8022:73;-1:-1:-1;;;604:8022:73;;;;;;;;;;;7505:10:8;604:8022:73;;:::i;:::-;;;;;;;;6854:12:8;604:8022:73;;7009:9:8;604:8022:73;;943:13;604:8022;15610:11:8;604:8022:73;15653:34:8;604:8022:73;15610:11:8;604:8022:73;15653:34:8;;:::i;:::-;-1:-1:-1;;;;;604:8022:73;;;;;;27635:8:3;604:8022:73;;;;;15703:15:8;;;604:8022:73;;;;;;;;;;;;;;;;;15735:37:8;;;;;;;;;;:::i;:::-;604:8022:73;15725:48:8;;604:8022:73;;;;;15703:77:8;604:8022:73;;15702:78:8;15698:126;;6843:592:73;-1:-1:-1;;;;;604:8022:73;;;;;;27635:8:3;604:8022:73;;;;;;;;;;15889:37:8;;604:8022:73;;;;;;15889:37:8;;;604:8022:73;15889:37:8;;;;;:::i;:::-;604:8022:73;15879:48:8;;604:8022:73;;;;;;;;15943:15:8;;;;604:8022:73;15961:16:8;7009:9;15961:16;;604:8022:73;15943:34:8;;;;:::i;:::-;15938:460;;604:8022:73;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;604:8022:73;;;16424:32:8;;604:8022:73;1590:14:0;;;604:8022:73;;;;;;;;;1590:14:0;604:8022:73;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;6843:592:73;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;604:8022:73;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;604:8022:73;;;16587:43:8;;604:8022:73;12810:59:8;;;604:8022:73;;;;-1:-1:-1;;604:8022:73;;;12656:92:8;12810:59;;;604:8022:73;;;12810:59:8;604:8022:73;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;6843:592:73;16678:31:8;;;;:::i;:::-;16724:8;;604:8022:73;;;16724:29:8;;6843:592:73;16720:176:8;;;14785:4;;;;;;:::i;:::-;604:8022:73;;;;;-1:-1:-1;;;6943:49:73;;-1:-1:-1;;;;;604:8022:73;;;;6943:49;;604:8022;-1:-1:-1;;7449:23:73;1590:14:0;;604:8022:73;;;27501:38:3;604:8022:73;6943:49;-1:-1:-1;;;;;;;;;;;6943:49:73;;;;;;;;6843:592;-1:-1:-1;604:8022:73;;;;7022:103;;;;-1:-1:-1;;;;;604:8022:73;7097:10;;;;:::i;7022:103::-;;;;;;;;;;;;;;6843:592;7010:115;;;;;:::i;:::-;;;;;;:::i;:::-;;6843:592;604:8022;;943:13;;;;7449:23;;604:8022;7449:23;;604:8022;;7449:23;;;;-1:-1:-1;;;;;;;;;;;7449:23:73;;;;;;;;;;;;;6843:592;6783:3;604:8022;6747:13;;;7449:23;;;604:8022;7449:23;;;;;;;;;:::i;:::-;;;;;7022:103;;;;;;;;;;;;;;:::i;:::-;;;;6943:49;;;604:8022;6943:49;;;;;;;;;:::i;:::-;;;16724:29:8;-1:-1:-1;;16736:17:8;;;-1:-1:-1;4548:17:73;16724:29:8;;16587:43;;;;;:::i;:::-;604:8022:73;;16587:43:8;;;;16424:32;;;;;604:8022:73;16424:32:8;;;;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;943:13:73;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15698:126;13208:33;;:::i;:::-;;15698:126;;6843:592:73;7199:10;;;;:::i;:::-;1590:14:0;604:8022:73;;;;;27501:38:3;;943:13:73;;;;27501:38:3;;7192:4:73;7449:23;27501:38:3;;604:8022:73;7449:23;27501:38:3;;;;;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;;6854:22:8;;:::i;:::-;27524:10:3;604:8022:73;;7009:9:8;604:8022:73;;;7009:9:8;604:8022:73;7505:10:8;604:8022:73;-1:-1:-1;;;604:8022:73;;;;;;;;;7505:10:8;604:8022:73;;:::i;:::-;;;6854:12:8;604:8022:73;7009:9:8;604:8022:73;15610:11:8;604:8022:73;;;-1:-1:-1;;;;;604:8022:73;;;943:13;15653:34:8;;:::i;:::-;-1:-1:-1;;;;;604:8022:73;;;;;;27635:8:3;604:8022:73;;;;;15703:15:8;;604:8022:73;;;;;;;;;;;;;;;;15735:37:8;;;;;;;;;;:::i;:::-;604:8022:73;15725:48:8;;604:8022:73;;;;;15610:11:8;604:8022:73;;;15703:77:8;604:8022:73;;15702:78:8;15698:126;;6843:592:73;-1:-1:-1;;;;;604:8022:73;;;;;;27635:8:3;604:8022:73;;;;;;;;;;15889:37:8;;604:8022:73;;;;;;15889:37:8;;;604:8022:73;15889:37:8;;;;;:::i;:::-;604:8022:73;15879:48:8;;604:8022:73;;;;;;;;;15961:16:8;7009:9;15961:16;;604:8022:73;15943:34:8;;;;:::i;:::-;15938:460;;6843:592:73;604:8022;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;604:8022:73;;;16424:32:8;;604:8022:73;1590:14:0;;;604:8022:73;;;;;;;;;1590:14:0;604:8022:73;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;6843:592:73;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;604:8022:73;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;604:8022:73;;;16587:43:8;;604:8022:73;12810:59:8;;;604:8022:73;;;;;;;;12656:92:8;;;;12810:59;;;604:8022:73;;;12810:59:8;604:8022:73;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;6843:592:73;16678:31:8;;;;:::i;:::-;16724:8;;;604:8022:73;;;16724:29:8;;6843:592:73;16720:176:8;;;;14785:4;;;;;;:::i;:::-;604:8022:73;;;7228:59;;604:8022;-1:-1:-1;;;;;604:8022:73;7276:10;;;;:::i;7228:59::-;;;;-1:-1:-1;;;;;;;;;;;7228:59:73;;;;;;;;6843:592;-1:-1:-1;604:8022:73;;;;7317:103;;;;-1:-1:-1;;;;;604:8022:73;7392:10;;;;:::i;7317:103::-;;;;;;;;;;;;;;6843:592;7305:115;;;;;:::i;:::-;;;;;;:::i;:::-;;6843:592;;7317:103;;;;;;;;;;;;;;:::i;:::-;;;;7228:59;;;604:8022;7228:59;;;;;;;;;:::i;:::-;;;16724:29:8;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;604:8022:73;;16587:43:8;;;;16424:32;;;;;604:8022:73;16424:32:8;;;;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;943:13:73;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;-1:-1:-1;16028:34:8;;-1:-1:-1;16028:34:8;;;;;:::i;:::-;16021:3;1590:14:0;16021:3:8;1590:14:0;;;;604:8022:73;-1:-1:-1;604:8022:73;;;;;;;;943:13;;;16314:19:8;;;604:8022:73;16314:19:8;;604:8022:73;16314:19:8;;7449:23:73;16314:19:8;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;12810:59;604:8022:73;16314:19:8;16170:185;16314:19;;;;;604:8022:73;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;604:8022:73;12810:59:8;;;-1:-1:-1;;;12810:59:8;;;;604:8022:73;;;;;;12810:59:8;;;604:8022:73;;;;;;;;16170:185:8;;27501:38:3;;;16170:185:8;;;;;:::i;:::-;6843:592:73;15938:460:8;;;15698:126;13208:33;;:::i;:::-;;15698:126;;6815:13:73;;;;604:8022;6815:13;;;;;;;;;1590:14:0;6815:13:73;;;:::i;:::-;;;1590:14:0;;;;943:13:73;6815;;;;;;;-1:-1:-1;6815:13:73;;6762:19;;;;1051:3;604:8022;1051:3;;;;;:::i;:::-;;;;;;;;;;;;;6574;1051;;;;;;;;523:5:65;6606:4:73;523:5:65;;6606:4:73;523:5:65;;;;;;;;;;;;6623:8:73;523:5:65;;;;;;;6593:38:73;;;;;;;:::i;:::-;604:8022;;6538:13;;604:8022;;;;;;;;;;;;;;;-1:-1:-1;;;1205:20:73;;604:8022;;1205:20;;604:8022;;;;;;-1:-1:-1;;;604:8022:73;;;;1205:20;604:8022;1205:20;604:8022;-1:-1:-1;;;;;;;;;;;1205:20:73;;;;;;;604:8022;1205:20;604:8022;1205:20;;;;;604:8022;;;;943:13;;;;;;;1185:52;;604:8022;;1185:52;;604:8022;;;;;;:::i;:::-;1167:8;604:8022;;;;1185:52;;;-1:-1:-1;;;;;;;;;;;1185:52:73;;;;;;;;604:8022;;;;1258:51;;;;;;;;-1:-1:-1;;;;;1258:51:73;;;;;604:8022;1258:51;;;;;;-1:-1:-1;;;;;;;;;;;604:8022:73;;-1:-1:-1;;;;;;;;;;;604:8022:73;;;;1258:51;;;;;;;;;604:8022;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1319:31:73;;;;604:8022;;;943:13;;;1319:31;;-1:-1:-1;;;;;;;;;;;604:8022:73;1319:31;;604:8022;;;;;;;;;;;-1:-1:-1;;;1205:20:73;604:8022;;;1319:31;;;;;-1:-1:-1;;;;;;;;;;;1319:31:73;;;;;;;;604:8022;1360:33;;-1:-1:-1;;;;;;;;;;;1360:33:73;;;;604:8022;;;943:13;;;1360:33;;-1:-1:-1;;;;;;;;;;;604:8022:73;1360:33;;604:8022;;;;;;;;;;;-1:-1:-1;;;1205:20:73;604:8022;;;1360:33;;1319:31;1360:33;;-1:-1:-1;;;;;;;;;;;1360:33:73;;;;;;;;604:8022;;1319:31;;;;;:::i;:::-;604:8022;;1319:31;;;;1258:51;-1:-1:-1;;;604:8022:73;;;;;;943:13;604:8022;1185:52;604:8022;1185:52;;604:8022;1185:52;;;;;;1590:14:0;1185:52:73;;;:::i;:::-;;;1590:14:0;;;;943:13:73;1185:52;;;;;-1:-1:-1;1185:52:73;;1205:20;;;;;;;;;;;;;:::i;:::-;;;;604:8022;;;;;;;-1:-1:-1;;604:8022:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;4234:38;;;;;;4242:13;4234:38;;4356:7;604:8022;-1:-1:-1;;;4356:52:73;;604:8022;;4356:52;;604:8022;;;-1:-1:-1;;;;;;;;;;;943:13:73;;;604:8022;-1:-1:-1;;;;;;;;;;;943:13:73;;;604:8022;;;;4356:52;;604:8022;;-1:-1:-1;;;;;604:8022:73;4356:52;;;;;;;604:8022;4356:52;;;4234:38;943:13;;;;;;;4423:21;4431:13;4423:21;;4419:460;;;4423:21;;;4488:9;;;:::i;:::-;1590:14:0;4470:27:73;;-1:-1:-1;;;;;;;;;;;4460:38:73;;;;604:8022;;943:13;;;;4460:38;;604:8022;4460:38;;604:8022;4460:38;;943:13;4460:38;-1:-1:-1;;;;;;;;;;;4460:38:73;;;;;;;;4419:460;604:8022;;;;4356:7;27501:38:3;;943:13:73;;;;27501:38:3;;4541:4:73;943:13;27501:38:3;;604:8022:73;943:13;27501:38:3;;;943:13:73;27501:38:3;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;;6854:22:8;;:::i;:::-;27524:10:3;604:8022:73;;7009:9:8;604:8022:73;;;7009:9:8;604:8022:73;7505:10:8;604:8022:73;-1:-1:-1;;;604:8022:73;;;;;;;4431:13;604:8022;;;7505:10:8;604:8022:73;;:::i;:::-;;;;;;;;6854:12:8;604:8022:73;;7009:9:8;604:8022:73;;943:13;15610:11:8;604:8022:73;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;604:8022:73;;;;;;27635:8:3;604:8022:73;;;;;15703:15:8;;604:8022:73;;;;;;;;4356:7;604:8022;;;;;;4356:7;15735:37:8;;;;;;;;;;:::i;:::-;604:8022:73;15725:48:8;;604:8022:73;;4356:7;604:8022;;15610:11:8;604:8022:73;;;15703:77:8;604:8022:73;;15702:78:8;15698:126;;4419:460:73;-1:-1:-1;;;;;604:8022:73;;;;;;27635:8:3;604:8022:73;;;;;;;;4356:7;604:8022;15889:37:8;;604:8022:73;;;;;;15889:37:8;;;4356:7:73;15889:37:8;;;;;:::i;:::-;604:8022:73;15879:48:8;;604:8022:73;;4356:7;604:8022;;;;;15943:15:8;4431:13:73;15943:15:8;;604:8022:73;15961:16:8;943:13:73;15961:16:8;;604:8022:73;15943:34:8;;;;:::i;:::-;15938:460;;604:8022:73;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;604:8022:73;;;16424:32:8;;604:8022:73;1590:14:0;;;604:8022:73;;;;;;;4356:7;604:8022;1590:14:0;604:8022:73;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;4419:460:73;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;604:8022:73;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;604:8022:73;;;16587:43:8;;604:8022:73;12810:59:8;;;604:8022:73;;;;-1:-1:-1;;604:8022:73;;;12656:92:8;12810:59;;;604:8022:73;;;12810:59:8;604:8022:73;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;4419:460:73;16678:31:8;;;;:::i;:::-;16724:8;;604:8022:73;;;16724:29:8;;4419:460:73;16720:176:8;;;14785:4;;;;;;:::i;:::-;4356:7:73;604:8022;;;;-1:-1:-1;;;4580:66:73;;-1:-1:-1;;;;;604:8022:73;;;;4580:66;;604:8022;-1:-1:-1;;943:13:73;1590:14:0;;604:8022:73;;;943:13;604:8022;4580:66;-1:-1:-1;;;;;;;;;;;4580:66:73;;;;;;;;4419:460;;;604:8022;;-1:-1:-1;;;4913:46:73;;4953:4;604:8022;4913:46;;604:8022;;4356:7;604:8022;943:13;604:8022;-1:-1:-1;;;;;;;;;;;4913:46:73;;;;;;;;;;;4419:460;-1:-1:-1;604:8022:73;;-1:-1:-1;;;4992:29:73;;4953:4;604:8022;4992:29;;604:8022;;4356:7;604:8022;943:13;604:8022;-1:-1:-1;;;;;;;;;;;4992:29:73;;;;;;;;;;;4419:460;604:8022;5053:92;604:8022;5053:92;604:8022;;;;;;4356:7;604:8022;;;;;;943:13;;;;;;;;;5053:92;;604:8022;5053:92;;;:::i;:::-;;;;;;;;;;;;;;4419:460;1590:14:0;;;5156:805:73;;604:8022;;;5156:805;5206:21;;;604:8022;;-1:-1:-1;;;5314:29:73;;4953:4;604:8022;5314:29;;604:8022;4356:7;604:8022;943:13;604:8022;-1:-1:-1;;;;;;;;;;;5314:29:73;;;;;;;;;;;5202:749;5314:44;;;;;;:::i;:::-;1590:14:0;604:8022:73;;-1:-1:-1;;;5508:46:73;;4953:4;604:8022;5508:46;;604:8022;4356:7;604:8022;943:13;604:8022;-1:-1:-1;;;;;;;;;;;5508:46:73;;;;;;;;;;;5468:86;;;;;;:::i;5314:29::-;;;4356:7;5314:29;;4356:7;5314:29;;;;;;1590:14:0;5314:29:73;;;:::i;:::-;;;1590:14:0;;;;943:13:73;5314:44;:29;;;;;-1:-1:-1;5314:29:73;;5202:749;604:8022;;-1:-1:-1;;;5718:46:73;;4953:4;604:8022;5718:46;;604:8022;;;;4356:7;604:8022;943:13;604:8022;-1:-1:-1;;;;;;;;;;;5718:46:73;;;;;;;;;;;5202:749;5678:86;;;;;;:::i;:::-;1590:14:0;604:8022:73;;-1:-1:-1;;;5874:29:73;;4953:4;604:8022;5874:29;;604:8022;4356:7;604:8022;943:13;604:8022;-1:-1:-1;;;;;;;;;;;5874:29:73;;;;;;;;;;;:44;;;;;;:::i;5718:46::-;;;4356:7;5718:46;;4356:7;5718:46;;;;;;1590:14:0;5718:46:73;;;:::i;:::-;;;1590:14:0;;;;943:13:73;5678:86;5718:46;;;;;-1:-1:-1;5718:46:73;;5053:92;;;;;;;;;;;;;;;:::i;:::-;;;;;4992:29;;;;4356:7;4992:29;;4356:7;4992:29;;;;;;1590:14:0;4992:29:73;;;:::i;:::-;;;1590:14:0;;;;943:13:73;;4992:29;;5053:92;4992:29;;;;;-1:-1:-1;4992:29:73;;4913:46;;;;4356:7;4913:46;;4356:7;4913:46;;;;;;1590:14:0;4913:46:73;;;:::i;:::-;;;1590:14:0;;;;943:13:73;4913:46;;;;;;;-1:-1:-1;4913:46:73;;4580:66;;;4356:7;4580:66;4356:7;4580:66;;;;;;;:::i;:::-;;;;;16724:29:8;-1:-1:-1;;16736:17:8;;;-1:-1:-1;4548:17:73;16724:29:8;;16587:43;;;;;:::i;:::-;604:8022:73;;16587:43:8;;;;16424:32;;;;;4356:7:73;16424:32:8;;4356:7:73;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;943:13:73;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15698:126;13208:33;;:::i;:::-;;15698:126;;4460:38:73;;;;;:::i;:::-;604:8022;;4460:38;;;;4419:460;4705:9;;;;:::i;:::-;1590:14:0;4687:27:73;;-1:-1:-1;;;;;;;;;;;4677:38:73;;;;604:8022;;943:13;;;;4677:38;;604:8022;4677:38;;604:8022;;4677:38;943:13;4677:38;-1:-1:-1;;;;;;;;;;;4677:38:73;;;;;;;;4419:460;604:8022;;;;;4356:7;27501:38:3;;943:13:73;;;;27501:38:3;;4767:4:73;943:13;27501:38:3;;604:8022:73;943:13;27501:38:3;;;943:13:73;27501:38:3;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;;6854:22:8;;:::i;:::-;27524:10:3;604:8022:73;;7009:9:8;604:8022:73;;;7009:9:8;604:8022:73;7505:10:8;604:8022:73;-1:-1:-1;;;604:8022:73;;;;;;;4431:13;604:8022;;;7505:10:8;604:8022:73;;:::i;:::-;;;;;;;;6854:12:8;604:8022:73;;7009:9:8;604:8022:73;;943:13;15610:11:8;604:8022:73;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;604:8022:73;;;;;;27635:8:3;604:8022:73;;;;;15703:15:8;;604:8022:73;;;;;;;;4356:7;604:8022;;;;;;4356:7;15735:37:8;;;;;;;;;;:::i;:::-;604:8022:73;15725:48:8;;604:8022:73;;4356:7;604:8022;;15610:11:8;604:8022:73;;;15703:77:8;604:8022:73;;15702:78:8;15698:126;;4419:460:73;-1:-1:-1;;;;;604:8022:73;;;;;;27635:8:3;604:8022:73;;;;;;;;4356:7;604:8022;15889:37:8;;604:8022:73;;;;;;15889:37:8;;;4356:7:73;15889:37:8;;;;;:::i;:::-;604:8022:73;15879:48:8;;604:8022:73;;4356:7;604:8022;;;;;15943:15:8;4431:13:73;15943:15:8;;604:8022:73;15961:16:8;943:13:73;15961:16:8;;604:8022:73;15943:34:8;;;;:::i;:::-;15938:460;;4419::73;604:8022;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;604:8022:73;;;16424:32:8;;604:8022:73;1590:14:0;;;604:8022:73;;;;;;;4356:7;604:8022;1590:14:0;604:8022:73;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;4419:460:73;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;604:8022:73;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;604:8022:73;;;16587:43:8;;604:8022:73;12810:59:8;;;604:8022:73;;;;;;;;12656:92:8;;;;12810:59;;;604:8022:73;;;12810:59:8;604:8022:73;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;4419:460:73;16678:31:8;;;;;:::i;:::-;16724:8;;;604:8022:73;;;16724:29:8;;4419:460:73;16720:176:8;;;;14785:4;;;;;;:::i;:::-;4356:7:73;604:8022;;;;-1:-1:-1;;;4804:64:73;;-1:-1:-1;;;;;604:8022:73;;;;4804:64;;604:8022;1590:14:0;;;604:8022:73;;;;;1590:14:0;604:8022:73;4804:64;-1:-1:-1;;;;;;;;;;;4804:64:73;;;;;;;;4419:460;;;;4804:64;;;4356:7;4804:64;4356:7;4804:64;;;;;;;:::i;:::-;;;;;16724:29:8;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;604:8022:73;;16587:43:8;;;;16424:32;;;;;4356:7:73;16424:32:8;;4356:7:73;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;943:13:73;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;;;;:::i;:::-;16021:3;1590:14:0;16021:3:8;1590:14:0;;;;604:8022:73;;;;;;;-1:-1:-1;;;16314:19:8;;4431:13:73;604:8022;;;;16314:19:8;;604:8022:73;;;16314:19:8;604:8022:73;943:13;604:8022;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;12810:59;16170:185;16314:19;4356:7:73;16314:19:8;;;;;604:8022:73;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;604:8022:73;12810:59:8;;;-1:-1:-1;;;943:13:73;12810:59:8;;;604:8022:73;;;;;;12810:59:8;;;604:8022:73;;;;;;;;16170:185:8;;27501:38:3;;16170:185:8;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;4677:38:73;;;;;604:8022;4677:38;;:::i;:::-;604:8022;4677:38;;;;943:13;;;;604:8022;943:13;;604:8022;943:13;;604:8022;943:13;4356:52;;;;;;604:8022;4356:52;;;;;;:::i;:::-;;;;4234:38;604:8022;4234:38;;;604:8022;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;604:8022:73;;;;;;;:::o;:::-;1590:14:0;604:8022:73;;;;;-1:-1:-1;;;;;604:8022:73;;;;;;;:::o;:::-;;;27501:38:3;;604:8022:73;;;;;;;;-1:-1:-1;;;;;604:8022:73;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;604:8022:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;604:8022:73;;;;;;;;-1:-1:-1;;604:8022:73;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;604:8022:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;7505:10:8;604:8022:73;;;;;;7505:10:8;-1:-1:-1;604:8022:73;;-1:-1:-1;604:8022:73;;;-1:-1:-1;604:8022:73;:::o;:::-;943:13;;;604:8022;;;;;;;;;534:59:65;604:8022:73;;;;;;534:59:65;-1:-1:-1;604:8022:73;;-1:-1:-1;604:8022:73;;;-1:-1:-1;604:8022:73;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;943:13;;;604:8022;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;604:8022:73;;;;;;;;-1:-1:-1;604:8022:73;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;604:8022:73;;;;;;;;;:::o;943:13::-;;;;;;;;;;;-1:-1:-1;;;;;943:13:73;;;;;;;;;;;;;;;;;;;:::i;:::-;604:8022;;;;;;;:::i;:::-;943:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;1590:14:0;604:8022:73;;1590:14:0;;;;;;:::o;:::-;604:8022:73;;4431:13;1590:14:0;;;;;;;:::o;:::-;604:8022:73;;1590:14:0;;;;;;;;;;;;:::o;:::-;;;;;;;;;;604:8022:73;;;;;;;1590:14:0;:::o;:::-;;;;;;;;;943:13:73;1590:14:0;:::o;:::-;;;;;;;;;;;604:8022:73;;;;:::i;:::-;1590:14:0;;;943:13:73;;;1590:14:0;;;943:13:73;1590:14:0;;;:::o;:::-;;;;;;;;;;;604:8022:73;;;;;;;:::i;:::-;943:13;;1590:14:0;;;;;943:13:73;1590:14:0;;;;;;:::i;:::-;604:8022:73;1590:14:0;;;;:::o;:::-;;;;;;;604:8022:73;;;;-1:-1:-1;;;;;;;;;;;1590:14:0;;;604:8022:73;-1:-1:-1;;;;;;;;;;;1590:14:0;;;604:8022:73;943:13;;;;;;1590:14:0;;;;;;;604:8022:73;1590:14:0:o;:::-;;;;;;;604:8022:73;;;;-1:-1:-1;;;;;;;;;;;1590:14:0;;;604:8022:73;-1:-1:-1;;;;;;;;;;;1590:14:0;;;604:8022:73;943:13;;;;;;1590:14:0;;;;;;;604:8022:73;1590:14:0:o;:::-;604:8022:73;;;-1:-1:-1;;;;;604:8022:73;;;1590:14:0;;;604:8022:73;;;1590:14:0;;;604:8022:73;-1:-1:-1;1590:14:0;;;;;;;604:8022:73;;;;1590:14:0;;;:::o;:::-;;;;;;;;;;:::o;523:5:65:-;;;;;;;:::o;:::-;943:13:73;;;523:5:65;;;;;;;;8534:180;1590:14:0;;523:5:65;;;;;;;;;;;;;;;8690:17;8655:52;8690:17;;1590:14:0;8655:52:65;;:::i;:::-;8534:180;:::o;604:8022:73:-;-1:-1:-1;;;;;604:8022:73;;;;;;-1:-1:-1;;604:8022:73;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;604:8022:73;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;604:8022:73;;;;;;;;;;;;;;:::o;:::-;6854:12:8;604:8022:73;;-1:-1:-1;;;;;;604:8022:73;-1:-1:-1;;;;;;;;;;;604:8022:73;;;:::o;:::-;6854:12:8;604:8022:73;;-1:-1:-1;;;;;;604:8022:73;-1:-1:-1;;;;;;;;;;;604:8022:73;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;604:8022:73;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;604:8022:73;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;1243:204:1;1302:7;604:8022:73;;;;;;;1325:14:1;:::o;1298:143::-;604:8022:73;;;943:13;;;1377:39:1;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;604:8022:73;192:59:1;;;;;;604:8022:73;192:59:1;1377:39;;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;;;;;604:8022:73;1377:39:1;;;1298:143;1377:53;;;1370:60;:::o;1377:39::-;;;192:59;1377:39;;192:59;1377:39;;;;;;1590:14:0;1377:39:1;;;:::i;:::-;;;1590:14:0;;;;943:13:73;1377:39:1;;;;;;-1:-1:-1;1377:39:1;;604:8022:73;;;;;;;;;;;-1:-1:-1;;;;;604:8022:73;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;604:8022:73;;;;;;;;;;;;;;;;2270:110:1;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;604:8022:73;;943:13;;;;2349:24:1;;;;;604:8022:73;;;;;-1:-1:-1;2349:24:1;;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;;;;;2270:110;:::o;2349:24::-;-1:-1:-1;2349:24:1;;;:::i;:::-;2270:110::o;1051:3:73:-;;;;;;;;;;:::o;:::-;604:8022;;;;;;:::i;:::-;1051:3;-1:-1:-1;1051:3:73;;-1:-1:-1;1051:3:73;;;;604:8022;;;;;;;:::i;:::-;-1:-1:-1;1051:3:73;;-1:-1:-1;1051:3:73;;;;;;:::o;13112:110:1:-;-1:-1:-1;;;;;;;;;;;13191:24:1;;;;604:8022:73;;943:13;;;;13191:24:1;;;;;604:8022:73;;;;;;;13191:24:1;;;-1:-1:-1;;;;;;;;;;;13191:24:1;;;;;;;;13112:110;:::o;8720:323:65:-;604:8022:73;8906:3:65;604:8022:73;;8881:23:65;;;;;8929:15;;;;:::i;:::-;604:8022:73;;;;;;;;8929:29:65;8925:79;;604:8022:73;;8866:13:65;;8925:79;8978:11;;604:8022:73;8978:11:65;:::o;8881:23::-;;;604:8022:73;8720:323:65;:::o;:::-;604:8022:73;8906:3:65;604:8022:73;;8881:23:65;;;;;8929:15;;;;:::i;:::-;604:8022:73;;;;;;;2531:24:65;8929:29;8925:79;;604:8022:73;;8866:13:65;;8720:323;604:8022:73;8906:3:65;604:8022:73;;8881:23:65;;;;;8929:15;;;;:::i;:::-;604:8022:73;;;;;;;6005:21:65;8929:29;8925:79;;604:8022:73;;8866:13:65;;5926:434:58;604:8022:73;;6065:47:58;;;;943:13:73;;;;6065:47:58;;604:8022:73;;;;;;6065:47:58;;;;;604:8022:73;4548:17;;1590:14:0;;;604:8022:73;6065:47:58;;;;;;;:::i;:::-;8511:25;;-1:-1:-1;;;;;604:8022:73;;;-1:-1:-1;;;;;604:8022:73;8511:25:58;;;;;:::i;:::-;8553:81;;;5926:434;8553:127;;;;5926:434;6127:45;;6123:231;;5926:434;;;:::o;6123:231::-;6232:43;6330:12;604:8022:73;;;943:13;;;;6065:47:58;6232:43;;;6065:47;6232:43;;604:8022:73;-1:-1:-1;6065:47:58;604:8022:73;;;6065:47:58;6232:43;;;6065:47;6232:43;;:::i;:::-;;;:::i;:::-;6330:12;:::i;8553:127::-;8650:26;;;:30;;8553:127;;;:81;604:8022:73;;;;-1:-1:-1;8577:22:58;;;:56;;;;8553:81;;;;;;;8577:56;8603:30;;;6065:47;8603:30;;;;;;;;:::i;:::-;8577:56;;;;604:8022:73;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;604:8022:73;;;;;;;;;:::o;1911:4479:65:-;;;;;;604:8022:73;;-1:-1:-1;;;2117:44:65;;;;;604:8022:73;;;-1:-1:-1;;;;;604:8022:73;;;943:13;;;604:8022;;;943:13;;;604:8022;1911:4479:65;;;;;2117:44;604:8022:73;;943:13;;;2117:44:65;;;;;604:8022:73;2117:44:65;-1:-1:-1;;;;;604:8022:73;;2117:44:65;;;;;;:47;:44;;;;;1911:4479;2117:47;;:::i;:::-;1590:14:0;;;-1:-1:-1;604:8022:73;;;;;;2174:61:65;;604:8022:73;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;604:8022:73;;;;2174:61:65;;;:::i;:::-;604:8022:73;;;2117:44:65;604:8022:73;;44640:78:15;604:8022:73;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;604:8022:73;;;;;;44640:78:15;;;;;;604:8022:73;44640:78:15;;;604:8022:73;44640:78:15;;;604:8022:73;;;;;;:::i;:::-;-1:-1:-1;;;;;604:8022:73;;;;;;;;;;;;;;;;;;;44640:78:15;-1:-1:-1;;44640:78:15;;;;;;:::i;:::-;1222:159;604:8022:73;;1222:159:15;;591:42;1222:159;;-1:-1:-1;604:8022:73;;-1:-1:-1;;;2467:50:65;;2117:44;2467:50;;604:8022:73;;;-1:-1:-1;;;;;604:8022:73;;;943:13;;;604:8022;;;943:13;;;604:8022;2117:44:65;604:8022:73;;943:13;;;2467:50:65;604:8022:73;;-1:-1:-1;;;;;604:8022:73;;2467:50:65;;;;;;2440:125;2467:50;2117:44;2467:50;;;1911:4479;2440:125;;:::i;:::-;604:8022:73;;;;;;;;:::i;:::-;2117:44:65;604:8022:73;;;;;;;;8365:37:65;;;2117:44;8365:37;8352:50;;;:::i;:::-;604:8022:73;8433:4:65;523:5;;;8412:25;;;:::i;:::-;604:8022:73;;;8468:1:65;1590:14:0;;;;604:8022:73;;1590:14:0;;523:5:65;;8420:1;523:5;604:8022:73;;;;8487:1:65;1590:14:0;;;;604:8022:73;;;1590:14:0;;604:8022:73;;;-1:-1:-1;;;2822:49:65;;604:8022:73;2117:44:65;604:8022:73;;2822:49:65;1590:14:0;2822:49:65;;;2117:44;2822:49;;;:::i;:::-;;604:8022:73;;-1:-1:-1;;;;;604:8022:73;;2822:49:65;;;;;;;2117:44;2822:49;;;8365:37;2917:9;2903:24;2917:9;;;:::i;:::-;;2903:24;:::i;:::-;604:8022:73;;-1:-1:-1;;1590:14:0;;;4548:17:73;1590:14:0;;;;2941:40:65;2955:25;2881:174;2955:25;;;:::i;2941:40::-;604:8022:73;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;604:8022:73;;;;2881:174:65;:::i;:::-;3152:24;3166:9;;;:::i;3152:24::-;604:8022:73;;-1:-1:-1;;1590:14:0;;;;;;;604:8022:73;12247:66:15;2117:44:65;3204:25;3190:40;3204:25;;;;;:::i;3190:40::-;604:8022:73;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;604:8022:73;;;;;;12247:66:15;;;;;;604:8022:73;12247:66:15;;;604:8022:73;;44640:78:15;12247:66;;604:8022:73;;;;;;:::i;:::-;;;;;;;;;;12247:66:15;27501:38:3;;12247:66:15;;;;;;:::i;:::-;1222:159;604:8022:73;;1222:159:15;;591:42;1222:159;;-1:-1:-1;604:8022:73;;;;3251:53:65;;604:8022:73;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;604:8022:73;;;;3251:53:65;:::i;:::-;3314:60;3323:9;;;:::i;:::-;;1590:14:0;604:8022:73;;;;;;;;1590:14:0;604:8022:73;;;;:::i;:::-;;;;;;;;;3314:60:65;:::i;:::-;3384:64;604:8022:73;3393:9:65;;;:::i;:::-;;:21;1590:14:0;604:8022:73;;;;;1590:14:0;604:8022:73;;;;:::i;:::-;;;;;;;;;3384:64:65;:::i;:::-;3480:24;3494:9;;;:::i;3480:24::-;604:8022:73;;;;3514:49:65;604:8022:73;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;604:8022:73;;;;3514:49:65;:::i;:::-;1051:3:73;;:::i;:::-;-1:-1:-1;604:8022:73;;-1:-1:-1;;1590:14:0;;;;;;;3635:27:65;;;;:::i;:::-;1590:14:0;;523:5:65;;;;;;;;2117:44;604:8022:73;;;;;27501:38:3;;943:13:73;;;;27501:38:3;;3624:4:65;44640:78:15;27501:38:3;;604:8022:73;44640:78:15;27501:38:3;;;604:8022:73;27501:38:3;;:::i;:::-;27484:56;;;;;;27568:30;27484:56;;:::i;27568:30::-;-1:-1:-1;6854:12:8;604:8022:73;;-1:-1:-1;;;;;;604:8022:73;-1:-1:-1;;;;;604:8022:73;;;;;7009:9:8;604:8022:73;;-1:-1:-1;;604:8022:73;27524:10:3;604:8022:73;;;7505:10:8;604:8022:73;-1:-1:-1;;;604:8022:73;;;;;;;8420:1:65;604:8022:73;;;7505:10:8;604:8022:73;;:::i;:::-;;;6854:12:8;604:8022:73;-1:-1:-1;;;;;604:8022:73;;;7009:9:8;604:8022:73;15610:11:8;604:8022:73;;943:13;;15653:34:8;;:::i;:::-;15703:15;;-1:-1:-1;;;;;604:8022:73;;;;;27635:8:3;604:8022:73;;;;;15703:15:8;;604:8022:73;;;;;;2117:44:65;604:8022:73;;;;;2117:44:65;604:8022:73;;;;;15735:37:8;;;;;;;;;;:::i;:::-;604:8022:73;15725:48:8;;2117:44:65;604:8022:73;;;;8487:1:65;604:8022:73;;2117:44:65;604:8022:73;15703:77:8;604:8022:73;;15702:78:8;15698:126;;8365:37:65;15857:15:8;;-1:-1:-1;;;;;604:8022:73;;;;;27635:8:3;604:8022:73;;;;;;2117:44:65;604:8022:73;;;15889:37:8;;604:8022:73;;2117:44:65;604:8022:73;;;;;15889:37:8;;;604:8022:73;15889:37:8;;;;;:::i;:::-;604:8022:73;15879:48:8;;2117:44:65;604:8022:73;;;;;2117:44:65;604:8022:73;8420:1:65;15943:15:8;;604:8022:73;15961:16:8;8468:1:65;15961:16:8;;604:8022:73;15943:34:8;;;;:::i;:::-;15938:460;;8365:37:65;604:8022:73;;;;;-1:-1:-1;;;16424:32:8;;;;-1:-1:-1;;;;;604:8022:73;2117:44:65;16424:32:8;;604:8022:73;1590:14:0;;;604:8022:73;;;;;;;;;1590:14:0;604:8022:73;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;2117:44:65;16424:32:8;;;8365:37:65;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;604:8022:73;;;-1:-1:-1;;;16587:43:8;;;;-1:-1:-1;;;;;604:8022:73;2117:44:65;16587:43:8;;604:8022:73;12810:59:8;;;604:8022:73;;;;1590:14:0;523:5:65;;604:8022:73;;;12656:92:8;12810:59;;;604:8022:73;-1:-1:-1;604:8022:73;12810:59:8;604:8022:73;-1:-1:-1;;;;;;;;;;;;16587:43:8;;;;;;;;8365:37:65;16678:31:8;;;:::i;:::-;16724:8;;604:8022:73;;;16724:29:8;;8365:37:65;16720:176:8;;;;14785:4;;;;:::i;:::-;604:8022:73;;;943:13;;;3697::65;;604:8022:73;2117:44:65;;;;;-1:-1:-1;;;;;;;;;;;3697:13:65;;;;;;2117:44;;3697:13;;;;8365:37;-1:-1:-1;8420:1:65;3761:3;604:8022:73;;3741:18:65;;;;;1222:159:15;3878:14:65;604:8022:73;12952:65:15;3878:14:65;;;:::i;:::-;3910:10;;;;;:::i;:::-;1590:14:0;604:8022:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;604:8022:73;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;604:8022:73;12952:65:15;;;604:8022:73;;44640:78:15;12952:65;;604:8022:73;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;604:8022:73;;;;;;;:::i;:::-;;;;;;12952:65:15;27501:38:3;;12952:65:15;;;;;;:::i;:::-;1222:159;604:8022:73;;1222:159:15;;591:42;1222:159;;;3972:24:65;3986:9;;;;:::i;3972:24::-;1222:159:15;4051:10:65;604:8022:73;12771:66:15;4051:10:65;;;;;:::i;:::-;1590:14:0;604:8022:73;;;;;;;;;:::i;:::-;;;;;;;;;;;;12771:66:15;;;;;;604:8022:73;12771:66:15;;;604:8022:73;;44640:78:15;12771:66;;604:8022:73;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;604:8022:73;;;;;12771:66:15;-1:-1:-1;;12771:66:15;;;;;;:::i;:::-;1222:159;604:8022:73;;1222:159:15;;591:42;1222:159;;;4166:10:65;604:8022:73;4166:10:65;;4093:97;4166:10;;;;:::i;:::-;1590:14:0;604:8022:73;;;-1:-1:-1;;;4093:97:65;;604:8022:73;;;;;2117:44:65;4093:97;;;:::i;:::-;;2117:44;;;604:8022:73;;;;;;;4093:97:65;;;;;;;2117:44;;4093:97;;;3761:3;1590:14:0;;;523:5:65;;;;;;;;;;;;;4244:52;4335:26;4286:10;523:5;4286:10;;;;:::i;:::-;1590:14:0;523:5:65;;4244:52;:::i;:::-;604:8022:73;;;4349:11:65;;4335:26;:::i;:::-;604:8022:73;4375:60:65;604:8022:73;;;;;;;;;:::i;:::-;;;;;;;;;4375:60:65;:::i;:::-;4449;604:8022:73;;;;;;;;;:::i;:::-;;;;;;;;;4449:60:65;:::i;:::-;4523:61;604:8022:73;;;;;;;;;:::i;:::-;;;;;;;;;4523:61:65;:::i;:::-;4599:1176;;;;;604:8022:73;;;;;5013:164:65;;4819:176;;-1:-1:-1;;4637:164:65;;604:8022:73;-1:-1:-1;604:8022:73;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;604:8022:73;;;;;4637:164:65;;:::i;:::-;604:8022:73;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;4819:176:65;;:::i;:::-;604:8022:73;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;604:8022:73;;;;;5013:164:65;;:::i;:::-;604:8022:73;;;943:13;;;;5789:25:65;;604:8022:73;;2117:44:65;5789:25;;604:8022:73;;2117:44:65;44640:78:15;2117:44:65;;;-1:-1:-1;;;;;;;;;;;5789:25:65;;;;;;;8420:1;5789:25;;;4599:1176;3761:3;604:8022:73;3726:13:65;;5789:25;;;604:8022:73;5789:25:65;;;;;;;;;:::i;:::-;;;;;;604:8022:73;;;943:13;2117:44:65;;943:13:73;;;;;4599:1176:65;5407:172;604:8022:73;5216:173:65;5597:163;604:8022:73;;;:::i;:::-;5216:173:65;;;:::i;:::-;604:8022:73;;:::i;:::-;5407:172:65;;;:::i;:::-;604:8022:73;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;604:8022:73;;;;;5597:163:65;;:::i;:::-;4599:1176;;523:5;943:13:73;;;2117:44:65;;1590:14:0;6854:12:8;2117:44:65;1590:14:0;44640:78:15;2117:44:65;;1590:14:0;4093:97:65;;;;604:8022:73;4093:97:65;;;;;;;;;:::i;:::-;;;;3741:18;;;;;;;;;5873:3;523:5;;;;;;;5873:3;523:5;;;;;;;;604:8022:73;;;-1:-1:-1;;;5941:50:65;;2117:44;;;;5941:50;;604:8022:73;;;-1:-1:-1;;;;;604:8022:73;;;943:13;;;604:8022;;;;943:13;;;604:8022;2117:44:65;;604:8022:73;523:5:65;;;;;604:8022:73;2117:44:65;;604:8022:73;;;;;;;5941:50:65;;;;;;5914:122;2117:44;;;5941:50;;;3721:2104;5914:122;;:::i;:::-;;;;6590;604:8022:73;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;604:8022:73;;;;;6590:122:65;:::i;:::-;604:8022:73;;;;;;;;;;:::i;:::-;8420:1:65;604:8022:73;;;;-1:-1:-1;;604:8022:73;;;;;;6783:37:65;;;:::i;:::-;604:8022:73;;;;-1:-1:-1;;;6835:57:65;;2117:44;;604:8022:73;;6835:57:65;;;;;2117:44;6835:57;;;:::i;:::-;;2117:44;;;604:8022:73;;;;;;;6835:57:65;;2117:44;;6835:57;;6047:287;-1:-1:-1;6831:346:65;;8420:1;6831:346;;:::i;:::-;;;;;;;;7259:18;604:8022:73;6831:346:65;7259:18;:::i;:::-;1590:14:0;604:8022:73;7190:97:65;604:8022:73;;;943:13;;;;;;;;;;7190:97:65;;2117:44;7190:97;;;:::i;:::-;2117:44;;7190:97;;;;-1:-1:-1;;;;;604:8022:73;7190:97:65;;2117:44;;7190:97;;6831:346;-1:-1:-1;7186:342:65;;8420:1;7186:342;;:::i;:::-;;;;;;;;6047:287;6344:39;604:8022:73;;;;;;;;:::i;:::-;;;;;;;;;6344:39:65;:::i;7186:342::-;7375:153;;:::i;:::-;;;;7186:342;;;;7375:153;2117:44;;604:8022:73;;;;;2117:44:65;;-1:-1:-1;7418:99:65;;2117:44;604:8022:73;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;604:8022:73;;;;;7418:99:65;:::i;:::-;7375:153;;;7186:342;604:8022:73;;;-1:-1:-1;;;7302:61:65;;604:8022:73;2117:44:65;7302:61;;604:8022:73;;44640:78:15;604:8022:73;;;;;;;;-1:-1:-1;;;604:8022:73;;;;;;7302:61:65;7190:97;;;604:8022:73;7190:97:65;604:8022:73;7190:97:65;;;;;;;:::i;:::-;;;6831:346;7018:159;;:::i;:::-;;;;6831:346;;;;7018:159;2117:44;;604:8022:73;;;;;2117:44:65;;-1:-1:-1;7061:105:65;;2117:44;604:8022:73;;;;;:::i;:::-;;;;;;;;;;;;;;;7061:105:65;:::i;:::-;7018:159;;;6831:346;604:8022:73;;;-1:-1:-1;;;6907:99:65;;604:8022:73;2117:44:65;6907:99;;604:8022:73;;44640:78:15;604:8022:73;;;;;;;;;;;;;;;6907:99:65;6835:57;;;;2117:44;;;6835:57;;;;;;:::i;:::-;;;6047:287;604:8022:73;;;;;7738:117:65;;604:8022:73;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;604:8022:73;;;;;7738:117:65;:::i;:::-;604:8022:73;;;;;;;;;;:::i;:::-;8420:1:65;604:8022:73;;;;-1:-1:-1;;604:8022:73;;;;;;7926:37:65;;;:::i;:::-;604:8022:73;;;;943:13;;;;7974:57:65;;2117:44;;7974:57;;;;;;;2117:44;7974:57;;;:::i;:::-;;2117:44;;;604:8022:73;;;;;;;7974:57:65;;;;;;;604:8022:73;;8110:18:65;;7974:57;;8110:18;;:::i;:::-;1590:14:0;604:8022:73;8041:97:65;604:8022:73;;;943:13;;;;;;;;;;8041:97:65;;2117:44;8041:97;;;:::i;:::-;2117:44;;8041:97;;;;-1:-1:-1;;;;;604:8022:73;8041:97:65;;;;;;;;6047:287;;;;8041:97;;;604:8022:73;8041:97:65;604:8022:73;8041:97:65;;;;;;;:::i;:::-;;;;;7974:57;;;;2117:44;;;7974:57;;;;;;:::i;:::-;;;5941:50;;;;;2117:44;;;5941:50;;;;;;:::i;:::-;;;;3697:13;604:8022:73;3697:13:65;;604:8022:73;3697:13:65;;;;;;1590:14:0;3697:13:65;;;:::i;:::-;;;1590:14:0;;;;943:13:73;3697::65;;;;;;;;-1:-1:-1;3697:13:65;;16720:176:8;604:8022:73;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;604:8022:73;;;-1:-1:-1;;;16769:41:8;;2117:44:65;;16769:41:8;;-1:-1:-1;;;;;604:8022:73;2117:44:65;16769:41:8;;604:8022:73;12810:59:8;;;604:8022:73;;;;12810:59:8;;;604:8022:73;;;;;;12810:59:8;;;16769:41;2117:44:65;;;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;;;;;16720:176;604:8022:73;;;-1:-1:-1;;;16824:61:8;;604:8022:73;2117:44:65;16824:61:8;;12810:59;604:8022:73;44640:78:15;12810:59:8;;604:8022:73;12810:59:8;604:8022:73;;;12810:59:8;-1:-1:-1;;;604:8022:73;12810:59:8;;;604:8022:73;;16824:61:8;16769:41;2117:44:65;;16769:41:8;;;:::i;:::-;604:8022:73;;;;16769:41:8;;;604:8022:73;2117:44:65;;;604:8022:73;16724:29:8;1590:14:0;523:5:65;16736:17:8;;;-1:-1:-1;16724:29:8;;;;16587:43;2117:44:65;16587:43:8;;;:::i;:::-;2117:44:65;604:8022:73;;16587:43:8;;;;604:8022:73;;;943:13;2117:44:65;943:13:73;;;;;16424:32:8;;;;604:8022:73;16424:32:8;;604:8022:73;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;943:13:73;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;:::i;:::-;16021:3;1590:14:0;16021:3:8;1590:14:0;;;;604:8022:73;;;;;;;;-1:-1:-1;;;16314:19:8;;8420:1:65;604:8022:73;;2117:44:65;16314:19:8;;604:8022:73;-1:-1:-1;604:8022:73;44640:78:15;604:8022:73;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;16170:185;12810:59;604:8022:73;16314:19:8;8420:1:65;16314:19:8;2117:44:65;16314:19:8;;;15938:460;604:8022:73;;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;604:8022:73;;12810:59:8;;;-1:-1:-1;;;604:8022:73;;12810:59:8;;;604:8022:73;;;;;;12810:59:8;;;604:8022:73;;;2117:44:65;604:8022:73;;;;16170:185:8;;27501:38:3;;16170:185:8;;;;;;:::i;:::-;604:8022:73;523:5:65;1590:14:0;523:5:65;16103:21:8;12810:59;;;15938:460;;;12810:59;604:8022:73;;;-1:-1:-1;;;12810:59:8;;604:8022:73;2117:44:65;12810:59:8;;604:8022:73;;;;;;44640:78:15;604:8022:73;;;;:::i;16314:19:8:-;;;;;;2117:44:65;16314:19:8;;;;;;:::i;:::-;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;2822:49:65;;;;;;;2117:44;2822:49;;;;;;:::i;:::-;;;;;8365:37;8397:5;523;;;8365:37;;2467:50;;;;;;2117:44;2467:50;;;;;;:::i;:::-;;;;2117:44;;;;;;;;;;;;;:::i;:::-;;;;604:8022:73;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;604:8022:73;;;;:::o;:::-;;;:::o;14296:110:1:-;;-1:-1:-1;;;;;;;;;;;14375:24:1;;;;604:8022:73;;943:13;;;;14375:24:1;;;;;604:8022:73;;;;;-1:-1:-1;14375:24:1;;;-1:-1:-1;;;;;;;;;;;14375:24:1;;;;;;;;14296:110;:::o;6764:749:58:-;3256:31:33;;3304:55;;-1:-1:-1;;;;;604:8022:73;;;;2626:1:33;;;;3256:31;;2626:1;604:8022:73;3256:31:33;;;;:::i;:::-;3304:55;;:::i;:::-;604:8022:73;;7289:21:58;;7285:222;;6764:749;;:::o;7285:222::-;3256:31:33;7390:30:58;;;;;;;;;:::i;:::-;604:8022:73;;;6764:749:58:o;604:8022:73:-;;;-1:-1:-1;;;604:8022:73;;3256:31:33;604:8022:73;;;;;;;;;;;;;;-1:-1:-1;;;604:8022:73;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13228:134:1:-;-1:-1:-1;;;;;;;;;;;13326:29:1;;;;604:8022:73;;2117:44:65;604:8022:73;;;943:13;;;;;;;;13326:29:1;;;;;604:8022:73;;;;;;;;;;;;;;;;:::i;:::-;13326:29:1;;-1:-1:-1;;;;;;;;;;;13326:29:1;;;;;;;;13228:134;:::o;:::-;;-1:-1:-1;;;;;;;;;;;13326:29:1;;;;;604:8022:73;13326:29:1;604:8022:73;;943:13;;;;;;;;13326:29:1;;;;;;:::i;6598:121:15:-;1222:159;604:8022:73;6669:42:15;6598:121;;604:8022:73;;6669:42:15;;;;;;;;;;;;;;604:8022:73;;;;;;:::i;6669:42:15:-;1222:159;604:8022:73;;1222:159:15;;591:42;1222:159;;;6598:121::o;7546:145::-;604:8022:73;7629:54:15;1222:159;7546:145;;;;604:8022:73;;7629:54:15;;;;;;;;;;604:8022:73;7629:54:15;;;604:8022:73;;;;;;:::i;:::-;;;;;;7629:54:15;27501:38:3;;7629:54:15;;;;;;:::i;15596:134:1:-;;-1:-1:-1;;;;;;;;;;;15694:29:1;;;;;604:8022:73;15694:29:1;604:8022:73;;943:13;;;;;;;;15694:29:1;;;;;;:::i;604:8022:73:-;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;604:8022:73;;;;;;;;;;;;-1:-1:-1;;;;;604:8022:73;;;;;;;;;;;;-1:-1:-1;;;;;604:8022:73;;;;;;;-1:-1:-1;;604:8022:73;;;;;;;;;-1:-1:-1;604:8022:73;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;:::o;7846:150:15:-;604:8022:73;7935:53:15;1222:159;7846:150;;604:8022:73;7846:150:15;;604:8022:73;;7935:53:15;;;;;;;;;;604:8022:73;7935:53:15;;;604:8022:73;;;;;;:::i;:::-;;;;-1:-1:-1;;604:8022:73;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::o;953:236:8:-;604:8022:73;1052:14:8;604:8022:73;;:::i;:::-;1052:14:8;;604:8022:73;;;;;;1109:10:8;604:8022:73;;;;;;1109:10:8;1077:1;604:8022:73;;1077:1:8;604:8022:73;;1077:1:8;604:8022:73;;;;;;;;;;;;;;:::i;:::-;;;523:5:65;;;;;;;604:8022:73;523:5:65;;;;;;;604:8022:73;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;27501:38:3;;604:8022:73;;:::i;:::-;;;;;;;1077:1:8;11360:3;604:8022:73;;11346:12:8;;;;;11391:4;;1109:10;11391:4;;;:::i;:::-;1590:14:0;604:8022:73;11456:84:8;523:5:65;11456:84:8;;;;;604:8022:73;11331:13:8;;11346:12;-1:-1:-1;11346:12:8;-1:-1:-1;1094:26:8:o;604:8022:73:-;;;;;1109:10:8;604:8022:73;;;;;;-1:-1:-1;604:8022:73;;;;;;;;1048:135:8;604:8022:73;;;;;;1052:14:8;604:8022:73;:::i;953:236:8:-;1052:14;;;604:8022:73;;;;;:::i;:::-;1052:21:8;;1109:10;;;;604:8022:73;;;;;;;;;;;;;;;1077:1:8;604:8022:73;;1077:1:8;604:8022:73;;1077:1:8;604:8022:73;;;;;;;;;;;;;;:::i;:::-;;;523:5:65;;;;;;;604:8022:73;523:5:65;;;;;;;604:8022:73;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;27501:38:3;;604:8022:73;;:::i;:::-;;;;;;;1077:1:8;11360:3;604:8022:73;;11346:12:8;;;;;11391:4;;1109:10;11391:4;;;:::i;:::-;1590:14:0;604:8022:73;11456:84:8;523:5:65;11456:84:8;;;;;604:8022:73;11331:13:8;;604:8022:73;;;;;1109:10:8;604:8022:73;;;;;;-1:-1:-1;604:8022:73;;;;;;;;1048:135:8;604:8022:73;;;;;;;;;;;:::i;1251:343:8:-;-1:-1:-1;604:8022:73;1364:48:8;1381:9;604:8022:73;943:13;;1364:48:8;604:8022:73;1392:19:8;27635:8:3;1392:19:8;:::i;:::-;604:8022:73;;1364:48:8;;;;;;604:8022:73;;;;;;;;;;;;;;;;;;;;;;;;1364:48:8;;27501:38:3;;1364:48:8;;;;;;:::i;:::-;1458:12;604:8022:73;1458:29:8;;;-1:-1:-1;;;;;604:8022:73;1458:29:8;;;;;:::i;:::-;1540:11;604:8022:73;;;;523:5:65;;;;;-1:-1:-1;;;;;523:5:65;;;;;-1:-1:-1;604:8022:73;;;1364:48:8;11010:13;;:29;1364:48;;;11010:29;1364:48;11010:29;;-1:-1:-1;11049:106:8;11069:7;;;;;;1563:24;;;;;1251:343;:::o;11078:3::-;11114:10;;;;;;;;:::i;:::-;604:8022:73;;;;;;;;;1364:48:8;604:8022:73;;1540:11:8;523:5:65;;;;;-1:-1:-1;;;;;;604:8022:73;523:5:65;;11142:1:8;523:5:65;;;;;;;;604:8022:73;;;11097:47:8;11078:3;604:8022:73;11054:13:8;;;;;11010:29;;;;1251:343;;-1:-1:-1;1381:9:8;1364:48;1381:9;;;604:8022:73;943:13;;1364:48:8;604:8022:73;1392:19:8;;;:::i;1364:48::-;604:8022:73;1458:12:8;;604:8022:73;1458:29:8;;;-1:-1:-1;;;;;604:8022:73;1458:29:8;;1540:11;1458:29;;:::i;:::-;1540:11;;604:8022:73;523:5:65;;;;;-1:-1:-1;;;;;523:5:65;;;;;-1:-1:-1;604:8022:73;;;1364:48:8;11010:13;;:29;1364:48;;;11010:29;1364:48;11010:29;;-1:-1:-1;11049:106:8;11069:7;;;;;;1563:24;;;;;1251:343;:::o;11078:3::-;11114:10;;;;;;;;:::i;:::-;604:8022:73;;;;;;;;;1364:48:8;604:8022:73;;1540:11:8;523:5:65;;;;;-1:-1:-1;;;;;;604:8022:73;523:5:65;;11142:1:8;523:5:65;;;;;;;;604:8022:73;;;11097:47:8;11078:3;604:8022:73;11054:13:8;;;;;11010:29;;;;4421:582:33;;4593:8;;-1:-1:-1;604:8022:73;;5674:21:33;:17;;5846:142;;;;;;5670:385;6025:19;;;5694:1;6025:19;;5694:1;6025:19;4589:408;604:8022:73;;4841:22:33;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:33;4917:24;;;-1:-1:-1;;;;;604:8022:73;;;;4917:24:33;604:8022:73;1590:14:0;;4917:24:33;4841:49;4867:18;;;:23;4841:49;;643:59:8;;;;;;;;;;;;;;;:::i;:::-;604:8022:73;;;;;;;:::i;:::-;643:59:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;192::1;;643::8;;;;;;;;;;4249:2493;4361:12;604:8022:73;4397:9:8;604:8022:73;4438:11:8;604:8022:73;-1:-1:-1;;;;;604:8022:73;;;;;;943:13;;4481:19:8;27635:8:3;4481:19:8;:::i;:::-;4551:15;604:8022:73;;;27635:8:3;604:8022:73;;;;;;;;;;;;;;;;;;;;;;4583:37:8;;;;;;;;;;:::i;:::-;604:8022:73;4573:48:8;;604:8022:73;;;;;4438:11:8;604:8022:73;;;4551:77:8;604:8022:73;;4547:255:8;;-1:-1:-1;;;;;;;;;;;4811:11:8;;;;604:8022:73;;-1:-1:-1;;;4811:11:8;;604:8022:73;;4361:12:8;604:8022:73;;-1:-1:-1;;;;;;;;;;;4811:11:8;;;;;;;;4249:2493;4857:16;;27635:8:3;4857:16:8;:::i;:::-;604:8022:73;;;;943:13;;;4911:25:8;;;4361:12;4911:25;;604:8022:73;4911:25:8;;;;;-1:-1:-1;;;;;;;;;;;4911:25:8;;;;;;;;;;;4249:2493;-1:-1:-1;604:8022:73;;4951:12:8;;4984:74;604:8022:73;;12810:59:8;;;4984:74;;604:8022:73;4361:12:8;4984:74;;643:59;604:8022:73;4911:25:8;643:59;;604:8022:73;643:59:8;604:8022:73;;;643:59:8;;;;;;4984:74;4947:1461;5094:13;5127:3;604:8022:73;;5109:16:8;;;;;5178:8;604:8022:73;5178:8:8;;5165:22;5178:8;;:::i;:::-;1590:14:0;604:8022:73;;-1:-1:-1;;;5165:22:8;;-1:-1:-1;;;;;604:8022:73;;4361:12:8;5165:22;;604:8022:73;1590:14:0;;;604:8022:73;;;;;;;;;1590:14:0;;;;;5165:22:8;;;-1:-1:-1;;;;;;;;;;;5165:22:8;;;;;;;;;;;5127:3;5209:18;;;5205:114;;5127:3;5369:8;;;;:::i;:::-;1590:14:0;4361:12:8;604:8022:73;;;-1:-1:-1;;;1978:27:8;;-1:-1:-1;;;;;604:8022:73;;;4361:12:8;1978:27;;604:8022:73;;;1590:14:0;;;604:8022:73;;;;1590:14:0;604:8022:73;;1590:14:0;604:8022:73;-1:-1:-1;;;;;;;;;;;1978:27:8;;;;;;;;;;;5127:3;2057:16;;27635:8:3;2057:16:8;:::i;:::-;2102:65;;;:29;;:65;:29;;;-1:-1:-1;;4548:17:73;2102:65:8;-1:-1:-1;;;;;;;;;;;2177:37:8;;;;604:8022:73;;-1:-1:-1;;;2177:37:8;;-1:-1:-1;;;;;604:8022:73;;;;4361:12:8;2177:37;;604:8022:73;12810:59:8;;;604:8022:73;;;12810:59:8;;;604:8022:73;;;;;;12810:59:8;604:8022:73;;-1:-1:-1;;;;;;;;;;;2177:37:8;;;;;;;;;;;2102:65;2254:16;;;27635:8:3;2254:16:8;:::i;:::-;4361:12;604:8022:73;;;;-1:-1:-1;;;;;;604:8022:73;-1:-1:-1;;;;;;;;;;;2281:43:8;;;;604:8022:73;;-1:-1:-1;;;2281:43:8;;-1:-1:-1;;;;;604:8022:73;;;;4361:12:8;2281:43;;604:8022:73;12810:59:8;;;604:8022:73;;;;12810:59:8;;;604:8022:73;;;;;;12810:59:8;604:8022:73;;-1:-1:-1;;;;;;;;;;;2281:43:8;;;;;;;;;;;2102:65;2343:46;;;;;2102:65;5341:37;;;5337:92;;5447:50;;;604:8022:73;;5520:25:8;604:8022:73;;5516:256:8;;2102:65;12275:113;;;;;;;-1:-1:-1;;12275:113:8;;;5902:57;604:8022:73;;5998:29:8;;5994:84;;604:8022:73;;6319:8:8;604:8022:73;6101:89:8;643:59;604:8022:73;;6132:37:8;;604:8022:73;;;6132:37:8;;;604:8022:73;6132:37:8;;;;;:::i;:::-;604:8022:73;6122:48:8;;6180:8;;;;:::i;:::-;1590:14:0;604:8022:73;;;;;;643:59:8;604:8022:73;643:59:8;;604:8022:73;;643:59:8;;604:8022:73;643:59:8;;;604:8022:73;6101:89:8;6319:8;:::i;:::-;1590:14:0;604:8022:73;;;;643:59:8;604:8022:73;;;;;;-1:-1:-1;;;;;604:8022:73;;;;;4438:11:8;604:8022:73;;;;;;6302:58:8;;604:8022:73;;;;6302:58:8;;604:8022:73;;;643:59:8;6302:58;;643:59;604:8022:73;643:59:8;;604:8022:73;;;27635:8:3;604:8022:73;;;;;;;;;;;;;;;;6240:37:8;;;;;;;;;;:::i;:::-;604:8022:73;6230:48:8;;604:8022:73;;;;;;;1590:14:0;;643:59:8;;1590:14:0;604:8022:73;643:59:8;;;1590:14:0;4397:9:8;643:59;;;;;;604:8022:73;;;;;643:59:8;;;;;;;;5089:1309;604:8022:73;;;27635:8:3;604:8022:73;;;;;;;;;;;;;;;;6471:37:8;;;;;;;;;;:::i;:::-;604:8022:73;6461:48:8;;604:8022:73;;;;;4438:11:8;604:8022:73;;;6439:77:8;604:8022:73;;643:59:8;;;604:8022:73;6664:15:8;604:8022:73;;27635:8:3;604:8022:73;;;;;;;;;;6696:37:8;;604:8022:73;;;;;;6696:37:8;;;604:8022:73;6696:37:8;;;;;:::i;:::-;604:8022:73;6686:48:8;;604:8022:73;;;;;4249:2493:8;:::o;643:59::-;604:8022:73;;-1:-1:-1;;;643:59:8;;604:8022:73;4361:12:8;643:59;;;;4911:25;643:59;;604:8022:73;643:59:8;604:8022:73;;;643:59:8;-1:-1:-1;;;643:59:8;;;;;;;5994:84;6051:8;;;;604:8022:73;6051:8:8;5094:13;604:8022:73;5094:13:8;;5516:256;5654:8;;3216:27;5654:8;;;;;;:::i;:::-;1590:14:0;4361:12:8;604:8022:73;;;-1:-1:-1;;;3216:27:8;;-1:-1:-1;;;;;604:8022:73;;;4361:12:8;3216:27;;604:8022:73;1590:14:0;;;604:8022:73;;;1590:14:0;;604:8022:73;;;;;;;;1590:14:0;;;;;3216:27:8;;;-1:-1:-1;;;;;;;;;;;3216:27:8;;;;;;;;;;;5516:256;3293:28;;;27635:8:3;3293:28:8;:::i;:::-;3372:29;;;;;27635:8:3;3372:29:8;:::i;:::-;4361:12;604:8022:73;;;;;;-1:-1:-1;;;;;604:8022:73;-1:-1:-1;;;;;;;;;;;3497:43:8;;;;604:8022:73;;-1:-1:-1;;;3497:43:8;;-1:-1:-1;;;;;604:8022:73;;;;4361:12:8;3497:43;;604:8022:73;12810:59:8;;;604:8022:73;;;;12810:59:8;;;604:8022:73;;;;;;12810:59:8;604:8022:73;;-1:-1:-1;;;;;;;;;;;3497:43:8;;;;;;;;;;;5516:256;3558:23;;;;;5516:256;5601:62;;5689:6;5516:256;5685:69;5723:8;;;;;604:8022:73;5723:8:8;;;3558:23;;-1:-1:-1;3558:23:8;;;3497:43;;;;;:::i;:::-;604:8022:73;;3497:43:8;;;;604:8022:73;;;;3497:43:8;604:8022:73;;943:13;604:8022;;943:13;;;;3497:43:8;604:8022:73;;;3216:27:8;;;;604:8022:73;3216:27:8;;;;;;;;;1590:14:0;3216:27:8;;;:::i;:::-;;;1590:14:0;;;;943:13:73;3216:27:8;;;;;;;-1:-1:-1;3216:27:8;;5337:92;5402:8;;604:8022:73;5402:8:8;;;2343:46;2355:33;;;-1:-1:-1;2343:46:8;;;;2281:43;;;;;:::i;:::-;604:8022:73;;2281:43:8;;;;604:8022:73;;;;2281:43:8;604:8022:73;;943:13;604:8022;;943:13;;;;2281:43:8;604:8022:73;;;2177:37:8;;;;;:::i;:::-;604:8022:73;;2177:37:8;;;;2102:65;;;;;1978:27;;;604:8022:73;1978:27:8;;;;;;;;;1590:14:0;1978:27:8;;;:::i;:::-;;;1590:14:0;;;;943:13:73;1978:27:8;;;;;;-1:-1:-1;1978:27:8;;;604:8022:73;;943:13;604:8022;;943:13;;;;5205:114:8;5256:44;;5290:8;;;;:::i;:::-;1590:14:0;604:8022:73;;;-1:-1:-1;;;;;604:8022:73;;;;1590:14:0;;;604:8022:73;;;;;;;;1590:14:0;;;;5256:44:8;;;;5205:114;;5165:22;;;;604:8022:73;5165:22:8;;;;;;;;;1590:14:0;5165:22:8;;;:::i;:::-;;;1590:14:0;;;;943:13:73;5165:22:8;;;;;;;-1:-1:-1;5165:22:8;;5109:16;;;;;;4911:25;;;;;;;;;;;;:::i;:::-;;;604:8022:73;643:59:8;;;;;;;;-1:-1:-1;;;;;643:59:8;;;;;;;;;;:::i;:::-;;604:8022:73;643:59:8;;;;-1:-1:-1;;;;;643:59:8;;;;;;;;;:::i;:::-;;4911:25;;;643:59;604:8022:73;;;643:59:8;604:8022:73;;;4811:11:8;;;;;604:8022:73;4811:11:8;;:::i;:::-;604:8022:73;4811:11:8;;;;4547:255;4720:15;;;;;604:8022:73;;27635:8:3;604:8022:73;;;;;;;;;;4752:37:8;;604:8022:73;;;;;;4752:37:8;;;604:8022:73;4752:37:8;;;;;:::i;:::-;604:8022:73;4742:48:8;;604:8022:73;;;;;;;4713:78:8;:::o;11586:239::-;604:8022:73;;;11652:12:8;604:8022:73;;11652:12:8;604:8022:73;;;11681:9:8;604:8022:73;;11681:9:8;604:8022:73;11707:10:8;604:8022:73;11645:19:8;11707:10;604:8022:73;;;;11586:239:8;604:8022:73;11645:19:8;11734:11;604:8022:73;;;11762:25:8;604:8022:73;;11762:25:8;604:8022:73;;11804:14:8;604:8022:73;;:::i;:::-;;;;11586:239:8;:::o;604:8022:73:-;;;;;;;;;11645:19:8;11804:14;604:8022:73;11586:239:8:o;604:8022:73:-;11804:14:8;11645:19;604:8022:73;;;;;;;;;;;;;;;;11804:14:8;11645:19;604:8022:73;11645:19:8;604:8022:73;;;;11804:14:8;604:8022:73;;2270:110:1:o;604:8022:73:-;;;;;;;;;11707:10:8;11645:19;604:8022:73;;;;;;;;;;;;;;;;11645:19:8;604:8022:73;;11707:10:8;604:8022:73;;;2560:514:8;;;2695:1;2698:12;2707:3;2698:12;;;;3050:17;;;;2695:1;3050:17;2695:1;2560:514;:::o;2712:8::-;1590:14:0;2771:3:8;1590:14:0;2771:3:8;1590:14:0;;;;2824:12:8;;;604:8022:73;;;;;;-1:-1:-1;;;;;604:8022:73;-1:-1:-1;;;;;;;;;;;2815:49:8;;;;604:8022:73;;-1:-1:-1;;;2815:49:8;;-1:-1:-1;;;;;604:8022:73;;;;2824:12:8;2815:49;;604:8022:73;12810:59:8;;;604:8022:73;;;12810:59:8;;;604:8022:73;;;;-1:-1:-1;604:8022:73;12810:59:8;604:8022:73;-1:-1:-1;;;;;;;;;;;;2815:49:8;;;;;;;;2712:8;2910:16;;;;:::i;:::-;2945:30;;;2712:8;2941:90;;;604:8022:73;;2678:18:8;;2941:90;2995:21;;;604:8022:73;2995:21:8;;:::o;2945:30::-;2957:17;;;;2945:30;;;2815:49;2695:1;2815:49;;;:::i;:::-;;;;2560:514;;;4551:10;2698:12;2707:3;2698:12;;;;3050:17;;;;4551:10;3050:17;4551:10;2560:514;:::o;2712:8::-;2824:12;;;604:8022:73;;;;;-1:-1:-1;;;;;604:8022:73;-1:-1:-1;;;;;;;;;;;2815:49:8;;;;604:8022:73;;-1:-1:-1;;;2815:49:8;;-1:-1:-1;;;;;604:8022:73;;;;2824:12:8;2815:49;;604:8022:73;12810:59:8;;;604:8022:73;;;12810:59:8;;;604:8022:73;;;;-1:-1:-1;604:8022:73;12810:59:8;604:8022:73;-1:-1:-1;;;;;;;;;;;;2815:49:8;;;;;;;;2712:8;2910:16;;;;:::i;:::-;2945:30;;;2712:8;2941:90;;;604:8022:73;;2678:18:8;;2945:30;2957:17;;;;2945:30;;;2815:49;4551:10;2815:49;;;:::i;:::-;;;","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","fractionToInt((uint256,uint256))":"08c41745","runPoolBehaviourTest(address,bytes32[])":"d170c3cc","setUp()":"0a9254e4","stringPctgs(uint256)":"a00872f1","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testGetCapabilitiesFraxV3SFrax()":"7b2fb7b9","testGetLimitsFraxV3()":"ff1100f6","testGetTokensFraxV3()":"d0a37259","testPriceFuzzFraxV3SFrax(uint256,uint256)":"6f6e7992","testSwapBuyIncreasingFraxV3()":"4a9a720e","testSwapFuzzFraxV3WithFrax(uint256,bool)":"a930fe92","testSwapFuzzFraxV3WithSFrax(uint256,bool)":"0543ce85","testSwapSellIncreasingFraxV3()":"1510ba6b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"LimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"Unavailable\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"fsig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keysHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"SlotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"WARNING_UninitedSlot\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction\",\"name\":\"price\",\"type\":\"tuple\"}],\"name\":\"fractionToInt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISwapAdapter\",\"name\":\"adapter\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"poolIds\",\"type\":\"bytes32[]\"}],\"name\":\"runPoolBehaviourTest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"stringPctgs\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetCapabilitiesFraxV3SFrax\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetLimitsFraxV3\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetTokensFraxV3\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"testPriceFuzzFraxV3SFrax\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSwapBuyIncreasingFraxV3\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isBuy\",\"type\":\"bool\"}],\"name\":\"testSwapFuzzFraxV3WithFrax\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isBuy\",\"type\":\"bool\"}],\"name\":\"testSwapFuzzFraxV3WithSFrax\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSwapSellIncreasingFraxV3\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is a template for a swap adapter test. Test all functions that are implemented in your swap adapter, the two test included here are just an example. Feel free to use UniswapV2SwapAdapterTest and BalancerV2SwapAdapterTest as a reference.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"LimitExceeded(uint256)\":[{\"details\":\"The LimitExceeded error is thrown when a limit has been exceeded. E.g. the specified amount can't be traded safely.\"}],\"NotImplemented(string)\":[{\"details\":\"The NotImplemented error is thrown when a function is not implemented.\"}],\"Unavailable(string)\":[{\"details\":\"The Unavailable error is thrown when a pool or swap is not available for unexpected reason. E.g. it was paused due to a bug.\"}]},\"kind\":\"dev\",\"methods\":{\"testPriceFuzzFraxV3SFrax(uint256,uint256)\":{\"details\":\"set lower limit to greater than 1, because previewDeposit returns 0 with an amountIn == 1\"}},\"title\":\"TemplateSwapAdapterTest\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/FraxV3SFraxAdapter.t.sol\":\"FraxV3SFraxAdapterTest\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b\",\"dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54\",\"dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678\",\"dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdToml.sol\":{\"keccak256\":\"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d\",\"dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e\",\"dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a\",\"dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12\",\"dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/libraries/EfficientERC20.sol\":{\"keccak256\":\"0x825d7f6aa98465b3c5b5a08d24cadfbb0a06f44693beec4e00ad2fe2824b4ef0\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2a5b53d7d634f50f27a1e45ce9136a054f1f19efc3dcfc1f85c8b1bbeac735fa\",\"dweb:/ipfs/QmQSeQyF86HLRnvKgQogia8W2eoWzncG2m1GkYMnp84DJZ\"]},\"src/libraries/FractionMath.sol\":{\"keccak256\":\"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c\",\"dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr\"]},\"src/sfrax/FraxV3SFraxAdapter.sol\":{\"keccak256\":\"0x2b7c13cd41026b764e488645a2d0ff419861e682cf9cb3386c321280422b1077\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://a22ef29e0035d00f629fe6db67f3e760feb97fb50aed65afe0ce628902b60be4\",\"dweb:/ipfs/Qmdf8ry4G8MFZob1Z88GZssky9nWe7FVGQW9NMCdesWzBw\"]},\"test/AdapterTest.sol\":{\"keccak256\":\"0x56850be2bb3898eee065c3d77aadb6d181ee789da32f30b1d415d5521397fa43\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://8ca34143db16aa27c42ee3f8566ee466095d4aedcc4ea1c7726aa9c593f4fbd0\",\"dweb:/ipfs/QmWBTLXZKbTuT5kVpAbyGCxKRdhsmzWRPZPiTqZMg9BXhd\"]},\"test/FraxV3SFraxAdapter.t.sol\":{\"keccak256\":\"0x87aa57832884612d86864f98b127d66a61d5ed1b88f393a07ce0867134840e08\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://cd522b4f3e8c5f1d12a15676b60b7d4a0a6e8c4cf7181799c83fc8b68292b32e\",\"dweb:/ipfs/QmYzSxxusuMi4jWHYDmSH4tQDjW5UstjG45TFEEdLFBNbc\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"type":"error","name":"LimitExceeded"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"NotImplemented"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"Unavailable"},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"bytes4","name":"fsig","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"keysHash","type":"bytes32","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"SlotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"WARNING_UninitedSlot","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct ISwapAdapterTypes.Fraction","name":"price","type":"tuple","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}],"stateMutability":"pure","type":"function","name":"fractionToInt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"contract ISwapAdapter","name":"adapter","type":"address"},{"internalType":"bytes32[]","name":"poolIds","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"runPoolBehaviourTest"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"stringPctgs","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testGetCapabilitiesFraxV3SFrax"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testGetLimitsFraxV3"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testGetTokensFraxV3"},{"inputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testPriceFuzzFraxV3SFrax"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testSwapBuyIncreasingFraxV3"},{"inputs":[{"internalType":"uint256","name":"specifiedAmount","type":"uint256"},{"internalType":"bool","name":"isBuy","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"testSwapFuzzFraxV3WithFrax"},{"inputs":[{"internalType":"uint256","name":"specifiedAmount","type":"uint256"},{"internalType":"bool","name":"isBuy","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"testSwapFuzzFraxV3WithSFrax"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testSwapSellIncreasingFraxV3"}],"devdoc":{"kind":"dev","methods":{"testPriceFuzzFraxV3SFrax(uint256,uint256)":{"details":"set lower limit to greater than 1, because previewDeposit returns 0 with an amountIn == 1"}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/FraxV3SFraxAdapter.t.sol":"FraxV3SFraxAdapterTest"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef","urls":["bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b","dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d","urls":["bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54","dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3","urls":["bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678","dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdToml.sol":{"keccak256":"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab","urls":["bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d","dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe","urls":["bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e","dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456","urls":["bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a","dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb","urls":["bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12","dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/libraries/EfficientERC20.sol":{"keccak256":"0x825d7f6aa98465b3c5b5a08d24cadfbb0a06f44693beec4e00ad2fe2824b4ef0","urls":["bzz-raw://2a5b53d7d634f50f27a1e45ce9136a054f1f19efc3dcfc1f85c8b1bbeac735fa","dweb:/ipfs/QmQSeQyF86HLRnvKgQogia8W2eoWzncG2m1GkYMnp84DJZ"],"license":"UNLICENSED"},"src/libraries/FractionMath.sol":{"keccak256":"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735","urls":["bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c","dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr"],"license":"AGPL-3.0-or-later"},"src/sfrax/FraxV3SFraxAdapter.sol":{"keccak256":"0x2b7c13cd41026b764e488645a2d0ff419861e682cf9cb3386c321280422b1077","urls":["bzz-raw://a22ef29e0035d00f629fe6db67f3e760feb97fb50aed65afe0ce628902b60be4","dweb:/ipfs/Qmdf8ry4G8MFZob1Z88GZssky9nWe7FVGQW9NMCdesWzBw"],"license":"AGPL-3.0-or-later"},"test/AdapterTest.sol":{"keccak256":"0x56850be2bb3898eee065c3d77aadb6d181ee789da32f30b1d415d5521397fa43","urls":["bzz-raw://8ca34143db16aa27c42ee3f8566ee466095d4aedcc4ea1c7726aa9c593f4fbd0","dweb:/ipfs/QmWBTLXZKbTuT5kVpAbyGCxKRdhsmzWRPZPiTqZMg9BXhd"],"license":"AGPL-3.0-or-later"},"test/FraxV3SFraxAdapter.t.sol":{"keccak256":"0x87aa57832884612d86864f98b127d66a61d5ed1b88f393a07ce0867134840e08","urls":["bzz-raw://cd522b4f3e8c5f1d12a15676b60b7d4a0a6e8c4cf7181799c83fc8b68292b32e","dweb:/ipfs/QmYzSxxusuMi4jWHYDmSH4tQDjW5UstjG45TFEEdLFBNbc"],"license":"AGPL-3.0-or-later"}},"version":1},"id":73} \ No newline at end of file diff --git a/evm/out/IBufferRouter.sol/IBufferRouter.json b/evm/out/IBufferRouter.sol/IBufferRouter.json deleted file mode 100644 index 0f6de09..0000000 --- a/evm/out/IBufferRouter.sol/IBufferRouter.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"initializeBuffer","inputs":[{"name":"wrappedToken","type":"address","internalType":"contract IERC4626"},{"name":"exactAmountUnderlyingIn","type":"uint256","internalType":"uint256"},{"name":"exactAmountWrappedIn","type":"uint256","internalType":"uint256"},{"name":"minIssuedShares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"issuedShares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"initializeBuffer(address,uint256,uint256,uint256)":"b365a3c2"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountUnderlyingIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountWrappedIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minIssuedShares\",\"type\":\"uint256\"}],\"name\":\"initializeBuffer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/interfaces/IBufferRouter.sol\":\"IBufferRouter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf\",\"dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"test/interfaces/IBufferRouter.sol\":{\"keccak256\":\"0xdb4d1925268fcc506350d7ca75068cc1b8b85a728cc857c8a5d9686422436fe9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://69f9355938eea239584f45aac97aace9c2bd669500e87f4d66191df4eaa11625\",\"dweb:/ipfs/QmQezMNHG9VXNmi2twjqMQu83gQkhY67ohZ4SW37q4CLH4\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"exactAmountUnderlyingIn","type":"uint256"},{"internalType":"uint256","name":"exactAmountWrappedIn","type":"uint256"},{"internalType":"uint256","name":"minIssuedShares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"initializeBuffer","outputs":[{"internalType":"uint256","name":"issuedShares","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/interfaces/IBufferRouter.sol":"IBufferRouter"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol":{"keccak256":"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06","urls":["bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf","dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"test/interfaces/IBufferRouter.sol":{"keccak256":"0xdb4d1925268fcc506350d7ca75068cc1b8b85a728cc857c8a5d9686422436fe9","urls":["bzz-raw://69f9355938eea239584f45aac97aace9c2bd669500e87f4d66191df4eaa11625","dweb:/ipfs/QmQezMNHG9VXNmi2twjqMQu83gQkhY67ohZ4SW37q4CLH4"],"license":"GPL-3.0-or-later"}},"version":1},"id":78} \ No newline at end of file diff --git a/evm/out/IERC1363.sol/IERC1363.json b/evm/out/IERC1363.sol/IERC1363.json deleted file mode 100644 index 6240623..0000000 --- a/evm/out/IERC1363.sol/IERC1363.json +++ /dev/null @@ -1 +0,0 @@ -{"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":"approveAndCall","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"approveAndCall","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"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":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"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":"transferAndCall","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferAndCall","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"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":"function","name":"transferFromAndCall","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFromAndCall","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}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","approveAndCall(address,uint256)":"3177029f","approveAndCall(address,uint256,bytes)":"cae9ca51","balanceOf(address)":"70a08231","supportsInterface(bytes4)":"01ffc9a7","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferAndCall(address,uint256)":"1296ee62","transferAndCall(address,uint256,bytes)":"4000aea0","transferFrom(address,address,uint256)":"23b872dd","transferFromAndCall(address,address,uint256)":"d8fbe994","transferFromAndCall(address,address,uint256,bytes)":"c1d34b89"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"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\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"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\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"transferAndCall\",\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"transferFromAndCall\",\"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\":\"transferFromAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363]. Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\",\"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\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"approveAndCall(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\",\"params\":{\"spender\":\"The address which will spend the funds.\",\"value\":\"The amount of tokens to be spent.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"approveAndCall(address,uint256,bytes)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\",\"params\":{\"data\":\"Additional data with no specified format, sent in call to `spender`.\",\"spender\":\"The address which will spend the funds.\",\"value\":\"The amount of tokens to be spent.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"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.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferAndCall(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to` and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"transferAndCall(address,uint256,bytes)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to` and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"data\":\"Additional data with no specified format, sent in call to `to`.\",\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFromAndCall(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"from\":\"The address which you want to send tokens from.\",\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"transferFromAndCall(address,address,uint256,bytes)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"data\":\"Additional data with no specified format, sent in call to `to`.\",\"from\":\"The address which you want to send tokens from.\",\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}}},\"title\":\"IERC1363\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":\"IERC1363\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"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":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"approveAndCall","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":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"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":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"transferAndCall","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"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"transferFromAndCall","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":"transferFromAndCall","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":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"approveAndCall(address,uint256)":{"details":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.","params":{"spender":"The address which will spend the funds.","value":"The amount of tokens to be spent."},"returns":{"_0":"A boolean value indicating whether the operation succeeded unless throwing."}},"approveAndCall(address,uint256,bytes)":{"details":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.","params":{"data":"Additional data with no specified format, sent in call to `spender`.","spender":"The address which will spend the funds.","value":"The amount of tokens to be spent."},"returns":{"_0":"A boolean value indicating whether the operation succeeded unless throwing."}},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"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."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferAndCall(address,uint256)":{"details":"Moves a `value` amount of tokens from the caller's account to `to` and then calls {IERC1363Receiver-onTransferReceived} on `to`.","params":{"to":"The address which you want to transfer to.","value":"The amount of tokens to be transferred."},"returns":{"_0":"A boolean value indicating whether the operation succeeded unless throwing."}},"transferAndCall(address,uint256,bytes)":{"details":"Moves a `value` amount of tokens from the caller's account to `to` and then calls {IERC1363Receiver-onTransferReceived} on `to`.","params":{"data":"Additional data with no specified format, sent in call to `to`.","to":"The address which you want to transfer to.","value":"The amount of tokens to be transferred."},"returns":{"_0":"A boolean value indicating whether the operation succeeded unless throwing."}},"transferFrom(address,address,uint256)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFromAndCall(address,address,uint256)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism and then calls {IERC1363Receiver-onTransferReceived} on `to`.","params":{"from":"The address which you want to send tokens from.","to":"The address which you want to transfer to.","value":"The amount of tokens to be transferred."},"returns":{"_0":"A boolean value indicating whether the operation succeeded unless throwing."}},"transferFromAndCall(address,address,uint256,bytes)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism and then calls {IERC1363Receiver-onTransferReceived} on `to`.","params":{"data":"Additional data with no specified format, sent in call to `to`.","from":"The address which you want to send tokens from.","to":"The address which you want to transfer to.","value":"The amount of tokens to be transferred."},"returns":{"_0":"A boolean value indicating whether the operation succeeded unless throwing."}}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":"IERC1363"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"}},"version":1},"id":23} \ No newline at end of file diff --git a/evm/out/IERC165.sol/IERC165.json b/evm/out/IERC165.sol/IERC165.json deleted file mode 100644 index a46ea96..0000000 --- a/evm/out/IERC165.sol/IERC165.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceID","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.\",\"params\":{\"interfaceID\":\"The interface identifier, as specified in ERC-165\"},\"returns\":{\"_0\":\"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"supportsInterface(bytes4)\":{\"notice\":\"Query if a contract implements an interface\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.","params":{"interfaceID":"The interface identifier, as specified in ERC-165"},"returns":{"_0":"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise"}}},"version":1},"userdoc":{"kind":"user","methods":{"supportsInterface(bytes4)":{"notice":"Query if a contract implements an interface"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IERC165.sol":"IERC165"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"}},"version":1},"id":16} \ No newline at end of file diff --git a/evm/out/IERC20.sol/IERC20.json b/evm/out/IERC20.sol/IERC20.json deleted file mode 100644 index f472d43..0000000 --- a/evm/out/IERC20.sol/IERC20.json +++ /dev/null @@ -1 +0,0 @@ -{"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":"amount","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":"amount","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":"amount","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}],"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.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"amount\",\"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\":\"amount\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.This includes the optional name, symbol, and decimals metadata.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set, where `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`).\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Be aware of front-running risks: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowance(address,address)\":{\"notice\":\"Returns the remaining number of tokens that `spender` is allowed to spend on behalf of `owner`\"},\"approve(address,uint256)\":{\"notice\":\"Sets `amount` as the allowance of `spender` over the caller's tokens.\"},\"balanceOf(address)\":{\"notice\":\"Returns the amount of tokens owned by `account`.\"},\"decimals()\":{\"notice\":\"Returns the decimals places of the token.\"},\"name()\":{\"notice\":\"Returns the name of the token.\"},\"symbol()\":{\"notice\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"notice\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"notice\":\"Moves `amount` tokens from the caller's account to `to`.\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"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":"amount","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":"amount","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":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"Be aware of front-running risks: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729"}},"version":1},"userdoc":{"kind":"user","methods":{"allowance(address,address)":{"notice":"Returns the remaining number of tokens that `spender` is allowed to spend on behalf of `owner`"},"approve(address,uint256)":{"notice":"Sets `amount` as the allowance of `spender` over the caller's tokens."},"balanceOf(address)":{"notice":"Returns the amount of tokens owned by `account`."},"decimals()":{"notice":"Returns the decimals places of the token."},"name()":{"notice":"Returns the name of the token."},"symbol()":{"notice":"Returns the symbol of the token."},"totalSupply()":{"notice":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"notice":"Moves `amount` tokens from the caller's account to `to`."},"transferFrom(address,address,uint256)":{"notice":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IERC20.sol":"IERC20"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"}},"version":1},"id":17} \ No newline at end of file diff --git a/evm/out/IERC20Metadata.sol/IERC20Metadata.json b/evm/out/IERC20Metadata.sol/IERC20Metadata.json deleted file mode 100644 index f60eb60..0000000 --- a/evm/out/IERC20Metadata.sol/IERC20Metadata.json +++ /dev/null @@ -1 +0,0 @@ -{"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}],"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.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"Interface for the optional metadata functions from the ERC-20 standard.\",\"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\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"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":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"decimals()":{"details":"Returns the decimals places of the token."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":"IERC20Metadata"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"}},"version":1},"id":31} \ No newline at end of file diff --git a/evm/out/IERC4626.sol/IERC4626.json b/evm/out/IERC4626.sol/IERC4626.json deleted file mode 100644 index f57830c..0000000 --- a/evm/out/IERC4626.sol/IERC4626.json +++ /dev/null @@ -1 +0,0 @@ -{"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":"asset","inputs":[],"outputs":[{"name":"assetTokenAddress","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"convertToAssets","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"assets","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"convertToShares","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"}],"outputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"maxDeposit","inputs":[{"name":"receiver","type":"address","internalType":"address"}],"outputs":[{"name":"maxAssets","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxMint","inputs":[{"name":"receiver","type":"address","internalType":"address"}],"outputs":[{"name":"maxShares","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxRedeem","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"maxShares","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxWithdraw","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"maxAssets","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"}],"outputs":[{"name":"assets","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"previewDeposit","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"previewMint","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"assets","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"previewRedeem","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"assets","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"previewWithdraw","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"redeem","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"assets","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalAssets","inputs":[],"outputs":[{"name":"totalManagedAssets","type":"uint256","internalType":"uint256"}],"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":"function","name":"withdraw","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"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":"Deposit","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"assets","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"shares","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":"event","name":"Withdraw","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"assets","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","asset()":"38d52e0f","balanceOf(address)":"70a08231","convertToAssets(uint256)":"07a2d13a","convertToShares(uint256)":"c6e6f592","decimals()":"313ce567","deposit(uint256,address)":"6e553f65","maxDeposit(address)":"402d267d","maxMint(address)":"c63d75b6","maxRedeem(address)":"d905777e","maxWithdraw(address)":"ce96cb77","mint(uint256,address)":"94bf804d","name()":"06fdde03","previewDeposit(uint256)":"ef8b30f7","previewMint(uint256)":"b3d7f6b9","previewRedeem(uint256)":"4cdad506","previewWithdraw(uint256)":"0a28a477","redeem(uint256,address,address)":"ba087652","symbol()":"95d89b41","totalAssets()":"01e1d114","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256,address,address)":"b460af94"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"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\":[],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"assetTokenAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"convertToAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"convertToShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maxAssets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"maxMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maxShares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maxShares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maxAssets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalManagedAssets\",\"type\":\"uint256\"}],\"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\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-4626 \\\"Tokenized Vault Standard\\\", as defined in https://eips.ethereum.org/EIPS/eip-4626[ERC-4626].\",\"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\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"asset()\":{\"details\":\"Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing. - MUST be an ERC-20 token contract. - MUST NOT revert.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"convertToAssets(uint256)\":{\"details\":\"Returns the amount of assets that the Vault would exchange for the amount of shares provided, in an ideal scenario where all the conditions are met. - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - MUST NOT show any variations depending on the caller. - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - MUST NOT revert. NOTE: This calculation MAY NOT reflect the \\u201cper-user\\u201d price-per-share, and instead should reflect the \\u201caverage-user\\u2019s\\u201d price-per-share, meaning what the average user should expect to see when exchanging to and from.\"},\"convertToShares(uint256)\":{\"details\":\"Returns the amount of shares that the Vault would exchange for the amount of assets provided, in an ideal scenario where all the conditions are met. - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - MUST NOT show any variations depending on the caller. - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - MUST NOT revert. NOTE: This calculation MAY NOT reflect the \\u201cper-user\\u201d price-per-share, and instead should reflect the \\u201caverage-user\\u2019s\\u201d price-per-share, meaning what the average user should expect to see when exchanging to and from.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"deposit(uint256,address)\":{\"details\":\"Mints shares Vault shares to receiver by depositing exactly amount of underlying tokens. - MUST emit the Deposit event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the deposit execution, and are accounted for during deposit. - MUST revert if all of assets cannot be deposited (due to deposit limit being reached, slippage, the user not approving enough underlying tokens to the Vault contract, etc). NOTE: most implementations will require pre-approval of the Vault with the Vault\\u2019s underlying asset token.\"},\"maxDeposit(address)\":{\"details\":\"Returns the maximum amount of the underlying asset that can be deposited into the Vault for the receiver, through a deposit call. - MUST return a limited value if receiver is subject to some deposit limit. - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of assets that may be deposited. - MUST NOT revert.\"},\"maxMint(address)\":{\"details\":\"Returns the maximum amount of the Vault shares that can be minted for the receiver, through a mint call. - MUST return a limited value if receiver is subject to some mint limit. - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of shares that may be minted. - MUST NOT revert.\"},\"maxRedeem(address)\":{\"details\":\"Returns the maximum amount of Vault shares that can be redeemed from the owner balance in the Vault, through a redeem call. - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - MUST return balanceOf(owner) if owner is not subject to any withdrawal limit or timelock. - MUST NOT revert.\"},\"maxWithdraw(address)\":{\"details\":\"Returns the maximum amount of the underlying asset that can be withdrawn from the owner balance in the Vault, through a withdraw call. - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - MUST NOT revert.\"},\"mint(uint256,address)\":{\"details\":\"Mints exactly shares Vault shares to receiver by depositing amount of underlying tokens. - MUST emit the Deposit event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the mint execution, and are accounted for during mint. - MUST revert if all of shares cannot be minted (due to deposit limit being reached, slippage, the user not approving enough underlying tokens to the Vault contract, etc). NOTE: most implementations will require pre-approval of the Vault with the Vault\\u2019s underlying asset token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"previewDeposit(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their deposit at the current block, given current on-chain conditions. - MUST return as close to and no more than the exact amount of Vault shares that would be minted in a deposit call in the same transaction. I.e. deposit should return the same or more shares as previewDeposit if called in the same transaction. - MUST NOT account for deposit limits like those returned from maxDeposit and should always act as though the deposit would be accepted, regardless if the user has enough tokens approved, etc. - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToShares and previewDeposit SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by depositing.\"},\"previewMint(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their mint at the current block, given current on-chain conditions. - MUST return as close to and no fewer than the exact amount of assets that would be deposited in a mint call in the same transaction. I.e. mint should return the same or fewer assets as previewMint if called in the same transaction. - MUST NOT account for mint limits like those returned from maxMint and should always act as though the mint would be accepted, regardless if the user has enough tokens approved, etc. - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToAssets and previewMint SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by minting.\"},\"previewRedeem(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their redeemption at the current block, given current on-chain conditions. - MUST return as close to and no more than the exact amount of assets that would be withdrawn in a redeem call in the same transaction. I.e. redeem should return the same or more assets as previewRedeem if called in the same transaction. - MUST NOT account for redemption limits like those returned from maxRedeem and should always act as though the redemption would be accepted, regardless if the user has enough shares, etc. - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToAssets and previewRedeem SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by redeeming.\"},\"previewWithdraw(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their withdrawal at the current block, given current on-chain conditions. - MUST return as close to and no fewer than the exact amount of Vault shares that would be burned in a withdraw call in the same transaction. I.e. withdraw should return the same or fewer shares as previewWithdraw if called in the same transaction. - MUST NOT account for withdrawal limits like those returned from maxWithdraw and should always act as though the withdrawal would be accepted, regardless if the user has enough shares, etc. - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToShares and previewWithdraw SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by depositing.\"},\"redeem(uint256,address,address)\":{\"details\":\"Burns exactly shares from owner and sends assets of underlying tokens to receiver. - MUST emit the Withdraw event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the redeem execution, and are accounted for during redeem. - MUST revert if all of shares cannot be redeemed (due to withdrawal limit being reached, slippage, the owner not having enough shares, etc). NOTE: some implementations will require pre-requesting to the Vault before a withdrawal may be performed. Those methods should be performed separately.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalAssets()\":{\"details\":\"Returns the total amount of the underlying asset that is \\u201cmanaged\\u201d by Vault. - SHOULD include any compounding that occurs from yield. - MUST be inclusive of any fees that are charged against assets in the Vault. - MUST NOT revert.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"withdraw(uint256,address,address)\":{\"details\":\"Burns shares from owner and sends exactly assets of underlying tokens to receiver. - MUST emit the Withdraw event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the withdraw execution, and are accounted for during withdraw. - MUST revert if all of assets cannot be withdrawn (due to withdrawal limit being reached, slippage, the owner not having enough shares, etc). Note that some implementations will require pre-requesting to the Vault before a withdrawal may be performed. Those methods should be performed separately.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol\":\"IERC4626\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf\",\"dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"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":"sender","type":"address","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"uint256","name":"assets","type":"uint256","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"Deposit","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":"sender","type":"address","indexed":true},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"uint256","name":"assets","type":"uint256","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"Withdraw","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":[],"stateMutability":"view","type":"function","name":"asset","outputs":[{"internalType":"address","name":"assetTokenAddress","type":"address"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function","name":"convertToAssets","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function","name":"convertToShares","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deposit","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"stateMutability":"view","type":"function","name":"maxDeposit","outputs":[{"internalType":"uint256","name":"maxAssets","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"stateMutability":"view","type":"function","name":"maxMint","outputs":[{"internalType":"uint256","name":"maxShares","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"maxRedeem","outputs":[{"internalType":"uint256","name":"maxShares","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"maxAssets","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"mint","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function","name":"previewDeposit","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function","name":"previewMint","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function","name":"previewRedeem","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function","name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"redeem","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalAssets","outputs":[{"internalType":"uint256","name":"totalManagedAssets","type":"uint256"}]},{"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"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"withdraw","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}]}],"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":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"asset()":{"details":"Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing. - MUST be an ERC-20 token contract. - MUST NOT revert."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"convertToAssets(uint256)":{"details":"Returns the amount of assets that the Vault would exchange for the amount of shares provided, in an ideal scenario where all the conditions are met. - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - MUST NOT show any variations depending on the caller. - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - MUST NOT revert. NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and from."},"convertToShares(uint256)":{"details":"Returns the amount of shares that the Vault would exchange for the amount of assets provided, in an ideal scenario where all the conditions are met. - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - MUST NOT show any variations depending on the caller. - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - MUST NOT revert. NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and from."},"decimals()":{"details":"Returns the decimals places of the token."},"deposit(uint256,address)":{"details":"Mints shares Vault shares to receiver by depositing exactly amount of underlying tokens. - MUST emit the Deposit event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the deposit execution, and are accounted for during deposit. - MUST revert if all of assets cannot be deposited (due to deposit limit being reached, slippage, the user not approving enough underlying tokens to the Vault contract, etc). NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token."},"maxDeposit(address)":{"details":"Returns the maximum amount of the underlying asset that can be deposited into the Vault for the receiver, through a deposit call. - MUST return a limited value if receiver is subject to some deposit limit. - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of assets that may be deposited. - MUST NOT revert."},"maxMint(address)":{"details":"Returns the maximum amount of the Vault shares that can be minted for the receiver, through a mint call. - MUST return a limited value if receiver is subject to some mint limit. - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of shares that may be minted. - MUST NOT revert."},"maxRedeem(address)":{"details":"Returns the maximum amount of Vault shares that can be redeemed from the owner balance in the Vault, through a redeem call. - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - MUST return balanceOf(owner) if owner is not subject to any withdrawal limit or timelock. - MUST NOT revert."},"maxWithdraw(address)":{"details":"Returns the maximum amount of the underlying asset that can be withdrawn from the owner balance in the Vault, through a withdraw call. - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - MUST NOT revert."},"mint(uint256,address)":{"details":"Mints exactly shares Vault shares to receiver by depositing amount of underlying tokens. - MUST emit the Deposit event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the mint execution, and are accounted for during mint. - MUST revert if all of shares cannot be minted (due to deposit limit being reached, slippage, the user not approving enough underlying tokens to the Vault contract, etc). NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token."},"name()":{"details":"Returns the name of the token."},"previewDeposit(uint256)":{"details":"Allows an on-chain or off-chain user to simulate the effects of their deposit at the current block, given current on-chain conditions. - MUST return as close to and no more than the exact amount of Vault shares that would be minted in a deposit call in the same transaction. I.e. deposit should return the same or more shares as previewDeposit if called in the same transaction. - MUST NOT account for deposit limits like those returned from maxDeposit and should always act as though the deposit would be accepted, regardless if the user has enough tokens approved, etc. - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToShares and previewDeposit SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by depositing."},"previewMint(uint256)":{"details":"Allows an on-chain or off-chain user to simulate the effects of their mint at the current block, given current on-chain conditions. - MUST return as close to and no fewer than the exact amount of assets that would be deposited in a mint call in the same transaction. I.e. mint should return the same or fewer assets as previewMint if called in the same transaction. - MUST NOT account for mint limits like those returned from maxMint and should always act as though the mint would be accepted, regardless if the user has enough tokens approved, etc. - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToAssets and previewMint SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by minting."},"previewRedeem(uint256)":{"details":"Allows an on-chain or off-chain user to simulate the effects of their redeemption at the current block, given current on-chain conditions. - MUST return as close to and no more than the exact amount of assets that would be withdrawn in a redeem call in the same transaction. I.e. redeem should return the same or more assets as previewRedeem if called in the same transaction. - MUST NOT account for redemption limits like those returned from maxRedeem and should always act as though the redemption would be accepted, regardless if the user has enough shares, etc. - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToAssets and previewRedeem SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by redeeming."},"previewWithdraw(uint256)":{"details":"Allows an on-chain or off-chain user to simulate the effects of their withdrawal at the current block, given current on-chain conditions. - MUST return as close to and no fewer than the exact amount of Vault shares that would be burned in a withdraw call in the same transaction. I.e. withdraw should return the same or fewer shares as previewWithdraw if called in the same transaction. - MUST NOT account for withdrawal limits like those returned from maxWithdraw and should always act as though the withdrawal would be accepted, regardless if the user has enough shares, etc. - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToShares and previewWithdraw SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by depositing."},"redeem(uint256,address,address)":{"details":"Burns exactly shares from owner and sends assets of underlying tokens to receiver. - MUST emit the Withdraw event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the redeem execution, and are accounted for during redeem. - MUST revert if all of shares cannot be redeemed (due to withdrawal limit being reached, slippage, the owner not having enough shares, etc). NOTE: some implementations will require pre-requesting to the Vault before a withdrawal may be performed. Those methods should be performed separately."},"symbol()":{"details":"Returns the symbol of the token."},"totalAssets()":{"details":"Returns the total amount of the underlying asset that is “managed” by Vault. - SHOULD include any compounding that occurs from yield. - MUST be inclusive of any fees that are charged against assets in the Vault. - MUST NOT revert."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"withdraw(uint256,address,address)":{"details":"Burns shares from owner and sends exactly assets of underlying tokens to receiver. - MUST emit the Withdraw event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the withdraw execution, and are accounted for during withdraw. - MUST revert if all of assets cannot be withdrawn (due to withdrawal limit being reached, slippage, the owner not having enough shares, etc). Note that some implementations will require pre-requesting to the Vault before a withdrawal may be performed. Those methods should be performed separately."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol":"IERC4626"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol":{"keccak256":"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06","urls":["bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf","dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"}},"version":1},"id":26} \ No newline at end of file diff --git a/evm/out/IERC721.sol/IERC721.json b/evm/out/IERC721.sol/IERC721.json deleted file mode 100644 index 3395d9f..0000000 --- a/evm/out/IERC721.sol/IERC721.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"approve","inputs":[{"name":"_approved","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"balanceOf","inputs":[{"name":"_owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"_operator","type":"address","internalType":"address"},{"name":"_approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceID","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"Approval","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_operator","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"_from","type":"address","indexed":true,"internalType":"address"},{"name":"_to","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721 Note: the ERC-165 identifier for this interface is 0x80ac58cd.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"This emits when the approved address for an NFT is changed or reaffirmed. The zero address indicates there is no approved address. When a Transfer event emits, this also indicates that the approved address for that NFT (if any) is reset to none.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"This emits when an operator is enabled or disabled for an owner. The operator can manage all NFTs of the owner.\"},\"Transfer(address,address,uint256)\":{\"details\":\"This emits when ownership of any NFT changes by any mechanism. This event emits when NFTs are created (`from` == 0) and destroyed (`to` == 0). Exception: during contract creation, any number of NFTs may be created and assigned without emitting Transfer. At the time of any transfer, the approved address for that NFT (if any) is reset to none.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"The zero address indicates there is no approved address. Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.\",\"params\":{\"_approved\":\"The new approved NFT controller\",\"_tokenId\":\"The NFT to approve\"}},\"balanceOf(address)\":{\"details\":\"NFTs assigned to the zero address are considered invalid, and this function throws for queries about the zero address.\",\"params\":{\"_owner\":\"An address for whom to query the balance\"},\"returns\":{\"_0\":\"The number of NFTs owned by `_owner`, possibly zero\"}},\"getApproved(uint256)\":{\"details\":\"Throws if `_tokenId` is not a valid NFT.\",\"params\":{\"_tokenId\":\"The NFT to find the approved address for\"},\"returns\":{\"_0\":\"The approved address for this NFT, or the zero address if there is none\"}},\"isApprovedForAll(address,address)\":{\"params\":{\"_operator\":\"The address that acts on behalf of the owner\",\"_owner\":\"The address that owns the NFTs\"},\"returns\":{\"_0\":\"True if `_operator` is an approved operator for `_owner`, false otherwise\"}},\"ownerOf(uint256)\":{\"details\":\"NFTs assigned to zero address are considered invalid, and queries about them do throw.\",\"params\":{\"_tokenId\":\"The identifier for an NFT\"},\"returns\":{\"_0\":\"The address of the owner of the NFT\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"This works identically to the other function with an extra data parameter, except this function just sets data to \\\"\\\".\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\"}},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this function checks if `_to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `_to` and throws if the return value is not `bytes4(keccak256(\\\"onERC721Received(address,address,uint256,bytes)\\\"))`.\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\",\"data\":\"Additional data with no specified format, sent in call to `_to`\"}},\"setApprovalForAll(address,bool)\":{\"details\":\"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.\",\"params\":{\"_approved\":\"True if the operator is approved, false to revoke approval\",\"_operator\":\"Address to add to the set of authorized operators\"}},\"supportsInterface(bytes4)\":{\"details\":\"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.\",\"params\":{\"interfaceID\":\"The interface identifier, as specified in ERC-165\"},\"returns\":{\"_0\":\"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT.\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\"}}},\"title\":\"ERC-721 Non-Fungible Token Standard\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approve(address,uint256)\":{\"notice\":\"Change or reaffirm the approved address for an NFT\"},\"balanceOf(address)\":{\"notice\":\"Count all NFTs assigned to an owner\"},\"getApproved(uint256)\":{\"notice\":\"Get the approved address for a single NFT\"},\"isApprovedForAll(address,address)\":{\"notice\":\"Query if an address is an authorized operator for another address\"},\"ownerOf(uint256)\":{\"notice\":\"Find the owner of an NFT\"},\"safeTransferFrom(address,address,uint256)\":{\"notice\":\"Transfers the ownership of an NFT from one address to another address\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"notice\":\"Transfers the ownership of an NFT from one address to another address\"},\"setApprovalForAll(address,bool)\":{\"notice\":\"Enable or disable approval for a third party (\\\"operator\\\") to manage all of `msg.sender`'s assets\"},\"supportsInterface(bytes4)\":{\"notice\":\"Query if a contract implements an interface\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE THEY MAY BE PERMANENTLY LOST\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IERC721.sol\":\"IERC721\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_approved","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_operator","type":"address","indexed":true},{"internalType":"bool","name":"_approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"_from","type":"address","indexed":true},{"internalType":"address","name":"_to","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"_approved","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"The zero address indicates there is no approved address. Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.","params":{"_approved":"The new approved NFT controller","_tokenId":"The NFT to approve"}},"balanceOf(address)":{"details":"NFTs assigned to the zero address are considered invalid, and this function throws for queries about the zero address.","params":{"_owner":"An address for whom to query the balance"},"returns":{"_0":"The number of NFTs owned by `_owner`, possibly zero"}},"getApproved(uint256)":{"details":"Throws if `_tokenId` is not a valid NFT.","params":{"_tokenId":"The NFT to find the approved address for"},"returns":{"_0":"The approved address for this NFT, or the zero address if there is none"}},"isApprovedForAll(address,address)":{"params":{"_operator":"The address that acts on behalf of the owner","_owner":"The address that owns the NFTs"},"returns":{"_0":"True if `_operator` is an approved operator for `_owner`, false otherwise"}},"ownerOf(uint256)":{"details":"NFTs assigned to zero address are considered invalid, and queries about them do throw.","params":{"_tokenId":"The identifier for an NFT"},"returns":{"_0":"The address of the owner of the NFT"}},"safeTransferFrom(address,address,uint256)":{"details":"This works identically to the other function with an extra data parameter, except this function just sets data to \"\".","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer"}},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this function checks if `_to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `_to` and throws if the return value is not `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`.","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer","data":"Additional data with no specified format, sent in call to `_to`"}},"setApprovalForAll(address,bool)":{"details":"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.","params":{"_approved":"True if the operator is approved, false to revoke approval","_operator":"Address to add to the set of authorized operators"}},"supportsInterface(bytes4)":{"details":"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.","params":{"interfaceID":"The interface identifier, as specified in ERC-165"},"returns":{"_0":"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise"}},"transferFrom(address,address,uint256)":{"details":"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT.","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer"}}},"version":1},"userdoc":{"kind":"user","methods":{"approve(address,uint256)":{"notice":"Change or reaffirm the approved address for an NFT"},"balanceOf(address)":{"notice":"Count all NFTs assigned to an owner"},"getApproved(uint256)":{"notice":"Get the approved address for a single NFT"},"isApprovedForAll(address,address)":{"notice":"Query if an address is an authorized operator for another address"},"ownerOf(uint256)":{"notice":"Find the owner of an NFT"},"safeTransferFrom(address,address,uint256)":{"notice":"Transfers the ownership of an NFT from one address to another address"},"safeTransferFrom(address,address,uint256,bytes)":{"notice":"Transfers the ownership of an NFT from one address to another address"},"setApprovalForAll(address,bool)":{"notice":"Enable or disable approval for a third party (\"operator\") to manage all of `msg.sender`'s assets"},"supportsInterface(bytes4)":{"notice":"Query if a contract implements an interface"},"transferFrom(address,address,uint256)":{"notice":"Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE THEY MAY BE PERMANENTLY LOST"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IERC721.sol":"IERC721"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"}},"version":1},"id":18} \ No newline at end of file diff --git a/evm/out/IERC721.sol/IERC721Enumerable.json b/evm/out/IERC721.sol/IERC721Enumerable.json deleted file mode 100644 index 6d2e20f..0000000 --- a/evm/out/IERC721.sol/IERC721Enumerable.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"approve","inputs":[{"name":"_approved","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"balanceOf","inputs":[{"name":"_owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"_operator","type":"address","internalType":"address"},{"name":"_approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceID","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"tokenByIndex","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"tokenOfOwnerByIndex","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"Approval","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_operator","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"_from","type":"address","indexed":true,"internalType":"address"},{"name":"_to","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","tokenByIndex(uint256)":"4f6ccce7","tokenOfOwnerByIndex(address,uint256)":"2f745c59","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721 Note: the ERC-165 identifier for this interface is 0x780e9d63.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"This emits when the approved address for an NFT is changed or reaffirmed. The zero address indicates there is no approved address. When a Transfer event emits, this also indicates that the approved address for that NFT (if any) is reset to none.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"This emits when an operator is enabled or disabled for an owner. The operator can manage all NFTs of the owner.\"},\"Transfer(address,address,uint256)\":{\"details\":\"This emits when ownership of any NFT changes by any mechanism. This event emits when NFTs are created (`from` == 0) and destroyed (`to` == 0). Exception: during contract creation, any number of NFTs may be created and assigned without emitting Transfer. At the time of any transfer, the approved address for that NFT (if any) is reset to none.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"The zero address indicates there is no approved address. Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.\",\"params\":{\"_approved\":\"The new approved NFT controller\",\"_tokenId\":\"The NFT to approve\"}},\"balanceOf(address)\":{\"details\":\"NFTs assigned to the zero address are considered invalid, and this function throws for queries about the zero address.\",\"params\":{\"_owner\":\"An address for whom to query the balance\"},\"returns\":{\"_0\":\"The number of NFTs owned by `_owner`, possibly zero\"}},\"getApproved(uint256)\":{\"details\":\"Throws if `_tokenId` is not a valid NFT.\",\"params\":{\"_tokenId\":\"The NFT to find the approved address for\"},\"returns\":{\"_0\":\"The approved address for this NFT, or the zero address if there is none\"}},\"isApprovedForAll(address,address)\":{\"params\":{\"_operator\":\"The address that acts on behalf of the owner\",\"_owner\":\"The address that owns the NFTs\"},\"returns\":{\"_0\":\"True if `_operator` is an approved operator for `_owner`, false otherwise\"}},\"ownerOf(uint256)\":{\"details\":\"NFTs assigned to zero address are considered invalid, and queries about them do throw.\",\"params\":{\"_tokenId\":\"The identifier for an NFT\"},\"returns\":{\"_0\":\"The address of the owner of the NFT\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"This works identically to the other function with an extra data parameter, except this function just sets data to \\\"\\\".\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\"}},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this function checks if `_to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `_to` and throws if the return value is not `bytes4(keccak256(\\\"onERC721Received(address,address,uint256,bytes)\\\"))`.\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\",\"data\":\"Additional data with no specified format, sent in call to `_to`\"}},\"setApprovalForAll(address,bool)\":{\"details\":\"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.\",\"params\":{\"_approved\":\"True if the operator is approved, false to revoke approval\",\"_operator\":\"Address to add to the set of authorized operators\"}},\"supportsInterface(bytes4)\":{\"details\":\"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.\",\"params\":{\"interfaceID\":\"The interface identifier, as specified in ERC-165\"},\"returns\":{\"_0\":\"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise\"}},\"tokenByIndex(uint256)\":{\"details\":\"Throws if `_index` >= `totalSupply()`.\",\"params\":{\"_index\":\"A counter less than `totalSupply()`\"},\"returns\":{\"_0\":\"The token identifier for the `_index`th NFT, (sort order not specified)\"}},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"Throws if `_index` >= `balanceOf(_owner)` or if `_owner` is the zero address, representing invalid NFTs.\",\"params\":{\"_index\":\"A counter less than `balanceOf(_owner)`\",\"_owner\":\"An address where we are interested in NFTs owned by them\"},\"returns\":{\"_0\":\"The token identifier for the `_index`th NFT assigned to `_owner`, (sort order not specified)\"}},\"totalSupply()\":{\"returns\":{\"_0\":\"A count of valid NFTs tracked by this contract, where each one of them has an assigned and queryable owner not equal to the zero address\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT.\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\"}}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional enumeration extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approve(address,uint256)\":{\"notice\":\"Change or reaffirm the approved address for an NFT\"},\"balanceOf(address)\":{\"notice\":\"Count all NFTs assigned to an owner\"},\"getApproved(uint256)\":{\"notice\":\"Get the approved address for a single NFT\"},\"isApprovedForAll(address,address)\":{\"notice\":\"Query if an address is an authorized operator for another address\"},\"ownerOf(uint256)\":{\"notice\":\"Find the owner of an NFT\"},\"safeTransferFrom(address,address,uint256)\":{\"notice\":\"Transfers the ownership of an NFT from one address to another address\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"notice\":\"Transfers the ownership of an NFT from one address to another address\"},\"setApprovalForAll(address,bool)\":{\"notice\":\"Enable or disable approval for a third party (\\\"operator\\\") to manage all of `msg.sender`'s assets\"},\"supportsInterface(bytes4)\":{\"notice\":\"Query if a contract implements an interface\"},\"tokenByIndex(uint256)\":{\"notice\":\"Enumerate valid NFTs\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"notice\":\"Enumerate NFTs assigned to an owner\"},\"totalSupply()\":{\"notice\":\"Count NFTs tracked by this contract\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE THEY MAY BE PERMANENTLY LOST\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IERC721.sol\":\"IERC721Enumerable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_approved","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_operator","type":"address","indexed":true},{"internalType":"bool","name":"_approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"_from","type":"address","indexed":true},{"internalType":"address","name":"_to","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"_approved","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"The zero address indicates there is no approved address. Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.","params":{"_approved":"The new approved NFT controller","_tokenId":"The NFT to approve"}},"balanceOf(address)":{"details":"NFTs assigned to the zero address are considered invalid, and this function throws for queries about the zero address.","params":{"_owner":"An address for whom to query the balance"},"returns":{"_0":"The number of NFTs owned by `_owner`, possibly zero"}},"getApproved(uint256)":{"details":"Throws if `_tokenId` is not a valid NFT.","params":{"_tokenId":"The NFT to find the approved address for"},"returns":{"_0":"The approved address for this NFT, or the zero address if there is none"}},"isApprovedForAll(address,address)":{"params":{"_operator":"The address that acts on behalf of the owner","_owner":"The address that owns the NFTs"},"returns":{"_0":"True if `_operator` is an approved operator for `_owner`, false otherwise"}},"ownerOf(uint256)":{"details":"NFTs assigned to zero address are considered invalid, and queries about them do throw.","params":{"_tokenId":"The identifier for an NFT"},"returns":{"_0":"The address of the owner of the NFT"}},"safeTransferFrom(address,address,uint256)":{"details":"This works identically to the other function with an extra data parameter, except this function just sets data to \"\".","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer"}},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this function checks if `_to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `_to` and throws if the return value is not `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`.","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer","data":"Additional data with no specified format, sent in call to `_to`"}},"setApprovalForAll(address,bool)":{"details":"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.","params":{"_approved":"True if the operator is approved, false to revoke approval","_operator":"Address to add to the set of authorized operators"}},"supportsInterface(bytes4)":{"details":"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.","params":{"interfaceID":"The interface identifier, as specified in ERC-165"},"returns":{"_0":"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise"}},"tokenByIndex(uint256)":{"details":"Throws if `_index` >= `totalSupply()`.","params":{"_index":"A counter less than `totalSupply()`"},"returns":{"_0":"The token identifier for the `_index`th NFT, (sort order not specified)"}},"tokenOfOwnerByIndex(address,uint256)":{"details":"Throws if `_index` >= `balanceOf(_owner)` or if `_owner` is the zero address, representing invalid NFTs.","params":{"_index":"A counter less than `balanceOf(_owner)`","_owner":"An address where we are interested in NFTs owned by them"},"returns":{"_0":"The token identifier for the `_index`th NFT assigned to `_owner`, (sort order not specified)"}},"totalSupply()":{"returns":{"_0":"A count of valid NFTs tracked by this contract, where each one of them has an assigned and queryable owner not equal to the zero address"}},"transferFrom(address,address,uint256)":{"details":"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT.","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer"}}},"version":1},"userdoc":{"kind":"user","methods":{"approve(address,uint256)":{"notice":"Change or reaffirm the approved address for an NFT"},"balanceOf(address)":{"notice":"Count all NFTs assigned to an owner"},"getApproved(uint256)":{"notice":"Get the approved address for a single NFT"},"isApprovedForAll(address,address)":{"notice":"Query if an address is an authorized operator for another address"},"ownerOf(uint256)":{"notice":"Find the owner of an NFT"},"safeTransferFrom(address,address,uint256)":{"notice":"Transfers the ownership of an NFT from one address to another address"},"safeTransferFrom(address,address,uint256,bytes)":{"notice":"Transfers the ownership of an NFT from one address to another address"},"setApprovalForAll(address,bool)":{"notice":"Enable or disable approval for a third party (\"operator\") to manage all of `msg.sender`'s assets"},"supportsInterface(bytes4)":{"notice":"Query if a contract implements an interface"},"tokenByIndex(uint256)":{"notice":"Enumerate valid NFTs"},"tokenOfOwnerByIndex(address,uint256)":{"notice":"Enumerate NFTs assigned to an owner"},"totalSupply()":{"notice":"Count NFTs tracked by this contract"},"transferFrom(address,address,uint256)":{"notice":"Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE THEY MAY BE PERMANENTLY LOST"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IERC721.sol":"IERC721Enumerable"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"}},"version":1},"id":18} \ No newline at end of file diff --git a/evm/out/IERC721.sol/IERC721Metadata.json b/evm/out/IERC721.sol/IERC721Metadata.json deleted file mode 100644 index 0cbcbe3..0000000 --- a/evm/out/IERC721.sol/IERC721Metadata.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"approve","inputs":[{"name":"_approved","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"balanceOf","inputs":[{"name":"_owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"_name","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"_operator","type":"address","internalType":"address"},{"name":"_approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceID","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"_symbol","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"Approval","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_operator","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"_from","type":"address","indexed":true,"internalType":"address"},{"name":"_to","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721 Note: the ERC-165 identifier for this interface is 0x5b5e139f.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"This emits when the approved address for an NFT is changed or reaffirmed. The zero address indicates there is no approved address. When a Transfer event emits, this also indicates that the approved address for that NFT (if any) is reset to none.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"This emits when an operator is enabled or disabled for an owner. The operator can manage all NFTs of the owner.\"},\"Transfer(address,address,uint256)\":{\"details\":\"This emits when ownership of any NFT changes by any mechanism. This event emits when NFTs are created (`from` == 0) and destroyed (`to` == 0). Exception: during contract creation, any number of NFTs may be created and assigned without emitting Transfer. At the time of any transfer, the approved address for that NFT (if any) is reset to none.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"The zero address indicates there is no approved address. Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.\",\"params\":{\"_approved\":\"The new approved NFT controller\",\"_tokenId\":\"The NFT to approve\"}},\"balanceOf(address)\":{\"details\":\"NFTs assigned to the zero address are considered invalid, and this function throws for queries about the zero address.\",\"params\":{\"_owner\":\"An address for whom to query the balance\"},\"returns\":{\"_0\":\"The number of NFTs owned by `_owner`, possibly zero\"}},\"getApproved(uint256)\":{\"details\":\"Throws if `_tokenId` is not a valid NFT.\",\"params\":{\"_tokenId\":\"The NFT to find the approved address for\"},\"returns\":{\"_0\":\"The approved address for this NFT, or the zero address if there is none\"}},\"isApprovedForAll(address,address)\":{\"params\":{\"_operator\":\"The address that acts on behalf of the owner\",\"_owner\":\"The address that owns the NFTs\"},\"returns\":{\"_0\":\"True if `_operator` is an approved operator for `_owner`, false otherwise\"}},\"ownerOf(uint256)\":{\"details\":\"NFTs assigned to zero address are considered invalid, and queries about them do throw.\",\"params\":{\"_tokenId\":\"The identifier for an NFT\"},\"returns\":{\"_0\":\"The address of the owner of the NFT\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"This works identically to the other function with an extra data parameter, except this function just sets data to \\\"\\\".\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\"}},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this function checks if `_to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `_to` and throws if the return value is not `bytes4(keccak256(\\\"onERC721Received(address,address,uint256,bytes)\\\"))`.\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\",\"data\":\"Additional data with no specified format, sent in call to `_to`\"}},\"setApprovalForAll(address,bool)\":{\"details\":\"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.\",\"params\":{\"_approved\":\"True if the operator is approved, false to revoke approval\",\"_operator\":\"Address to add to the set of authorized operators\"}},\"supportsInterface(bytes4)\":{\"details\":\"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.\",\"params\":{\"interfaceID\":\"The interface identifier, as specified in ERC-165\"},\"returns\":{\"_0\":\"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise\"}},\"tokenURI(uint256)\":{\"details\":\"Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC 3986. The URI may point to a JSON file that conforms to the \\\"ERC721 Metadata JSON Schema\\\".\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT.\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\"}}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional metadata extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approve(address,uint256)\":{\"notice\":\"Change or reaffirm the approved address for an NFT\"},\"balanceOf(address)\":{\"notice\":\"Count all NFTs assigned to an owner\"},\"getApproved(uint256)\":{\"notice\":\"Get the approved address for a single NFT\"},\"isApprovedForAll(address,address)\":{\"notice\":\"Query if an address is an authorized operator for another address\"},\"name()\":{\"notice\":\"A descriptive name for a collection of NFTs in this contract\"},\"ownerOf(uint256)\":{\"notice\":\"Find the owner of an NFT\"},\"safeTransferFrom(address,address,uint256)\":{\"notice\":\"Transfers the ownership of an NFT from one address to another address\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"notice\":\"Transfers the ownership of an NFT from one address to another address\"},\"setApprovalForAll(address,bool)\":{\"notice\":\"Enable or disable approval for a third party (\\\"operator\\\") to manage all of `msg.sender`'s assets\"},\"supportsInterface(bytes4)\":{\"notice\":\"Query if a contract implements an interface\"},\"symbol()\":{\"notice\":\"An abbreviated name for NFTs in this contract\"},\"tokenURI(uint256)\":{\"notice\":\"A distinct Uniform Resource Identifier (URI) for a given asset.\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE THEY MAY BE PERMANENTLY LOST\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IERC721.sol\":\"IERC721Metadata\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_approved","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_operator","type":"address","indexed":true},{"internalType":"bool","name":"_approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"_from","type":"address","indexed":true},{"internalType":"address","name":"_to","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"_approved","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"_name","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"_symbol","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"The zero address indicates there is no approved address. Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.","params":{"_approved":"The new approved NFT controller","_tokenId":"The NFT to approve"}},"balanceOf(address)":{"details":"NFTs assigned to the zero address are considered invalid, and this function throws for queries about the zero address.","params":{"_owner":"An address for whom to query the balance"},"returns":{"_0":"The number of NFTs owned by `_owner`, possibly zero"}},"getApproved(uint256)":{"details":"Throws if `_tokenId` is not a valid NFT.","params":{"_tokenId":"The NFT to find the approved address for"},"returns":{"_0":"The approved address for this NFT, or the zero address if there is none"}},"isApprovedForAll(address,address)":{"params":{"_operator":"The address that acts on behalf of the owner","_owner":"The address that owns the NFTs"},"returns":{"_0":"True if `_operator` is an approved operator for `_owner`, false otherwise"}},"ownerOf(uint256)":{"details":"NFTs assigned to zero address are considered invalid, and queries about them do throw.","params":{"_tokenId":"The identifier for an NFT"},"returns":{"_0":"The address of the owner of the NFT"}},"safeTransferFrom(address,address,uint256)":{"details":"This works identically to the other function with an extra data parameter, except this function just sets data to \"\".","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer"}},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this function checks if `_to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `_to` and throws if the return value is not `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`.","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer","data":"Additional data with no specified format, sent in call to `_to`"}},"setApprovalForAll(address,bool)":{"details":"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.","params":{"_approved":"True if the operator is approved, false to revoke approval","_operator":"Address to add to the set of authorized operators"}},"supportsInterface(bytes4)":{"details":"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.","params":{"interfaceID":"The interface identifier, as specified in ERC-165"},"returns":{"_0":"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise"}},"tokenURI(uint256)":{"details":"Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC 3986. The URI may point to a JSON file that conforms to the \"ERC721 Metadata JSON Schema\"."},"transferFrom(address,address,uint256)":{"details":"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT.","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer"}}},"version":1},"userdoc":{"kind":"user","methods":{"approve(address,uint256)":{"notice":"Change or reaffirm the approved address for an NFT"},"balanceOf(address)":{"notice":"Count all NFTs assigned to an owner"},"getApproved(uint256)":{"notice":"Get the approved address for a single NFT"},"isApprovedForAll(address,address)":{"notice":"Query if an address is an authorized operator for another address"},"name()":{"notice":"A descriptive name for a collection of NFTs in this contract"},"ownerOf(uint256)":{"notice":"Find the owner of an NFT"},"safeTransferFrom(address,address,uint256)":{"notice":"Transfers the ownership of an NFT from one address to another address"},"safeTransferFrom(address,address,uint256,bytes)":{"notice":"Transfers the ownership of an NFT from one address to another address"},"setApprovalForAll(address,bool)":{"notice":"Enable or disable approval for a third party (\"operator\") to manage all of `msg.sender`'s assets"},"supportsInterface(bytes4)":{"notice":"Query if a contract implements an interface"},"symbol()":{"notice":"An abbreviated name for NFTs in this contract"},"tokenURI(uint256)":{"notice":"A distinct Uniform Resource Identifier (URI) for a given asset."},"transferFrom(address,address,uint256)":{"notice":"Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE THEY MAY BE PERMANENTLY LOST"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IERC721.sol":"IERC721Metadata"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"}},"version":1},"id":18} \ No newline at end of file diff --git a/evm/out/IERC721.sol/IERC721TokenReceiver.json b/evm/out/IERC721.sol/IERC721TokenReceiver.json deleted file mode 100644 index 495042f..0000000 --- a/evm/out/IERC721.sol/IERC721TokenReceiver.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"onERC721Received","inputs":[{"name":"_operator","type":"address","internalType":"address"},{"name":"_from","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"onERC721Received(address,address,uint256,bytes)":"150b7a02"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Note: the ERC-165 identifier for this interface is 0x150b7a02.\",\"kind\":\"dev\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"The ERC721 smart contract calls this function on the recipient after a `transfer`. This function MAY throw to revert and reject the transfer. Return of other than the magic value MUST result in the transaction being reverted. Note: the contract address is always the message sender.\",\"params\":{\"_data\":\"Additional data with no specified format\",\"_from\":\"The address which previously owned the token\",\"_operator\":\"The address which called `safeTransferFrom` function\",\"_tokenId\":\"The NFT identifier which is being transferred\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC721Received(address,address,uint256,bytes)\\\"))` unless throwing\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"notice\":\"Handle the receipt of an NFT\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IERC721.sol\":\"IERC721TokenReceiver\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]}],"devdoc":{"kind":"dev","methods":{"onERC721Received(address,address,uint256,bytes)":{"details":"The ERC721 smart contract calls this function on the recipient after a `transfer`. This function MAY throw to revert and reject the transfer. Return of other than the magic value MUST result in the transaction being reverted. Note: the contract address is always the message sender.","params":{"_data":"Additional data with no specified format","_from":"The address which previously owned the token","_operator":"The address which called `safeTransferFrom` function","_tokenId":"The NFT identifier which is being transferred"},"returns":{"_0":"`bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))` unless throwing"}}},"version":1},"userdoc":{"kind":"user","methods":{"onERC721Received(address,address,uint256,bytes)":{"notice":"Handle the receipt of an NFT"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IERC721.sol":"IERC721TokenReceiver"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"}},"version":1},"id":18} \ No newline at end of file diff --git a/evm/out/IMulticall3.sol/IMulticall3.json b/evm/out/IMulticall3.sol/IMulticall3.json deleted file mode 100644 index ed63168..0000000 --- a/evm/out/IMulticall3.sol/IMulticall3.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"aggregate","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"returnData","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"payable"},{"type":"function","name":"aggregate3","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call3[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"allowFailure","type":"bool","internalType":"bool"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"aggregate3Value","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call3Value[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"allowFailure","type":"bool","internalType":"bool"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"blockAndAggregate","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"getBasefee","inputs":[],"outputs":[{"name":"basefee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlockHash","inputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"blockHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getBlockNumber","inputs":[],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getChainId","inputs":[],"outputs":[{"name":"chainid","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockCoinbase","inputs":[],"outputs":[{"name":"coinbase","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockDifficulty","inputs":[],"outputs":[{"name":"difficulty","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockGasLimit","inputs":[],"outputs":[{"name":"gaslimit","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockTimestamp","inputs":[],"outputs":[{"name":"timestamp","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getEthBalance","inputs":[{"name":"addr","type":"address","internalType":"address"}],"outputs":[{"name":"balance","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getLastBlockHash","inputs":[],"outputs":[{"name":"blockHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"tryAggregate","inputs":[{"name":"requireSuccess","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"tryBlockAndAggregate","inputs":[{"name":"requireSuccess","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"aggregate((address,bytes)[])":"252dba42","aggregate3((address,bool,bytes)[])":"82ad56cb","aggregate3Value((address,bool,uint256,bytes)[])":"174dea71","blockAndAggregate((address,bytes)[])":"c3077fa9","getBasefee()":"3e64a696","getBlockHash(uint256)":"ee82ac5e","getBlockNumber()":"42cbb15c","getChainId()":"3408e470","getCurrentBlockCoinbase()":"a8b0574e","getCurrentBlockDifficulty()":"72425d9d","getCurrentBlockGasLimit()":"86d516e8","getCurrentBlockTimestamp()":"0f28c97d","getEthBalance(address)":"4d2301cc","getLastBlockHash()":"27e86d6e","tryAggregate(bool,(address,bytes)[])":"bce38bd7","tryBlockAndAggregate(bool,(address,bytes)[])":"399542e9"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"returnData\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowFailure\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call3[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate3\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowFailure\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call3Value[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate3Value\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"blockAndAggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBasefee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"basefee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"chainid\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockCoinbase\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockDifficulty\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"difficulty\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockGasLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"gaslimit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"getEthBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"requireSuccess\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"tryAggregate\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"requireSuccess\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"tryBlockAndAggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IMulticall3.sol\":\"IMulticall3\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"aggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes[]","name":"returnData","type":"bytes[]"}]},{"inputs":[{"internalType":"struct IMulticall3.Call3[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"allowFailure","type":"bool"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"aggregate3","outputs":[{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[{"internalType":"struct IMulticall3.Call3Value[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"allowFailure","type":"bool"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"aggregate3Value","outputs":[{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"blockAndAggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBasefee","outputs":[{"internalType":"uint256","name":"basefee","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"view","type":"function","name":"getBlockHash","outputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlockNumber","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getChainId","outputs":[{"internalType":"uint256","name":"chainid","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockCoinbase","outputs":[{"internalType":"address","name":"coinbase","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockDifficulty","outputs":[{"internalType":"uint256","name":"difficulty","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockGasLimit","outputs":[{"internalType":"uint256","name":"gaslimit","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockTimestamp","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"stateMutability":"view","type":"function","name":"getEthBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getLastBlockHash","outputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32"}]},{"inputs":[{"internalType":"bool","name":"requireSuccess","type":"bool"},{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"tryAggregate","outputs":[{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[{"internalType":"bool","name":"requireSuccess","type":"bool"},{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"tryBlockAndAggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IMulticall3.sol":"IMulticall3"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"}},"version":1},"id":19} \ No newline at end of file diff --git a/evm/out/ISwapAdapter.sol/ISwapAdapter.json b/evm/out/ISwapAdapter.sol/ISwapAdapter.json deleted file mode 100644 index 28e0fdb..0000000 --- a/evm/out/ISwapAdapter.sol/ISwapAdapter.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"getCapabilities","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"}],"outputs":[{"name":"capabilities","type":"uint8[]","internalType":"enum ISwapAdapterTypes.Capability[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"getLimits","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"}],"outputs":[{"name":"limits","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"getPoolIds","inputs":[{"name":"offset","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"ids","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"getTokens","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"price","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"},{"name":"specifiedAmounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"prices","type":"tuple[]","internalType":"struct ISwapAdapterTypes.Fraction[]","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"swap","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"},{"name":"side","type":"uint8","internalType":"enum ISwapAdapterTypes.OrderSide"},{"name":"specifiedAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"trade","type":"tuple","internalType":"struct ISwapAdapterTypes.Trade","components":[{"name":"calculatedAmount","type":"uint256","internalType":"uint256"},{"name":"gasUsed","type":"uint256","internalType":"uint256"},{"name":"price","type":"tuple","internalType":"struct ISwapAdapterTypes.Fraction","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"nonpayable"},{"type":"error","name":"LimitExceeded","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotImplemented","inputs":[{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"Unavailable","inputs":[{"name":"reason","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"getCapabilities(bytes32,address,address)":"48bd7dfd","getLimits(bytes32,address,address)":"a9270fbe","getPoolIds(uint256,uint256)":"23eeca01","getTokens(bytes32)":"ecbbc033","price(bytes32,address,address,uint256[])":"aad6e488","swap(bytes32,address,address,uint8,uint256)":"8307c655"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"LimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"Unavailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"}],\"name\":\"getCapabilities\",\"outputs\":[{\"internalType\":\"enum ISwapAdapterTypes.Capability[]\",\"name\":\"capabilities\",\"type\":\"uint8[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"}],\"name\":\"getLimits\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"limits\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"getPoolIds\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"ids\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"getTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"specifiedAmounts\",\"type\":\"uint256[]\"}],\"name\":\"price\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction[]\",\"name\":\"prices\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"enum ISwapAdapterTypes.OrderSide\",\"name\":\"side\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"calculatedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction\",\"name\":\"price\",\"type\":\"tuple\"}],\"internalType\":\"struct ISwapAdapterTypes.Trade\",\"name\":\"trade\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implement this interface to support Propeller routing through your pools. Before implementing the interface we need to introduce some function for a given pool. The main one, the swap(x) function, implements a sell order of a specified token. The gas function simply returns the estimated gas cost given a specified amount x. Last but not least, the price function is the derivative of the swap function. It represents the best possible price a user can get from a pool after swapping x of the specified token. During calls to swap and getLimits, the caller can be assumed to have the required sell or buy token balance as well as unlimited approvals to this contract.\",\"errors\":{\"LimitExceeded(uint256)\":[{\"details\":\"The LimitExceeded error is thrown when a limit has been exceeded. E.g. the specified amount can't be traded safely.\"}],\"NotImplemented(string)\":[{\"details\":\"The NotImplemented error is thrown when a function is not implemented.\"}],\"Unavailable(string)\":[{\"details\":\"The Unavailable error is thrown when a pool or swap is not available for unexpected reason. E.g. it was paused due to a bug.\"}]},\"kind\":\"dev\",\"methods\":{\"getCapabilities(bytes32,address,address)\":{\"params\":{\"poolId\":\"The ID of the trading pool.\"},\"returns\":{\"capabilities\":\"An array of Capability.\"}},\"getLimits(bytes32,address,address)\":{\"details\":\"Retrieve the maximum limits of a token that can be traded. The limit is reached when the change in the received amounts is zero or close to zero or when the swap fails because of the pools restrictions. Overestimate if in doubt rather than underestimate. The swap function should not error with `LimitExceeded` if called with amounts below the limit.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\"},\"returns\":{\"limits\":\"An array of size two indicating the limit amount for the sell token (maximum the pool is willing to buy in sell token) as well as the limit amount of the buy token (maximum the pool is willing to sell in buy token).\"}},\"getPoolIds(uint256,uint256)\":{\"details\":\"Mainly used for testing. It is alright to not return all available pools here. Nevertheless, this is useful to test against the substreams implementation. If implemented, it saves time writing custom tests.\",\"params\":{\"limit\":\"The maximum number of pool IDs to retrieve.\",\"offset\":\"The starting index from which to retrieve pool IDs.\"},\"returns\":{\"ids\":\"An array of pool IDs.\"}},\"getTokens(bytes32)\":{\"details\":\"Mainly used for testing as this is redundant with the required substreams implementation.\",\"params\":{\"poolId\":\"The ID of the trading pool.\"},\"returns\":{\"tokens\":\"An array of address contracts.\"}},\"price(bytes32,address,address,uint256[])\":{\"details\":\"The returned prices should include all dex fees. In case the fee is dynamic on the amount traded, the returned price is expected to include the minimum fee. Note that the returned price should be the marginal price which is distinct from the executed price `swap(amount_in) / amount_in`! The marginal price is defined as the price to trade an arbitrarily small (almost zero) amount after the trade of (amount). E.g. the marginal price of a uniswap v2 pool at amount=0 is `reserve0/reserve1`. Ideally this method should be implemented, although it is optional as the price function can be numerically derived from the swap function. In case it is not available, it should be flagged via capabilities and calling it should revert using the `NotImplemented` error. The method needs to be implemented as view as this is usually more efficient and can be run in parallel.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\",\"specifiedAmounts\":\"Amounts to calculate marginal prices at.\"},\"returns\":{\"prices\":\"array of prices as fractions corresponding to the provided amounts.\"}},\"swap(bytes32,address,address,uint8,uint256)\":{\"details\":\"This function should be state modifying, meaning it should actually execute the swap and change the state of the EVM accordingly. Please include a gas usage estimate for each amount. This can be achieved e.g. by using the `gasleft()` function. The return type `Trade` has an attribute called price which should contain the value of `price(specifiedAmount)`. As this is optional, defined via `Capability.PriceFunction`, it is valid to return a Fraction(0, 0) value for this price. In that case the price will be estimated numerically.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\",\"side\":\"The side of the trade (Sell or Buy).\",\"specifiedAmount\":\"The amount to be traded.\"},\"returns\":{\"trade\":\"Trade struct representing the executed trade.\"}}},\"title\":\"ISwapAdapter\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCapabilities(bytes32,address,address)\":{\"notice\":\"Retrieves the capabilities of the selected pool.\"},\"getLimits(bytes32,address,address)\":{\"notice\":\"Retrieves the limits for each token.\"},\"getPoolIds(uint256,uint256)\":{\"notice\":\"Retrieves a range of pool IDs.\"},\"getTokens(bytes32)\":{\"notice\":\"Retrieves the tokens in the selected pool.\"},\"price(bytes32,address,address,uint256[])\":{\"notice\":\"Calculates marginal prices for specified amounts (optional).\"},\"swap(bytes32,address,address,uint8,uint256)\":{\"notice\":\"Simulates swapping tokens on a given pool.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ISwapAdapter.sol\":\"ISwapAdapter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"type":"error","name":"LimitExceeded"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"NotImplemented"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"Unavailable"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"getCapabilities","outputs":[{"internalType":"enum ISwapAdapterTypes.Capability[]","name":"capabilities","type":"uint8[]"}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"getLimits","outputs":[{"internalType":"uint256[]","name":"limits","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"getPoolIds","outputs":[{"internalType":"bytes32[]","name":"ids","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"getTokens","outputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"},{"internalType":"uint256[]","name":"specifiedAmounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"price","outputs":[{"internalType":"struct ISwapAdapterTypes.Fraction[]","name":"prices","type":"tuple[]","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"},{"internalType":"enum ISwapAdapterTypes.OrderSide","name":"side","type":"uint8"},{"internalType":"uint256","name":"specifiedAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swap","outputs":[{"internalType":"struct ISwapAdapterTypes.Trade","name":"trade","type":"tuple","components":[{"internalType":"uint256","name":"calculatedAmount","type":"uint256"},{"internalType":"uint256","name":"gasUsed","type":"uint256"},{"internalType":"struct ISwapAdapterTypes.Fraction","name":"price","type":"tuple","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]}]}],"devdoc":{"kind":"dev","methods":{"getCapabilities(bytes32,address,address)":{"params":{"poolId":"The ID of the trading pool."},"returns":{"capabilities":"An array of Capability."}},"getLimits(bytes32,address,address)":{"details":"Retrieve the maximum limits of a token that can be traded. The limit is reached when the change in the received amounts is zero or close to zero or when the swap fails because of the pools restrictions. Overestimate if in doubt rather than underestimate. The swap function should not error with `LimitExceeded` if called with amounts below the limit.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold."},"returns":{"limits":"An array of size two indicating the limit amount for the sell token (maximum the pool is willing to buy in sell token) as well as the limit amount of the buy token (maximum the pool is willing to sell in buy token)."}},"getPoolIds(uint256,uint256)":{"details":"Mainly used for testing. It is alright to not return all available pools here. Nevertheless, this is useful to test against the substreams implementation. If implemented, it saves time writing custom tests.","params":{"limit":"The maximum number of pool IDs to retrieve.","offset":"The starting index from which to retrieve pool IDs."},"returns":{"ids":"An array of pool IDs."}},"getTokens(bytes32)":{"details":"Mainly used for testing as this is redundant with the required substreams implementation.","params":{"poolId":"The ID of the trading pool."},"returns":{"tokens":"An array of address contracts."}},"price(bytes32,address,address,uint256[])":{"details":"The returned prices should include all dex fees. In case the fee is dynamic on the amount traded, the returned price is expected to include the minimum fee. Note that the returned price should be the marginal price which is distinct from the executed price `swap(amount_in) / amount_in`! The marginal price is defined as the price to trade an arbitrarily small (almost zero) amount after the trade of (amount). E.g. the marginal price of a uniswap v2 pool at amount=0 is `reserve0/reserve1`. Ideally this method should be implemented, although it is optional as the price function can be numerically derived from the swap function. In case it is not available, it should be flagged via capabilities and calling it should revert using the `NotImplemented` error. The method needs to be implemented as view as this is usually more efficient and can be run in parallel.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold.","specifiedAmounts":"Amounts to calculate marginal prices at."},"returns":{"prices":"array of prices as fractions corresponding to the provided amounts."}},"swap(bytes32,address,address,uint8,uint256)":{"details":"This function should be state modifying, meaning it should actually execute the swap and change the state of the EVM accordingly. Please include a gas usage estimate for each amount. This can be achieved e.g. by using the `gasleft()` function. The return type `Trade` has an attribute called price which should contain the value of `price(specifiedAmount)`. As this is optional, defined via `Capability.PriceFunction`, it is valid to return a Fraction(0, 0) value for this price. In that case the price will be estimated numerically.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold.","side":"The side of the trade (Sell or Buy).","specifiedAmount":"The amount to be traded."},"returns":{"trade":"Trade struct representing the executed trade."}}},"version":1},"userdoc":{"kind":"user","methods":{"getCapabilities(bytes32,address,address)":{"notice":"Retrieves the capabilities of the selected pool."},"getLimits(bytes32,address,address)":{"notice":"Retrieves the limits for each token."},"getPoolIds(uint256,uint256)":{"notice":"Retrieves a range of pool IDs."},"getTokens(bytes32)":{"notice":"Retrieves the tokens in the selected pool."},"price(bytes32,address,address,uint256[])":{"notice":"Calculates marginal prices for specified amounts (optional)."},"swap(bytes32,address,address,uint8,uint256)":{"notice":"Simulates swapping tokens on a given pool."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/interfaces/ISwapAdapter.sol":"ISwapAdapter"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"}},"version":1},"id":53} \ No newline at end of file diff --git a/evm/out/ISwapAdapterTypes.sol/ISwapAdapterTypes.json b/evm/out/ISwapAdapterTypes.sol/ISwapAdapterTypes.json deleted file mode 100644 index a806ad3..0000000 --- a/evm/out/ISwapAdapterTypes.sol/ISwapAdapterTypes.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"LimitExceeded","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotImplemented","inputs":[{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"Unavailable","inputs":[{"name":"reason","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"LimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"Unavailable\",\"type\":\"error\"}],\"devdoc\":{\"errors\":{\"LimitExceeded(uint256)\":[{\"details\":\"The LimitExceeded error is thrown when a limit has been exceeded. E.g. the specified amount can't be traded safely.\"}],\"NotImplemented(string)\":[{\"details\":\"The NotImplemented error is thrown when a function is not implemented.\"}],\"Unavailable(string)\":[{\"details\":\"The Unavailable error is thrown when a pool or swap is not available for unexpected reason. E.g. it was paused due to a bug.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ISwapAdapterTypes.sol\":\"ISwapAdapterTypes\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"type":"error","name":"LimitExceeded"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"NotImplemented"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"Unavailable"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/interfaces/ISwapAdapterTypes.sol":"ISwapAdapterTypes"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"}},"version":1},"id":54} \ No newline at end of file diff --git a/evm/out/ISwapAdapterV2.sol/ISwapAdapterV2.json b/evm/out/ISwapAdapterV2.sol/ISwapAdapterV2.json deleted file mode 100644 index 1d4180e..0000000 --- a/evm/out/ISwapAdapterV2.sol/ISwapAdapterV2.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"getCapabilities","inputs":[{"name":"poolId","type":"bytes","internalType":"bytes"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"}],"outputs":[{"name":"capabilities","type":"uint8[]","internalType":"enum ISwapAdapterTypes.Capability[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"getLimits","inputs":[{"name":"poolId","type":"bytes","internalType":"bytes"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"limits","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"getPoolIds","inputs":[{"name":"offset","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"ids","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"getTokens","inputs":[{"name":"poolId","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"price","inputs":[{"name":"poolId","type":"bytes","internalType":"bytes"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"},{"name":"specifiedAmounts","type":"uint256[]","internalType":"uint256[]"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"prices","type":"tuple[]","internalType":"struct ISwapAdapterTypes.Fraction[]","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"swap","inputs":[{"name":"poolId","type":"bytes","internalType":"bytes"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"},{"name":"side","type":"uint8","internalType":"enum ISwapAdapterTypes.OrderSide"},{"name":"specifiedAmount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"trade","type":"tuple","internalType":"struct ISwapAdapterTypes.Trade","components":[{"name":"calculatedAmount","type":"uint256","internalType":"uint256"},{"name":"gasUsed","type":"uint256","internalType":"uint256"},{"name":"price","type":"tuple","internalType":"struct ISwapAdapterTypes.Fraction","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"nonpayable"},{"type":"error","name":"LimitExceeded","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotImplemented","inputs":[{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"Unavailable","inputs":[{"name":"reason","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"getCapabilities(bytes,address,address)":"eb393a9c","getLimits(bytes,address,address,bytes)":"c8af3d53","getPoolIds(uint256,uint256)":"23eeca01","getTokens(bytes)":"2c959543","price(bytes,address,address,uint256[],bytes)":"c130f7a9","swap(bytes,address,address,uint8,uint256,bytes)":"18905bed"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"LimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"Unavailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"poolId\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"}],\"name\":\"getCapabilities\",\"outputs\":[{\"internalType\":\"enum ISwapAdapterTypes.Capability[]\",\"name\":\"capabilities\",\"type\":\"uint8[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"poolId\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"getLimits\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"limits\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"getPoolIds\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"ids\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"poolId\",\"type\":\"bytes\"}],\"name\":\"getTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"poolId\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"specifiedAmounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"price\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction[]\",\"name\":\"prices\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"poolId\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"enum ISwapAdapterTypes.OrderSide\",\"name\":\"side\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"calculatedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction\",\"name\":\"price\",\"type\":\"tuple\"}],\"internalType\":\"struct ISwapAdapterTypes.Trade\",\"name\":\"trade\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implement this interface to support Propeller routing through your pools. Before implementing the interface we need to introduce some function for a given pool. The main one, the swap(x) function, implements a sell order of a specified token. The gas function simply returns the estimated gas cost given a specified amount x. Last but not least, the price function is the derivative of the swap function. It represents the best possible price a user can get from a pool after swapping x of the specified token. During calls to swap and getLimits, the caller can be assumed to have the required sell or buy token balance as well as unlimited approvals to this contract.\",\"errors\":{\"LimitExceeded(uint256)\":[{\"details\":\"The LimitExceeded error is thrown when a limit has been exceeded. E.g. the specified amount can't be traded safely.\"}],\"NotImplemented(string)\":[{\"details\":\"The NotImplemented error is thrown when a function is not implemented.\"}],\"Unavailable(string)\":[{\"details\":\"The Unavailable error is thrown when a pool or swap is not available for unexpected reason. E.g. it was paused due to a bug.\"}]},\"kind\":\"dev\",\"methods\":{\"getCapabilities(bytes,address,address)\":{\"params\":{\"poolId\":\"The ID of the trading pool.\"},\"returns\":{\"capabilities\":\"An array of Capability.\"}},\"getLimits(bytes,address,address,bytes)\":{\"details\":\"Retrieve the maximum limits of a token that can be traded. The limit is reached when the change in the received amounts is zero or close to zero or when the swap fails because of the pools restrictions. Overestimate if in doubt rather than underestimate. The swap function should not error with `LimitExceeded` if called with amounts below the limit.\",\"params\":{\"buyToken\":\"The token being bought.\",\"data\":\"Any additional data required, that does not fit the interface\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\"},\"returns\":{\"limits\":\"An array of size two indicating the limit amount for the sell token (maximum the pool is willing to buy in sell token) as well as the limit amount of the buy token (maximum the pool is willing to sell in buy token).\"}},\"getPoolIds(uint256,uint256)\":{\"details\":\"Mainly used for testing. It is alright to not return all available pools here. Nevertheless, this is useful to test against the substreams implementation. If implemented, it saves time writing custom tests.\",\"params\":{\"limit\":\"The maximum number of pool IDs to retrieve.\",\"offset\":\"The starting index from which to retrieve pool IDs.\"},\"returns\":{\"ids\":\"An array of pool IDs.\"}},\"getTokens(bytes)\":{\"details\":\"Mainly used for testing as this is redundant with the required substreams implementation.\",\"params\":{\"poolId\":\"The ID of the trading pool.\"},\"returns\":{\"tokens\":\"An array of address contracts.\"}},\"price(bytes,address,address,uint256[],bytes)\":{\"details\":\"The returned prices should include all dex fees. In case the fee is dynamic on the amount traded, the returned price is expected to include the minimum fee. Note that the returned price should be the marginal price which is distinct from the executed price `swap(amount_in) / amount_in`! The marginal price is defined as the price to trade an arbitrarily small (almost zero) amount after the trade of (amount). E.g. the marginal price of a uniswap v2 pool at amount=0 is `reserve0/reserve1`. Ideally this method should be implemented, although it is optional as the price function can be numerically derived from the swap function. In case it is not available, it should be flagged via capabilities and calling it should revert using the `NotImplemented` error. The method needs to be implemented as view as this is usually more efficient and can be run in parallel.\",\"params\":{\"buyToken\":\"The token being bought.\",\"data\":\"Any additional data required, that does not fit the interface.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\",\"specifiedAmounts\":\"Amounts to calculate marginal prices at.\"},\"returns\":{\"prices\":\"array of prices as fractions corresponding to the provided amounts.\"}},\"swap(bytes,address,address,uint8,uint256,bytes)\":{\"details\":\"This function should be state modifying, meaning it should actually execute the swap and change the state of the EVM accordingly. Please include a gas usage estimate for each amount. This can be achieved e.g. by using the `gasleft()` function. The return type `Trade` has an attribute called price which should contain the value of `price(specifiedAmount)`. As this is optional, defined via `Capability.PriceFunction`, it is valid to return a Fraction(0, 0) value for this price. In that case the price will be estimated numerically.\",\"params\":{\"buyToken\":\"The token being bought.\",\"data\":\"Any additional data required, that does not fit the interface\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\",\"side\":\"The side of the trade (Sell or Buy).\",\"specifiedAmount\":\"The amount to be traded.\"},\"returns\":{\"trade\":\"Trade struct representing the executed trade.\"}}},\"title\":\"ISwapAdapter\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCapabilities(bytes,address,address)\":{\"notice\":\"Retrieves the capabilities of the selected pool.\"},\"getLimits(bytes,address,address,bytes)\":{\"notice\":\"Retrieves the limits for each token.\"},\"getPoolIds(uint256,uint256)\":{\"notice\":\"Retrieves a range of pool IDs.\"},\"getTokens(bytes)\":{\"notice\":\"Retrieves the tokens in the selected pool.\"},\"price(bytes,address,address,uint256[],bytes)\":{\"notice\":\"Calculates pool prices for specified amounts (optional).\"},\"swap(bytes,address,address,uint8,uint256,bytes)\":{\"notice\":\"Simulates swapping tokens on a given pool.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ISwapAdapterV2.sol\":\"ISwapAdapterV2\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/interfaces/ISwapAdapterV2.sol\":{\"keccak256\":\"0x50c477e448d8313e03b2a2d2cd6d6888578f8d0ab8afdb3686883bccf186c8db\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://a4d6572b36f001b548516fbe7ad738f20bd565faa3802cf658265363d60e7d1f\",\"dweb:/ipfs/QmcNN364R1svtmYKPz6d38tWz9dVFwS2Jqboxc5SLGA4yx\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"type":"error","name":"LimitExceeded"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"NotImplemented"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"Unavailable"},{"inputs":[{"internalType":"bytes","name":"poolId","type":"bytes"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"getCapabilities","outputs":[{"internalType":"enum ISwapAdapterTypes.Capability[]","name":"capabilities","type":"uint8[]"}]},{"inputs":[{"internalType":"bytes","name":"poolId","type":"bytes"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"getLimits","outputs":[{"internalType":"uint256[]","name":"limits","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"getPoolIds","outputs":[{"internalType":"bytes32[]","name":"ids","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes","name":"poolId","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"getTokens","outputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}]},{"inputs":[{"internalType":"bytes","name":"poolId","type":"bytes"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"},{"internalType":"uint256[]","name":"specifiedAmounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"price","outputs":[{"internalType":"struct ISwapAdapterTypes.Fraction[]","name":"prices","type":"tuple[]","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]},{"inputs":[{"internalType":"bytes","name":"poolId","type":"bytes"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"},{"internalType":"enum ISwapAdapterTypes.OrderSide","name":"side","type":"uint8"},{"internalType":"uint256","name":"specifiedAmount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"swap","outputs":[{"internalType":"struct ISwapAdapterTypes.Trade","name":"trade","type":"tuple","components":[{"internalType":"uint256","name":"calculatedAmount","type":"uint256"},{"internalType":"uint256","name":"gasUsed","type":"uint256"},{"internalType":"struct ISwapAdapterTypes.Fraction","name":"price","type":"tuple","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]}]}],"devdoc":{"kind":"dev","methods":{"getCapabilities(bytes,address,address)":{"params":{"poolId":"The ID of the trading pool."},"returns":{"capabilities":"An array of Capability."}},"getLimits(bytes,address,address,bytes)":{"details":"Retrieve the maximum limits of a token that can be traded. The limit is reached when the change in the received amounts is zero or close to zero or when the swap fails because of the pools restrictions. Overestimate if in doubt rather than underestimate. The swap function should not error with `LimitExceeded` if called with amounts below the limit.","params":{"buyToken":"The token being bought.","data":"Any additional data required, that does not fit the interface","poolId":"The ID of the trading pool.","sellToken":"The token being sold."},"returns":{"limits":"An array of size two indicating the limit amount for the sell token (maximum the pool is willing to buy in sell token) as well as the limit amount of the buy token (maximum the pool is willing to sell in buy token)."}},"getPoolIds(uint256,uint256)":{"details":"Mainly used for testing. It is alright to not return all available pools here. Nevertheless, this is useful to test against the substreams implementation. If implemented, it saves time writing custom tests.","params":{"limit":"The maximum number of pool IDs to retrieve.","offset":"The starting index from which to retrieve pool IDs."},"returns":{"ids":"An array of pool IDs."}},"getTokens(bytes)":{"details":"Mainly used for testing as this is redundant with the required substreams implementation.","params":{"poolId":"The ID of the trading pool."},"returns":{"tokens":"An array of address contracts."}},"price(bytes,address,address,uint256[],bytes)":{"details":"The returned prices should include all dex fees. In case the fee is dynamic on the amount traded, the returned price is expected to include the minimum fee. Note that the returned price should be the marginal price which is distinct from the executed price `swap(amount_in) / amount_in`! The marginal price is defined as the price to trade an arbitrarily small (almost zero) amount after the trade of (amount). E.g. the marginal price of a uniswap v2 pool at amount=0 is `reserve0/reserve1`. Ideally this method should be implemented, although it is optional as the price function can be numerically derived from the swap function. In case it is not available, it should be flagged via capabilities and calling it should revert using the `NotImplemented` error. The method needs to be implemented as view as this is usually more efficient and can be run in parallel.","params":{"buyToken":"The token being bought.","data":"Any additional data required, that does not fit the interface.","poolId":"The ID of the trading pool.","sellToken":"The token being sold.","specifiedAmounts":"Amounts to calculate marginal prices at."},"returns":{"prices":"array of prices as fractions corresponding to the provided amounts."}},"swap(bytes,address,address,uint8,uint256,bytes)":{"details":"This function should be state modifying, meaning it should actually execute the swap and change the state of the EVM accordingly. Please include a gas usage estimate for each amount. This can be achieved e.g. by using the `gasleft()` function. The return type `Trade` has an attribute called price which should contain the value of `price(specifiedAmount)`. As this is optional, defined via `Capability.PriceFunction`, it is valid to return a Fraction(0, 0) value for this price. In that case the price will be estimated numerically.","params":{"buyToken":"The token being bought.","data":"Any additional data required, that does not fit the interface","poolId":"The ID of the trading pool.","sellToken":"The token being sold.","side":"The side of the trade (Sell or Buy).","specifiedAmount":"The amount to be traded."},"returns":{"trade":"Trade struct representing the executed trade."}}},"version":1},"userdoc":{"kind":"user","methods":{"getCapabilities(bytes,address,address)":{"notice":"Retrieves the capabilities of the selected pool."},"getLimits(bytes,address,address,bytes)":{"notice":"Retrieves the limits for each token."},"getPoolIds(uint256,uint256)":{"notice":"Retrieves a range of pool IDs."},"getTokens(bytes)":{"notice":"Retrieves the tokens in the selected pool."},"price(bytes,address,address,uint256[],bytes)":{"notice":"Calculates pool prices for specified amounts (optional)."},"swap(bytes,address,address,uint8,uint256,bytes)":{"notice":"Simulates swapping tokens on a given pool."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/interfaces/ISwapAdapterV2.sol":"ISwapAdapterV2"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterV2.sol":{"keccak256":"0x50c477e448d8313e03b2a2d2cd6d6888578f8d0ab8afdb3686883bccf186c8db","urls":["bzz-raw://a4d6572b36f001b548516fbe7ad738f20bd565faa3802cf658265363d60e7d1f","dweb:/ipfs/QmcNN364R1svtmYKPz6d38tWz9dVFwS2Jqboxc5SLGA4yx"],"license":"AGPL-3.0-or-later"}},"version":1},"id":55} \ No newline at end of file diff --git a/evm/out/ISwapExecutor.sol/ISwapExecutor.json b/evm/out/ISwapExecutor.sol/ISwapExecutor.json deleted file mode 100644 index 5ac7793..0000000 --- a/evm/out/ISwapExecutor.sol/ISwapExecutor.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"swap","inputs":[{"name":"givenAmount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"calculatedAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"swap(uint256,bytes)":"bd0625ab"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"givenAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"calculatedAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"swap(uint256,bytes)\":{\"details\":\"This method can either take the amount of the input token or the amount of the output token that we would like to swap. If called with the amount of the input token, the amount of the output token will be returned, and vice versa. Whether it is the input or output that is given, is encoded in the data parameter. Note Part of the informal interface is that the executor supports sending the received tokens to a receiver address. If the underlying smart contract does not provide this functionality consider adding an additional transfer in the implementation. This function is marked as `payable` to accommodate delegatecalls, which can forward a potential `msg.value` to it.\",\"params\":{\"data\":\"Data that holds information necessary to perform the swap.\",\"givenAmount\":\"The amount of either the input token or output token to swap.\"},\"returns\":{\"calculatedAmount\":\"The amount of either the input token or output token swapped, depending on the givenAmount inputted.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"swap(uint256,bytes)\":{\"notice\":\"Performs a swap on a liquidity pool.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ISwapExecutor.sol\":\"ISwapExecutor\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/interfaces/ISwapExecutor.sol\":{\"keccak256\":\"0x776a8242bc04ade71ca70d0d574742f3b5898e049ab2fe9e59bbddaf2424dc83\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://569e844a3c9f6d67e824ba57eed75a6328b38138161a0472acf422125ba28339\",\"dweb:/ipfs/QmcTNeDYptrJ5Ffxkjqfs65ZsPNZccZzoqhdbShuSGtdct\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"givenAmount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"swap","outputs":[{"internalType":"uint256","name":"calculatedAmount","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"swap(uint256,bytes)":{"details":"This method can either take the amount of the input token or the amount of the output token that we would like to swap. If called with the amount of the input token, the amount of the output token will be returned, and vice versa. Whether it is the input or output that is given, is encoded in the data parameter. Note Part of the informal interface is that the executor supports sending the received tokens to a receiver address. If the underlying smart contract does not provide this functionality consider adding an additional transfer in the implementation. This function is marked as `payable` to accommodate delegatecalls, which can forward a potential `msg.value` to it.","params":{"data":"Data that holds information necessary to perform the swap.","givenAmount":"The amount of either the input token or output token to swap."},"returns":{"calculatedAmount":"The amount of either the input token or output token swapped, depending on the givenAmount inputted."}}},"version":1},"userdoc":{"kind":"user","methods":{"swap(uint256,bytes)":{"notice":"Performs a swap on a liquidity pool."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/interfaces/ISwapExecutor.sol":"ISwapExecutor"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"src/interfaces/ISwapExecutor.sol":{"keccak256":"0x776a8242bc04ade71ca70d0d574742f3b5898e049ab2fe9e59bbddaf2424dc83","urls":["bzz-raw://569e844a3c9f6d67e824ba57eed75a6328b38138161a0472acf422125ba28339","dweb:/ipfs/QmcTNeDYptrJ5Ffxkjqfs65ZsPNZccZzoqhdbShuSGtdct"],"license":"UNLICENSED"}},"version":1},"id":56} \ No newline at end of file diff --git a/evm/out/ISwapExecutor.sol/ISwapExecutorErrors.json b/evm/out/ISwapExecutor.sol/ISwapExecutorErrors.json deleted file mode 100644 index b1f196c..0000000 --- a/evm/out/ISwapExecutor.sol/ISwapExecutorErrors.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"InvalidParameterLength","inputs":[{"name":"","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnknownPoolType","inputs":[{"name":"","type":"uint8","internalType":"uint8"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"InvalidParameterLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"UnknownPoolType\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ISwapExecutor.sol\":\"ISwapExecutorErrors\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/interfaces/ISwapExecutor.sol\":{\"keccak256\":\"0x776a8242bc04ade71ca70d0d574742f3b5898e049ab2fe9e59bbddaf2424dc83\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://569e844a3c9f6d67e824ba57eed75a6328b38138161a0472acf422125ba28339\",\"dweb:/ipfs/QmcTNeDYptrJ5Ffxkjqfs65ZsPNZccZzoqhdbShuSGtdct\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"type":"error","name":"InvalidParameterLength"},{"inputs":[{"internalType":"uint8","name":"","type":"uint8"}],"type":"error","name":"UnknownPoolType"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/interfaces/ISwapExecutor.sol":"ISwapExecutorErrors"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"src/interfaces/ISwapExecutor.sol":{"keccak256":"0x776a8242bc04ade71ca70d0d574742f3b5898e049ab2fe9e59bbddaf2424dc83","urls":["bzz-raw://569e844a3c9f6d67e824ba57eed75a6328b38138161a0472acf422125ba28339","dweb:/ipfs/QmcTNeDYptrJ5Ffxkjqfs65ZsPNZccZzoqhdbShuSGtdct"],"license":"UNLICENSED"}},"version":1},"id":56} \ No newline at end of file diff --git a/evm/out/IntegralSwapAdapter.sol/IReserves.json b/evm/out/IntegralSwapAdapter.sol/IReserves.json deleted file mode 100644 index a0f6645..0000000 --- a/evm/out/IntegralSwapAdapter.sol/IReserves.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"getFees","inputs":[],"outputs":[{"name":"fee0","type":"uint256","internalType":"uint256"},{"name":"fee1","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getReserves","inputs":[],"outputs":[{"name":"reserve0","type":"uint112","internalType":"uint112"},{"name":"reserve1","type":"uint112","internalType":"uint112"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"getFees()":"db8d55f1","getReserves()":"0902f1ac"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"fee0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee1\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/integral/IntegralSwapAdapter.sol\":\"IReserves\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/integral/IntegralSwapAdapter.sol\":{\"keccak256\":\"0xba81dc8dd2e92b38d2de308f2d4fd5d43043a6646c5c5026cb0599328270913f\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://cdd83b073508b386799138c43800f670b93c49357e7e04e6168a067b80300f98\",\"dweb:/ipfs/QmZrMmCPf7ePH4jeQGzaxbDrt1LSSLSXRJHg6LfaSrVRVm\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"getFees","outputs":[{"internalType":"uint256","name":"fee0","type":"uint256"},{"internalType":"uint256","name":"fee1","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getReserves","outputs":[{"internalType":"uint112","name":"reserve0","type":"uint112"},{"internalType":"uint112","name":"reserve1","type":"uint112"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/integral/IntegralSwapAdapter.sol":"IReserves"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/integral/IntegralSwapAdapter.sol":{"keccak256":"0xba81dc8dd2e92b38d2de308f2d4fd5d43043a6646c5c5026cb0599328270913f","urls":["bzz-raw://cdd83b073508b386799138c43800f670b93c49357e7e04e6168a067b80300f98","dweb:/ipfs/QmZrMmCPf7ePH4jeQGzaxbDrt1LSSLSXRJHg6LfaSrVRVm"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"}},"version":1},"id":52} \ No newline at end of file diff --git a/evm/out/IntegralSwapAdapter.sol/ITwapERC20.json b/evm/out/IntegralSwapAdapter.sol/ITwapERC20.json deleted file mode 100644 index 9739ba0..0000000 --- a/evm/out/IntegralSwapAdapter.sol/ITwapERC20.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"PERMIT_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"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":"decreaseAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"subtractedValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"increaseAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"addedValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"nonces","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"permit","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"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}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"PERMIT_TYPEHASH()":"30adf81f","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"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\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":{\"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\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/integral/IntegralSwapAdapter.sol\":\"ITwapERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/integral/IntegralSwapAdapter.sol\":{\"keccak256\":\"0xba81dc8dd2e92b38d2de308f2d4fd5d43043a6646c5c5026cb0599328270913f\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://cdd83b073508b386799138c43800f670b93c49357e7e04e6168a067b80300f98\",\"dweb:/ipfs/QmZrMmCPf7ePH4jeQGzaxbDrt1LSSLSXRJHg6LfaSrVRVm\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"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":[],"stateMutability":"pure","type":"function","name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"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":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"permit"},{"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":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/integral/IntegralSwapAdapter.sol":"ITwapERC20"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/integral/IntegralSwapAdapter.sol":{"keccak256":"0xba81dc8dd2e92b38d2de308f2d4fd5d43043a6646c5c5026cb0599328270913f","urls":["bzz-raw://cdd83b073508b386799138c43800f670b93c49357e7e04e6168a067b80300f98","dweb:/ipfs/QmZrMmCPf7ePH4jeQGzaxbDrt1LSSLSXRJHg6LfaSrVRVm"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"}},"version":1},"id":52} \ No newline at end of file diff --git a/evm/out/IntegralSwapAdapter.sol/ITwapFactory.json b/evm/out/IntegralSwapAdapter.sol/ITwapFactory.json deleted file mode 100644 index a35a0be..0000000 --- a/evm/out/IntegralSwapAdapter.sol/ITwapFactory.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"allPairs","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"pair","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"allPairsLength","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"collect","inputs":[{"name":"tokenA","type":"address","internalType":"address"},{"name":"tokenB","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createPair","inputs":[{"name":"tokenA","type":"address","internalType":"address"},{"name":"tokenB","type":"address","internalType":"address"},{"name":"oracle","type":"address","internalType":"address"},{"name":"trader","type":"address","internalType":"address"}],"outputs":[{"name":"pair","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"getPair","inputs":[{"name":"tokenA","type":"address","internalType":"address"},{"name":"tokenB","type":"address","internalType":"address"}],"outputs":[{"name":"pair","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setBurnFee","inputs":[{"name":"tokenA","type":"address","internalType":"address"},{"name":"tokenB","type":"address","internalType":"address"},{"name":"fee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMintFee","inputs":[{"name":"tokenA","type":"address","internalType":"address"},{"name":"tokenB","type":"address","internalType":"address"},{"name":"fee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOracle","inputs":[{"name":"tokenA","type":"address","internalType":"address"},{"name":"tokenB","type":"address","internalType":"address"},{"name":"oracle","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOwner","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSwapFee","inputs":[{"name":"tokenA","type":"address","internalType":"address"},{"name":"tokenB","type":"address","internalType":"address"},{"name":"fee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTrader","inputs":[{"name":"tokenA","type":"address","internalType":"address"},{"name":"tokenB","type":"address","internalType":"address"},{"name":"trader","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdraw","inputs":[{"name":"tokenA","type":"address","internalType":"address"},{"name":"tokenB","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"to","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"OwnerSet","inputs":[{"name":"owner","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PairCreated","inputs":[{"name":"token0","type":"address","indexed":true,"internalType":"address"},{"name":"token1","type":"address","indexed":true,"internalType":"address"},{"name":"pair","type":"address","indexed":false,"internalType":"address"},{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allPairs(uint256)":"1e3dd18b","allPairsLength()":"574f2ba3","collect(address,address,address)":"66900253","createPair(address,address,address,address)":"4da8eeb0","getPair(address,address)":"e6a43905","owner()":"8da5cb5b","setBurnFee(address,address,uint256)":"dbc8f12c","setMintFee(address,address,uint256)":"4fe0e92f","setOracle(address,address,address)":"0c144581","setOwner(address)":"13af4035","setSwapFee(address,address,uint256)":"cb39e9cb","setTrader(address,address,address)":"88538715","withdraw(address,address,uint256,address)":"0e917f76"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnerSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"PairCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allPairs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allPairsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"collect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"}],\"name\":\"createPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"getPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"setBurnFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"setMintFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"setOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"setSwapFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"}],\"name\":\"setTrader\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/integral/IntegralSwapAdapter.sol\":\"ITwapFactory\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/integral/IntegralSwapAdapter.sol\":{\"keccak256\":\"0xba81dc8dd2e92b38d2de308f2d4fd5d43043a6646c5c5026cb0599328270913f\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://cdd83b073508b386799138c43800f670b93c49357e7e04e6168a067b80300f98\",\"dweb:/ipfs/QmZrMmCPf7ePH4jeQGzaxbDrt1LSSLSXRJHg6LfaSrVRVm\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":false}],"type":"event","name":"OwnerSet","anonymous":false},{"inputs":[{"internalType":"address","name":"token0","type":"address","indexed":true},{"internalType":"address","name":"token1","type":"address","indexed":true},{"internalType":"address","name":"pair","type":"address","indexed":false},{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"PairCreated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"allPairs","outputs":[{"internalType":"address","name":"pair","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"allPairsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"address","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"collect"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"address","name":"oracle","type":"address"},{"internalType":"address","name":"trader","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"createPair","outputs":[{"internalType":"address","name":"pair","type":"address"}]},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"stateMutability":"view","type":"function","name":"getPair","outputs":[{"internalType":"address","name":"pair","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"fee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setBurnFee"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"fee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMintFee"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"address","name":"oracle","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setOracle"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setOwner"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"fee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setSwapFee"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"address","name":"trader","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTrader"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"withdraw"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/integral/IntegralSwapAdapter.sol":"ITwapFactory"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/integral/IntegralSwapAdapter.sol":{"keccak256":"0xba81dc8dd2e92b38d2de308f2d4fd5d43043a6646c5c5026cb0599328270913f","urls":["bzz-raw://cdd83b073508b386799138c43800f670b93c49357e7e04e6168a067b80300f98","dweb:/ipfs/QmZrMmCPf7ePH4jeQGzaxbDrt1LSSLSXRJHg6LfaSrVRVm"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"}},"version":1},"id":52} \ No newline at end of file diff --git a/evm/out/IntegralSwapAdapter.sol/ITwapPair.json b/evm/out/IntegralSwapAdapter.sol/ITwapPair.json deleted file mode 100644 index 355618e..0000000 --- a/evm/out/IntegralSwapAdapter.sol/ITwapPair.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"MINIMUM_LIQUIDITY","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"PERMIT_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"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":"burn","inputs":[{"name":"to","type":"address","internalType":"address"}],"outputs":[{"name":"amount0","type":"uint256","internalType":"uint256"},{"name":"amount1","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"burnFee","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"collect","inputs":[{"name":"to","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decreaseAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"subtractedValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"factory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getDepositAmount0In","inputs":[{"name":"amount0","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"depositAmount0In","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getDepositAmount1In","inputs":[{"name":"amount1","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"depositAmount1In","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getFees","inputs":[],"outputs":[{"name":"fee0","type":"uint256","internalType":"uint256"},{"name":"fee1","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getReserves","inputs":[],"outputs":[{"name":"reserve0","type":"uint112","internalType":"uint112"},{"name":"reserve1","type":"uint112","internalType":"uint112"}],"stateMutability":"view"},{"type":"function","name":"getSwapAmount0In","inputs":[{"name":"amount1Out","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"swapAmount0In","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getSwapAmount0Out","inputs":[{"name":"amount1In","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"swapAmount0Out","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getSwapAmount1In","inputs":[{"name":"amount0Out","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"swapAmount1In","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getSwapAmount1Out","inputs":[{"name":"amount0In","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"swapAmount1Out","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"increaseAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"addedValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"initialize","inputs":[{"name":"_token0","type":"address","internalType":"address"},{"name":"_token1","type":"address","internalType":"address"},{"name":"_oracle","type":"address","internalType":"address"},{"name":"_trader","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mint","inputs":[{"name":"to","type":"address","internalType":"address"}],"outputs":[{"name":"liquidity","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"mintFee","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"nonces","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"oracle","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"permit","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setBurnFee","inputs":[{"name":"fee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMintFee","inputs":[{"name":"fee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOracle","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSwapFee","inputs":[{"name":"fee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTrader","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swap","inputs":[{"name":"amount0Out","type":"uint256","internalType":"uint256"},{"name":"amount1Out","type":"uint256","internalType":"uint256"},{"name":"to","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swapFee","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"sync","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"token0","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"token1","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"trader","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"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":"Burn","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"amount0Out","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount1Out","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"liquidityIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Mint","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"amount0In","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount1In","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"liquidityOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetBurnFee","inputs":[{"name":"fee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetMintFee","inputs":[{"name":"fee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetOracle","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetSwapFee","inputs":[{"name":"fee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetTrader","inputs":[{"name":"trader","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Swap","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"amount0In","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount1In","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount0Out","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount1Out","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"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}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"MINIMUM_LIQUIDITY()":"ba9a7a56","PERMIT_TYPEHASH()":"30adf81f","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(address)":"89afcb44","burnFee()":"fce589d8","collect(address)":"06ec16f8","decreaseAllowance(address,uint256)":"a457c2d7","factory()":"c45a0155","getDepositAmount0In(uint256,bytes)":"38b07f02","getDepositAmount1In(uint256,bytes)":"95c5df95","getFees()":"db8d55f1","getReserves()":"0902f1ac","getSwapAmount0In(uint256,bytes)":"c7481b8f","getSwapAmount0Out(uint256,bytes)":"0ae5f5b4","getSwapAmount1In(uint256,bytes)":"d6945d89","getSwapAmount1Out(uint256,bytes)":"2b9b015d","increaseAllowance(address,uint256)":"39509351","initialize(address,address,address,address)":"f8c8765e","mint(address)":"6a627842","mintFee()":"13966db5","nonces(address)":"7ecebe00","oracle()":"7dc0d1d0","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","setBurnFee(uint256)":"4bf2c7c9","setMintFee(uint256)":"eddd0d9c","setOracle(address)":"7adbf973","setSwapFee(uint256)":"34e19907","setTrader(address)":"a6bc18f9","swap(uint256,uint256,address,bytes)":"022c0d9f","swapFee()":"54cf2aeb","sync()":"fff6cae9","token0()":"0dfe1681","token1()":"d21220a7","totalSupply()":"18160ddd","trader()":"1758078b","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidityIn\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidityOut\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"SetBurnFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"SetMintFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"SetOracle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"SetSwapFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"}],\"name\":\"SetTrader\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Swap\",\"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\":[],\"name\":\"MINIMUM_LIQUIDITY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"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\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"burnFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"collect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"getDepositAmount0In\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"depositAmount0In\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"getDepositAmount1In\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"depositAmount1In\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"fee0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee1\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"getSwapAmount0In\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"swapAmount0In\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount1In\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"getSwapAmount0Out\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"swapAmount0Out\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"getSwapAmount1In\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"swapAmount1In\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0In\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"getSwapAmount1Out\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"swapAmount1Out\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token1\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_oracle\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"setBurnFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"setMintFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"setOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"setSwapFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"setTrader\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swapFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sync\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trader\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":{\"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\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/integral/IntegralSwapAdapter.sol\":\"ITwapPair\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/integral/IntegralSwapAdapter.sol\":{\"keccak256\":\"0xba81dc8dd2e92b38d2de308f2d4fd5d43043a6646c5c5026cb0599328270913f\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://cdd83b073508b386799138c43800f670b93c49357e7e04e6168a067b80300f98\",\"dweb:/ipfs/QmZrMmCPf7ePH4jeQGzaxbDrt1LSSLSXRJHg6LfaSrVRVm\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"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":"sender","type":"address","indexed":true},{"internalType":"uint256","name":"amount0Out","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount1Out","type":"uint256","indexed":false},{"internalType":"uint256","name":"liquidityIn","type":"uint256","indexed":false},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"Burn","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint256","name":"amount0In","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount1In","type":"uint256","indexed":false},{"internalType":"uint256","name":"liquidityOut","type":"uint256","indexed":false},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"Mint","anonymous":false},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256","indexed":false}],"type":"event","name":"SetBurnFee","anonymous":false},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256","indexed":false}],"type":"event","name":"SetMintFee","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"SetOracle","anonymous":false},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256","indexed":false}],"type":"event","name":"SetSwapFee","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":false}],"type":"event","name":"SetTrader","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint256","name":"amount0In","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount1In","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount0Out","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount1Out","type":"uint256","indexed":false},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"Swap","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":[],"stateMutability":"pure","type":"function","name":"MINIMUM_LIQUIDITY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"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":[{"internalType":"address","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"collect"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"view","type":"function","name":"getDepositAmount0In","outputs":[{"internalType":"uint256","name":"depositAmount0In","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"view","type":"function","name":"getDepositAmount1In","outputs":[{"internalType":"uint256","name":"depositAmount1In","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getFees","outputs":[{"internalType":"uint256","name":"fee0","type":"uint256"},{"internalType":"uint256","name":"fee1","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getReserves","outputs":[{"internalType":"uint112","name":"reserve0","type":"uint112"},{"internalType":"uint112","name":"reserve1","type":"uint112"}]},{"inputs":[{"internalType":"uint256","name":"amount1Out","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"view","type":"function","name":"getSwapAmount0In","outputs":[{"internalType":"uint256","name":"swapAmount0In","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amount1In","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"view","type":"function","name":"getSwapAmount0Out","outputs":[{"internalType":"uint256","name":"swapAmount0Out","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amount0Out","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"view","type":"function","name":"getSwapAmount1In","outputs":[{"internalType":"uint256","name":"swapAmount1In","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amount0In","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"view","type":"function","name":"getSwapAmount1Out","outputs":[{"internalType":"uint256","name":"swapAmount1Out","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"},{"internalType":"address","name":"_oracle","type":"address"},{"internalType":"address","name":"_trader","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"mint","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mintFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"oracle","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"permit"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setBurnFee"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMintFee"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setOracle"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setSwapFee"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTrader"},{"inputs":[{"internalType":"uint256","name":"amount0Out","type":"uint256"},{"internalType":"uint256","name":"amount1Out","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"swap"},{"inputs":[],"stateMutability":"view","type":"function","name":"swapFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"sync"},{"inputs":[],"stateMutability":"view","type":"function","name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"trader","outputs":[{"internalType":"address","name":"","type":"address"}]},{"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":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/integral/IntegralSwapAdapter.sol":"ITwapPair"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/integral/IntegralSwapAdapter.sol":{"keccak256":"0xba81dc8dd2e92b38d2de308f2d4fd5d43043a6646c5c5026cb0599328270913f","urls":["bzz-raw://cdd83b073508b386799138c43800f670b93c49357e7e04e6168a067b80300f98","dweb:/ipfs/QmZrMmCPf7ePH4jeQGzaxbDrt1LSSLSXRJHg6LfaSrVRVm"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"}},"version":1},"id":52} \ No newline at end of file diff --git a/evm/out/IntegralSwapAdapter.sol/ITwapRelayer.json b/evm/out/IntegralSwapAdapter.sol/ITwapRelayer.json deleted file mode 100644 index 64f7a10..0000000 --- a/evm/out/IntegralSwapAdapter.sol/ITwapRelayer.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"approve","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"to","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"buy","inputs":[{"name":"buyParams","type":"tuple","internalType":"struct ITwapRelayer.BuyParams","components":[{"name":"tokenIn","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"address"},{"name":"amountInMax","type":"uint256","internalType":"uint256"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"wrapUnwrap","type":"bool","internalType":"bool"},{"name":"to","type":"address","internalType":"address"},{"name":"submitDeadline","type":"uint32","internalType":"uint32"}]}],"outputs":[{"name":"orderId","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"delay","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"ethTransferGasCost","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"executionGasLimit","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"factory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"getPoolState","inputs":[{"name":"token0","type":"address","internalType":"address"},{"name":"token1","type":"address","internalType":"address"}],"outputs":[{"name":"price","type":"uint256","internalType":"uint256"},{"name":"fee","type":"uint256","internalType":"uint256"},{"name":"limitMin0","type":"uint256","internalType":"uint256"},{"name":"limitMax0","type":"uint256","internalType":"uint256"},{"name":"limitMin1","type":"uint256","internalType":"uint256"},{"name":"limitMax1","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPriceByPairAddress","inputs":[{"name":"pair","type":"address","internalType":"address"},{"name":"inverted","type":"bool","internalType":"bool"}],"outputs":[{"name":"xDecimals","type":"uint8","internalType":"uint8"},{"name":"yDecimals","type":"uint8","internalType":"uint8"},{"name":"price","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPriceByTokenAddresses","inputs":[{"name":"tokenIn","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"address"}],"outputs":[{"name":"price","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenLimitMaxMultiplier","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"getTokenLimitMin","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"getTolerance","inputs":[{"name":"pair","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"pure"},{"type":"function","name":"getTwapInterval","inputs":[{"name":"pair","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"pure"},{"type":"function","name":"isOneInchRouterWhitelisted","inputs":[{"name":"oneInchRouter","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPairEnabled","inputs":[{"name":"pair","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"quoteBuy","inputs":[{"name":"tokenIn","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"address"},{"name":"amountOut","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"quoteSell","inputs":[{"name":"tokenIn","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"rebalanceSellWithDelay","inputs":[{"name":"tokenIn","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rebalanceSellWithOneInch","inputs":[{"name":"tokenIn","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"oneInchRouter","type":"address","internalType":"address"},{"name":"_gas","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rebalancer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"sell","inputs":[{"name":"sellParams","type":"tuple","internalType":"struct ITwapRelayer.SellParams","components":[{"name":"tokenIn","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOutMin","type":"uint256","internalType":"uint256"},{"name":"wrapUnwrap","type":"bool","internalType":"bool"},{"name":"to","type":"address","internalType":"address"},{"name":"submitDeadline","type":"uint32","internalType":"uint32"}]}],"outputs":[{"name":"orderId","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"setOwner","inputs":[{"name":"_owner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPairEnabled","inputs":[{"name":"pair","type":"address","internalType":"address"},{"name":"enabled","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRebalancer","inputs":[{"name":"_rebalancer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSwapFee","inputs":[{"name":"pair","type":"address","internalType":"address"},{"name":"fee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swapFee","inputs":[{"name":"pair","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"tokenLimitMaxMultiplier","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"tokenLimitMin","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"tolerance","inputs":[{"name":"pair","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"pure"},{"type":"function","name":"twapInterval","inputs":[{"name":"pair","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"pure"},{"type":"function","name":"weth","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"whitelistOneInchRouter","inputs":[{"name":"oneInchRouter","type":"address","internalType":"address"},{"name":"whitelisted","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdraw","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"to","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approve","inputs":[{"name":"token","type":"address","indexed":false,"internalType":"address"},{"name":"to","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Buy","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"tokenIn","type":"address","indexed":false,"internalType":"address"},{"name":"tokenOut","type":"address","indexed":false,"internalType":"address"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountInMax","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"wrapUnwrap","type":"bool","indexed":false,"internalType":"bool"},{"name":"fee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"orderContract","type":"address","indexed":false,"internalType":"address"},{"name":"orderId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DelaySet","inputs":[{"name":"delay","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"EthTransferGasCostSet","inputs":[{"name":"gasCost","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ExecutionGasLimitSet","inputs":[{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OneInchRouterWhitelisted","inputs":[{"name":"oneInchRouter","type":"address","indexed":true,"internalType":"address"},{"name":"whitelisted","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"OwnerSet","inputs":[{"name":"owner","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PairEnabledSet","inputs":[{"name":"pair","type":"address","indexed":false,"internalType":"address"},{"name":"enabled","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"RebalanceSellWithDelay","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"tokenIn","type":"address","indexed":false,"internalType":"address"},{"name":"tokenOut","type":"address","indexed":false,"internalType":"address"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"delayOrderId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RebalanceSellWithOneInch","inputs":[{"name":"oneInchRouter","type":"address","indexed":true,"internalType":"address"},{"name":"gas","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"data","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"RebalancerSet","inputs":[{"name":"rebalancer","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Sell","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"tokenIn","type":"address","indexed":false,"internalType":"address"},{"name":"tokenOut","type":"address","indexed":false,"internalType":"address"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOutMin","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"wrapUnwrap","type":"bool","indexed":false,"internalType":"bool"},{"name":"fee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"orderContract","type":"address","indexed":false,"internalType":"address"},{"name":"orderId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SwapFeeSet","inputs":[{"name":"pair","type":"address","indexed":false,"internalType":"address"},{"name":"fee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenLimitMaxMultiplierSet","inputs":[{"name":"token","type":"address","indexed":false,"internalType":"address"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenLimitMinSet","inputs":[{"name":"token","type":"address","indexed":false,"internalType":"address"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ToleranceSet","inputs":[{"name":"pair","type":"address","indexed":false,"internalType":"address"},{"name":"tolerance","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"TwapIntervalSet","inputs":[{"name":"pair","type":"address","indexed":false,"internalType":"address"},{"name":"interval","type":"uint32","indexed":false,"internalType":"uint32"}],"anonymous":false},{"type":"event","name":"Withdraw","inputs":[{"name":"token","type":"address","indexed":false,"internalType":"address"},{"name":"to","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256,address)":"1271f09a","buy((address,address,uint256,uint256,bool,address,uint32))":"2d814ea2","delay()":"6a42b8f8","ethTransferGasCost()":"42f8755e","executionGasLimit()":"39cb1f3e","factory()":"c45a0155","getPoolState(address,address)":"abc27eed","getPriceByPairAddress(address,bool)":"0b7f942f","getPriceByTokenAddresses(address,address)":"ea2cc896","getTokenLimitMaxMultiplier(address)":"75f3a1b5","getTokenLimitMin(address)":"232ab3df","getTolerance(address)":"b0385553","getTwapInterval(address)":"41084769","isOneInchRouterWhitelisted(address)":"3643be68","isPairEnabled(address)":"033a9305","owner()":"8da5cb5b","quoteBuy(address,address,uint256)":"34259b1b","quoteSell(address,address,uint256)":"9981d632","rebalanceSellWithDelay(address,address,uint256)":"44ac834c","rebalanceSellWithOneInch(address,uint256,address,uint256,bytes)":"21426c4d","rebalancer()":"01d22ccd","sell((address,address,uint256,uint256,bool,address,uint32))":"58d30ac9","setOwner(address)":"13af4035","setPairEnabled(address,bool)":"5b0489a0","setRebalancer(address)":"6cfd1553","setSwapFee(address,uint256)":"991991c7","swapFee(address)":"a6ae80e2","tokenLimitMaxMultiplier(address)":"a4ccc7a3","tokenLimitMin(address)":"cfa4e551","tolerance(address)":"a70885c1","twapInterval(address)":"a1077651","weth()":"3fc8cef3","whitelistOneInchRouter(address,bool)":"ec649af9","withdraw(address,uint256,address)":"69328dec"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approve\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"wrapUnwrap\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"orderContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"}],\"name\":\"Buy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"delay\",\"type\":\"address\"}],\"name\":\"DelaySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasCost\",\"type\":\"uint256\"}],\"name\":\"EthTransferGasCostSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"ExecutionGasLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oneInchRouter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"whitelisted\",\"type\":\"bool\"}],\"name\":\"OneInchRouterWhitelisted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnerSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"PairEnabledSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"delayOrderId\",\"type\":\"uint256\"}],\"name\":\"RebalanceSellWithDelay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oneInchRouter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"RebalanceSellWithOneInch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"rebalancer\",\"type\":\"address\"}],\"name\":\"RebalancerSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"wrapUnwrap\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"orderContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"}],\"name\":\"Sell\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"SwapFeeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenLimitMaxMultiplierSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenLimitMinSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tolerance\",\"type\":\"uint16\"}],\"name\":\"ToleranceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"interval\",\"type\":\"uint32\"}],\"name\":\"TwapIntervalSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wrapUnwrap\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"submitDeadline\",\"type\":\"uint32\"}],\"internalType\":\"struct ITwapRelayer.BuyParams\",\"name\":\"buyParams\",\"type\":\"tuple\"}],\"name\":\"buy\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delay\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ethTransferGasCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"executionGasLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"}],\"name\":\"getPoolState\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitMin0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitMax0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitMin1\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitMax1\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"inverted\",\"type\":\"bool\"}],\"name\":\"getPriceByPairAddress\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"xDecimals\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"yDecimals\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"}],\"name\":\"getPriceByTokenAddresses\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenLimitMaxMultiplier\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenLimitMin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"name\":\"getTolerance\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"name\":\"getTwapInterval\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oneInchRouter\",\"type\":\"address\"}],\"name\":\"isOneInchRouterWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"name\":\"isPairEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"quoteBuy\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"quoteSell\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"rebalanceSellWithDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"oneInchRouter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_gas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"rebalanceSellWithOneInch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rebalancer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wrapUnwrap\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"submitDeadline\",\"type\":\"uint32\"}],\"internalType\":\"struct ITwapRelayer.SellParams\",\"name\":\"sellParams\",\"type\":\"tuple\"}],\"name\":\"sell\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setPairEnabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rebalancer\",\"type\":\"address\"}],\"name\":\"setRebalancer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"setSwapFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"name\":\"swapFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"tokenLimitMaxMultiplier\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"tokenLimitMin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"name\":\"tolerance\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"name\":\"twapInterval\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"weth\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oneInchRouter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"whitelisted\",\"type\":\"bool\"}],\"name\":\"whitelistOneInchRouter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/integral/IntegralSwapAdapter.sol\":\"ITwapRelayer\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/integral/IntegralSwapAdapter.sol\":{\"keccak256\":\"0xba81dc8dd2e92b38d2de308f2d4fd5d43043a6646c5c5026cb0599328270913f\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://cdd83b073508b386799138c43800f670b93c49357e7e04e6168a067b80300f98\",\"dweb:/ipfs/QmZrMmCPf7ePH4jeQGzaxbDrt1LSSLSXRJHg6LfaSrVRVm\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":false},{"internalType":"address","name":"to","type":"address","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Approve","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"tokenIn","type":"address","indexed":false},{"internalType":"address","name":"tokenOut","type":"address","indexed":false},{"internalType":"uint256","name":"amountIn","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountInMax","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountOut","type":"uint256","indexed":false},{"internalType":"bool","name":"wrapUnwrap","type":"bool","indexed":false},{"internalType":"uint256","name":"fee","type":"uint256","indexed":false},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"address","name":"orderContract","type":"address","indexed":false},{"internalType":"uint256","name":"orderId","type":"uint256","indexed":true}],"type":"event","name":"Buy","anonymous":false},{"inputs":[{"internalType":"address","name":"delay","type":"address","indexed":false}],"type":"event","name":"DelaySet","anonymous":false},{"inputs":[{"internalType":"uint256","name":"gasCost","type":"uint256","indexed":false}],"type":"event","name":"EthTransferGasCostSet","anonymous":false},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"ExecutionGasLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"oneInchRouter","type":"address","indexed":true},{"internalType":"bool","name":"whitelisted","type":"bool","indexed":false}],"type":"event","name":"OneInchRouterWhitelisted","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":false}],"type":"event","name":"OwnerSet","anonymous":false},{"inputs":[{"internalType":"address","name":"pair","type":"address","indexed":false},{"internalType":"bool","name":"enabled","type":"bool","indexed":false}],"type":"event","name":"PairEnabledSet","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"tokenIn","type":"address","indexed":false},{"internalType":"address","name":"tokenOut","type":"address","indexed":false},{"internalType":"uint256","name":"amountIn","type":"uint256","indexed":false},{"internalType":"uint256","name":"delayOrderId","type":"uint256","indexed":true}],"type":"event","name":"RebalanceSellWithDelay","anonymous":false},{"inputs":[{"internalType":"address","name":"oneInchRouter","type":"address","indexed":true},{"internalType":"uint256","name":"gas","type":"uint256","indexed":false},{"internalType":"bytes","name":"data","type":"bytes","indexed":false}],"type":"event","name":"RebalanceSellWithOneInch","anonymous":false},{"inputs":[{"internalType":"address","name":"rebalancer","type":"address","indexed":false}],"type":"event","name":"RebalancerSet","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"tokenIn","type":"address","indexed":false},{"internalType":"address","name":"tokenOut","type":"address","indexed":false},{"internalType":"uint256","name":"amountIn","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountOut","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountOutMin","type":"uint256","indexed":false},{"internalType":"bool","name":"wrapUnwrap","type":"bool","indexed":false},{"internalType":"uint256","name":"fee","type":"uint256","indexed":false},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"address","name":"orderContract","type":"address","indexed":false},{"internalType":"uint256","name":"orderId","type":"uint256","indexed":true}],"type":"event","name":"Sell","anonymous":false},{"inputs":[{"internalType":"address","name":"pair","type":"address","indexed":false},{"internalType":"uint256","name":"fee","type":"uint256","indexed":false}],"type":"event","name":"SwapFeeSet","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":false},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenLimitMaxMultiplierSet","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":false},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenLimitMinSet","anonymous":false},{"inputs":[{"internalType":"address","name":"pair","type":"address","indexed":false},{"internalType":"uint16","name":"tolerance","type":"uint16","indexed":false}],"type":"event","name":"ToleranceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"pair","type":"address","indexed":false},{"internalType":"uint32","name":"interval","type":"uint32","indexed":false}],"type":"event","name":"TwapIntervalSet","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":false},{"internalType":"address","name":"to","type":"address","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Withdraw","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"struct ITwapRelayer.BuyParams","name":"buyParams","type":"tuple","components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"bool","name":"wrapUnwrap","type":"bool"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint32","name":"submitDeadline","type":"uint32"}]}],"stateMutability":"payable","type":"function","name":"buy","outputs":[{"internalType":"uint256","name":"orderId","type":"uint256"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"delay","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"ethTransferGasCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"executionGasLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"}],"stateMutability":"view","type":"function","name":"getPoolState","outputs":[{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"uint256","name":"limitMin0","type":"uint256"},{"internalType":"uint256","name":"limitMax0","type":"uint256"},{"internalType":"uint256","name":"limitMin1","type":"uint256"},{"internalType":"uint256","name":"limitMax1","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"inverted","type":"bool"}],"stateMutability":"view","type":"function","name":"getPriceByPairAddress","outputs":[{"internalType":"uint8","name":"xDecimals","type":"uint8"},{"internalType":"uint8","name":"yDecimals","type":"uint8"},{"internalType":"uint256","name":"price","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"}],"stateMutability":"view","type":"function","name":"getPriceByTokenAddresses","outputs":[{"internalType":"uint256","name":"price","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"pure","type":"function","name":"getTokenLimitMaxMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"pure","type":"function","name":"getTokenLimitMin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"stateMutability":"pure","type":"function","name":"getTolerance","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"stateMutability":"pure","type":"function","name":"getTwapInterval","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"address","name":"oneInchRouter","type":"address"}],"stateMutability":"view","type":"function","name":"isOneInchRouterWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"stateMutability":"view","type":"function","name":"isPairEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"view","type":"function","name":"quoteBuy","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"view","type":"function","name":"quoteSell","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rebalanceSellWithDelay"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"oneInchRouter","type":"address"},{"internalType":"uint256","name":"_gas","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"rebalanceSellWithOneInch"},{"inputs":[],"stateMutability":"view","type":"function","name":"rebalancer","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"struct ITwapRelayer.SellParams","name":"sellParams","type":"tuple","components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"bool","name":"wrapUnwrap","type":"bool"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint32","name":"submitDeadline","type":"uint32"}]}],"stateMutability":"payable","type":"function","name":"sell","outputs":[{"internalType":"uint256","name":"orderId","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setOwner"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setPairEnabled"},{"inputs":[{"internalType":"address","name":"_rebalancer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRebalancer"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"uint256","name":"fee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setSwapFee"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"stateMutability":"view","type":"function","name":"swapFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"pure","type":"function","name":"tokenLimitMaxMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"pure","type":"function","name":"tokenLimitMin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"stateMutability":"pure","type":"function","name":"tolerance","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"stateMutability":"pure","type":"function","name":"twapInterval","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"weth","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"oneInchRouter","type":"address"},{"internalType":"bool","name":"whitelisted","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"whitelistOneInchRouter"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"withdraw"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/integral/IntegralSwapAdapter.sol":"ITwapRelayer"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/integral/IntegralSwapAdapter.sol":{"keccak256":"0xba81dc8dd2e92b38d2de308f2d4fd5d43043a6646c5c5026cb0599328270913f","urls":["bzz-raw://cdd83b073508b386799138c43800f670b93c49357e7e04e6168a067b80300f98","dweb:/ipfs/QmZrMmCPf7ePH4jeQGzaxbDrt1LSSLSXRJHg6LfaSrVRVm"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"}},"version":1},"id":52} \ No newline at end of file diff --git a/evm/out/IntegralSwapAdapter.sol/IntegralSwapAdapter.json b/evm/out/IntegralSwapAdapter.sol/IntegralSwapAdapter.json deleted file mode 100644 index 63c0a0c..0000000 --- a/evm/out/IntegralSwapAdapter.sol/IntegralSwapAdapter.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"relayer_","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"getCapabilities","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"capabilities","type":"uint8[]","internalType":"enum ISwapAdapterTypes.Capability[]"}],"stateMutability":"pure"},{"type":"function","name":"getLimits","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"}],"outputs":[{"name":"limits","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getPoolIds","inputs":[{"name":"offset","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"ids","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"getTokens","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"price","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"_sellToken","type":"address","internalType":"address"},{"name":"_buyToken","type":"address","internalType":"address"},{"name":"_specifiedAmounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"_prices","type":"tuple[]","internalType":"struct ISwapAdapterTypes.Fraction[]","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"swap","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"},{"name":"side","type":"uint8","internalType":"enum ISwapAdapterTypes.OrderSide"},{"name":"specifiedAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"trade","type":"tuple","internalType":"struct ISwapAdapterTypes.Trade","components":[{"name":"calculatedAmount","type":"uint256","internalType":"uint256"},{"name":"gasUsed","type":"uint256","internalType":"uint256"},{"name":"price","type":"tuple","internalType":"struct ISwapAdapterTypes.Fraction","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"nonpayable"},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LimitExceeded","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotImplemented","inputs":[{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"Unavailable","inputs":[{"name":"reason","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x60a03461008857601f61148e38819003918201601f19168301916001600160401b0383118484101761008c5780849260209460405283398101031261008857516001600160a01b03811690819003610088576080526040516113ed90816100a1823960805181818161036a015281816105b9015281816109f901528181610bd10152610e230152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c90816323eeca01146105905750806348bd7dfd146104b95780638307c65514610456578063a9270fbe14610322578063aad6e488146101b15763ecbbc0331461005e575f80fd5b346101ad5760203660031901126101ad5760405161007d60608261089f565b6002815260208101604036823760043560601c604051630dfe168160e01b8152602081600481855afa918215610185576004926020925f91610190575b506100c486610926565b6001600160a01b03909116905260405163d21220a760e01b815292839182905afa908115610185575f91610156575b506100ff839293610933565b6001600160a01b0390911690526040805160208082529251928101839052928392918301915f5b818110610134575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610126565b610178915060203d60201161017e575b610170818361089f565b8101906108d9565b5f6100f3565b503d610166565b6040513d5f823e3d90fd5b6101a79150833d851161017e57610170818361089f565b5f6100ba565b5f80fd5b346101ad5760803660031901126101ad576101ca6107ed565b6101d2610803565b6064359067ffffffffffffffff82116101ad57366023830112156101ad578160040135916101ff836108c1565b9261020d604051948561089f565b8084526024602085019160051b830101913683116101ad57602401905b82821061031257505050815192610240846108c1565b9361024e604051958661089f565b80855261025d601f19916108c1565b015f5b8181106102ef5750509061027391610def565b5f5b825181101561029e57808261028c60019387610943565b526102978186610943565b5001610275565b836040518091602082016020835281518091526020604084019201905f5b8181106102ca575050500390f35b82518051855260209081015181860152869550604090940193909201916001016102bc565b6020906040516102fe81610853565b5f81525f8382015282828901015201610260565b813581526020918201910161022a565b346101ad5761036660c061033536610819565b60405163abc27eed60e01b81526001600160a01b039283166004820152911660248201529283915081906044820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610185575f905f92610419575b5090604051906103b560608361089f565b60028252602082019260403685376103cc83610926565b526103d682610933565b52604051918291602083019060208452518091526040830191905f5b818110610400575050500390f35b82518452859450602093840193909201916001016103f2565b91505060c0813d60c01161044e575b8161043560c0938361089f565b810103126101ad5760a0606082015191015190826103a4565b3d9150610428565b346101ad5760a03660031901126101ad5761046f6107ed565b610477610803565b6064359160028310156101ad57608092610494926084359261096f565b6020604080519280518452828101518385015201518051604084015201516060820152f35b346101ad576104c736610819565b5050506040516104d860a08261089f565b6004815260208101608036823760016104f083610926565b5260026104fc83610933565b5281516002101561057c576003606083015281516003101561057c5760056080830152604051906020820192602083525180935260408201905f935b8085106105455783830384f35b9091825190600a8210156105685760208160019382935201930194019390610538565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b346101ad5760403660031901126101ad5763c45a015560e01b81526004803591906020908290817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610185575f916107ce575b506001600160a01b031690610608602435826108f8565b60405163574f2ba360e01b8152602081600481875afa80156101855783915f91610799575b508211610735575b61063e91610919565b61066061064a826108c1565b91610658604051938461089f565b8083526108c1565b602082019290601f19013684375f5b82518110156106f15761068281836108f8565b9060405191631e3dd18b60e01b83526004830152602082602481895afa8015610185576001925f916106d3575b5060601b6bffffffffffffffffffffffff19166106cc8286610943565b520161066f565b6106eb915060203d811161017e57610170818361089f565b876106af565b8383604051918291602083019060208452518091526040830191905f5b81811061071c575050500390f35b825184528594506020938401939092019160010161070e565b505060405163574f2ba360e01b8152602081600481865afa80156101855782905f90610763575b9150610635565b50506020813d602011610791575b8161077e6020938361089f565b810103126101ad578161063e915161075c565b3d9150610771565b9150506020813d6020116107c6575b816107b56020938361089f565b810103126101ad578290518561062d565b3d91506107a8565b6107e7915060203d60201161017e57610170818361089f565b826105f1565b602435906001600160a01b03821682036101ad57565b604435906001600160a01b03821682036101ad57565b60609060031901126101ad57600435906024356001600160a01b03811681036101ad57906044356001600160a01b03811681036101ad5790565b6040810190811067ffffffffffffffff82111761086f57604052565b634e487b7160e01b5f52604160045260245ffd5b60e0810190811067ffffffffffffffff82111761086f57604052565b90601f8019910116810190811067ffffffffffffffff82111761086f57604052565b67ffffffffffffffff811161086f5760051b60200190565b908160209103126101ad57516001600160a01b03811681036101ad5790565b9190820180921161090557565b634e487b7160e01b5f52601160045260245ffd5b9190820391821161090557565b80511561057c5760200190565b80516001101561057c5760400190565b805182101561057c5760209160051b010190565b6040519061096482610853565b5f6020838281520152565b6040519493926060860167ffffffffffffffff81118782101761086f576040525f86525f60208701526040516109a481610853565b5f81525f60208201526040870152858415610d6457505a90600281101561056857610ba157604051634cc0eb1960e11b81526001600160a01b03838116600483015284811660248301526044820186905290947f000000000000000000000000000000000000000000000000000000000000000090911690602086606481855afa958615610185575f96610b6d575b508515610b32576001600160a01b03841690610a51813033856110fc565b610a5c818484611147565b6103e842018042116109055760209263ffffffff60e492610acd9460405193610a8485610883565b845260018060a01b038b168785015260408401528a60608401525f60808401523360a08401521660c08201525f60405195869485936358d30ac960e01b85526004850190610d6c565b5af1801561018557610afe575b50610aed90610af79487525b5a90610919565b6020860152610def565b6040830152565b906020823d602011610b2a575b81610b186020938361089f565b810103126101ad579050610aed610ada565b3d9150610b0b565b60405163643c60f360e01b8152602060048201526012602482015271416d6f756e744f7574206973207a65726f2160701b6044820152606490fd5b9095506020813d602011610b99575b81610b896020938361089f565b810103126101ad5751945f610a33565b3d9150610b7c565b6040516334259b1b60e01b81526001600160a01b03838116600483015284811660248301526044820186905290947f000000000000000000000000000000000000000000000000000000000000000090911690602086606481855afa958615610185575f96610d30575b508515610cf6576001600160a01b03841690610c29873033856110fc565b610c34878484611147565b6103e842018042116109055760209263ffffffff60e492610ca59460405193610c5c85610883565b845260018060a01b038b16878501528b604085015260608401525f60808401523360a08401521660c08201525f60405195869485936316c0a75160e11b85526004850190610d6c565b5af1801561018557610cc2575b50610aed90610af7948752610ae6565b906020823d602011610cee575b81610cdc6020938361089f565b810103126101ad579050610aed610cb2565b3d9150610ccf565b60405163643c60f360e01b8152602060048201526011602482015270416d6f756e74496e206973207a65726f2160781b6044820152606490fd5b9095506020813d602011610d5c575b81610d4c6020938361089f565b810103126101ad5751945f610c0b565b3d9150610d3f565b955050505050565b80516001600160a01b039081168352602080830151821690840152604080830151908401526060808301519084015260808083015115159084015260a0808301519091169083015260c09081015163ffffffff16910152565b908160209103126101ad575160ff811681036101ad5790565b60ff16604d811161090557600a0a90565b90610df8610957565b50604051637516644b60e11b81526001600160a01b03838116600483015282811660248301529092907f000000000000000000000000000000000000000000000000000000000000000016602084604481845afa938415610185575f946110c8575b5060405163c45a015560e01b8152602081600481855afa908115610185575f916110a9575b5060405163e6a4390560e01b81526001600160a01b0384811660048301528581166024830152909160209183916044918391165afa8015610185576020915f9161108c575b50604051635357407160e11b81526001600160a01b03909116600482015291829060249082905afa908115610185575f9161105a575b50670de0b6b3a76400000390670de0b6b3a764000082116109055760405163313ce56760e01b815290602090829060049082906001600160a01b03165afa801561018557610f546020916004935f91611043575b50610dde565b60405163313ce56760e01b815290949092839182906001600160a01b03165afa801561018557610f8a915f916110145750610dde565b91670de0b6b3a7640000840293808504670de0b6b3a764000014901517156109055780670de0b6b3a76400000290670de0b6b3a764000082048103610905578202670de0b6b3a7640000029181159183041417156109055781156110005760405192610ff584610853565b835204602082015290565b634e487b7160e01b5f52601260045260245ffd5b611036915060203d60201161103c575b61102e818361089f565b810190610dc5565b5f610f4e565b503d611024565b6110369150833d851161103c5761102e818361089f565b90506020813d602011611084575b816110756020938361089f565b810103126101ad57515f610efa565b3d9150611068565b6110a39150823d841161017e57610170818361089f565b5f610ec4565b6110c2915060203d60201161017e57610170818361089f565b5f610e7f565b9093506020813d6020116110f4575b816110e46020938361089f565b810103126101ad5751925f610e5a565b3d91506110d7565b6040516323b872dd60e01b60208201526001600160a01b0392831660248201529290911660448301526064808301939093529181526111459161114060848361089f565b6112af565b565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152821693602082604481885afa8015610185575f90611263575b61118d92506108f8565b925f8060405194602086019063095ea7b360e01b825260018060a01b0316968760248801526044870152604486526111c660648761089f565b85519082855af1906111d661131a565b82611231575b5081611226575b50156111ee57505050565b611140611145936040519063095ea7b360e01b602083015260248201525f60448201526044815261122060648261089f565b826112af565b90503b15155f6111e3565b80519192508115918215611249575b5050905f6111dc565b61125c9250602080918301019101611297565b5f80611240565b506020823d60201161128f575b8161127d6020938361089f565b810103126101ad5761118d9151611183565b3d9150611270565b908160209103126101ad575180151581036101ad5790565b5f806112d79260018060a01b03169360208151910182865af16112d061131a565b9083611359565b80519081151591826112ff575b50506112ed5750565b635274afe760e01b5f5260045260245ffd5b6113129250602080918301019101611297565b155f806112e4565b3d15611354573d9067ffffffffffffffff821161086f5760405191611349601f8201601f19166020018461089f565b82523d5f602084013e565b606090565b9061137d575080511561136e57805190602001fd5b63d6bda27560e01b5f5260045ffd5b815115806113ae575b61138e575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561138656fea2646970667358221220b526040f16c74de5eea30b9fb08eebd9f9f9fb64cd3f9acd318a3c89d26ae38064736f6c634300081b0033","sourceMap":"708:8151:52:-:0;;;;;;;;;;;;;-1:-1:-1;;708:8151:52;;;;-1:-1:-1;;;;;708:8151:52;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;708:8151:52;;;;;;;;869:32;;708:8151;;;;;;;;869:32;708:8151;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;708:8151:52;;;;;;-1:-1:-1;708:8151:52;;;;;-1:-1:-1;708:8151:52","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f3560e01c90816323eeca01146105905750806348bd7dfd146104b95780638307c65514610456578063a9270fbe14610322578063aad6e488146101b15763ecbbc0331461005e575f80fd5b346101ad5760203660031901126101ad5760405161007d60608261089f565b6002815260208101604036823760043560601c604051630dfe168160e01b8152602081600481855afa918215610185576004926020925f91610190575b506100c486610926565b6001600160a01b03909116905260405163d21220a760e01b815292839182905afa908115610185575f91610156575b506100ff839293610933565b6001600160a01b0390911690526040805160208082529251928101839052928392918301915f5b818110610134575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610126565b610178915060203d60201161017e575b610170818361089f565b8101906108d9565b5f6100f3565b503d610166565b6040513d5f823e3d90fd5b6101a79150833d851161017e57610170818361089f565b5f6100ba565b5f80fd5b346101ad5760803660031901126101ad576101ca6107ed565b6101d2610803565b6064359067ffffffffffffffff82116101ad57366023830112156101ad578160040135916101ff836108c1565b9261020d604051948561089f565b8084526024602085019160051b830101913683116101ad57602401905b82821061031257505050815192610240846108c1565b9361024e604051958661089f565b80855261025d601f19916108c1565b015f5b8181106102ef5750509061027391610def565b5f5b825181101561029e57808261028c60019387610943565b526102978186610943565b5001610275565b836040518091602082016020835281518091526020604084019201905f5b8181106102ca575050500390f35b82518051855260209081015181860152869550604090940193909201916001016102bc565b6020906040516102fe81610853565b5f81525f8382015282828901015201610260565b813581526020918201910161022a565b346101ad5761036660c061033536610819565b60405163abc27eed60e01b81526001600160a01b039283166004820152911660248201529283915081906044820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610185575f905f92610419575b5090604051906103b560608361089f565b60028252602082019260403685376103cc83610926565b526103d682610933565b52604051918291602083019060208452518091526040830191905f5b818110610400575050500390f35b82518452859450602093840193909201916001016103f2565b91505060c0813d60c01161044e575b8161043560c0938361089f565b810103126101ad5760a0606082015191015190826103a4565b3d9150610428565b346101ad5760a03660031901126101ad5761046f6107ed565b610477610803565b6064359160028310156101ad57608092610494926084359261096f565b6020604080519280518452828101518385015201518051604084015201516060820152f35b346101ad576104c736610819565b5050506040516104d860a08261089f565b6004815260208101608036823760016104f083610926565b5260026104fc83610933565b5281516002101561057c576003606083015281516003101561057c5760056080830152604051906020820192602083525180935260408201905f935b8085106105455783830384f35b9091825190600a8210156105685760208160019382935201930194019390610538565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b346101ad5760403660031901126101ad5763c45a015560e01b81526004803591906020908290817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610185575f916107ce575b506001600160a01b031690610608602435826108f8565b60405163574f2ba360e01b8152602081600481875afa80156101855783915f91610799575b508211610735575b61063e91610919565b61066061064a826108c1565b91610658604051938461089f565b8083526108c1565b602082019290601f19013684375f5b82518110156106f15761068281836108f8565b9060405191631e3dd18b60e01b83526004830152602082602481895afa8015610185576001925f916106d3575b5060601b6bffffffffffffffffffffffff19166106cc8286610943565b520161066f565b6106eb915060203d811161017e57610170818361089f565b876106af565b8383604051918291602083019060208452518091526040830191905f5b81811061071c575050500390f35b825184528594506020938401939092019160010161070e565b505060405163574f2ba360e01b8152602081600481865afa80156101855782905f90610763575b9150610635565b50506020813d602011610791575b8161077e6020938361089f565b810103126101ad578161063e915161075c565b3d9150610771565b9150506020813d6020116107c6575b816107b56020938361089f565b810103126101ad578290518561062d565b3d91506107a8565b6107e7915060203d60201161017e57610170818361089f565b826105f1565b602435906001600160a01b03821682036101ad57565b604435906001600160a01b03821682036101ad57565b60609060031901126101ad57600435906024356001600160a01b03811681036101ad57906044356001600160a01b03811681036101ad5790565b6040810190811067ffffffffffffffff82111761086f57604052565b634e487b7160e01b5f52604160045260245ffd5b60e0810190811067ffffffffffffffff82111761086f57604052565b90601f8019910116810190811067ffffffffffffffff82111761086f57604052565b67ffffffffffffffff811161086f5760051b60200190565b908160209103126101ad57516001600160a01b03811681036101ad5790565b9190820180921161090557565b634e487b7160e01b5f52601160045260245ffd5b9190820391821161090557565b80511561057c5760200190565b80516001101561057c5760400190565b805182101561057c5760209160051b010190565b6040519061096482610853565b5f6020838281520152565b6040519493926060860167ffffffffffffffff81118782101761086f576040525f86525f60208701526040516109a481610853565b5f81525f60208201526040870152858415610d6457505a90600281101561056857610ba157604051634cc0eb1960e11b81526001600160a01b03838116600483015284811660248301526044820186905290947f000000000000000000000000000000000000000000000000000000000000000090911690602086606481855afa958615610185575f96610b6d575b508515610b32576001600160a01b03841690610a51813033856110fc565b610a5c818484611147565b6103e842018042116109055760209263ffffffff60e492610acd9460405193610a8485610883565b845260018060a01b038b168785015260408401528a60608401525f60808401523360a08401521660c08201525f60405195869485936358d30ac960e01b85526004850190610d6c565b5af1801561018557610afe575b50610aed90610af79487525b5a90610919565b6020860152610def565b6040830152565b906020823d602011610b2a575b81610b186020938361089f565b810103126101ad579050610aed610ada565b3d9150610b0b565b60405163643c60f360e01b8152602060048201526012602482015271416d6f756e744f7574206973207a65726f2160701b6044820152606490fd5b9095506020813d602011610b99575b81610b896020938361089f565b810103126101ad5751945f610a33565b3d9150610b7c565b6040516334259b1b60e01b81526001600160a01b03838116600483015284811660248301526044820186905290947f000000000000000000000000000000000000000000000000000000000000000090911690602086606481855afa958615610185575f96610d30575b508515610cf6576001600160a01b03841690610c29873033856110fc565b610c34878484611147565b6103e842018042116109055760209263ffffffff60e492610ca59460405193610c5c85610883565b845260018060a01b038b16878501528b604085015260608401525f60808401523360a08401521660c08201525f60405195869485936316c0a75160e11b85526004850190610d6c565b5af1801561018557610cc2575b50610aed90610af7948752610ae6565b906020823d602011610cee575b81610cdc6020938361089f565b810103126101ad579050610aed610cb2565b3d9150610ccf565b60405163643c60f360e01b8152602060048201526011602482015270416d6f756e74496e206973207a65726f2160781b6044820152606490fd5b9095506020813d602011610d5c575b81610d4c6020938361089f565b810103126101ad5751945f610c0b565b3d9150610d3f565b955050505050565b80516001600160a01b039081168352602080830151821690840152604080830151908401526060808301519084015260808083015115159084015260a0808301519091169083015260c09081015163ffffffff16910152565b908160209103126101ad575160ff811681036101ad5790565b60ff16604d811161090557600a0a90565b90610df8610957565b50604051637516644b60e11b81526001600160a01b03838116600483015282811660248301529092907f000000000000000000000000000000000000000000000000000000000000000016602084604481845afa938415610185575f946110c8575b5060405163c45a015560e01b8152602081600481855afa908115610185575f916110a9575b5060405163e6a4390560e01b81526001600160a01b0384811660048301528581166024830152909160209183916044918391165afa8015610185576020915f9161108c575b50604051635357407160e11b81526001600160a01b03909116600482015291829060249082905afa908115610185575f9161105a575b50670de0b6b3a76400000390670de0b6b3a764000082116109055760405163313ce56760e01b815290602090829060049082906001600160a01b03165afa801561018557610f546020916004935f91611043575b50610dde565b60405163313ce56760e01b815290949092839182906001600160a01b03165afa801561018557610f8a915f916110145750610dde565b91670de0b6b3a7640000840293808504670de0b6b3a764000014901517156109055780670de0b6b3a76400000290670de0b6b3a764000082048103610905578202670de0b6b3a7640000029181159183041417156109055781156110005760405192610ff584610853565b835204602082015290565b634e487b7160e01b5f52601260045260245ffd5b611036915060203d60201161103c575b61102e818361089f565b810190610dc5565b5f610f4e565b503d611024565b6110369150833d851161103c5761102e818361089f565b90506020813d602011611084575b816110756020938361089f565b810103126101ad57515f610efa565b3d9150611068565b6110a39150823d841161017e57610170818361089f565b5f610ec4565b6110c2915060203d60201161017e57610170818361089f565b5f610e7f565b9093506020813d6020116110f4575b816110e46020938361089f565b810103126101ad5751925f610e5a565b3d91506110d7565b6040516323b872dd60e01b60208201526001600160a01b0392831660248201529290911660448301526064808301939093529181526111459161114060848361089f565b6112af565b565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152821693602082604481885afa8015610185575f90611263575b61118d92506108f8565b925f8060405194602086019063095ea7b360e01b825260018060a01b0316968760248801526044870152604486526111c660648761089f565b85519082855af1906111d661131a565b82611231575b5081611226575b50156111ee57505050565b611140611145936040519063095ea7b360e01b602083015260248201525f60448201526044815261122060648261089f565b826112af565b90503b15155f6111e3565b80519192508115918215611249575b5050905f6111dc565b61125c9250602080918301019101611297565b5f80611240565b506020823d60201161128f575b8161127d6020938361089f565b810103126101ad5761118d9151611183565b3d9150611270565b908160209103126101ad575180151581036101ad5790565b5f806112d79260018060a01b03169360208151910182865af16112d061131a565b9083611359565b80519081151591826112ff575b50506112ed5750565b635274afe760e01b5f5260045260245ffd5b6113129250602080918301019101611297565b155f806112e4565b3d15611354573d9067ffffffffffffffff821161086f5760405191611349601f8201601f19166020018461089f565b82523d5f602084013e565b606090565b9061137d575080511561136e57805190602001fd5b63d6bda27560e01b5f5260045ffd5b815115806113ae575b61138e575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561138656fea2646970667358221220b526040f16c74de5eea30b9fb08eebd9f9f9fb64cd3f9acd318a3c89d26ae38064736f6c634300081b0033","sourceMap":"708:8151:52:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;708:8151:52;;;;;;;;;;:::i;:::-;4207:1;708:8151;;;;;;;;;;;;;;;;;;4293:13;;708:8151;4293:13;708:8151;4293:13;;;;;;;;;708:8151;4293:13;708:8151;4293:13;708:8151;4293:13;;;708:8151;4281:25;;;;:::i;:::-;-1:-1:-1;;;;;708:8151:52;;;;;;;-1:-1:-1;;;4328:13:52;;708:8151;;;;;4328:13;;;;;;;708:8151;4328:13;;;708:8151;4316:25;;;;;;:::i;:::-;-1:-1:-1;;;;;708:8151:52;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;708:8151:52;;;;;;;;;;;;;;;-1:-1:-1;;;;;708:8151:52;;;;;-1:-1:-1;708:8151:52;;;;;;;;;;;;;4328:13;;;;708:8151;4328:13;708:8151;4328:13;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;708:8151;;;;;;;;;4293:13;;;;;;;;;;;;;;:::i;:::-;;;;708:8151;;;;;;;;;;-1:-1:-1;;708:8151:52;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;1944:33;;;;;;:::i;:::-;708:8151;2038:3;708:8151;;2008:28;;;;;2057:25;;;708:8151;2057:25;;;:::i;:::-;;;;;;:::i;:::-;;708:8151;1993:13;;2008:28;;708:8151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;708:8151:52;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;708:8151:52;;-1:-1:-1;708:8151:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3083:41;;708:8151;;;:::i;:::-;;;-1:-1:-1;;;3083:41:52;;-1:-1:-1;;;;;708:8151:52;;;;3083:41;;708:8151;;;;;;;;;;-1:-1:-1;708:8151:52;;;;;;;3083:41;;708:8151;3083:7;-1:-1:-1;;;;;708:8151:52;3083:41;;;;;;;708:8151;;;3083:41;;;708:8151;;;;;;;;;;:::i;:::-;3158:1;708:8151;;;;;;;;;;3170:21;;;:::i;:::-;708:8151;3201:21;;;:::i;:::-;708:8151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;708:8151:52;;;;;;;;;3208:1;708:8151;;;3083:41;;;;;;;;;;;;;;;;;;:::i;:::-;;;708:8151;;;;;;;;;;;;3083:41;;;;;;;-1:-1:-1;3083:41:52;;708:8151;;;;;;-1:-1:-1;;708:8151:52;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;3829:20;3811:38;;;:::i;:::-;708:8151;3877:19;3859:37;;;:::i;:::-;708:8151;;;3877:19;708:8151;;;;3924:24;708:8151;;;;;;3924:24;708:8151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3829:20;708:8151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;708:8151:52;;;;-1:-1:-1;;;4574:17:52;;708:8151;;;;;;;;;;4574:7;-1:-1:-1;;;;;708:8151:52;4574:17;;;;;;;708:8151;4574:17;;;708:8151;-1:-1:-1;;;;;;708:8151:52;;4619:14;708:8151;;;4619:14;:::i;:::-;708:8151;;-1:-1:-1;;;4656:24:52;;708:8151;;;;4656:24;;;;;;;;;708:8151;4656:24;;;708:8151;4647:33;;;4643:97;;708:8151;4769:15;;;:::i;:::-;708:8151;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;-1:-1:-1;;708:8151:52;;;;;4831:3;708:8151;;4815:14;;;;;4884:10;;;;:::i;:::-;708:8151;;;;;;;4867:28;;708:8151;4867:28;;708:8151;;4867:28;708:8151;4867:28;;;;;;;;708:8151;4867:28;708:8151;4867:28;;;4831:3;-1:-1:-1;708:8151:52;;-1:-1:-1;;708:8151:52;4850:46;;;;:::i;:::-;708:8151;;4800:13;;4867:28;;;;708:8151;4867:28;;;;;;;;;:::i;:::-;;;;4815:14;;;708:8151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;708:8151:52;;;;;;;;;;;;;4643:97;-1:-1:-1;;708:8151:52;;-1:-1:-1;;;4705:24:52;;708:8151;;;;4705:24;;;;;;;;;708:8151;4705:24;;;4643:97;;-1:-1:-1;4643:97:52;;4705:24;;;708:8151;4705:24;;708:8151;4705:24;;;;;;708:8151;4705:24;;;:::i;:::-;;;708:8151;;;;;4769:15;708:8151;;4705:24;;;;;-1:-1:-1;4705:24:52;;4656;;;;708:8151;4656:24;;708:8151;4656:24;;;;;;708:8151;4656:24;;;:::i;:::-;;;708:8151;;;;;;;4656:24;;;;;;-1:-1:-1;4656:24:52;;4574:17;;;;708:8151;4574:17;708:8151;4574:17;;;;;;;:::i;:::-;;;;708:8151;;;;-1:-1:-1;;;;;708:8151:52;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;708:8151:52;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;708:8151:52;;;;;;;;;-1:-1:-1;;;;;708:8151:52;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;708:8151:52;;;;;-1:-1:-1;708:8151:52;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;708:8151:52;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;3829:20;708:8151;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;708:8151:52;;;;;;;:::o;2138:680::-;708:8151;;;2138:680;;708:8151;;;;;;;;;;;;;;-1:-1:-1;708:8151:52;;-1:-1:-1;708:8151:52;;;;;;;;;:::i;:::-;-1:-1:-1;708:8151:52;;-1:-1:-1;708:8151:52;;;;;;;;2312:18;2346:20;;2342:63;;2435:9;;708:8151;;;;;;;2458:22;;708:8151;;-1:-1:-1;;;5345:46:52;;-1:-1:-1;;;;;708:8151:52;;;5345:46;;;708:8151;;;;;;;;;;;;;;;;5345:7;708:8151;;;;;;;;;5345:46;;;;;;;-1:-1:-1;5345:46:52;;;2454:256;5405:14;;;5401:85;;-1:-1:-1;;;;;708:8151:52;;;5558:6;5551:4;;5531:10;708:8151;5558:6;:::i;:::-;5633;;;;;:::i;:::-;615:4;5881:15;708:8151;5881:15;;708:8151;;;;;615:4;5651:366;708:8151;615:4;708:8151;;;;;;;:::i;:::-;;;;;;;;;;5677:330;;;708:8151;;5677:330;;708:8151;5677:330;708:8151;5677:330;;708:8151;-1:-1:-1;5677:330:52;;;615:4;5531:10;5677:330;;;708:8151;615:4;5677:330;;;615:4;-1:-1:-1;708:8151:52;;;;;;;;;;5651:366;;5345:46;5651:366;;615:4;;:::i;:::-;5651:366;;;;;;;;2454:256;708:8151;2735:21;708:8151;2780:31;708:8151;;;2454:256;2747:9;2735:21;;:::i;:::-;708:8151;2719:13;;708:8151;2780:31;:::i;:::-;708:8151;2766:11;;:45;2138:680::o;5651:366::-;;708:8151;5651:366;;708:8151;5651:366;;;;;;708:8151;5651:366;;;:::i;:::-;;;708:8151;;;;5651:366;-1:-1:-1;2735:21:52;5651:366;;;;;-1:-1:-1;5651:366:52;;5401:85;708:8151;;-1:-1:-1;;;5442:33:52;;708:8151;5345:46;5442:33;;708:8151;;;;;;-1:-1:-1;;;708:8151:52;;;;5442:33;;;5345:46;;;;708:8151;5345:46;;708:8151;5345:46;;;;;;708:8151;5345:46;;;:::i;:::-;;;708:8151;;;;;5345:46;;;;;;;-1:-1:-1;5345:46:52;;2454:256;708:8151;;-1:-1:-1;;;6505:51:52;;-1:-1:-1;;;;;708:8151:52;;;6505:51;;;708:8151;;;;;;;;;;;;;;;;6505:7;708:8151;;;;;;;;;6505:51;;;;;;;-1:-1:-1;6505:51:52;;;2454:256;6570:13;;;6566:83;;-1:-1:-1;;;;;708:8151:52;;;6721:8;6714:4;;6694:10;708:8151;6721:8;:::i;:::-;6798;;;;;:::i;:::-;615:4;7046:15;708:8151;7046:15;;708:8151;;;;;615:4;6818:369;708:8151;615:4;708:8151;;;;;;;:::i;:::-;;;;;;;;;;6843:334;;;708:8151;6843:334;708:8151;6843:334;;708:8151;;6843:334;;708:8151;-1:-1:-1;6843:334:52;;;615:4;6694:10;6843:334;;;708:8151;615:4;6843:334;;;615:4;-1:-1:-1;708:8151:52;;;;;;;;;;6818:369;;6505:51;6818:369;;615:4;;:::i;:::-;6818:369;;;;;;;;2454:256;708:8151;2735:21;708:8151;2780:31;708:8151;;;2454:256;;6818:369;;708:8151;6818:369;;708:8151;6818:369;;;;;;708:8151;6818:369;;;:::i;:::-;;;708:8151;;;;6818:369;-1:-1:-1;2735:21:52;6818:369;;;;;-1:-1:-1;6818:369:52;;6566:83;708:8151;;-1:-1:-1;;;6606:32:52;;708:8151;6505:51;6606:32;;708:8151;;;;;;-1:-1:-1;;;708:8151:52;;;;6606:32;;;6505:51;;;;708:8151;6505:51;;708:8151;6505:51;;;;;;708:8151;6505:51;;;:::i;:::-;;;708:8151;;;;;6505:51;;;;;;;-1:-1:-1;6505:51:52;;2342:63;2382:12;-1:-1:-1;;;;;2382:12:52:o;615:4::-;;;-1:-1:-1;;;;;708:8151:52;;;;;615:4;;;;;708:8151;;615:4;;;708:8151;615:4;;;;;;;;708:8151;615:4;;;;;;;;708:8151;615:4;;;;;;;;;;;708:8151;615:4;;;;708:8151;;;615:4;;;708:8151;615:4;;;;;;;;;;:::o;664:8::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;7347:1510::-;;708:8151;;:::i;:::-;-1:-1:-1;708:8151:52;;-1:-1:-1;;;7520:53:52;;-1:-1:-1;;;;;708:8151:52;;;7520:53;;;708:8151;;;;;;;;;;;7520:7;708:8151;7520:53;708:8151;;;;7520:53;;;;;;;-1:-1:-1;7520:53:52;;;7347:1510;-1:-1:-1;708:8151:52;;-1:-1:-1;;;7619:17:52;;7520:53;708:8151;7520:53;708:8151;7619:17;;;;;;;;-1:-1:-1;7619:17:52;;;7347:1510;-1:-1:-1;708:8151:52;;-1:-1:-1;;;7669:36:52;;-1:-1:-1;;;;;708:8151:52;;;7520:53;7669:36;;708:8151;;;;;;;;;;7520:53;;708:8151;;;;;;;7669:36;;;;;;7520:53;7669:36;-1:-1:-1;7669:36:52;;;7347:1510;-1:-1:-1;708:8151:52;;-1:-1:-1;;;7838:28:52;;-1:-1:-1;;;;;708:8151:52;;;7520:53;7838:28;;708:8151;;;;7838:28;;708:8151;;7838:28;;;;;;;-1:-1:-1;7838:28:52;;;7347:1510;708:8151;664:8;708:8151;;664:8;708:8151;;;;;;-1:-1:-1;;;7942:36:52;;708:8151;7520:53;;708:8151;;7520:53;;708:8151;;-1:-1:-1;;;;;708:8151:52;7942:36;;;;;;7936:42;7520:53;7942:36;7520:53;7942:36;-1:-1:-1;7942:36:52;;;7347:1510;7936:42;;:::i;:::-;708:8151;;-1:-1:-1;;;8021:35:52;;708:8151;;;;;;;;-1:-1:-1;;;;;708:8151:52;8021:35;;;;;;8015:41;8021:35;-1:-1:-1;8021:35:52;;;8015:41;;:::i;:::-;664:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;708:8151;;;;;;:::i;:::-;;;664:8;7520:53;8666:184;;708:8151;7347:1510;:::o;664:8::-;708:8151;;;-1:-1:-1;664:8:52;;7520:53;664:8;7838:28;-1:-1:-1;664:8:52;8021:35;;;;7520:53;8021:35;7520:53;8021:35;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;7942:36;;;;;;;;;;;;;;:::i;7838:28::-;;;7520:53;7838:28;;7520:53;7838:28;;;;;;708:8151;7838:28;;;:::i;:::-;;;708:8151;;;;;7838:28;;;;;;-1:-1:-1;7838:28:52;;7669:36;;;;;;;;;;;;;;:::i;:::-;;;;7619:17;;;;7520:53;7619:17;7520:53;7619:17;;;;;;;:::i;:::-;;;;7520:53;;;;;;;;;;;;;;708:8151;7520:53;;;:::i;:::-;;;708:8151;;;;;7520:53;;;;;;;-1:-1:-1;7520:53:52;;1702:188:32;708:8151:52;;-1:-1:-1;;;1829:53:32;;;;-1:-1:-1;;;;;708:8151:52;;;1829:53:32;;;708:8151:52;;;;;;;;;;;;;;;;;1829:53:32;;;;;;708:8151:52;;1829:53:32;:::i;:::-;;:::i;:::-;1702:188::o;2081:225::-;708:8151:52;;-1:-1:-1;;;2200:39:32;;2224:4;2200:39;;;708:8151:52;-1:-1:-1;;;;;708:8151:52;;;;;;;;;;2200:39:32;708:8151:52;;;;2200:39:32;;;;;;-1:-1:-1;2200:39:32;;;2081:225;2278:20;;;;:::i;:::-;708:8151:52;-1:-1:-1;708:8151:52;;;3411:47:32;2200:39;3411:47;;708:8151:52;;;;3411:47:32;;708:8151:52;;;;;;3411:47:32;;;;;708:8151:52;;;;;;3411:47:32;;;;;;:::i;:::-;8024:25;;;;;;;;;;:::i;:::-;8066:69;;;2081:225;8066:103;;;;2081:225;3473:45;;3469:201;;2081:225;;;:::o;3469:201::-;3561:43;3646:12;708:8151:52;;;;;;;2200:39:32;3561:43;;;3411:47;3561:43;;708:8151:52;-1:-1:-1;708:8151:52;;;;;3561:43:32;;;3411:47;3561:43;;:::i;:::-;;;:::i;8066:103::-;8139:26;;;:30;;8066:103;;;:69;708:8151:52;;;;-1:-1:-1;8078:22:32;;;:56;;;;8066:69;;;;;;;8078:56;8104:30;;;2200:39;8104:30;;;;;;;;:::i;:::-;8078:56;;;;2200:39;;;;;;;;;;;;708:8151:52;2200:39:32;;;:::i;:::-;;;708:8151:52;;;;2278:20:32;708:8151:52;;2200:39:32;;;;;-1:-1:-1;2200:39:32;;708:8151:52;;;;;;;;;;615:4;;;708:8151;;;;;:::o;6468:629:32:-;2626:1:33;6468:629:32;3304:55:33;6468:629:32;708:8151:52;;;;;;3256:31:33;;;;;;;;;;;;:::i;:::-;3304:55;;;:::i;:::-;708:8151:52;;6960:22:32;;;;:57;;;;6468:629;6956:135;;;;6468:629;:::o;6956:135::-;7040:40;;;2626:1:33;7040:40:32;;708:8151:52;664:8;2626:1:33;7040:40:32;6960:57;6987:30;;;3256:31:33;6987:30:32;;;;;;;;:::i;:::-;6986:31;6960:57;;;;708:8151:52;;;;;;;;;;;;;;;;;;;-1:-1:-1;;708:8151:52;;;;;:::i;:::-;;;;-1:-1:-1;708:8151:52;;;;:::o;:::-;;;:::o;4421:582:33:-;;4593:8;;-1:-1:-1;708:8151:52;;5674:21:33;:17;;5846:142;;;;;;5670:385;6025:19;;;5694:1;6025:19;;5694:1;6025:19;4589:408;708:8151:52;;4841:22:33;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:33;4917:24;;;-1:-1:-1;;;;;708:8151:52;;;;4917:24:33;708:8151:52;664:8;;4917:24:33;4841:49;4867:18;;;:23;4841:49;","linkReferences":{},"immutableReferences":{"63742":[{"start":874,"length":32},{"start":1465,"length":32},{"start":2553,"length":32},{"start":3025,"length":32},{"start":3619,"length":32}]}},"methodIdentifiers":{"getCapabilities(bytes32,address,address)":"48bd7dfd","getLimits(bytes32,address,address)":"a9270fbe","getPoolIds(uint256,uint256)":"23eeca01","getTokens(bytes32)":"ecbbc033","price(bytes32,address,address,uint256[])":"aad6e488","swap(bytes32,address,address,uint8,uint256)":"8307c655"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"LimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"Unavailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getCapabilities\",\"outputs\":[{\"internalType\":\"enum ISwapAdapterTypes.Capability[]\",\"name\":\"capabilities\",\"type\":\"uint8[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"}],\"name\":\"getLimits\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"limits\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"getPoolIds\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"ids\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"getTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyToken\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_specifiedAmounts\",\"type\":\"uint256[]\"}],\"name\":\"price\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction[]\",\"name\":\"_prices\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"enum ISwapAdapterTypes.OrderSide\",\"name\":\"side\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"calculatedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction\",\"name\":\"price\",\"type\":\"tuple\"}],\"internalType\":\"struct ISwapAdapterTypes.Trade\",\"name\":\"trade\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"LimitExceeded(uint256)\":[{\"details\":\"The LimitExceeded error is thrown when a limit has been exceeded. E.g. the specified amount can't be traded safely.\"}],\"NotImplemented(string)\":[{\"details\":\"The NotImplemented error is thrown when a function is not implemented.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}],\"Unavailable(string)\":[{\"details\":\"The Unavailable error is thrown when a pool or swap is not available for unexpected reason. E.g. it was paused due to a bug.\"}]},\"kind\":\"dev\",\"methods\":{\"getCapabilities(bytes32,address,address)\":{\"params\":{\"poolId\":\"The ID of the trading pool.\"},\"returns\":{\"capabilities\":\"An array of Capability.\"}},\"getLimits(bytes32,address,address)\":{\"details\":\"Retrieve the maximum limits of a token that can be traded. The limit is reached when the change in the received amounts is zero or close to zero or when the swap fails because of the pools restrictions. Overestimate if in doubt rather than underestimate. The swap function should not error with `LimitExceeded` if called with amounts below the limit.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\"},\"returns\":{\"limits\":\"An array of size two indicating the limit amount for the sell token (maximum the pool is willing to buy in sell token) as well as the limit amount of the buy token (maximum the pool is willing to sell in buy token).\"}},\"getPoolIds(uint256,uint256)\":{\"details\":\"Mainly used for testing. It is alright to not return all available pools here. Nevertheless, this is useful to test against the substreams implementation. If implemented, it saves time writing custom tests.\",\"params\":{\"limit\":\"The maximum number of pool IDs to retrieve.\",\"offset\":\"The starting index from which to retrieve pool IDs.\"},\"returns\":{\"ids\":\"An array of pool IDs.\"}},\"getTokens(bytes32)\":{\"details\":\"Mainly used for testing as this is redundant with the required substreams implementation.\",\"params\":{\"poolId\":\"The ID of the trading pool.\"},\"returns\":{\"tokens\":\"An array of address contracts.\"}},\"price(bytes32,address,address,uint256[])\":{\"details\":\"Integral always relies on a single pool linked to the factory to map two pairs, and does not use routing we can then use getPriceByTokenAddresses() instead of getPriceByPairAddresses() as they both return the same value and the first also handles the order of tokens inside.Since the price of a token is determined externally by Integral Oracles and not by reserves it will always be the same (pre and post trade) and independent of the amounts swapped, but we still return an array of length=specifiedAmounts.length with same values to make sure the return value is the expected from caller.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\",\"specifiedAmounts\":\"Amounts to calculate marginal prices at.\"},\"returns\":{\"_prices\":\"array of prices as fractions corresponding to the provided amounts.\"}},\"swap(bytes32,address,address,uint8,uint256)\":{\"details\":\"This function should be state modifying, meaning it should actually execute the swap and change the state of the EVM accordingly. Please include a gas usage estimate for each amount. This can be achieved e.g. by using the `gasleft()` function. The return type `Trade` has an attribute called price which should contain the value of `price(specifiedAmount)`. As this is optional, defined via `Capability.PriceFunction`, it is valid to return a Fraction(0, 0) value for this price. In that case the price will be estimated numerically.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\",\"side\":\"The side of the trade (Sell or Buy).\",\"specifiedAmount\":\"The amount to be traded.\"},\"returns\":{\"trade\":\"Trade struct representing the executed trade.\"}}},\"title\":\"Integral Swap Adapter\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCapabilities(bytes32,address,address)\":{\"notice\":\"Retrieves the capabilities of the selected pool.\"},\"getLimits(bytes32,address,address)\":{\"notice\":\"Retrieves the limits for each token.\"},\"getPoolIds(uint256,uint256)\":{\"notice\":\"Retrieves a range of pool IDs.\"},\"getTokens(bytes32)\":{\"notice\":\"Retrieves the tokens in the selected pool.\"},\"price(bytes32,address,address,uint256[])\":{\"notice\":\"Calculates marginal prices for specified amounts (optional).\"},\"swap(bytes32,address,address,uint8,uint256)\":{\"notice\":\"Simulates swapping tokens on a given pool.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/integral/IntegralSwapAdapter.sol\":\"IntegralSwapAdapter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/integral/IntegralSwapAdapter.sol\":{\"keccak256\":\"0xba81dc8dd2e92b38d2de308f2d4fd5d43043a6646c5c5026cb0599328270913f\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://cdd83b073508b386799138c43800f670b93c49357e7e04e6168a067b80300f98\",\"dweb:/ipfs/QmZrMmCPf7ePH4jeQGzaxbDrt1LSSLSXRJHg6LfaSrVRVm\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"relayer_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"type":"error","name":"LimitExceeded"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"NotImplemented"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"Unavailable"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function","name":"getCapabilities","outputs":[{"internalType":"enum ISwapAdapterTypes.Capability[]","name":"capabilities","type":"uint8[]"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"}],"stateMutability":"view","type":"function","name":"getLimits","outputs":[{"internalType":"uint256[]","name":"limits","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPoolIds","outputs":[{"internalType":"bytes32[]","name":"ids","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getTokens","outputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"_sellToken","type":"address"},{"internalType":"address","name":"_buyToken","type":"address"},{"internalType":"uint256[]","name":"_specifiedAmounts","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"price","outputs":[{"internalType":"struct ISwapAdapterTypes.Fraction[]","name":"_prices","type":"tuple[]","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"},{"internalType":"enum ISwapAdapterTypes.OrderSide","name":"side","type":"uint8"},{"internalType":"uint256","name":"specifiedAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swap","outputs":[{"internalType":"struct ISwapAdapterTypes.Trade","name":"trade","type":"tuple","components":[{"internalType":"uint256","name":"calculatedAmount","type":"uint256"},{"internalType":"uint256","name":"gasUsed","type":"uint256"},{"internalType":"struct ISwapAdapterTypes.Fraction","name":"price","type":"tuple","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]}]}],"devdoc":{"kind":"dev","methods":{"getCapabilities(bytes32,address,address)":{"params":{"poolId":"The ID of the trading pool."},"returns":{"capabilities":"An array of Capability."}},"getLimits(bytes32,address,address)":{"details":"Retrieve the maximum limits of a token that can be traded. The limit is reached when the change in the received amounts is zero or close to zero or when the swap fails because of the pools restrictions. Overestimate if in doubt rather than underestimate. The swap function should not error with `LimitExceeded` if called with amounts below the limit.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold."},"returns":{"limits":"An array of size two indicating the limit amount for the sell token (maximum the pool is willing to buy in sell token) as well as the limit amount of the buy token (maximum the pool is willing to sell in buy token)."}},"getPoolIds(uint256,uint256)":{"details":"Mainly used for testing. It is alright to not return all available pools here. Nevertheless, this is useful to test against the substreams implementation. If implemented, it saves time writing custom tests.","params":{"limit":"The maximum number of pool IDs to retrieve.","offset":"The starting index from which to retrieve pool IDs."},"returns":{"ids":"An array of pool IDs."}},"getTokens(bytes32)":{"details":"Mainly used for testing as this is redundant with the required substreams implementation.","params":{"poolId":"The ID of the trading pool."},"returns":{"tokens":"An array of address contracts."}},"price(bytes32,address,address,uint256[])":{"details":"Integral always relies on a single pool linked to the factory to map two pairs, and does not use routing we can then use getPriceByTokenAddresses() instead of getPriceByPairAddresses() as they both return the same value and the first also handles the order of tokens inside.Since the price of a token is determined externally by Integral Oracles and not by reserves it will always be the same (pre and post trade) and independent of the amounts swapped, but we still return an array of length=specifiedAmounts.length with same values to make sure the return value is the expected from caller.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold.","specifiedAmounts":"Amounts to calculate marginal prices at."},"returns":{"_prices":"array of prices as fractions corresponding to the provided amounts."}},"swap(bytes32,address,address,uint8,uint256)":{"details":"This function should be state modifying, meaning it should actually execute the swap and change the state of the EVM accordingly. Please include a gas usage estimate for each amount. This can be achieved e.g. by using the `gasleft()` function. The return type `Trade` has an attribute called price which should contain the value of `price(specifiedAmount)`. As this is optional, defined via `Capability.PriceFunction`, it is valid to return a Fraction(0, 0) value for this price. In that case the price will be estimated numerically.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold.","side":"The side of the trade (Sell or Buy).","specifiedAmount":"The amount to be traded."},"returns":{"trade":"Trade struct representing the executed trade."}}},"version":1},"userdoc":{"kind":"user","methods":{"getCapabilities(bytes32,address,address)":{"notice":"Retrieves the capabilities of the selected pool."},"getLimits(bytes32,address,address)":{"notice":"Retrieves the limits for each token."},"getPoolIds(uint256,uint256)":{"notice":"Retrieves a range of pool IDs."},"getTokens(bytes32)":{"notice":"Retrieves the tokens in the selected pool."},"price(bytes32,address,address,uint256[])":{"notice":"Calculates marginal prices for specified amounts (optional)."},"swap(bytes32,address,address,uint8,uint256)":{"notice":"Simulates swapping tokens on a given pool."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/integral/IntegralSwapAdapter.sol":"IntegralSwapAdapter"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/integral/IntegralSwapAdapter.sol":{"keccak256":"0xba81dc8dd2e92b38d2de308f2d4fd5d43043a6646c5c5026cb0599328270913f","urls":["bzz-raw://cdd83b073508b386799138c43800f670b93c49357e7e04e6168a067b80300f98","dweb:/ipfs/QmZrMmCPf7ePH4jeQGzaxbDrt1LSSLSXRJHg6LfaSrVRVm"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"}},"version":1},"id":52} \ No newline at end of file diff --git a/evm/out/IntegralSwapAdapter.t.sol/IntegralSwapAdapterTest.json b/evm/out/IntegralSwapAdapter.t.sol/IntegralSwapAdapterTest.json deleted file mode 100644 index 5f20ec6..0000000 --- a/evm/out/IntegralSwapAdapter.t.sol/IntegralSwapAdapterTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getMinLimits","inputs":[{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"}],"outputs":[{"name":"limits","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testGetCapabilitiesIntegral","inputs":[{"name":"pair","type":"bytes32","internalType":"bytes32"},{"name":"t0","type":"address","internalType":"address"},{"name":"t1","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testGetLimitsIntegral","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testGetTokensIntegral","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPriceFuzzIntegral","inputs":[{"name":"amount0","type":"uint256","internalType":"uint256"},{"name":"amount1","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapBuyIncreasing","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapFuzzIntegral","inputs":[{"name":"specifiedAmount","type":"uint256","internalType":"uint256"},{"name":"isBuy","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapSellIncreasingIntegral","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"LimitExceeded","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotImplemented","inputs":[{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"Unavailable","inputs":[{"name":"reason","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x60808060405234602f57600160ff19600c541617600c55600160ff19601e541617601e5561616e90816100348239f35b5f80fdfe60806040526004361015610011575f80fd5b5f5f3560e01c8063053076211461333d5780630a9254e4146130005780631ed7831c14612f825780631fe0c49a14612ded57806323bc9a2914612d495780632ade388014612bda57806337124eb0146128d45780633e5e3c23146128565780633f7286f4146127d85780635d511088146118fb57806366d9a9a01461174d57806366f523f51461163b57806385226c81146115a1578063916a17c614611315578063b4f3fe0b14610c11578063b5508aa914610b70578063ba414fa614610b4b578063e20c9f7114610abd578063fa7626d414610a9a5763fe3ee58b146100f6575f80fd5b346107dc57806003193601126107dc57604051610ca09067016345785d8a00006101208383613620565b60648252601f19830190813660208501378061013b84613658565b5280159060015b60648110610a625750505061015a6040519384613620565b60648352835b818110610a2657505060015b6064811061029757505060015b60638110610185578280f35b61018f8183613689565b5151600182019081831161028357816101b8610202926101b0889588613689565b515190613c17565b6101df60206101c78688613689565b51015160206101d68489613689565b51015190613c17565b60406101f9816101ef8789613689565b5101519287613689565b51015190613c66565b810b5f5160206160995f395f51905f523b1561027f576040519063fe74f05b60e01b8252600482015281602482015281816044815f5160206160995f395f51905f525afa80156102745761025b575b5050600101610179565b8161026591613620565b61027057825f610251565b8280fd5b6040513d84823e3d90fd5b5080fd5b634e487b7160e01b85526011600452602485fd5b604051634b88b8ad60e11b815290602082600481885f5160206160995f395f51905f525af191821561069f5785926109f3575b506102d58184613689565b51858060405160208101906370a0823160e01b8252306024820152602481526102ff604482613620565b51905f5160206161195f395f51905f525afa5061032c61031d613be8565b602080825183010191016137e4565b506103356137f3565b6370a0823163ffffffff19600f541617600f55600e54600160401b8110156109df576001810180600e558110156109cb57600e8752305f5160206160d95f395f51905f529190910155601154600f5460105488926001600160a01b03169160e01b61039e613cbb565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908186526020526040852060405160208101906103f0816103e2888886613ca4565b03601f198101835282613620565b519020865260205260ff600360408720015416156109bd575b6001600160a01b0384165f908152600d602052604090209085526020526103e26104426040862093604051928391602083019586613ca4565b51902083526020526040822060018101549360028201546104638187613bdb565b61084e575b8254604051630667f9d760e41b81526001600160a01b038616600482015260248101829052969091906020886044815f5160206160995f395f51905f525afa978815610843578798610807575b506001908201610100031b5f1901811b198716915f5160206160995f395f51905f523b15610803576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528481606481835f5160206160995f395f51905f525af190811561069f5785916107ea575b505061053c613e77565b9190159182156107df575b50506106ff5750505050610559614968565b601e546105a89060209060081c6001600160a01b03166105798487613689565b5160405163095ea7b360e01b81526001600160a01b039092166004830152602482015291829081906044820190565b0381895f5160206161195f395f51905f525af180156106d8576106e3575b50601e5485906080906106089060081c6001600160a01b03166105e98588613689565b51604051948580948193638307c65560e01b83526001600484016139d2565b03925af19081156106d85786916106aa575b506106258286613689565b526106308185613689565b5060405191631135fc2960e21b83526004830152602082602481885f5160206160995f395f51905f525af191821561069f57600192610671575b500161016c565b6106919060203d8111610698575b6106898183613620565b810190613981565b505f61066a565b503d61067f565b6040513d87823e3d90fd5b6106cb915060803d81116106d1575b6106c38183613620565b810190613999565b5f61061a565b503d6106b9565b6040513d88823e3d90fd5b6106fa9060203d8111610698576106898183613620565b6105c6565b82945054905f5160206160995f395f51905f523b15610270576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810191909152604481019290925281606481835f5160206160995f395f51905f525af18015610274576107c7575b60405162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b6107d2828092613620565b6107dc5780610766565b80fd5b141590505f80610547565b816107f491613620565b6107ff57835f610532565b8380fd5b8680fd5b965096506020863d821161083b575b8161082360209383613620565b81010312610837579451958b9590816104b5565b5f80fd5b3d9150610816565b6040513d89823e3d90fd5b909192935061085d8186613bdb565b6101000361010081116109a95760ff81116109a95760405163348051d760e11b8152600190911b600482018190528b80836024815f5160206160995f395f51905f525afa92831561099c5760209382606a9261093e9492610978575b506040519586927f73746453746f726167652066696e642853746453746f72616765293a20506163828501527f6b656420736c6f742e2057652063616e2774206669742076616c756520677265604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f198101845283613620565b83101561095057509089939291610468565b60405162461bcd60e51b8152602060048201529081906109749060248301906134bf565b0390fd5b6109959192503d8084833e61098d8183613620565b810190613782565b905f6108b9565b50604051903d90823e3d90fd5b634e487b7160e01b8b52601160045260248bfd5b6109c5614093565b50610409565b634e487b7160e01b87526032600452602487fd5b634e487b7160e01b87526041600452602487fd5b9091506020813d8211610a1e575b81610a0e60209383613620565b810103126108375751905f6102ca565b3d9150610a01565b602090604051610a3581613605565b8681528683820152604051610a49816135ea565b8781528784820152604082015282828701015201610160565b808202908282048114841715610a8657600191610a7f8288613689565b5201610142565b634e487b7160e01b5f52601160045260245ffd5b50346107dc57806003193601126107dc57602060ff601e54166040519015158152f35b50346107dc57806003193601126107dc5760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b818110610b2c57610b2885610b1c81870382613620565b6040519182918261347d565b0390f35b82546001600160a01b0316845260209093019260019283019201610b05565b50346107dc57806003193601126107dc576020610b66613a46565b6040519015158152f35b50346107dc57806003193601126107dc57601954610b8d81613641565b91610b9b6040519384613620565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b838310610be55760405160208082528190610b28908201886134e3565b600160208192604051610c0381610bfc81896138c5565b0382613620565b815201920192019190610bc8565b50346107dc57806003193601126107dc57604051610ca090633b9aca00610c388383613620565b60648252601f198301908136602085013780610c5384613658565b5280159060015b606481106112f157505050610c726040519384613620565b60648352835b8181106112b557505060015b60648110610d3657505060015b60638110610c9d578280f35b610ca78183613689565b5151600182019081831161028357816101b8610cc8926101b0889588613689565b810b5f5160206160995f395f51905f523b1561027f576040519063fe74f05b60e01b8252600482015281602482015281816044815f5160206160995f395f51905f525afa801561027457610d21575b5050600101610c91565b81610d2b91613620565b61027057825f610d17565b604051634b88b8ad60e11b815290602082600481885f5160206160995f395f51905f525af191821561069f578592611282575b50610d748184613689565b51858060405160208101906370a0823160e01b825230602482015260248152610d9e604482613620565b51905f5160206161195f395f51905f525afa50610dbc61031d613be8565b50610dc56137f3565b6370a0823163ffffffff19600f541617600f55600e54600160401b8110156109df576001810180600e558110156109cb57600e8752305f5160206160d95f395f51905f529190910155601154600f5460105488926001600160a01b03169160e01b610e2e613cbb565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818652602052604085206040516020810190610e72816103e2888886613ca4565b519020865260205260ff60036040872001541615611274575b6001600160a01b0384165f908152600d602052604090209085526020526103e2610ec46040862093604051928391602083019586613ca4565b5190208352602052604082206001810154936002820154610ee58187613bdb565b611173575b8254604051630667f9d760e41b81526001600160a01b038616600482015260248101829052969091906020886044815f5160206160995f395f51905f525afa97881561084357879861113b575b506001908201610100031b5f1901811b198716915f5160206160995f395f51905f523b15610803576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528481606481835f5160206160995f395f51905f525af190811561069f578591611126575b5050610fbe613e77565b91901591821561111b575b50506106ff5750505050610fdb614968565b601e54610ffb9060209060081c6001600160a01b03166105798487613689565b0381895f5160206161195f395f51905f525af180156106d8576110ff575b50601e54859060809061105a9060081c6001600160a01b031661103c8588613689565b51604051948580948193638307c65560e01b835283600484016139d2565b03925af19081156106d85786916110e1575b506110778286613689565b526110828185613689565b5060405191631135fc2960e21b83526004830152602082602481885f5160206160995f395f51905f525af191821561069f576001926110c3575b5001610c84565b6110da9060203d8111610698576106898183613620565b505f6110bc565b6110f9915060803d81116106d1576106c38183613620565b5f61106c565b6111169060203d8111610698576106898183613620565b611019565b141590505f80610fc9565b8161113091613620565b6107ff57835f610fb4565b965096506020863d821161116b575b8161115760209383613620565b81010312610837579451958b959081610f37565b3d915061114a565b90919293506111828186613bdb565b6101000361010081116109a95760ff81116109a95760405163348051d760e11b8152600190911b600482018190528b80836024815f5160206160995f395f51905f525afa92831561099c5760209382606a92611262949261097857506040519586927f73746453746f726167652066696e642853746453746f72616765293a20506163828501527f6b656420736c6f742e2057652063616e2774206669742076616c756520677265604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f198101845283613620565b83101561095057509089939291610eea565b61127c614093565b50610e8b565b9091506020813d82116112ad575b8161129d60209383613620565b810103126108375751905f610d69565b3d9150611290565b6020906040516112c481613605565b86815286838201526040516112d8816135ea565b8781528784820152604082015282828701015201610c78565b808202908282048114841715610a865760019161130e8288613689565b5201610c5a565b50346107dc57806003193601126107dc57601c5461133281613641565b906113406040519283613620565b808252601c8352827f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b8383106113835760405180610b28878261353b565b60405161138f816135ea565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b816007840110611502578460019794600297946020979461141a9454918181106114e6575b8181106114ca575b8181106114ae575b818110611492575b818110611476575b81811061145a575b818110611440575b1061142c575b500382613620565b8382015281520192019201919061136e565b6001600160e01b031916815286015f611412565b828a1b6001600160e01b0319168452928901928b0161140c565b604083901b6001600160e01b0319168452928901928b01611404565b606083901b6001600160e01b0319168452928901928b016113fc565b608083901b6001600160e01b0319168452928901928b016113f4565b60a083901b6001600160e01b0319168452928901928b016113ec565b60c083901b6001600160e01b0319168452928901928b016113e4565b60e083901b6001600160e01b0319168452928901928b016113dc565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e08201520194019201916113b7565b50346107dc57806003193601126107dc57601a546115be81613641565b916115cc6040519384613620565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b8383106116165760405160208082528190610b28908201886134e3565b60016020819260405161162d81610bfc81896138c5565b8152019201920191906115f9565b50346107dc57806003193601126107dc57601e5460405163ecbbc03360e01b81525f5160206160f95f395f51905f5260048201529082908290602490829060081c6001600160a01b03165afa80156102745782906116a2575b61169f915051613ae1565b80f35b503d8083833e6116b28183613620565b810190602081830312610270578051906001600160401b0382116107ff57019080601f83011215610270578151906116e982613641565b926116f76040519485613620565b82845260208085019360051b82010191821161174957602001915b8183106117255750505061169f90611694565b82516001600160a01b038116810361174557815260209283019201611712565b8580fd5b8480fd5b50346107dc57806003193601126107dc57601b5461176a81613641565b906117786040519283613620565b808252601b8352827f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1602084015b8383106117bb5760405180610b28878261353b565b6040516117c7816135ea565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b81600784011061185c578460019794600297946020979461184a9454918181106114e6578181106114ca578181106114ae57818110611492578181106114765781811061145a57818110611440571061142c57500382613620565b838201528152019201920191906117a6565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e08201520194019201916117ef565b50346107dc5760403660031901126107dc57600435602435801515810361027057156127d25760015b60606040516119338282613620565b60028152601f19820180916020369101376040516119518382613620565b6002815260203691013760028210156127be576001821490811561230657601e5460405163549387df60e11b81525f5160206160f95f395f51905f5260048201525f5160206161195f395f51905f5260248201525f5160206160b95f395f51905f526044820152869182908290606490829060081c6001600160a01b03165afa8015610274576119e89183916122e4575b50613679565b5185105f5160206160995f395f51905f523b1561027f5760405190632631f2b160e11b8252600482015281816024815f5160206160995f395f51905f525afa8015610274576122cf575b5050611a44611a3f61369d565b613679565b516073810290808204607314901517156122bb5785905f5160206160995f395f51905f523b1561027f57604051632631f2b160e11b815260649091048611600482015281816024815f5160206160995f395f51905f525afa8015610274576122a6575b508060405160208101906370a0823160e01b825230602482015260248152611ad0604482613620565b51905f5160206161195f395f51905f525afa50611aee61031d613be8565b50611af76137f3565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015612292576001810180600e5581101561227e57600e8652305f5160206160d95f395f51905f529190910155601154600f5460105487926001600160a01b03169160e01b611b60613cbb565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818652602052604085206040516020810190611ba4816103e2888886613ca4565b519020865260205260ff60036040872001541615612270575b6001600160a01b0384165f908152600d602052604090209085526020526103e2611bf66040862093604051928391602083019586613ca4565b519020835260205260408220600181015493600282015490611c188287613bdb565b61212c57508154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f5160206160995f395f51905f525afa9687156106d85786976120f3575b506001908201610100031b5f1901811b1986165f5160206160995f395f51905f523b15611745576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528381606481835f5160206160995f395f51905f525af1908115611eed5784916120de575b5050611cee613e77565b90159081156120d2575b506106ff5750505050611d09614968565b601e5460405163095ea7b360e01b815260089190911c6001600160a01b031660048201525f196024820152602081604481885f5160206161195f395f51905f525af1801561069f576120b3575b505b6040516370a0823160e01b8152306004820152926020846024815f5160206161195f395f51905f525afa93841561069f57859461207f575b506040516370a0823160e01b8152306004820152916020836024815f5160206160b95f395f51905f525afa9283156106d8578693612048575b50608082611dfd9560018060a01b03601e5460081c169089604051809981958294638307c65560e01b8452600484016139d2565b03925af19384156106d8578694612027575b508351611e1a578580f35b15611f2c576040516370a0823160e01b81523060048201526020816024815f5160206160b95f395f51905f525afa9081156106d8578691611ef8575b50611e6a92611e6491613a39565b90613b3d565b516040516370a0823160e01b81523060048201526020816024815f5160206161195f395f51905f525afa908115611eed578491611eb9575b50611e6490611eb093613a39565b5f808080808580f35b90506020813d602011611ee5575b81611ed460209383613620565b810103126108375751611eb0611ea2565b3d9150611ec7565b6040513d86823e3d90fd5b90506020813d602011611f24575b81611f1360209383613620565b810103126108375751611e6a611e56565b3d9150611f06565b6040516370a0823160e01b81523060048201529193916020816024815f5160206161195f395f51905f525afa9081156106d8578691611ff3575b50611e6490611f7493613a39565b516040516370a0823160e01b81523060048201526020816024815f5160206160b95f395f51905f525afa908115611eed578491611fbf575b50611fba92611e6491613a39565b611eb0565b90506020813d602011611feb575b81611fda60209383613620565b810103126108375751611fba611fac565b3d9150611fcd565b90506020813d60201161201f575b8161200e60209383613620565b810103126108375751611f74611f66565b3d9150612001565b61204191945060803d6080116106d1576106c38183613620565b925f611e0f565b9392506020843d602011612077575b8161206460209383613620565b8101031261083757925191926080611dc9565b3d9150612057565b9093506020813d6020116120ab575b8161209b60209383613620565b810103126108375751925f611d90565b3d915061208e565b6120cb9060203d602011610698576106898183613620565b505f611d56565b5f19141590505f611cf8565b816120e891613620565b61027057825f611ce4565b955095506020853d602011612124575b8161211060209383613620565b810103126108375793519489949081611c6a565b3d9150612103565b612137859287613bdb565b61010003610100811161225c5760ff811161225c5760405163348051d760e11b8152600190911b600482015282816024815f5160206160995f395f51905f525afa9081156122515769030ba32b9103a3430b7160b51b9284602061221794606a946109749891612237575b506040519687947f73746453746f726167652066696e642853746453746f72616765293a20506163848701527f6b656420736c6f742e2057652063616e2774206669742076616c75652067726560408701528501528051918291018585015e820190838201520301601f198101835282613620565b60405162461bcd60e51b81526020600482015291829160248301906134bf565b61224b91503d8085833e61098d8183613620565b886121a2565b6040513d85823e3d90fd5b634e487b7160e01b83526011600452602483fd5b612278614093565b50611bbd565b634e487b7160e01b86526032600452602486fd5b634e487b7160e01b86526041600452602486fd5b816122b091613620565b61174957845f611aa7565b634e487b7160e01b86526011600452602486fd5b816122d991613620565b61174957845f611a32565b61230091503d8085833e6122f88183613620565b810190613814565b5f6119e2565b601e5460405163549387df60e11b81525f5160206160f95f395f51905f5260048201525f5160206161195f395f51905f5260248201525f5160206160b95f395f51905f526044820152869182908290606490829060081c6001600160a01b03165afa80156102745761237f9183916127a4575b50613658565b5185105f5160206160995f395f51905f523b1561027f5760405190632631f2b160e11b8252600482015281816024815f5160206160995f395f51905f525afa80156102745761278f575b50506123db6123d661369d565b613658565b516073810290808204607314901517156122bb5785905f5160206160995f395f51905f523b1561027f57604051632631f2b160e11b815260649091048611600482015281816024815f5160206160995f395f51905f525afa80156102745761277a575b508060405160208101906370a0823160e01b825230602482015260248152612467604482613620565b51905f5160206161195f395f51905f525afa5061248561031d613be8565b5061248e6137f3565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015612292576001810180600e5581101561227e57600e8652305f5160206160d95f395f51905f529190910155601154600f5460105487926001600160a01b03169160e01b6124f7613cbb565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b169081865260205260408520604051602081019061253b816103e2888886613ca4565b519020865260205260ff6003604087200154161561276c575b6001600160a01b0384165f908152600d602052604090209085526020526103e261258d6040862093604051928391602083019586613ca4565b5190208352602052604082206001810154936002820154906125af8287613bdb565b61212c57508154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f5160206160995f395f51905f525afa9687156106d8578697612733575b506001908201610100031b5f1901811b1986165f5160206160995f395f51905f523b15611745576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528381606481835f5160206160995f395f51905f525af1908115611eed57849161271e575b5050612685613e77565b9015908115612712575b506106ff57505050506126a0614968565b601e5460405163095ea7b360e01b815260089190911c6001600160a01b0316600482015260248101849052602081604481885f5160206161195f395f51905f525af1801561069f576126f3575b50611d58565b61270b9060203d602011610698576106898183613620565b505f6126ed565b5f19141590505f61268f565b8161272891613620565b61027057825f61267b565b955095506020853d602011612764575b8161275060209383613620565b810103126108375793519489949081612601565b3d9150612743565b612774614093565b50612554565b8161278491613620565b61174957845f61243e565b8161279991613620565b61174957845f6123c9565b6127b891503d8085833e6122f88183613620565b5f612379565b634e487b7160e01b84526021600452602484fd5b81611924565b50346107dc57806003193601126107dc5760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b81811061283757610b2885610b1c81870382613620565b82546001600160a01b0316845260209093019260019283019201612820565b50346107dc57806003193601126107dc5760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b8181106128b557610b2885610b1c81870382613620565b82546001600160a01b031684526020909301926001928301920161289e565b50346107dc5760403660031901126107dc576004359060243560018060a01b03601e5460081c169060405163549387df60e11b81527317f0b6e8c5dd13722bdbee90406ab3a18958135160611b60048201525f5160206161195f395f51905f5260248201525f5160206160b95f395f51905f5260448201528381606481865afa908115611eed578491612bc0575b5061296c81613658565b5185105f5160206160995f395f51905f523b156117495760405190632631f2b160e11b8252600482015284816024815f5160206160995f395f51905f525afa801561069f57908591612bab575b50506129c490613679565b5181105f5160206160995f395f51905f523b156107ff5760405190632631f2b160e11b8252600482015283816024815f5160206160995f395f51905f525afa8015611eed57612b96575b50928291612aa39460405192612a25606085613620565b600284526040366020860137612a3a84613658565b52612a4483613679565b5260405163155adc9160e31b81525f5160206160f95f395f51905f5260048201525f5160206160b95f395f51905f5260248201525f5160206161195f395f51905f5260448201526080606482015294859283918291608483019061344a565b03915afa91821561099c578192612af9575b50805b8251811015612af55780612ad8612ad160019386613689565b5151613b8c565b612aef6020612ae78387613689565b510151613b8c565b01612ab8565b5080f35b9091503d8083833e612b0b8183613620565b810190602081830312610270578051906001600160401b0382116107ff570181601f82011215610270578051612b4081613641565b92612b4e6040519485613620565b81845260208085019260061b8401019281841161174557602001915b838310612b7c5750505050905f612ab5565b6020604091612b8b8486613946565b815201920191612b6a565b612ba1848092613620565b610270575f612a0e565b81612bb591613620565b6107ff57835f6129b9565b612bd491503d8086833e6122f88183613620565b5f612962565b50346107dc57806003193601126107dc57601d54612bf781613641565b612c046040519182613620565b818152601d83526020810191837f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f845b838310612cb857868587604051928392602084019060208552518091526040840160408260051b8601019392905b828210612c7157505050500390f35b91936001919395506020612ca88192603f198a82030186526040838a51878060a01b038151168452015191818582015201906134e3565b9601920192018594939192612c62565b604051612cc4816135ea565b82546001600160a01b03168152600183018054612ce081613641565b91612cee6040519384613620565b8183528a526020808b20908b9084015b838210612d24575050505060019282602092836002950152815201920192019190612c34565b600160208192604051612d3b81610bfc818a6138c5565b815201930191019091612cfe565b50346107dc57806003193601126107dc57601e5460405163549387df60e11b81525f5160206160f95f395f51905f5260048201525f5160206161195f395f51905f5260248201525f5160206160b95f395f51905f5260448201529082908290606490829060081c6001600160a01b03165afa80156102745761169f918391612dd3575b5051613ae1565b612de791503d8085833e6122f88183613620565b5f612dcc565b50346107dc5760603660031901126107dc5780612e08613434565b6044356001600160a01b03811690819003612f7e57601e546040516348bd7dfd60e01b815260048035908201526001600160a01b0393841660248201526044810192909252909183918391606491839160089190911c165afa908115610274578291612ed5575b50515f5160206160995f395f51905f523b15612ed2576040519063260a5b1560e21b825260048201526004602482015281816044815f5160206160995f395f51905f525afa801561027457612ec15750f35b81612ecb91613620565b6107dc5780f35b50fd5b9150503d8083833e612ee78183613620565b810190602081830312610270578051906001600160401b0382116107ff57019080601f8301121561027057815190612f1e82613641565b92612f2c6040519485613620565b82845260208085019360051b820101918211611749579060208594939201915b818310612f5c575050505f612e6f565b90918093945051600a8110156117455781528493926020908101929101612f4c565b5050fd5b50346107dc57806003193601126107dc5760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b818110612fe157610b2885610b1c81870382613620565b82546001600160a01b0316845260209093019260019283019201612fca565b5034610837575f3660031901126108375760405163975a6ce960e01b81526020600482015260076024820152661b585a5b9b995d60ca1b60448201525f816064815f5160206160995f395f51905f525afa9081156132d557613089916020915f91613323575b50604051809381926371ee464d60e01b83526040600484015260448301906134bf565b63011f676d602483015203815f5f5160206160995f395f51905f525af180156132d5576132f4575b5060405161148e808201908282106001600160401b038311176132e0576020918391614c0b833973d17b3c9784510e33cd5b87b490e79253bcd81e2e81520301905ff080156132d557601e8054610100600160a81b03191660089290921b610100600160a81b0316919091179055601f80546001600160a01b03191673d17b3c9784510e33cd5b87b490e79253bcd81e2e1790555f5160206160995f395f51905f523b15610837576040516318caf8e360e31b81525f5160206160b95f395f51905f5260048201526040602482015260046044820152630ae8aa8960e31b60648201525f81608481835f5160206160995f395f51905f525af180156132d5576132c2575b505f5160206160995f395f51905f523b156107dc57806040516318caf8e360e31b81525f5160206161195f395f51905f5260048201526040602482015260046044820152635553444360e01b60648201528181608481835f5160206160995f395f51905f525af18015610274576132ad575b50505f5160206160995f395f51905f523b156107dc57806040516318caf8e360e31b8152732fe16dd18bba26e457b7dd2080d5674312b026a2600482015260406024820152600e60448201526d2aa9a221afaba2aa242fa820a4a960911b60648201528181608481835f5160206160995f395f51905f525af1801561027457612ec15750f35b816132b791613620565b6107dc57805f613227565b6132ce91505f90613620565b5f5f6131b5565b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b6020813d60201161331b575b8161330d60209383613620565b8101031261083757516130b1565b3d9150613300565b61333791503d805f833e61098d8183613620565b5f613066565b34610837576040366003190112610837576004356001600160a01b038116908190036108375760c061336d613434565b601f5460405163abc27eed60e01b815260048101949094526001600160a01b03918216602485015283916044918391165afa80156132d5575f905f906133f6575b610b289250604051916133c2606084613620565b6002835260403660208501376133d783613658565b526133e182613679565b5260405191829160208352602083019061344a565b505060c0813d60c01161342c575b8161341160c09383613620565b81010312610837578060806040610b289301519101516133ae565b3d9150613404565b602435906001600160a01b038216820361083757565b90602080835192838152019201905f5b8181106134675750505090565b825184526020938401939092019160010161345a565b60206040818301928281528451809452019201905f5b8181106134a05750505090565b82516001600160a01b0316845260209384019390920191600101613493565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9080602083519182815201916020808360051b8301019401925f915b83831061350e57505050505090565b909192939460208061352c600193601f1986820301875289516134bf565b970193019301919392906134ff565b602081016020825282518091526040820191602060408360051b8301019401925f915b83831061356d57505050505090565b9091929394603f1982820301835285516020606081604085019360018060a01b0381511686520151936040838201528451809452019201905f905b8082106135c7575050506020806001929701930193019193929061355e565b82516001600160e01b0319168452602093840193909201916001909101906135a8565b604081019081106001600160401b038211176132e057604052565b606081019081106001600160401b038211176132e057604052565b90601f801991011681019081106001600160401b038211176132e057604052565b6001600160401b0381116132e05760051b60200190565b8051156136655760200190565b634e487b7160e01b5f52603260045260245ffd5b8051600110156136655760400190565b80518210156136655760209160051b010190565b601f5460405163abc27eed60e01b81525f5160206161195f395f51905f5260048201525f5160206160b95f395f51905f526024820152919060c090839060449082906001600160a01b03165afa80156132d5575f925f9161372b575b5061372860405161370b606082613620565b600281526040366020830137809461372282613658565b52613679565b52565b92505060c0823d60c01161375f575b8161374760c09383613620565b8101031261083757608060408301519201515f6136f9565b3d915061373a565b6001600160401b0381116132e057601f01601f191660200190565b602081830312610837578051906001600160401b038211610837570181601f82011215610837578051906137b582613767565b926137c36040519485613620565b8284526020838301011161083757815f9260208093018386015e8301015290565b90816020910312610837575190565b601180546001600160a01b0319165f5160206161195f395f51905f52179055565b602081830312610837578051906001600160401b03821161083757019080601f8301121561083757815161384781613641565b926138556040519485613620565b81845260208085019260051b82010192831161083757602001905b82821061387d5750505090565b8151815260209182019101613870565b90600182811c921680156138bb575b60208310146138a757565b634e487b7160e01b5f52602260045260245ffd5b91607f169161389c565b5f92918154916138d48361388d565b808352926001811690811561392957506001146138f057505050565b5f9081526020812093945091925b83831061390f575060209250010190565b6001816020929493945483858701015201910191906138fe565b915050602093945060ff929192191683830152151560051b010190565b91908260409103126108375760405161395e816135ea565b6020808294805184520151910152565b81810292918115918404141715610a8657565b90816020910312610837575180151581036108375790565b90608082820312610837576139ca9060408051936139b685613605565b805185526020810151602086015201613946565b604082015290565b5f5160206160f95f395f51905f5281525f5160206161195f395f51905f5260208201525f5160206160b95f395f51905f52604082015260a08101939291906002821015613a255760809160608201520152565b634e487b7160e01b5f52602160045260245ffd5b91908203918211610a8657565b60085460ff168015613a555790565b50604051630667f9d760e41b81525f5160206160995f395f51905f5260048201526519985a5b195960d21b60248201526020816044815f5160206160995f395f51905f525afa9081156132d5575f91613aaf575b50151590565b90506020813d602011613ad9575b81613aca60209383613620565b8101031261083757515f613aa9565b3d9150613abd565b5f5160206160995f395f51905f523b15610837576040519063260a5b1560e21b82526004820152600260248201525f816044815f5160206160995f395f51905f525afa80156132d557613b315750565b5f613b3b91613620565b565b905f5160206160995f395f51905f523b15610837576040519163260a5b1560e21b8352600483015260248201525f816044815f5160206160995f395f51905f525afa80156132d557613b315750565b5f5160206160995f395f51905f523b156108375760405190636d83fe6960e11b825260048201525f60248201525f816044815f5160206160995f395f51905f525afa80156132d557613b315750565b91908201809211610a8657565b3d15613c12573d90613bf982613767565b91613c076040519384613620565b82523d5f602084013e565b606090565b905f5160206160995f395f51905f523b156108375760405191638466f41560e01b8352600483015260248201525f816044815f5160206160995f395f51905f525afa80156132d557613b315750565b613c86906020613c7b8251828601519061396e565b93519101519061396e565b90808203613c945750505f90565b1115613c9f57600190565b5f1990565b60209291908391805192839101825e019081520190565b613cc660145461388d565b613d83576040519081826020600e549283815201600e5f5260205f20925f5b818110613d6a575050613cfa92500383613620565b81518060051b9080820460201490151715610a8657613d1881613767565b90613d266040519283613620565b808252613d35601f1991613767565b013660208301375f5b8351811015613d655780613d5460019286613689565b5160208260051b8501015201613d3e565b509150565b8454835260019485019487945060209093019201613ce5565b604051613d9581610bfc8160146138c5565b90565b6007810190613da7825461388d565b613e6357600191500190604051808360208295549384815201905f5260205f20925f5b818110613e4a575050613ddf92500383613620565b81518060051b9080820460201490151715610a8657613dfd81613767565b90613e0b6040519283613620565b808252613e1a601f1991613767565b013660208301375f5b8351811015613d655780613e3960019286613689565b5160208260051b8501015201613e23565b8454835260019485019487945060209093019201613dca565b50613d95610bfc91604051928380926138c5565b5f806020600f5460e01b613ec56024613e90600d613d98565b6040519485918183019563ffffffff60e01b1686528051918291018484015e810186838201520301601f198101845283613620565b6011549151916001600160a01b03165afa90613edf613be8565b601054909290600581901b906001600160fb1b03811603610a86575f938051602081115f14613f6a57506020905b5f925b828410613f1f57505050509190565b90919295613f2d8783613bdb565b835181101561366557830160200151600388901b91906001600160f81b031916881560088a8504141715610a86576001921c179601929190613f10565b90613f0d565b905f806020600285015460e01b613f8b6024613e9088613d98565b60048601549151916001600160a01b03165afa6003613fa8613be8565b930154600581901b906001600160fb1b03811603610a86575f938051602081115f1461403057506020905b5f925b828410613fe557505050509190565b90919295613ff38783613bdb565b835181101561366557830160200151600388901b91906001600160f81b031916881560088a8504141715610a86576001921c179601929190613fd6565b90613fd3565b9080601f8301121561083757815161404d81613641565b9261405b6040519485613620565b81845260208085019260051b82010192831161083757602001905b8282106140835750505090565b8151815260209182019101614076565b601154600f546010546001600160a01b03909216915f9160e01b6140b7600d613d98565b90845f52600d60205260405f209063ffffffff60e01b1690815f5260205260405f2060405160208101906140f0816103e2888886613ca4565b5190205f5260205260ff600360405f20015416614927575f5160206160995f395f51905f523b156108375760405163266cf10960e01b81525f81600481835f5160206160995f395f51905f525af180156132d557614912575b50614154600d613f70565b90506040516365bc948160e01b81528660048201528581602481835f5160206160995f395f51905f525af19081156106d85786916148aa575b5080516141fe57608460405162461bcd60e51b815260206004820152604060248201527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152fd5b855b81518110156148a2578160206142198361424a95613689565b51604051630667f9d760e41b81526001600160a01b038c166004820152602481019190915293849081906044820190565b03815f5160206160995f395f51905f525afa928315614897578893614864575b50821561480c575b61427c8282613689565b51601154604051630667f9d760e41b81526001600160a01b03909116600482018190526024820183905291906020816044815f5160206160995f395f51905f525afa908115614801578b916147d0575b506142d7600d613f70565b91909382155f146147c9575f19905b5f5160206160995f395f51905f523b156147b0576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810185905260448101919091528c81606481835f5160206160995f395f51905f525af1801561472a57908d916147b4575b5050614357600d613f70565b601154909491506001600160a01b03165f5160206160995f395f51905f523b156147b0576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528b81606481835f5160206160995f395f51905f525af180156147a557908c9161478c575b505082614781575b505015614777578793889360ff601354166145f1575b6001868601610100031b5f1901851b16841c81036145e3575090614471917f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed60808b896103e26144468d604051928391602083019586613ca4565b5190206144538686613689565b51906040519283528a602084015260408301526060820152a1613689565b51906040519060808201928284106001600160401b038511176132e05760039360405282526020820193845260408201908152606082019360018552898952600d60205260408920868a526020526040892060405160208101906144da816103e28d8d86613ca4565b5190208a526020526040892092518355516001830155516002820155019051151560ff801983541691161790555b848452600d60205260408420818552602052604084206040516020810190614535816103e2888886613ca4565b519020855260205260ff60036040862001541615614586576040948452600d6020528484209084526020526103e261457a858520938651928391602083019586613ca4565b51902082526020522090565b60405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201526e3a143994903737ba103337bab7321760891b6064820152608490fd5b935091506001905b01614200565b945061463c93506146028383613689565b51601154604051630667f9d760e41b81526001600160a01b0390911660048201526024810182905290959094602090869081906044820190565b03815f5160206160995f395f51905f525afa94851561476c578a95614739575b5061466886600d614a6e565b95909661467681600d614b47565b60115490939192906001600160a01b03165f5160206160995f395f51905f523b15614735576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528c81606481835f5160206160995f395f51905f525af1801561472a57908d91614711575b505087614709575b5094956143eb5750935091506001906145eb565b96505f6146f5565b8161471b91613620565b614726578b5f6146ed565b8b80fd5b6040513d8f823e3d90fd5b8e80fd5b9094506020813d8211614764575b8161475460209383613620565b810103126108375751935f61465c565b3d9150614747565b6040513d8c823e3d90fd5b91506001906145eb565b141590505f806143d5565b8161479691613620565b6147a1578a5f6143cd565b8a80fd5b6040513d8e823e3d90fd5b8d80fd5b816147be91613620565b614726578b5f61434b565b8c906142e6565b90506020813d82116147f9575b816147ea60209383613620565b8101031261083757515f6142cc565b3d91506147dd565b6040513d8d823e3d90fd5b7f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a561485c61483a8484613689565b51604080516001600160a01b038e168152602081019290925290918291820190565b0390a1614272565b9092506020813d821161488f575b8161487f60209383613620565b810103126108375751915f61426a565b3d9150614872565b6040513d8a823e3d90fd5b505050614508565b90503d8087833e6148bb8183613620565b81016040828203126108035781516001600160401b03811161490e57816148e3918401614036565b916020810151906001600160401b03821161490a57614903929101614036565b505f61418d565b8880fd5b8780fd5b61491f9194505f90613620565b5f925f614149565b91939092505f52600d60205260405f20905f526020526103e261495960405f2093604051928391602083019586613ca4565b5190205f5260205260405f2090565b6bffffffffffffffffffffffff60a01b6011541660115563ffffffff19600f5416600f55600e545f600e5580614a3f575b505f60105560ff19601354166013556149b360145461388d565b806149bb5750565b601f81116001146149cd57505f601455565b60145f52601f0160051c7fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec017fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ed5b818110614a3457505060145f525f602081208160145555565b5f8155600101614a1b565b600e5f525f5160206160d95f395f51905f52908101905b818110614a635750614999565b5f8155600101614a56565b91905f5b6101008110614a8557505090505f905f90565b8060ff0360ff8111610a86576004850154600190911b906001600160a01b03165f5160206160995f395f51905f523b15610837576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f5160206160995f395f51905f525af180156132d557614b37575b50614b1184613f70565b81614b2d575b50614b2457600101614a72565b92505060019190565b905015155f614b17565b5f614b4191613620565b5f614b07565b91905f5b6101008110614b5e57505090505f905f90565b60048401546001821b906001600160a01b03165f5160206160995f395f51905f523b15610837576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f5160206160995f395f51905f525af180156132d557614bfa575b50614bdd84613f70565b81614bf0575b50614b2457600101614b4b565b905015155f614be3565b5f614c0491613620565b5f614bd356fe60a03461008857601f61148e38819003918201601f19168301916001600160401b0383118484101761008c5780849260209460405283398101031261008857516001600160a01b03811690819003610088576080526040516113ed90816100a1823960805181818161036a015281816105b9015281816109f901528181610bd10152610e230152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c90816323eeca01146105905750806348bd7dfd146104b95780638307c65514610456578063a9270fbe14610322578063aad6e488146101b15763ecbbc0331461005e575f80fd5b346101ad5760203660031901126101ad5760405161007d60608261089f565b6002815260208101604036823760043560601c604051630dfe168160e01b8152602081600481855afa918215610185576004926020925f91610190575b506100c486610926565b6001600160a01b03909116905260405163d21220a760e01b815292839182905afa908115610185575f91610156575b506100ff839293610933565b6001600160a01b0390911690526040805160208082529251928101839052928392918301915f5b818110610134575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610126565b610178915060203d60201161017e575b610170818361089f565b8101906108d9565b5f6100f3565b503d610166565b6040513d5f823e3d90fd5b6101a79150833d851161017e57610170818361089f565b5f6100ba565b5f80fd5b346101ad5760803660031901126101ad576101ca6107ed565b6101d2610803565b6064359067ffffffffffffffff82116101ad57366023830112156101ad578160040135916101ff836108c1565b9261020d604051948561089f565b8084526024602085019160051b830101913683116101ad57602401905b82821061031257505050815192610240846108c1565b9361024e604051958661089f565b80855261025d601f19916108c1565b015f5b8181106102ef5750509061027391610def565b5f5b825181101561029e57808261028c60019387610943565b526102978186610943565b5001610275565b836040518091602082016020835281518091526020604084019201905f5b8181106102ca575050500390f35b82518051855260209081015181860152869550604090940193909201916001016102bc565b6020906040516102fe81610853565b5f81525f8382015282828901015201610260565b813581526020918201910161022a565b346101ad5761036660c061033536610819565b60405163abc27eed60e01b81526001600160a01b039283166004820152911660248201529283915081906044820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610185575f905f92610419575b5090604051906103b560608361089f565b60028252602082019260403685376103cc83610926565b526103d682610933565b52604051918291602083019060208452518091526040830191905f5b818110610400575050500390f35b82518452859450602093840193909201916001016103f2565b91505060c0813d60c01161044e575b8161043560c0938361089f565b810103126101ad5760a0606082015191015190826103a4565b3d9150610428565b346101ad5760a03660031901126101ad5761046f6107ed565b610477610803565b6064359160028310156101ad57608092610494926084359261096f565b6020604080519280518452828101518385015201518051604084015201516060820152f35b346101ad576104c736610819565b5050506040516104d860a08261089f565b6004815260208101608036823760016104f083610926565b5260026104fc83610933565b5281516002101561057c576003606083015281516003101561057c5760056080830152604051906020820192602083525180935260408201905f935b8085106105455783830384f35b9091825190600a8210156105685760208160019382935201930194019390610538565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b346101ad5760403660031901126101ad5763c45a015560e01b81526004803591906020908290817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610185575f916107ce575b506001600160a01b031690610608602435826108f8565b60405163574f2ba360e01b8152602081600481875afa80156101855783915f91610799575b508211610735575b61063e91610919565b61066061064a826108c1565b91610658604051938461089f565b8083526108c1565b602082019290601f19013684375f5b82518110156106f15761068281836108f8565b9060405191631e3dd18b60e01b83526004830152602082602481895afa8015610185576001925f916106d3575b5060601b6bffffffffffffffffffffffff19166106cc8286610943565b520161066f565b6106eb915060203d811161017e57610170818361089f565b876106af565b8383604051918291602083019060208452518091526040830191905f5b81811061071c575050500390f35b825184528594506020938401939092019160010161070e565b505060405163574f2ba360e01b8152602081600481865afa80156101855782905f90610763575b9150610635565b50506020813d602011610791575b8161077e6020938361089f565b810103126101ad578161063e915161075c565b3d9150610771565b9150506020813d6020116107c6575b816107b56020938361089f565b810103126101ad578290518561062d565b3d91506107a8565b6107e7915060203d60201161017e57610170818361089f565b826105f1565b602435906001600160a01b03821682036101ad57565b604435906001600160a01b03821682036101ad57565b60609060031901126101ad57600435906024356001600160a01b03811681036101ad57906044356001600160a01b03811681036101ad5790565b6040810190811067ffffffffffffffff82111761086f57604052565b634e487b7160e01b5f52604160045260245ffd5b60e0810190811067ffffffffffffffff82111761086f57604052565b90601f8019910116810190811067ffffffffffffffff82111761086f57604052565b67ffffffffffffffff811161086f5760051b60200190565b908160209103126101ad57516001600160a01b03811681036101ad5790565b9190820180921161090557565b634e487b7160e01b5f52601160045260245ffd5b9190820391821161090557565b80511561057c5760200190565b80516001101561057c5760400190565b805182101561057c5760209160051b010190565b6040519061096482610853565b5f6020838281520152565b6040519493926060860167ffffffffffffffff81118782101761086f576040525f86525f60208701526040516109a481610853565b5f81525f60208201526040870152858415610d6457505a90600281101561056857610ba157604051634cc0eb1960e11b81526001600160a01b03838116600483015284811660248301526044820186905290947f000000000000000000000000000000000000000000000000000000000000000090911690602086606481855afa958615610185575f96610b6d575b508515610b32576001600160a01b03841690610a51813033856110fc565b610a5c818484611147565b6103e842018042116109055760209263ffffffff60e492610acd9460405193610a8485610883565b845260018060a01b038b168785015260408401528a60608401525f60808401523360a08401521660c08201525f60405195869485936358d30ac960e01b85526004850190610d6c565b5af1801561018557610afe575b50610aed90610af79487525b5a90610919565b6020860152610def565b6040830152565b906020823d602011610b2a575b81610b186020938361089f565b810103126101ad579050610aed610ada565b3d9150610b0b565b60405163643c60f360e01b8152602060048201526012602482015271416d6f756e744f7574206973207a65726f2160701b6044820152606490fd5b9095506020813d602011610b99575b81610b896020938361089f565b810103126101ad5751945f610a33565b3d9150610b7c565b6040516334259b1b60e01b81526001600160a01b03838116600483015284811660248301526044820186905290947f000000000000000000000000000000000000000000000000000000000000000090911690602086606481855afa958615610185575f96610d30575b508515610cf6576001600160a01b03841690610c29873033856110fc565b610c34878484611147565b6103e842018042116109055760209263ffffffff60e492610ca59460405193610c5c85610883565b845260018060a01b038b16878501528b604085015260608401525f60808401523360a08401521660c08201525f60405195869485936316c0a75160e11b85526004850190610d6c565b5af1801561018557610cc2575b50610aed90610af7948752610ae6565b906020823d602011610cee575b81610cdc6020938361089f565b810103126101ad579050610aed610cb2565b3d9150610ccf565b60405163643c60f360e01b8152602060048201526011602482015270416d6f756e74496e206973207a65726f2160781b6044820152606490fd5b9095506020813d602011610d5c575b81610d4c6020938361089f565b810103126101ad5751945f610c0b565b3d9150610d3f565b955050505050565b80516001600160a01b039081168352602080830151821690840152604080830151908401526060808301519084015260808083015115159084015260a0808301519091169083015260c09081015163ffffffff16910152565b908160209103126101ad575160ff811681036101ad5790565b60ff16604d811161090557600a0a90565b90610df8610957565b50604051637516644b60e11b81526001600160a01b03838116600483015282811660248301529092907f000000000000000000000000000000000000000000000000000000000000000016602084604481845afa938415610185575f946110c8575b5060405163c45a015560e01b8152602081600481855afa908115610185575f916110a9575b5060405163e6a4390560e01b81526001600160a01b0384811660048301528581166024830152909160209183916044918391165afa8015610185576020915f9161108c575b50604051635357407160e11b81526001600160a01b03909116600482015291829060249082905afa908115610185575f9161105a575b50670de0b6b3a76400000390670de0b6b3a764000082116109055760405163313ce56760e01b815290602090829060049082906001600160a01b03165afa801561018557610f546020916004935f91611043575b50610dde565b60405163313ce56760e01b815290949092839182906001600160a01b03165afa801561018557610f8a915f916110145750610dde565b91670de0b6b3a7640000840293808504670de0b6b3a764000014901517156109055780670de0b6b3a76400000290670de0b6b3a764000082048103610905578202670de0b6b3a7640000029181159183041417156109055781156110005760405192610ff584610853565b835204602082015290565b634e487b7160e01b5f52601260045260245ffd5b611036915060203d60201161103c575b61102e818361089f565b810190610dc5565b5f610f4e565b503d611024565b6110369150833d851161103c5761102e818361089f565b90506020813d602011611084575b816110756020938361089f565b810103126101ad57515f610efa565b3d9150611068565b6110a39150823d841161017e57610170818361089f565b5f610ec4565b6110c2915060203d60201161017e57610170818361089f565b5f610e7f565b9093506020813d6020116110f4575b816110e46020938361089f565b810103126101ad5751925f610e5a565b3d91506110d7565b6040516323b872dd60e01b60208201526001600160a01b0392831660248201529290911660448301526064808301939093529181526111459161114060848361089f565b6112af565b565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152821693602082604481885afa8015610185575f90611263575b61118d92506108f8565b925f8060405194602086019063095ea7b360e01b825260018060a01b0316968760248801526044870152604486526111c660648761089f565b85519082855af1906111d661131a565b82611231575b5081611226575b50156111ee57505050565b611140611145936040519063095ea7b360e01b602083015260248201525f60448201526044815261122060648261089f565b826112af565b90503b15155f6111e3565b80519192508115918215611249575b5050905f6111dc565b61125c9250602080918301019101611297565b5f80611240565b506020823d60201161128f575b8161127d6020938361089f565b810103126101ad5761118d9151611183565b3d9150611270565b908160209103126101ad575180151581036101ad5790565b5f806112d79260018060a01b03169360208151910182865af16112d061131a565b9083611359565b80519081151591826112ff575b50506112ed5750565b635274afe760e01b5f5260045260245ffd5b6113129250602080918301019101611297565b155f806112e4565b3d15611354573d9067ffffffffffffffff821161086f5760405191611349601f8201601f19166020018461089f565b82523d5f602084013e565b606090565b9061137d575080511561136e57805190602001fd5b63d6bda27560e01b5f5260045ffd5b815115806113ae575b61138e575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561138656fea2646970667358221220b526040f16c74de5eea30b9fb08eebd9f9f9fb64cd3f9acd318a3c89d26ae38064736f6c634300081b00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2bb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd2fe16dd18bba26e457b7dd2080d5674312b026a2000000000000000000000000000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48a264697066735822122072b110b0993eda90a80886c68f0819d7ad7fea0c5c7db46eb721f7aadb24627c64736f6c634300081b0033","sourceMap":"302:6332:74:-:0;;;;;;;3166:4:2;302:6332:74;;3166:4:2;302:6332:74;;;3166:4:2;302:6332:74;3166:4:2;302:6332:74;;1038:4:12;302:6332:74;;;1038:4:12;302:6332:74;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f5f3560e01c8063053076211461333d5780630a9254e4146130005780631ed7831c14612f825780631fe0c49a14612ded57806323bc9a2914612d495780632ade388014612bda57806337124eb0146128d45780633e5e3c23146128565780633f7286f4146127d85780635d511088146118fb57806366d9a9a01461174d57806366f523f51461163b57806385226c81146115a1578063916a17c614611315578063b4f3fe0b14610c11578063b5508aa914610b70578063ba414fa614610b4b578063e20c9f7114610abd578063fa7626d414610a9a5763fe3ee58b146100f6575f80fd5b346107dc57806003193601126107dc57604051610ca09067016345785d8a00006101208383613620565b60648252601f19830190813660208501378061013b84613658565b5280159060015b60648110610a625750505061015a6040519384613620565b60648352835b818110610a2657505060015b6064811061029757505060015b60638110610185578280f35b61018f8183613689565b5151600182019081831161028357816101b8610202926101b0889588613689565b515190613c17565b6101df60206101c78688613689565b51015160206101d68489613689565b51015190613c17565b60406101f9816101ef8789613689565b5101519287613689565b51015190613c66565b810b5f5160206160995f395f51905f523b1561027f576040519063fe74f05b60e01b8252600482015281602482015281816044815f5160206160995f395f51905f525afa80156102745761025b575b5050600101610179565b8161026591613620565b61027057825f610251565b8280fd5b6040513d84823e3d90fd5b5080fd5b634e487b7160e01b85526011600452602485fd5b604051634b88b8ad60e11b815290602082600481885f5160206160995f395f51905f525af191821561069f5785926109f3575b506102d58184613689565b51858060405160208101906370a0823160e01b8252306024820152602481526102ff604482613620565b51905f5160206161195f395f51905f525afa5061032c61031d613be8565b602080825183010191016137e4565b506103356137f3565b6370a0823163ffffffff19600f541617600f55600e54600160401b8110156109df576001810180600e558110156109cb57600e8752305f5160206160d95f395f51905f529190910155601154600f5460105488926001600160a01b03169160e01b61039e613cbb565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908186526020526040852060405160208101906103f0816103e2888886613ca4565b03601f198101835282613620565b519020865260205260ff600360408720015416156109bd575b6001600160a01b0384165f908152600d602052604090209085526020526103e26104426040862093604051928391602083019586613ca4565b51902083526020526040822060018101549360028201546104638187613bdb565b61084e575b8254604051630667f9d760e41b81526001600160a01b038616600482015260248101829052969091906020886044815f5160206160995f395f51905f525afa978815610843578798610807575b506001908201610100031b5f1901811b198716915f5160206160995f395f51905f523b15610803576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528481606481835f5160206160995f395f51905f525af190811561069f5785916107ea575b505061053c613e77565b9190159182156107df575b50506106ff5750505050610559614968565b601e546105a89060209060081c6001600160a01b03166105798487613689565b5160405163095ea7b360e01b81526001600160a01b039092166004830152602482015291829081906044820190565b0381895f5160206161195f395f51905f525af180156106d8576106e3575b50601e5485906080906106089060081c6001600160a01b03166105e98588613689565b51604051948580948193638307c65560e01b83526001600484016139d2565b03925af19081156106d85786916106aa575b506106258286613689565b526106308185613689565b5060405191631135fc2960e21b83526004830152602082602481885f5160206160995f395f51905f525af191821561069f57600192610671575b500161016c565b6106919060203d8111610698575b6106898183613620565b810190613981565b505f61066a565b503d61067f565b6040513d87823e3d90fd5b6106cb915060803d81116106d1575b6106c38183613620565b810190613999565b5f61061a565b503d6106b9565b6040513d88823e3d90fd5b6106fa9060203d8111610698576106898183613620565b6105c6565b82945054905f5160206160995f395f51905f523b15610270576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810191909152604481019290925281606481835f5160206160995f395f51905f525af18015610274576107c7575b60405162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b6107d2828092613620565b6107dc5780610766565b80fd5b141590505f80610547565b816107f491613620565b6107ff57835f610532565b8380fd5b8680fd5b965096506020863d821161083b575b8161082360209383613620565b81010312610837579451958b9590816104b5565b5f80fd5b3d9150610816565b6040513d89823e3d90fd5b909192935061085d8186613bdb565b6101000361010081116109a95760ff81116109a95760405163348051d760e11b8152600190911b600482018190528b80836024815f5160206160995f395f51905f525afa92831561099c5760209382606a9261093e9492610978575b506040519586927f73746453746f726167652066696e642853746453746f72616765293a20506163828501527f6b656420736c6f742e2057652063616e2774206669742076616c756520677265604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f198101845283613620565b83101561095057509089939291610468565b60405162461bcd60e51b8152602060048201529081906109749060248301906134bf565b0390fd5b6109959192503d8084833e61098d8183613620565b810190613782565b905f6108b9565b50604051903d90823e3d90fd5b634e487b7160e01b8b52601160045260248bfd5b6109c5614093565b50610409565b634e487b7160e01b87526032600452602487fd5b634e487b7160e01b87526041600452602487fd5b9091506020813d8211610a1e575b81610a0e60209383613620565b810103126108375751905f6102ca565b3d9150610a01565b602090604051610a3581613605565b8681528683820152604051610a49816135ea565b8781528784820152604082015282828701015201610160565b808202908282048114841715610a8657600191610a7f8288613689565b5201610142565b634e487b7160e01b5f52601160045260245ffd5b50346107dc57806003193601126107dc57602060ff601e54166040519015158152f35b50346107dc57806003193601126107dc5760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b818110610b2c57610b2885610b1c81870382613620565b6040519182918261347d565b0390f35b82546001600160a01b0316845260209093019260019283019201610b05565b50346107dc57806003193601126107dc576020610b66613a46565b6040519015158152f35b50346107dc57806003193601126107dc57601954610b8d81613641565b91610b9b6040519384613620565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b838310610be55760405160208082528190610b28908201886134e3565b600160208192604051610c0381610bfc81896138c5565b0382613620565b815201920192019190610bc8565b50346107dc57806003193601126107dc57604051610ca090633b9aca00610c388383613620565b60648252601f198301908136602085013780610c5384613658565b5280159060015b606481106112f157505050610c726040519384613620565b60648352835b8181106112b557505060015b60648110610d3657505060015b60638110610c9d578280f35b610ca78183613689565b5151600182019081831161028357816101b8610cc8926101b0889588613689565b810b5f5160206160995f395f51905f523b1561027f576040519063fe74f05b60e01b8252600482015281602482015281816044815f5160206160995f395f51905f525afa801561027457610d21575b5050600101610c91565b81610d2b91613620565b61027057825f610d17565b604051634b88b8ad60e11b815290602082600481885f5160206160995f395f51905f525af191821561069f578592611282575b50610d748184613689565b51858060405160208101906370a0823160e01b825230602482015260248152610d9e604482613620565b51905f5160206161195f395f51905f525afa50610dbc61031d613be8565b50610dc56137f3565b6370a0823163ffffffff19600f541617600f55600e54600160401b8110156109df576001810180600e558110156109cb57600e8752305f5160206160d95f395f51905f529190910155601154600f5460105488926001600160a01b03169160e01b610e2e613cbb565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818652602052604085206040516020810190610e72816103e2888886613ca4565b519020865260205260ff60036040872001541615611274575b6001600160a01b0384165f908152600d602052604090209085526020526103e2610ec46040862093604051928391602083019586613ca4565b5190208352602052604082206001810154936002820154610ee58187613bdb565b611173575b8254604051630667f9d760e41b81526001600160a01b038616600482015260248101829052969091906020886044815f5160206160995f395f51905f525afa97881561084357879861113b575b506001908201610100031b5f1901811b198716915f5160206160995f395f51905f523b15610803576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528481606481835f5160206160995f395f51905f525af190811561069f578591611126575b5050610fbe613e77565b91901591821561111b575b50506106ff5750505050610fdb614968565b601e54610ffb9060209060081c6001600160a01b03166105798487613689565b0381895f5160206161195f395f51905f525af180156106d8576110ff575b50601e54859060809061105a9060081c6001600160a01b031661103c8588613689565b51604051948580948193638307c65560e01b835283600484016139d2565b03925af19081156106d85786916110e1575b506110778286613689565b526110828185613689565b5060405191631135fc2960e21b83526004830152602082602481885f5160206160995f395f51905f525af191821561069f576001926110c3575b5001610c84565b6110da9060203d8111610698576106898183613620565b505f6110bc565b6110f9915060803d81116106d1576106c38183613620565b5f61106c565b6111169060203d8111610698576106898183613620565b611019565b141590505f80610fc9565b8161113091613620565b6107ff57835f610fb4565b965096506020863d821161116b575b8161115760209383613620565b81010312610837579451958b959081610f37565b3d915061114a565b90919293506111828186613bdb565b6101000361010081116109a95760ff81116109a95760405163348051d760e11b8152600190911b600482018190528b80836024815f5160206160995f395f51905f525afa92831561099c5760209382606a92611262949261097857506040519586927f73746453746f726167652066696e642853746453746f72616765293a20506163828501527f6b656420736c6f742e2057652063616e2774206669742076616c756520677265604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f198101845283613620565b83101561095057509089939291610eea565b61127c614093565b50610e8b565b9091506020813d82116112ad575b8161129d60209383613620565b810103126108375751905f610d69565b3d9150611290565b6020906040516112c481613605565b86815286838201526040516112d8816135ea565b8781528784820152604082015282828701015201610c78565b808202908282048114841715610a865760019161130e8288613689565b5201610c5a565b50346107dc57806003193601126107dc57601c5461133281613641565b906113406040519283613620565b808252601c8352827f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b8383106113835760405180610b28878261353b565b60405161138f816135ea565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b816007840110611502578460019794600297946020979461141a9454918181106114e6575b8181106114ca575b8181106114ae575b818110611492575b818110611476575b81811061145a575b818110611440575b1061142c575b500382613620565b8382015281520192019201919061136e565b6001600160e01b031916815286015f611412565b828a1b6001600160e01b0319168452928901928b0161140c565b604083901b6001600160e01b0319168452928901928b01611404565b606083901b6001600160e01b0319168452928901928b016113fc565b608083901b6001600160e01b0319168452928901928b016113f4565b60a083901b6001600160e01b0319168452928901928b016113ec565b60c083901b6001600160e01b0319168452928901928b016113e4565b60e083901b6001600160e01b0319168452928901928b016113dc565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e08201520194019201916113b7565b50346107dc57806003193601126107dc57601a546115be81613641565b916115cc6040519384613620565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b8383106116165760405160208082528190610b28908201886134e3565b60016020819260405161162d81610bfc81896138c5565b8152019201920191906115f9565b50346107dc57806003193601126107dc57601e5460405163ecbbc03360e01b81525f5160206160f95f395f51905f5260048201529082908290602490829060081c6001600160a01b03165afa80156102745782906116a2575b61169f915051613ae1565b80f35b503d8083833e6116b28183613620565b810190602081830312610270578051906001600160401b0382116107ff57019080601f83011215610270578151906116e982613641565b926116f76040519485613620565b82845260208085019360051b82010191821161174957602001915b8183106117255750505061169f90611694565b82516001600160a01b038116810361174557815260209283019201611712565b8580fd5b8480fd5b50346107dc57806003193601126107dc57601b5461176a81613641565b906117786040519283613620565b808252601b8352827f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1602084015b8383106117bb5760405180610b28878261353b565b6040516117c7816135ea565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b81600784011061185c578460019794600297946020979461184a9454918181106114e6578181106114ca578181106114ae57818110611492578181106114765781811061145a57818110611440571061142c57500382613620565b838201528152019201920191906117a6565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e08201520194019201916117ef565b50346107dc5760403660031901126107dc57600435602435801515810361027057156127d25760015b60606040516119338282613620565b60028152601f19820180916020369101376040516119518382613620565b6002815260203691013760028210156127be576001821490811561230657601e5460405163549387df60e11b81525f5160206160f95f395f51905f5260048201525f5160206161195f395f51905f5260248201525f5160206160b95f395f51905f526044820152869182908290606490829060081c6001600160a01b03165afa8015610274576119e89183916122e4575b50613679565b5185105f5160206160995f395f51905f523b1561027f5760405190632631f2b160e11b8252600482015281816024815f5160206160995f395f51905f525afa8015610274576122cf575b5050611a44611a3f61369d565b613679565b516073810290808204607314901517156122bb5785905f5160206160995f395f51905f523b1561027f57604051632631f2b160e11b815260649091048611600482015281816024815f5160206160995f395f51905f525afa8015610274576122a6575b508060405160208101906370a0823160e01b825230602482015260248152611ad0604482613620565b51905f5160206161195f395f51905f525afa50611aee61031d613be8565b50611af76137f3565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015612292576001810180600e5581101561227e57600e8652305f5160206160d95f395f51905f529190910155601154600f5460105487926001600160a01b03169160e01b611b60613cbb565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818652602052604085206040516020810190611ba4816103e2888886613ca4565b519020865260205260ff60036040872001541615612270575b6001600160a01b0384165f908152600d602052604090209085526020526103e2611bf66040862093604051928391602083019586613ca4565b519020835260205260408220600181015493600282015490611c188287613bdb565b61212c57508154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f5160206160995f395f51905f525afa9687156106d85786976120f3575b506001908201610100031b5f1901811b1986165f5160206160995f395f51905f523b15611745576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528381606481835f5160206160995f395f51905f525af1908115611eed5784916120de575b5050611cee613e77565b90159081156120d2575b506106ff5750505050611d09614968565b601e5460405163095ea7b360e01b815260089190911c6001600160a01b031660048201525f196024820152602081604481885f5160206161195f395f51905f525af1801561069f576120b3575b505b6040516370a0823160e01b8152306004820152926020846024815f5160206161195f395f51905f525afa93841561069f57859461207f575b506040516370a0823160e01b8152306004820152916020836024815f5160206160b95f395f51905f525afa9283156106d8578693612048575b50608082611dfd9560018060a01b03601e5460081c169089604051809981958294638307c65560e01b8452600484016139d2565b03925af19384156106d8578694612027575b508351611e1a578580f35b15611f2c576040516370a0823160e01b81523060048201526020816024815f5160206160b95f395f51905f525afa9081156106d8578691611ef8575b50611e6a92611e6491613a39565b90613b3d565b516040516370a0823160e01b81523060048201526020816024815f5160206161195f395f51905f525afa908115611eed578491611eb9575b50611e6490611eb093613a39565b5f808080808580f35b90506020813d602011611ee5575b81611ed460209383613620565b810103126108375751611eb0611ea2565b3d9150611ec7565b6040513d86823e3d90fd5b90506020813d602011611f24575b81611f1360209383613620565b810103126108375751611e6a611e56565b3d9150611f06565b6040516370a0823160e01b81523060048201529193916020816024815f5160206161195f395f51905f525afa9081156106d8578691611ff3575b50611e6490611f7493613a39565b516040516370a0823160e01b81523060048201526020816024815f5160206160b95f395f51905f525afa908115611eed578491611fbf575b50611fba92611e6491613a39565b611eb0565b90506020813d602011611feb575b81611fda60209383613620565b810103126108375751611fba611fac565b3d9150611fcd565b90506020813d60201161201f575b8161200e60209383613620565b810103126108375751611f74611f66565b3d9150612001565b61204191945060803d6080116106d1576106c38183613620565b925f611e0f565b9392506020843d602011612077575b8161206460209383613620565b8101031261083757925191926080611dc9565b3d9150612057565b9093506020813d6020116120ab575b8161209b60209383613620565b810103126108375751925f611d90565b3d915061208e565b6120cb9060203d602011610698576106898183613620565b505f611d56565b5f19141590505f611cf8565b816120e891613620565b61027057825f611ce4565b955095506020853d602011612124575b8161211060209383613620565b810103126108375793519489949081611c6a565b3d9150612103565b612137859287613bdb565b61010003610100811161225c5760ff811161225c5760405163348051d760e11b8152600190911b600482015282816024815f5160206160995f395f51905f525afa9081156122515769030ba32b9103a3430b7160b51b9284602061221794606a946109749891612237575b506040519687947f73746453746f726167652066696e642853746453746f72616765293a20506163848701527f6b656420736c6f742e2057652063616e2774206669742076616c75652067726560408701528501528051918291018585015e820190838201520301601f198101835282613620565b60405162461bcd60e51b81526020600482015291829160248301906134bf565b61224b91503d8085833e61098d8183613620565b886121a2565b6040513d85823e3d90fd5b634e487b7160e01b83526011600452602483fd5b612278614093565b50611bbd565b634e487b7160e01b86526032600452602486fd5b634e487b7160e01b86526041600452602486fd5b816122b091613620565b61174957845f611aa7565b634e487b7160e01b86526011600452602486fd5b816122d991613620565b61174957845f611a32565b61230091503d8085833e6122f88183613620565b810190613814565b5f6119e2565b601e5460405163549387df60e11b81525f5160206160f95f395f51905f5260048201525f5160206161195f395f51905f5260248201525f5160206160b95f395f51905f526044820152869182908290606490829060081c6001600160a01b03165afa80156102745761237f9183916127a4575b50613658565b5185105f5160206160995f395f51905f523b1561027f5760405190632631f2b160e11b8252600482015281816024815f5160206160995f395f51905f525afa80156102745761278f575b50506123db6123d661369d565b613658565b516073810290808204607314901517156122bb5785905f5160206160995f395f51905f523b1561027f57604051632631f2b160e11b815260649091048611600482015281816024815f5160206160995f395f51905f525afa80156102745761277a575b508060405160208101906370a0823160e01b825230602482015260248152612467604482613620565b51905f5160206161195f395f51905f525afa5061248561031d613be8565b5061248e6137f3565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015612292576001810180600e5581101561227e57600e8652305f5160206160d95f395f51905f529190910155601154600f5460105487926001600160a01b03169160e01b6124f7613cbb565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b169081865260205260408520604051602081019061253b816103e2888886613ca4565b519020865260205260ff6003604087200154161561276c575b6001600160a01b0384165f908152600d602052604090209085526020526103e261258d6040862093604051928391602083019586613ca4565b5190208352602052604082206001810154936002820154906125af8287613bdb565b61212c57508154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f5160206160995f395f51905f525afa9687156106d8578697612733575b506001908201610100031b5f1901811b1986165f5160206160995f395f51905f523b15611745576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528381606481835f5160206160995f395f51905f525af1908115611eed57849161271e575b5050612685613e77565b9015908115612712575b506106ff57505050506126a0614968565b601e5460405163095ea7b360e01b815260089190911c6001600160a01b0316600482015260248101849052602081604481885f5160206161195f395f51905f525af1801561069f576126f3575b50611d58565b61270b9060203d602011610698576106898183613620565b505f6126ed565b5f19141590505f61268f565b8161272891613620565b61027057825f61267b565b955095506020853d602011612764575b8161275060209383613620565b810103126108375793519489949081612601565b3d9150612743565b612774614093565b50612554565b8161278491613620565b61174957845f61243e565b8161279991613620565b61174957845f6123c9565b6127b891503d8085833e6122f88183613620565b5f612379565b634e487b7160e01b84526021600452602484fd5b81611924565b50346107dc57806003193601126107dc5760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b81811061283757610b2885610b1c81870382613620565b82546001600160a01b0316845260209093019260019283019201612820565b50346107dc57806003193601126107dc5760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b8181106128b557610b2885610b1c81870382613620565b82546001600160a01b031684526020909301926001928301920161289e565b50346107dc5760403660031901126107dc576004359060243560018060a01b03601e5460081c169060405163549387df60e11b81527317f0b6e8c5dd13722bdbee90406ab3a18958135160611b60048201525f5160206161195f395f51905f5260248201525f5160206160b95f395f51905f5260448201528381606481865afa908115611eed578491612bc0575b5061296c81613658565b5185105f5160206160995f395f51905f523b156117495760405190632631f2b160e11b8252600482015284816024815f5160206160995f395f51905f525afa801561069f57908591612bab575b50506129c490613679565b5181105f5160206160995f395f51905f523b156107ff5760405190632631f2b160e11b8252600482015283816024815f5160206160995f395f51905f525afa8015611eed57612b96575b50928291612aa39460405192612a25606085613620565b600284526040366020860137612a3a84613658565b52612a4483613679565b5260405163155adc9160e31b81525f5160206160f95f395f51905f5260048201525f5160206160b95f395f51905f5260248201525f5160206161195f395f51905f5260448201526080606482015294859283918291608483019061344a565b03915afa91821561099c578192612af9575b50805b8251811015612af55780612ad8612ad160019386613689565b5151613b8c565b612aef6020612ae78387613689565b510151613b8c565b01612ab8565b5080f35b9091503d8083833e612b0b8183613620565b810190602081830312610270578051906001600160401b0382116107ff570181601f82011215610270578051612b4081613641565b92612b4e6040519485613620565b81845260208085019260061b8401019281841161174557602001915b838310612b7c5750505050905f612ab5565b6020604091612b8b8486613946565b815201920191612b6a565b612ba1848092613620565b610270575f612a0e565b81612bb591613620565b6107ff57835f6129b9565b612bd491503d8086833e6122f88183613620565b5f612962565b50346107dc57806003193601126107dc57601d54612bf781613641565b612c046040519182613620565b818152601d83526020810191837f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f845b838310612cb857868587604051928392602084019060208552518091526040840160408260051b8601019392905b828210612c7157505050500390f35b91936001919395506020612ca88192603f198a82030186526040838a51878060a01b038151168452015191818582015201906134e3565b9601920192018594939192612c62565b604051612cc4816135ea565b82546001600160a01b03168152600183018054612ce081613641565b91612cee6040519384613620565b8183528a526020808b20908b9084015b838210612d24575050505060019282602092836002950152815201920192019190612c34565b600160208192604051612d3b81610bfc818a6138c5565b815201930191019091612cfe565b50346107dc57806003193601126107dc57601e5460405163549387df60e11b81525f5160206160f95f395f51905f5260048201525f5160206161195f395f51905f5260248201525f5160206160b95f395f51905f5260448201529082908290606490829060081c6001600160a01b03165afa80156102745761169f918391612dd3575b5051613ae1565b612de791503d8085833e6122f88183613620565b5f612dcc565b50346107dc5760603660031901126107dc5780612e08613434565b6044356001600160a01b03811690819003612f7e57601e546040516348bd7dfd60e01b815260048035908201526001600160a01b0393841660248201526044810192909252909183918391606491839160089190911c165afa908115610274578291612ed5575b50515f5160206160995f395f51905f523b15612ed2576040519063260a5b1560e21b825260048201526004602482015281816044815f5160206160995f395f51905f525afa801561027457612ec15750f35b81612ecb91613620565b6107dc5780f35b50fd5b9150503d8083833e612ee78183613620565b810190602081830312610270578051906001600160401b0382116107ff57019080601f8301121561027057815190612f1e82613641565b92612f2c6040519485613620565b82845260208085019360051b820101918211611749579060208594939201915b818310612f5c575050505f612e6f565b90918093945051600a8110156117455781528493926020908101929101612f4c565b5050fd5b50346107dc57806003193601126107dc5760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b818110612fe157610b2885610b1c81870382613620565b82546001600160a01b0316845260209093019260019283019201612fca565b5034610837575f3660031901126108375760405163975a6ce960e01b81526020600482015260076024820152661b585a5b9b995d60ca1b60448201525f816064815f5160206160995f395f51905f525afa9081156132d557613089916020915f91613323575b50604051809381926371ee464d60e01b83526040600484015260448301906134bf565b63011f676d602483015203815f5f5160206160995f395f51905f525af180156132d5576132f4575b5060405161148e808201908282106001600160401b038311176132e0576020918391614c0b833973d17b3c9784510e33cd5b87b490e79253bcd81e2e81520301905ff080156132d557601e8054610100600160a81b03191660089290921b610100600160a81b0316919091179055601f80546001600160a01b03191673d17b3c9784510e33cd5b87b490e79253bcd81e2e1790555f5160206160995f395f51905f523b15610837576040516318caf8e360e31b81525f5160206160b95f395f51905f5260048201526040602482015260046044820152630ae8aa8960e31b60648201525f81608481835f5160206160995f395f51905f525af180156132d5576132c2575b505f5160206160995f395f51905f523b156107dc57806040516318caf8e360e31b81525f5160206161195f395f51905f5260048201526040602482015260046044820152635553444360e01b60648201528181608481835f5160206160995f395f51905f525af18015610274576132ad575b50505f5160206160995f395f51905f523b156107dc57806040516318caf8e360e31b8152732fe16dd18bba26e457b7dd2080d5674312b026a2600482015260406024820152600e60448201526d2aa9a221afaba2aa242fa820a4a960911b60648201528181608481835f5160206160995f395f51905f525af1801561027457612ec15750f35b816132b791613620565b6107dc57805f613227565b6132ce91505f90613620565b5f5f6131b5565b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b6020813d60201161331b575b8161330d60209383613620565b8101031261083757516130b1565b3d9150613300565b61333791503d805f833e61098d8183613620565b5f613066565b34610837576040366003190112610837576004356001600160a01b038116908190036108375760c061336d613434565b601f5460405163abc27eed60e01b815260048101949094526001600160a01b03918216602485015283916044918391165afa80156132d5575f905f906133f6575b610b289250604051916133c2606084613620565b6002835260403660208501376133d783613658565b526133e182613679565b5260405191829160208352602083019061344a565b505060c0813d60c01161342c575b8161341160c09383613620565b81010312610837578060806040610b289301519101516133ae565b3d9150613404565b602435906001600160a01b038216820361083757565b90602080835192838152019201905f5b8181106134675750505090565b825184526020938401939092019160010161345a565b60206040818301928281528451809452019201905f5b8181106134a05750505090565b82516001600160a01b0316845260209384019390920191600101613493565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9080602083519182815201916020808360051b8301019401925f915b83831061350e57505050505090565b909192939460208061352c600193601f1986820301875289516134bf565b970193019301919392906134ff565b602081016020825282518091526040820191602060408360051b8301019401925f915b83831061356d57505050505090565b9091929394603f1982820301835285516020606081604085019360018060a01b0381511686520151936040838201528451809452019201905f905b8082106135c7575050506020806001929701930193019193929061355e565b82516001600160e01b0319168452602093840193909201916001909101906135a8565b604081019081106001600160401b038211176132e057604052565b606081019081106001600160401b038211176132e057604052565b90601f801991011681019081106001600160401b038211176132e057604052565b6001600160401b0381116132e05760051b60200190565b8051156136655760200190565b634e487b7160e01b5f52603260045260245ffd5b8051600110156136655760400190565b80518210156136655760209160051b010190565b601f5460405163abc27eed60e01b81525f5160206161195f395f51905f5260048201525f5160206160b95f395f51905f526024820152919060c090839060449082906001600160a01b03165afa80156132d5575f925f9161372b575b5061372860405161370b606082613620565b600281526040366020830137809461372282613658565b52613679565b52565b92505060c0823d60c01161375f575b8161374760c09383613620565b8101031261083757608060408301519201515f6136f9565b3d915061373a565b6001600160401b0381116132e057601f01601f191660200190565b602081830312610837578051906001600160401b038211610837570181601f82011215610837578051906137b582613767565b926137c36040519485613620565b8284526020838301011161083757815f9260208093018386015e8301015290565b90816020910312610837575190565b601180546001600160a01b0319165f5160206161195f395f51905f52179055565b602081830312610837578051906001600160401b03821161083757019080601f8301121561083757815161384781613641565b926138556040519485613620565b81845260208085019260051b82010192831161083757602001905b82821061387d5750505090565b8151815260209182019101613870565b90600182811c921680156138bb575b60208310146138a757565b634e487b7160e01b5f52602260045260245ffd5b91607f169161389c565b5f92918154916138d48361388d565b808352926001811690811561392957506001146138f057505050565b5f9081526020812093945091925b83831061390f575060209250010190565b6001816020929493945483858701015201910191906138fe565b915050602093945060ff929192191683830152151560051b010190565b91908260409103126108375760405161395e816135ea565b6020808294805184520151910152565b81810292918115918404141715610a8657565b90816020910312610837575180151581036108375790565b90608082820312610837576139ca9060408051936139b685613605565b805185526020810151602086015201613946565b604082015290565b5f5160206160f95f395f51905f5281525f5160206161195f395f51905f5260208201525f5160206160b95f395f51905f52604082015260a08101939291906002821015613a255760809160608201520152565b634e487b7160e01b5f52602160045260245ffd5b91908203918211610a8657565b60085460ff168015613a555790565b50604051630667f9d760e41b81525f5160206160995f395f51905f5260048201526519985a5b195960d21b60248201526020816044815f5160206160995f395f51905f525afa9081156132d5575f91613aaf575b50151590565b90506020813d602011613ad9575b81613aca60209383613620565b8101031261083757515f613aa9565b3d9150613abd565b5f5160206160995f395f51905f523b15610837576040519063260a5b1560e21b82526004820152600260248201525f816044815f5160206160995f395f51905f525afa80156132d557613b315750565b5f613b3b91613620565b565b905f5160206160995f395f51905f523b15610837576040519163260a5b1560e21b8352600483015260248201525f816044815f5160206160995f395f51905f525afa80156132d557613b315750565b5f5160206160995f395f51905f523b156108375760405190636d83fe6960e11b825260048201525f60248201525f816044815f5160206160995f395f51905f525afa80156132d557613b315750565b91908201809211610a8657565b3d15613c12573d90613bf982613767565b91613c076040519384613620565b82523d5f602084013e565b606090565b905f5160206160995f395f51905f523b156108375760405191638466f41560e01b8352600483015260248201525f816044815f5160206160995f395f51905f525afa80156132d557613b315750565b613c86906020613c7b8251828601519061396e565b93519101519061396e565b90808203613c945750505f90565b1115613c9f57600190565b5f1990565b60209291908391805192839101825e019081520190565b613cc660145461388d565b613d83576040519081826020600e549283815201600e5f5260205f20925f5b818110613d6a575050613cfa92500383613620565b81518060051b9080820460201490151715610a8657613d1881613767565b90613d266040519283613620565b808252613d35601f1991613767565b013660208301375f5b8351811015613d655780613d5460019286613689565b5160208260051b8501015201613d3e565b509150565b8454835260019485019487945060209093019201613ce5565b604051613d9581610bfc8160146138c5565b90565b6007810190613da7825461388d565b613e6357600191500190604051808360208295549384815201905f5260205f20925f5b818110613e4a575050613ddf92500383613620565b81518060051b9080820460201490151715610a8657613dfd81613767565b90613e0b6040519283613620565b808252613e1a601f1991613767565b013660208301375f5b8351811015613d655780613e3960019286613689565b5160208260051b8501015201613e23565b8454835260019485019487945060209093019201613dca565b50613d95610bfc91604051928380926138c5565b5f806020600f5460e01b613ec56024613e90600d613d98565b6040519485918183019563ffffffff60e01b1686528051918291018484015e810186838201520301601f198101845283613620565b6011549151916001600160a01b03165afa90613edf613be8565b601054909290600581901b906001600160fb1b03811603610a86575f938051602081115f14613f6a57506020905b5f925b828410613f1f57505050509190565b90919295613f2d8783613bdb565b835181101561366557830160200151600388901b91906001600160f81b031916881560088a8504141715610a86576001921c179601929190613f10565b90613f0d565b905f806020600285015460e01b613f8b6024613e9088613d98565b60048601549151916001600160a01b03165afa6003613fa8613be8565b930154600581901b906001600160fb1b03811603610a86575f938051602081115f1461403057506020905b5f925b828410613fe557505050509190565b90919295613ff38783613bdb565b835181101561366557830160200151600388901b91906001600160f81b031916881560088a8504141715610a86576001921c179601929190613fd6565b90613fd3565b9080601f8301121561083757815161404d81613641565b9261405b6040519485613620565b81845260208085019260051b82010192831161083757602001905b8282106140835750505090565b8151815260209182019101614076565b601154600f546010546001600160a01b03909216915f9160e01b6140b7600d613d98565b90845f52600d60205260405f209063ffffffff60e01b1690815f5260205260405f2060405160208101906140f0816103e2888886613ca4565b5190205f5260205260ff600360405f20015416614927575f5160206160995f395f51905f523b156108375760405163266cf10960e01b81525f81600481835f5160206160995f395f51905f525af180156132d557614912575b50614154600d613f70565b90506040516365bc948160e01b81528660048201528581602481835f5160206160995f395f51905f525af19081156106d85786916148aa575b5080516141fe57608460405162461bcd60e51b815260206004820152604060248201527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152fd5b855b81518110156148a2578160206142198361424a95613689565b51604051630667f9d760e41b81526001600160a01b038c166004820152602481019190915293849081906044820190565b03815f5160206160995f395f51905f525afa928315614897578893614864575b50821561480c575b61427c8282613689565b51601154604051630667f9d760e41b81526001600160a01b03909116600482018190526024820183905291906020816044815f5160206160995f395f51905f525afa908115614801578b916147d0575b506142d7600d613f70565b91909382155f146147c9575f19905b5f5160206160995f395f51905f523b156147b0576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810185905260448101919091528c81606481835f5160206160995f395f51905f525af1801561472a57908d916147b4575b5050614357600d613f70565b601154909491506001600160a01b03165f5160206160995f395f51905f523b156147b0576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528b81606481835f5160206160995f395f51905f525af180156147a557908c9161478c575b505082614781575b505015614777578793889360ff601354166145f1575b6001868601610100031b5f1901851b16841c81036145e3575090614471917f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed60808b896103e26144468d604051928391602083019586613ca4565b5190206144538686613689565b51906040519283528a602084015260408301526060820152a1613689565b51906040519060808201928284106001600160401b038511176132e05760039360405282526020820193845260408201908152606082019360018552898952600d60205260408920868a526020526040892060405160208101906144da816103e28d8d86613ca4565b5190208a526020526040892092518355516001830155516002820155019051151560ff801983541691161790555b848452600d60205260408420818552602052604084206040516020810190614535816103e2888886613ca4565b519020855260205260ff60036040862001541615614586576040948452600d6020528484209084526020526103e261457a858520938651928391602083019586613ca4565b51902082526020522090565b60405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201526e3a143994903737ba103337bab7321760891b6064820152608490fd5b935091506001905b01614200565b945061463c93506146028383613689565b51601154604051630667f9d760e41b81526001600160a01b0390911660048201526024810182905290959094602090869081906044820190565b03815f5160206160995f395f51905f525afa94851561476c578a95614739575b5061466886600d614a6e565b95909661467681600d614b47565b60115490939192906001600160a01b03165f5160206160995f395f51905f523b15614735576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528c81606481835f5160206160995f395f51905f525af1801561472a57908d91614711575b505087614709575b5094956143eb5750935091506001906145eb565b96505f6146f5565b8161471b91613620565b614726578b5f6146ed565b8b80fd5b6040513d8f823e3d90fd5b8e80fd5b9094506020813d8211614764575b8161475460209383613620565b810103126108375751935f61465c565b3d9150614747565b6040513d8c823e3d90fd5b91506001906145eb565b141590505f806143d5565b8161479691613620565b6147a1578a5f6143cd565b8a80fd5b6040513d8e823e3d90fd5b8d80fd5b816147be91613620565b614726578b5f61434b565b8c906142e6565b90506020813d82116147f9575b816147ea60209383613620565b8101031261083757515f6142cc565b3d91506147dd565b6040513d8d823e3d90fd5b7f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a561485c61483a8484613689565b51604080516001600160a01b038e168152602081019290925290918291820190565b0390a1614272565b9092506020813d821161488f575b8161487f60209383613620565b810103126108375751915f61426a565b3d9150614872565b6040513d8a823e3d90fd5b505050614508565b90503d8087833e6148bb8183613620565b81016040828203126108035781516001600160401b03811161490e57816148e3918401614036565b916020810151906001600160401b03821161490a57614903929101614036565b505f61418d565b8880fd5b8780fd5b61491f9194505f90613620565b5f925f614149565b91939092505f52600d60205260405f20905f526020526103e261495960405f2093604051928391602083019586613ca4565b5190205f5260205260405f2090565b6bffffffffffffffffffffffff60a01b6011541660115563ffffffff19600f5416600f55600e545f600e5580614a3f575b505f60105560ff19601354166013556149b360145461388d565b806149bb5750565b601f81116001146149cd57505f601455565b60145f52601f0160051c7fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec017fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ed5b818110614a3457505060145f525f602081208160145555565b5f8155600101614a1b565b600e5f525f5160206160d95f395f51905f52908101905b818110614a635750614999565b5f8155600101614a56565b91905f5b6101008110614a8557505090505f905f90565b8060ff0360ff8111610a86576004850154600190911b906001600160a01b03165f5160206160995f395f51905f523b15610837576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f5160206160995f395f51905f525af180156132d557614b37575b50614b1184613f70565b81614b2d575b50614b2457600101614a72565b92505060019190565b905015155f614b17565b5f614b4191613620565b5f614b07565b91905f5b6101008110614b5e57505090505f905f90565b60048401546001821b906001600160a01b03165f5160206160995f395f51905f523b15610837576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f5160206160995f395f51905f525af180156132d557614bfa575b50614bdd84613f70565b81614bf0575b50614b2457600101614b4b565b905015155f614be3565b5f614c0491613620565b5f614bd356fe60a03461008857601f61148e38819003918201601f19168301916001600160401b0383118484101761008c5780849260209460405283398101031261008857516001600160a01b03811690819003610088576080526040516113ed90816100a1823960805181818161036a015281816105b9015281816109f901528181610bd10152610e230152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c90816323eeca01146105905750806348bd7dfd146104b95780638307c65514610456578063a9270fbe14610322578063aad6e488146101b15763ecbbc0331461005e575f80fd5b346101ad5760203660031901126101ad5760405161007d60608261089f565b6002815260208101604036823760043560601c604051630dfe168160e01b8152602081600481855afa918215610185576004926020925f91610190575b506100c486610926565b6001600160a01b03909116905260405163d21220a760e01b815292839182905afa908115610185575f91610156575b506100ff839293610933565b6001600160a01b0390911690526040805160208082529251928101839052928392918301915f5b818110610134575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610126565b610178915060203d60201161017e575b610170818361089f565b8101906108d9565b5f6100f3565b503d610166565b6040513d5f823e3d90fd5b6101a79150833d851161017e57610170818361089f565b5f6100ba565b5f80fd5b346101ad5760803660031901126101ad576101ca6107ed565b6101d2610803565b6064359067ffffffffffffffff82116101ad57366023830112156101ad578160040135916101ff836108c1565b9261020d604051948561089f565b8084526024602085019160051b830101913683116101ad57602401905b82821061031257505050815192610240846108c1565b9361024e604051958661089f565b80855261025d601f19916108c1565b015f5b8181106102ef5750509061027391610def565b5f5b825181101561029e57808261028c60019387610943565b526102978186610943565b5001610275565b836040518091602082016020835281518091526020604084019201905f5b8181106102ca575050500390f35b82518051855260209081015181860152869550604090940193909201916001016102bc565b6020906040516102fe81610853565b5f81525f8382015282828901015201610260565b813581526020918201910161022a565b346101ad5761036660c061033536610819565b60405163abc27eed60e01b81526001600160a01b039283166004820152911660248201529283915081906044820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610185575f905f92610419575b5090604051906103b560608361089f565b60028252602082019260403685376103cc83610926565b526103d682610933565b52604051918291602083019060208452518091526040830191905f5b818110610400575050500390f35b82518452859450602093840193909201916001016103f2565b91505060c0813d60c01161044e575b8161043560c0938361089f565b810103126101ad5760a0606082015191015190826103a4565b3d9150610428565b346101ad5760a03660031901126101ad5761046f6107ed565b610477610803565b6064359160028310156101ad57608092610494926084359261096f565b6020604080519280518452828101518385015201518051604084015201516060820152f35b346101ad576104c736610819565b5050506040516104d860a08261089f565b6004815260208101608036823760016104f083610926565b5260026104fc83610933565b5281516002101561057c576003606083015281516003101561057c5760056080830152604051906020820192602083525180935260408201905f935b8085106105455783830384f35b9091825190600a8210156105685760208160019382935201930194019390610538565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b346101ad5760403660031901126101ad5763c45a015560e01b81526004803591906020908290817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610185575f916107ce575b506001600160a01b031690610608602435826108f8565b60405163574f2ba360e01b8152602081600481875afa80156101855783915f91610799575b508211610735575b61063e91610919565b61066061064a826108c1565b91610658604051938461089f565b8083526108c1565b602082019290601f19013684375f5b82518110156106f15761068281836108f8565b9060405191631e3dd18b60e01b83526004830152602082602481895afa8015610185576001925f916106d3575b5060601b6bffffffffffffffffffffffff19166106cc8286610943565b520161066f565b6106eb915060203d811161017e57610170818361089f565b876106af565b8383604051918291602083019060208452518091526040830191905f5b81811061071c575050500390f35b825184528594506020938401939092019160010161070e565b505060405163574f2ba360e01b8152602081600481865afa80156101855782905f90610763575b9150610635565b50506020813d602011610791575b8161077e6020938361089f565b810103126101ad578161063e915161075c565b3d9150610771565b9150506020813d6020116107c6575b816107b56020938361089f565b810103126101ad578290518561062d565b3d91506107a8565b6107e7915060203d60201161017e57610170818361089f565b826105f1565b602435906001600160a01b03821682036101ad57565b604435906001600160a01b03821682036101ad57565b60609060031901126101ad57600435906024356001600160a01b03811681036101ad57906044356001600160a01b03811681036101ad5790565b6040810190811067ffffffffffffffff82111761086f57604052565b634e487b7160e01b5f52604160045260245ffd5b60e0810190811067ffffffffffffffff82111761086f57604052565b90601f8019910116810190811067ffffffffffffffff82111761086f57604052565b67ffffffffffffffff811161086f5760051b60200190565b908160209103126101ad57516001600160a01b03811681036101ad5790565b9190820180921161090557565b634e487b7160e01b5f52601160045260245ffd5b9190820391821161090557565b80511561057c5760200190565b80516001101561057c5760400190565b805182101561057c5760209160051b010190565b6040519061096482610853565b5f6020838281520152565b6040519493926060860167ffffffffffffffff81118782101761086f576040525f86525f60208701526040516109a481610853565b5f81525f60208201526040870152858415610d6457505a90600281101561056857610ba157604051634cc0eb1960e11b81526001600160a01b03838116600483015284811660248301526044820186905290947f000000000000000000000000000000000000000000000000000000000000000090911690602086606481855afa958615610185575f96610b6d575b508515610b32576001600160a01b03841690610a51813033856110fc565b610a5c818484611147565b6103e842018042116109055760209263ffffffff60e492610acd9460405193610a8485610883565b845260018060a01b038b168785015260408401528a60608401525f60808401523360a08401521660c08201525f60405195869485936358d30ac960e01b85526004850190610d6c565b5af1801561018557610afe575b50610aed90610af79487525b5a90610919565b6020860152610def565b6040830152565b906020823d602011610b2a575b81610b186020938361089f565b810103126101ad579050610aed610ada565b3d9150610b0b565b60405163643c60f360e01b8152602060048201526012602482015271416d6f756e744f7574206973207a65726f2160701b6044820152606490fd5b9095506020813d602011610b99575b81610b896020938361089f565b810103126101ad5751945f610a33565b3d9150610b7c565b6040516334259b1b60e01b81526001600160a01b03838116600483015284811660248301526044820186905290947f000000000000000000000000000000000000000000000000000000000000000090911690602086606481855afa958615610185575f96610d30575b508515610cf6576001600160a01b03841690610c29873033856110fc565b610c34878484611147565b6103e842018042116109055760209263ffffffff60e492610ca59460405193610c5c85610883565b845260018060a01b038b16878501528b604085015260608401525f60808401523360a08401521660c08201525f60405195869485936316c0a75160e11b85526004850190610d6c565b5af1801561018557610cc2575b50610aed90610af7948752610ae6565b906020823d602011610cee575b81610cdc6020938361089f565b810103126101ad579050610aed610cb2565b3d9150610ccf565b60405163643c60f360e01b8152602060048201526011602482015270416d6f756e74496e206973207a65726f2160781b6044820152606490fd5b9095506020813d602011610d5c575b81610d4c6020938361089f565b810103126101ad5751945f610c0b565b3d9150610d3f565b955050505050565b80516001600160a01b039081168352602080830151821690840152604080830151908401526060808301519084015260808083015115159084015260a0808301519091169083015260c09081015163ffffffff16910152565b908160209103126101ad575160ff811681036101ad5790565b60ff16604d811161090557600a0a90565b90610df8610957565b50604051637516644b60e11b81526001600160a01b03838116600483015282811660248301529092907f000000000000000000000000000000000000000000000000000000000000000016602084604481845afa938415610185575f946110c8575b5060405163c45a015560e01b8152602081600481855afa908115610185575f916110a9575b5060405163e6a4390560e01b81526001600160a01b0384811660048301528581166024830152909160209183916044918391165afa8015610185576020915f9161108c575b50604051635357407160e11b81526001600160a01b03909116600482015291829060249082905afa908115610185575f9161105a575b50670de0b6b3a76400000390670de0b6b3a764000082116109055760405163313ce56760e01b815290602090829060049082906001600160a01b03165afa801561018557610f546020916004935f91611043575b50610dde565b60405163313ce56760e01b815290949092839182906001600160a01b03165afa801561018557610f8a915f916110145750610dde565b91670de0b6b3a7640000840293808504670de0b6b3a764000014901517156109055780670de0b6b3a76400000290670de0b6b3a764000082048103610905578202670de0b6b3a7640000029181159183041417156109055781156110005760405192610ff584610853565b835204602082015290565b634e487b7160e01b5f52601260045260245ffd5b611036915060203d60201161103c575b61102e818361089f565b810190610dc5565b5f610f4e565b503d611024565b6110369150833d851161103c5761102e818361089f565b90506020813d602011611084575b816110756020938361089f565b810103126101ad57515f610efa565b3d9150611068565b6110a39150823d841161017e57610170818361089f565b5f610ec4565b6110c2915060203d60201161017e57610170818361089f565b5f610e7f565b9093506020813d6020116110f4575b816110e46020938361089f565b810103126101ad5751925f610e5a565b3d91506110d7565b6040516323b872dd60e01b60208201526001600160a01b0392831660248201529290911660448301526064808301939093529181526111459161114060848361089f565b6112af565b565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152821693602082604481885afa8015610185575f90611263575b61118d92506108f8565b925f8060405194602086019063095ea7b360e01b825260018060a01b0316968760248801526044870152604486526111c660648761089f565b85519082855af1906111d661131a565b82611231575b5081611226575b50156111ee57505050565b611140611145936040519063095ea7b360e01b602083015260248201525f60448201526044815261122060648261089f565b826112af565b90503b15155f6111e3565b80519192508115918215611249575b5050905f6111dc565b61125c9250602080918301019101611297565b5f80611240565b506020823d60201161128f575b8161127d6020938361089f565b810103126101ad5761118d9151611183565b3d9150611270565b908160209103126101ad575180151581036101ad5790565b5f806112d79260018060a01b03169360208151910182865af16112d061131a565b9083611359565b80519081151591826112ff575b50506112ed5750565b635274afe760e01b5f5260045260245ffd5b6113129250602080918301019101611297565b155f806112e4565b3d15611354573d9067ffffffffffffffff821161086f5760405191611349601f8201601f19166020018461089f565b82523d5f602084013e565b606090565b9061137d575080511561136e57805190602001fd5b63d6bda27560e01b5f5260045ffd5b815115806113ae575b61138e575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561138656fea2646970667358221220b526040f16c74de5eea30b9fb08eebd9f9f9fb64cd3f9acd318a3c89d26ae38064736f6c634300081b00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2bb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd2fe16dd18bba26e457b7dd2080d5674312b026a2000000000000000000000000000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48a264697066735822122072b110b0993eda90a80886c68f0819d7ad7fea0c5c7db46eb721f7aadb24627c64736f6c634300081b0033","sourceMap":"302:6332:74:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4668:8;302:6332;;;;:::i;:::-;809:3;302:6332;;-1:-1:-1;;302:6332:74;;;;;;;;;4754:28;;;;:::i;:::-;302:6332;;;;4428:13;4812:19;809:3;4812:19;;;;302:6332;;;;;;;;;:::i;:::-;809:3;302:6332;;809:3;;;;;;;5000:13;;4428;5015:19;809:3;5015:19;;;;5335:13;;4428;5350:23;302:6332;5350:23;;;;302:6332;;;5375:3;5403:9;;;;:::i;:::-;;302:6332;4428:13;809:3;;;;;;;;5431:13;:30;5549:53;5431:13;;;;;;:::i;:::-;;302:6332;5431:30;;:::i;:::-;5504:21;302:6332;5485:9;;;;:::i;:::-;;:17;302:6332;;5504:13;;;;:::i;:::-;;:21;302:6332;5504:21;;:::i;:::-;302:6332;5582:13;5549:9;;;;;:::i;:::-;;:15;;809:3;5582:13;;:::i;:::-;;:19;;5549:53;;:::i;:::-;809:3;;-1:-1:-1;;;;;;;;;;;2943:24:1;;;;302:6332:74;;;;;;2943:24:1;;302:6332:74;2943:24:1;;302:6332:74;;27501:38:3;302:6332:74;;;2943:24:1;;27501:38:3;2943:24:1;-1:-1:-1;;;;;;;;;;;2943:24:1;;;;;;;;5375:3:74;;;4428:13;302:6332;5335:13;;2943:24:1;;;;;:::i;:::-;302:6332:74;;2943:24:1;;;;302:6332:74;;;;2943:24:1;302:6332:74;;;;;;;;;2943:24:1;302:6332:74;;;809:3;-1:-1:-1;;;302:6332:74;;6854:12:8;302:6332:74;;27501:38:3;302:6332:74;;5036:3;302:6332;;-1:-1:-1;;;5068:13:74;;302:6332;;;;;5068:13;-1:-1:-1;;;;;;;;;;;5068:13:74;;;;;;;;;;;5036:3;5122:10;;;;;:::i;:::-;302:6332;;;;;;27501:38:3;;302:6332:74;;;;27501:38:3;;5115:4:74;27501:38:3;;;302:6332:74;27501:38:3;;;;;;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;:::-;302:6332:74;;;;27568:30:3;;;;;;:::i;:::-;;6854:22:8;;:::i;:::-;27524:10:3;302:6332:74;;7009:9:8;302:6332:74;;;7009:9:8;302:6332:74;7505:10:8;302:6332:74;-1:-1:-1;;;302:6332:74;;;;;4428:13;302:6332;;;7505:10:8;302:6332:74;;;;;;7505:10:8;302:6332:74;;5115:4;-1:-1:-1;;;;;;;;;;;302:6332:74;;;;;6854:12:8;302:6332:74;7009:9:8;302:6332:74;15610:11:8;302:6332:74;;;-1:-1:-1;;;;;302:6332:74;;;;15653:34:8;;:::i;:::-;-1:-1:-1;;;;;302:6332:74;;;;;;27635:8:3;302:6332:74;;;;;15703:15:8;;302:6332:74;;;;;;;;;;;;;;;;15735:37:8;;;;;;;;;;:::i;:::-;;302:6332:74;;15735:37:8;;;;;;:::i;:::-;302:6332:74;15725:48:8;;302:6332:74;;;;;15610:11:8;302:6332:74;;;15703:77:8;302:6332:74;;15702:78:8;15698:126;;5036:3:74;-1:-1:-1;;;;;302:6332:74;;;;;;27635:8:3;302:6332:74;;;;;;;;;;15889:37:8;;302:6332:74;;;;;;15889:37:8;;;302:6332:74;15889:37:8;;;;;:::i;:::-;302:6332:74;15879:48:8;;302:6332:74;;;;;;;4428:13;15943:15:8;;302:6332:74;15961:16:8;302:6332:74;15961:16:8;;302:6332:74;15943:34:8;;;;:::i;:::-;15938:460;;5036:3:74;302:6332;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;302:6332:74;;;16424:32:8;;302:6332:74;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;5036:3:74;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;302:6332:74;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;302:6332:74;;;16587:43:8;;302:6332:74;12810:59:8;;;302:6332:74;;;;;;;;12656:92:8;;;;12810:59;;;302:6332:74;;;12810:59:8;302:6332:74;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;5036:3:74;16678:31:8;;;;:::i;:::-;16724:8;;;302:6332:74;;;16724:29:8;;5036:3:74;16720:176:8;;;;14785:4;;;;;;:::i;:::-;5176:7:74;302:6332;5147:50;;302:6332;;;;-1:-1:-1;;;;;302:6332:74;5186:10;;;;:::i;:::-;302:6332;;;-1:-1:-1;;;5147:50:74;;-1:-1:-1;;;;;302:6332:74;;;;5147:50;;302:6332;;;;;;;;;;;;;;;5147:50;;;;-1:-1:-1;;;;;;;;;;;5147:50:74;;;;;;;;5036:3;-1:-1:-1;5176:7:74;302:6332;;;5224:48;;;;302:6332;;-1:-1:-1;;;;;302:6332:74;5261:10;;;;:::i;:::-;302:6332;;;;;;;;;;;;5224:48;;4428:13;302:6332;5224:48;;;:::i;:::-;;;;;;;;;;;;;;5036:3;5212:60;;;;;:::i;:::-;;;;;;:::i;:::-;;302:6332;;;;;;5286:23;;302:6332;5286:23;;302:6332;;5286:23;27501:38:3;5286:23:74;;-1:-1:-1;;;;;;;;;;;5286:23:74;;;;;;;4428:13;5286:23;;;5036:3;;302:6332;5000:13;;5286:23;;;302:6332;5286:23;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;302:6332;;;;;;;;;5224:48;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;302:6332;;;;;;;;;5147:50;;;302:6332;5147:50;;;;;;;;;:::i;:::-;;;16720:176:8;302:6332:74;;;;16769:41:8;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;302:6332:74;;-1:-1:-1;;;16769:41:8;;-1:-1:-1;;;;;302:6332:74;;;;;16769:41:8;;302:6332:74;12810:59:8;;;302:6332:74;;;;12810:59:8;;;302:6332:74;;;;;12810:59:8;302:6332:74;16769:41:8;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;;;;;16720:176;302:6332:74;;-1:-1:-1;;;16824:61:8;;302:6332:74;;16824:61:8;;12810:59;;27501:38:3;12810:59:8;;302:6332:74;12810:59:8;27501:38:3;302:6332:74;;12810:59:8;-1:-1:-1;;;809:3:74;12810:59:8;;;16824:61;;;16769:41;;;;;;:::i;:::-;302:6332:74;;16769:41:8;;;302:6332:74;;;16724:29:8;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;302:6332:74;;16587:43:8;;;;302:6332:74;;;;16587:43:8;302:6332:74;;;16424:32:8;;;;;302:6332:74;16424:32:8;;;;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;302:6332:74;;;;;;;16424:32:8;;1590:14:0;-1:-1:-1;302:6332:74;;16424:32:8;;;-1:-1:-1;16424:32:8;;;302:6332:74;;;;;;;;;15938:460:8;16028:34;;;;;;;;;:::i;:::-;16021:3;302:6332:74;16021:3:8;302:6332:74;;;;;;;;;;;-1:-1:-1;;;16314:19:8;;4428:13:74;302:6332;;;;16314:19:8;;302:6332:74;;;16314:19:8;;302:6332:74;27501:38:3;302:6332:74;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;302:6332:74;16314:19:8;;12810:59;16314:19;16170:185;16314:19;;;;15938:460;302:6332:74;;;16170:185:8;;;12810:59;16170:185;;;12810:59;;302:6332:74;12810:59:8;;;-1:-1:-1;;;302:6332:74;12810:59:8;;;302:6332:74;;;;;;12810:59:8;;;302:6332:74;;;;;;;;16170:185:8;;302:6332:74;;16170:185:8;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;;;;;;12810:59;302:6332:74;;-1:-1:-1;;;12810:59:8;;302:6332:74;;12810:59:8;;;302:6332:74;;;12810:59:8;;27501:38:3;12810:59:8;;;;:::i;:::-;;;;16314:19;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;302:6332:74;;;;;;;;;;;;-1:-1:-1;;;302:6332:74;;6854:12:8;302:6332:74;;27501:38:3;302:6332:74;;15698:126:8;13208:33;;:::i;:::-;;15698:126;;302:6332:74;-1:-1:-1;;;302:6332:74;;;;;27501:38:3;302:6332:74;;;-1:-1:-1;;;302:6332:74;;;;;27501:38:3;302:6332:74;;5068:13;;;;302:6332;5068:13;;;;;;;;;1590:14:0;5068:13:74;;;:::i;:::-;;;1590:14:0;;;;302:6332:74;5068:13;;;;;;;-1:-1:-1;5068:13:74;;809:3;302:6332;;;;;;;:::i;:::-;809:3;;;;;;;;302:6332;;;;;:::i;:::-;809:3;;;;;;;;302:6332;809:3;;;;;;;;;;;;4833;302:6332;;;;;;;;;;;;;;4428:13;4852:32;;;;;:::i;:::-;302:6332;;4797:13;;302:6332;;;;;;;;;;;;;;;;;;;;;;;;;;;1016:26:12;302:6332:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;2421:18:5;302:6332:74;;;;;;;2421:18:5;302:6332:74;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;302:6332:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;2273:18:5;302:6332:74;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;2273:18:5;302:6332:74;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4651:14;302:6332;;;;:::i;:::-;809:3;302:6332;;-1:-1:-1;;302:6332:74;;;;;;;;;4754:28;;;;:::i;:::-;302:6332;;;;;4812:19;809:3;4812:19;;;;302:6332;;;;;;;;;:::i;:::-;809:3;302:6332;;809:3;;;;;;;5000:13;;302:6332;5015:19;809:3;5015:19;;;;5335:13;;302:6332;5350:23;302:6332;5350:23;;;;302:6332;;;5375:3;5403:9;;;;:::i;:::-;;302:6332;;809:3;;;;;;;;5431:13;:30;5549:53;5431:13;;;;;;:::i;5549:53::-;809:3;;-1:-1:-1;;;;;;;;;;;2943:24:1;;;;302:6332:74;;;;;;2943:24:1;;302:6332:74;2943:24:1;;302:6332:74;;27501:38:3;302:6332:74;;;2943:24:1;;27501:38:3;2943:24:1;-1:-1:-1;;;;;;;;;;;2943:24:1;;;;;;;;5375:3:74;;;302:6332;;5335:13;;2943:24:1;;;;;:::i;:::-;302:6332:74;;2943:24:1;;;;5036:3:74;302:6332;;-1:-1:-1;;;5068:13:74;;302:6332;;;;;5068:13;-1:-1:-1;;;;;;;;;;;5068:13:74;;;;;;;;;;;5036:3;5122:10;;;;;:::i;:::-;302:6332;;;;;;27501:38:3;;302:6332:74;;;;27501:38:3;;5115:4:74;27501:38:3;;;302:6332:74;27501:38:3;;;;;;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;;6854:22:8;;:::i;:::-;27524:10:3;302:6332:74;;7009:9:8;302:6332:74;;;7009:9:8;302:6332:74;7505:10:8;302:6332:74;-1:-1:-1;;;302:6332:74;;;;;;;;;7505:10:8;302:6332:74;;;;;;7505:10:8;302:6332:74;;5115:4;-1:-1:-1;;;;;;;;;;;302:6332:74;;;;;6854:12:8;302:6332:74;7009:9:8;302:6332:74;15610:11:8;302:6332:74;;;-1:-1:-1;;;;;302:6332:74;;;;15653:34:8;;:::i;:::-;-1:-1:-1;;;;;302:6332:74;;;;;;27635:8:3;302:6332:74;;;;;15703:15:8;;302:6332:74;;;;;;;;;;;;;;;;15735:37:8;;;;;;;;;;:::i;:::-;302:6332:74;15725:48:8;;302:6332:74;;;;;15610:11:8;302:6332:74;;;15703:77:8;302:6332:74;;15702:78:8;15698:126;;5036:3:74;-1:-1:-1;;;;;302:6332:74;;;;;;27635:8:3;302:6332:74;;;;;;;;;;15889:37:8;;302:6332:74;;;;;;15889:37:8;;;302:6332:74;15889:37:8;;;;;:::i;:::-;302:6332:74;15879:48:8;;302:6332:74;;;;;;;;15943:15:8;;302:6332:74;15961:16:8;302:6332:74;15961:16:8;;302:6332:74;15943:34:8;;;;:::i;:::-;15938:460;;5036:3:74;302:6332;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;302:6332:74;;;16424:32:8;;302:6332:74;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;5036:3:74;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;302:6332:74;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;302:6332:74;;;16587:43:8;;302:6332:74;12810:59:8;;;302:6332:74;;;;;;;;12656:92:8;;;;12810:59;;;302:6332:74;;;12810:59:8;302:6332:74;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;5036:3:74;16678:31:8;;;;:::i;:::-;16724:8;;;302:6332:74;;;16724:29:8;;5036:3:74;16720:176:8;;;;14785:4;;;;;;:::i;:::-;5176:7:74;302:6332;5147:50;;302:6332;;;;-1:-1:-1;;;;;302:6332:74;5186:10;;;;:::i;5147:50::-;;;;-1:-1:-1;;;;;;;;;;;5147:50:74;;;;;;;;5036:3;-1:-1:-1;5176:7:74;302:6332;;;5224:48;;;;302:6332;;-1:-1:-1;;;;;302:6332:74;5261:10;;;;:::i;:::-;302:6332;;;;;;;;;;;;5224:48;;;302:6332;5224:48;;;:::i;:::-;;;;;;;;;;;;;;5036:3;5212:60;;;;;:::i;:::-;;;;;;:::i;:::-;;302:6332;;;;;;5286:23;;302:6332;5286:23;;302:6332;;5286:23;27501:38:3;5286:23:74;;-1:-1:-1;;;;;;;;;;;5286:23:74;;;;;;;302:6332;5286:23;;;5036:3;;302:6332;5000:13;;5286:23;;;302:6332;5286:23;;;;;;;;;:::i;:::-;;;;;5224:48;;;;;;;;;;;;;;:::i;:::-;;;;5147:50;;;302:6332;5147:50;;;;;;;;;:::i;:::-;;;16724:29:8;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;302:6332:74;;16587:43:8;;;;16424:32;;;;;302:6332:74;16424:32:8;;;;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;302:6332:74;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;;;;;:::i;:::-;16021:3;302:6332:74;16021:3:8;302:6332:74;;;;;;;;;;;-1:-1:-1;;;16314:19:8;;302:6332:74;;;;;16314:19:8;;302:6332:74;;;16314:19:8;;302:6332:74;27501:38:3;302:6332:74;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;302:6332:74;16314:19:8;;12810:59;16314:19;16170:185;16314:19;;;;302:6332:74;;;16170:185:8;;;12810:59;16170:185;;;12810:59;;302:6332:74;12810:59:8;;;-1:-1:-1;;;302:6332:74;12810:59:8;;;302:6332:74;;;;;;12810:59:8;;;302:6332:74;;;;;;;;16170:185:8;;302:6332:74;;16170:185:8;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;;;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;5068:13:74;;;;302:6332;5068:13;;;;;;;;;1590:14:0;5068:13:74;;;:::i;:::-;;;1590:14:0;;;;302:6332:74;5068:13;;;;;;;-1:-1:-1;5068:13:74;;809:3;302:6332;;;;;;;:::i;:::-;809:3;;;;;;;;302:6332;;;;;:::i;:::-;809:3;;;;;;;;302:6332;809:3;;;;;;;;;;;;4833;302:6332;;;;;;;;;;;;;;;4852:32;;;;;:::i;:::-;302:6332;;4797:13;;302:6332;;;;;;;;;;;;;3190:18:5;302:6332:74;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;3190:18:5;302:6332:74;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;-1:-1:-1;;;;;302:6332:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;302:6332:74;;;;;;;;;;;;-1:-1:-1;;;;;;302:6332:74;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;302:6332:74;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;302:6332:74;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;302:6332:74;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;302:6332:74;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;302:6332:74;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;302:6332:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2707:18:5;302:6332:74;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;2707:18:5;302:6332:74;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;5976:7;302:6332;;;-1:-1:-1;;;5976:23:74;;-1:-1:-1;;;;;;;;;;;302:6332:74;5976:23;;302:6332;;;;;;5976:23;;302:6332;;;;-1:-1:-1;;;;;302:6332:74;5976:23;;;;;;;;;;302:6332;6010:26;302:6332;;;6010:26;:::i;:::-;302:6332;;5976:23;;;;;;;;;;;:::i;:::-;;;302:6332;;;;;;;;;;;-1:-1:-1;;;;;302:6332:74;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;5976:23;;;6010:26;5976:23;;;302:6332;;;-1:-1:-1;;;;;302:6332:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2883:26:5;302:6332:74;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;2883:26:5;302:6332:74;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;-1:-1:-1;;;;;302:6332:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;302:6332:74;;;;;;;;;;;;;;;2189:38;;;302:6332;2189:38;302:6332;;;;;;;:::i;:::-;2335:1;302:6332;;;;;;;;;;;;;;;;;;;:::i;:::-;2335:1;302:6332;;;;;;;2335:1;302:6332;;;;;;2407:21;;;;;;;2453:7;302:6332;;;-1:-1:-1;;;2453:35:74;;-1:-1:-1;;;;;;;;;;;302:6332:74;2453:35;;302:6332;-1:-1:-1;;;;;;;;;;;302:6332:74;;;;-1:-1:-1;;;;;;;;;;;302:6332:74;;;;;;;;;;2453:35;;302:6332;;;;-1:-1:-1;;;;;302:6332:74;2453:35;;;;;;2530:9;2453:35;;;;;2403:769;2530:9;;:::i;:::-;302:6332;2512:27;;-1:-1:-1;;;;;;;;;;;2502:38:74;;;;302:6332;;;;;;2502:38;;302:6332;2502:38;;302:6332;2502:38;;302:6332;2502:38;-1:-1:-1;;;;;;;;;;;2502:38:74;;;;;;;;2403:769;2567:24;;2633:12;2567:24;;:::i;:::-;2633:12;:::i;:::-;302:6332;2648:3;302:6332;;;;;;2648:3;302:6332;;;;;;;2605:53;;-1:-1:-1;;;;;;;;;;;2605:53:74;;;;302:6332;;-1:-1:-1;;;2605:53:74;;2453:35;302:6332;;;2615:42;;302:6332;2605:53;;302:6332;2605:53;302:6332;;;-1:-1:-1;;;;;;;;;;;2605:53:74;;;;;;;;2403:769;302:6332;;;;;27501:38:3;;302:6332:74;;;;27501:38:3;;2692:4:74;302:6332;27501:38:3;;302:6332:74;;27501:38:3;;;302:6332:74;27501:38:3;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;;6854:22:8;;:::i;:::-;27524:10:3;302:6332:74;;7009:9:8;302:6332:74;;;7009:9:8;302:6332:74;7505:10:8;302:6332:74;-1:-1:-1;;;302:6332:74;;;;;;;;;7505:10:8;302:6332:74;;;;;;7505:10:8;302:6332:74;;2692:4;-1:-1:-1;;;;;;;;;;;302:6332:74;;;;;6854:12:8;302:6332:74;7009:9:8;302:6332:74;15610:11:8;302:6332:74;;;-1:-1:-1;;;;;302:6332:74;;;;15653:34:8;;:::i;:::-;-1:-1:-1;;;;;302:6332:74;;;;;;27635:8:3;302:6332:74;;;;;15703:15:8;;302:6332:74;;;;;;;;;;;;;;;;15735:37:8;;;;;;;;;;:::i;:::-;302:6332:74;15725:48:8;;302:6332:74;;;;;;;;;15703:77:8;302:6332:74;;15702:78:8;15698:126;;2403:769:74;-1:-1:-1;;;;;302:6332:74;;;;;;27635:8:3;302:6332:74;;;;;;;;;;15889:37:8;;302:6332:74;;;;;;15889:37:8;;;302:6332:74;15889:37:8;;;;;:::i;:::-;302:6332:74;15879:48:8;;302:6332:74;;;;;;;;15943:15:8;;302:6332:74;15961:16:8;2335:1:74;15961:16:8;;302:6332:74;15943:34:8;;;;;:::i;:::-;15938:460;;-1:-1:-1;302:6332:74;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;302:6332:74;;;16424:32:8;;302:6332:74;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;2403:769:74;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;302:6332:74;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;302:6332:74;;;16587:43:8;;302:6332:74;12810:59:8;;;302:6332:74;;;;-1:-1:-1;;302:6332:74;;;12656:92:8;12810:59;;;302:6332:74;;;12810:59:8;302:6332:74;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;2403:769:74;16678:31:8;;;;:::i;:::-;16724:8;;302:6332:74;;;16724:29:8;;2403:769:74;16720:176:8;;;14785:4;;;;;;:::i;:::-;2453:7:74;302:6332;;;-1:-1:-1;;;2731:57:74;;302:6332;;;;;-1:-1:-1;;;;;302:6332:74;;2731:57;;302:6332;-1:-1:-1;;302:6332:74;;;;;;;;2731:57;-1:-1:-1;;;;;;;;;;;2731:57:74;;;;;;;;2403:769;;;302:6332;;-1:-1:-1;;;3212:37:74;;3243:4;302:6332;3212:37;;302:6332;;;;;;-1:-1:-1;;;;;;;;;;;3212:37:74;;;;;;;;;;;2403:769;-1:-1:-1;302:6332:74;;-1:-1:-1;;;3289:37:74;;3243:4;302:6332;3289:37;;302:6332;;;;;;-1:-1:-1;;;;;;;;;;;3289:37:74;;;;;;;;;;;2403:769;302:6332;3370:53;302:6332;3370:53;302:6332;;;;;;3370:7;302:6332;;;;;;;;;;;;;;;;;3370:53;;302:6332;3370:53;;;:::i;:::-;;;;;;;;;;;;;;2403:769;302:6332;;;3434:783;;302:6332;;;3434:783;3484:21;;;302:6332;;-1:-1:-1;;;3592:37:74;;3243:4;302:6332;3592:37;;302:6332;;;;;-1:-1:-1;;;;;;;;;;;3592:37:74;;;;;;;;;;;3480:727;3592:59;;;;;;:::i;:::-;;;:::i;:::-;302:6332;;;-1:-1:-1;;;3784:37:74;;3243:4;302:6332;3784:37;;302:6332;;;;;-1:-1:-1;;;;;;;;;;;3784:37:74;;;;;;;;;;;3480:727;3762:59;;;;;;:::i;:::-;3434:783;;;;;302:6332;;;3784:37;;;302:6332;3784:37;;302:6332;3784:37;;;;;;1590:14:0;3784:37:74;;;:::i;:::-;;;1590:14:0;;;;302:6332:74;3762:59;3784:37;;;;;-1:-1:-1;3784:37:74;;;302:6332;;;;;;;;;3592:37;;;302:6332;3592:37;;302:6332;3592:37;;;;;;1590:14:0;3592:37:74;;;:::i;:::-;;;1590:14:0;;;;302:6332:74;3592:59;:37;;;;;-1:-1:-1;3592:37:74;;3480:727;302:6332;;-1:-1:-1;;;3967:37:74;;3243:4;302:6332;3967:37;;302:6332;;;;;;;;-1:-1:-1;;;;;;;;;;;3967:37:74;;;;;;;;;;;3480:727;3945:59;;;;;;:::i;:::-;302:6332;;;-1:-1:-1;;;4115:37:74;;3243:4;302:6332;4115:37;;302:6332;;;;;-1:-1:-1;;;;;;;;;;;4115:37:74;;;;;;;;;;;3480:727;4115:59;;;;;;:::i;:::-;3480:727;;4115:37;;;302:6332;4115:37;;302:6332;4115:37;;;;;;1590:14:0;4115:37:74;;;:::i;:::-;;;1590:14:0;;;;302:6332:74;4115:59;:37;;;;;-1:-1:-1;4115:37:74;;3967;;;302:6332;3967:37;;302:6332;3967:37;;;;;;1590:14:0;3967:37:74;;;:::i;:::-;;;1590:14:0;;;;302:6332:74;3945:59;3967:37;;;;;-1:-1:-1;3967:37:74;;3370:53;;;;;;;;;;;;;;;:::i;:::-;;;;;3289:37;;;;302:6332;3289:37;;302:6332;3289:37;;;;;;1590:14:0;3289:37:74;;;:::i;:::-;;;1590:14:0;;;;302:6332:74;;3289:37;;3370:53;3289:37;;;;;-1:-1:-1;3289:37:74;;3212;;;;302:6332;3212:37;;302:6332;3212:37;;;;;;1590:14:0;3212:37:74;;;:::i;:::-;;;1590:14:0;;;;302:6332:74;3212:37;;;;;;;-1:-1:-1;3212:37:74;;2731:57;;;302:6332;2731:57;302:6332;2731:57;;;;;;;:::i;:::-;;;;;16724:29:8;-1:-1:-1;;16736:17:8;;;-1:-1:-1;3074:17:74;16724:29:8;;16587:43;;;;;:::i;:::-;302:6332:74;;16587:43:8;;;;16424:32;;;;;302:6332:74;16424:32:8;;302:6332:74;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;302:6332:74;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;:::i;:::-;16021:3;302:6332:74;16021:3:8;302:6332:74;;;;;;;;;;;-1:-1:-1;;;16314:19:8;;302:6332:74;;;;;16314:19:8;;302:6332:74;16314:19:8;302:6332:74;;;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;-1:-1:-1;;;16314:19:8;;302:6332:74;16170:185:8;16314:19;12810:59;16314:19;12810:59;16314:19;;;;15938:460;302:6332:74;;;16170:185:8;;;12810:59;16170:185;;;12810:59;;302:6332:74;12810:59:8;;;;;;302:6332:74;;;;;;12810:59:8;;;302:6332:74;;;;;;;;16170:185:8;;302:6332:74;;16170:185:8;;;;;;:::i;:::-;302:6332:74;;-1:-1:-1;;;12810:59:8;;302:6332:74;;12810:59:8;;;302:6332:74;;;;12810:59:8;;;;:::i;16314:19::-;;;;;;;;;;;;;:::i;:::-;;;;;302:6332:74;;;;;;;;;;-1:-1:-1;;;302:6332:74;;6854:12:8;302:6332:74;;;;;15698:126:8;13208:33;;:::i;:::-;;15698:126;;302:6332:74;-1:-1:-1;;;302:6332:74;;;;;;;;;-1:-1:-1;;;302:6332:74;;;;;;;;2605:53;;;;;:::i;:::-;302:6332;;2605:53;;;;302:6332;-1:-1:-1;;;302:6332:74;;;;;;;;2502:38;;;;;:::i;:::-;302:6332;;2502:38;;;;2453:35;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;2403:769;2828:7;302:6332;;;-1:-1:-1;;;2828:35:74;;-1:-1:-1;;;;;;;;;;;302:6332:74;2828:35;;302:6332;-1:-1:-1;;;;;;;;;;;302:6332:74;;;;-1:-1:-1;;;;;;;;;;;302:6332:74;;;;;;;;;;2828:35;;302:6332;;;;-1:-1:-1;;;;;302:6332:74;2828:35;;;;;;2905:9;2828:35;;;;;2403:769;2905:9;;:::i;:::-;302:6332;2887:27;;-1:-1:-1;;;;;;;;;;;2877:38:74;;;;302:6332;;;;;;2877:38;;302:6332;2877:38;;302:6332;2877:38;;302:6332;2877:38;-1:-1:-1;;;;;;;;;;;2877:38:74;;;;;;;;2403:769;2942:24;;3008:12;2942:24;;:::i;:::-;3008:12;:::i;:::-;302:6332;3023:3;302:6332;;;;;;3023:3;302:6332;;;;;;;2980:53;;-1:-1:-1;;;;;;;;;;;2980:53:74;;;;302:6332;;-1:-1:-1;;;2980:53:74;;2828:35;302:6332;;;2990:42;;302:6332;2980:53;;302:6332;2980:53;302:6332;;;-1:-1:-1;;;;;;;;;;;2980:53:74;;;;;;;;2403:769;302:6332;;;;;27501:38:3;;302:6332:74;;;;27501:38:3;;3067:4:74;302:6332;27501:38:3;;302:6332:74;;27501:38:3;;;302:6332:74;27501:38:3;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;;6854:22:8;;:::i;:::-;27524:10:3;302:6332:74;;7009:9:8;302:6332:74;;;7009:9:8;302:6332:74;7505:10:8;302:6332:74;-1:-1:-1;;;302:6332:74;;;;;;;;;7505:10:8;302:6332:74;;;;;;7505:10:8;302:6332:74;;3067:4;-1:-1:-1;;;;;;;;;;;302:6332:74;;;;;6854:12:8;302:6332:74;7009:9:8;302:6332:74;15610:11:8;302:6332:74;;;-1:-1:-1;;;;;302:6332:74;;;;15653:34:8;;:::i;:::-;-1:-1:-1;;;;;302:6332:74;;;;;;27635:8:3;302:6332:74;;;;;15703:15:8;;302:6332:74;;;;;;;;;;;;;;;;15735:37:8;;;;;;;;;;:::i;:::-;302:6332:74;15725:48:8;;302:6332:74;;;;;;;;;15703:77:8;302:6332:74;;15702:78:8;15698:126;;2403:769:74;-1:-1:-1;;;;;302:6332:74;;;;;;27635:8:3;302:6332:74;;;;;;;;;;15889:37:8;;302:6332:74;;;;;;15889:37:8;;;302:6332:74;15889:37:8;;;;;:::i;:::-;302:6332:74;15879:48:8;;302:6332:74;;;;;;;;15943:15:8;;302:6332:74;15961:16:8;2335:1:74;15961:16:8;;302:6332:74;15943:34:8;;;;;:::i;:::-;15938:460;;-1:-1:-1;302:6332:74;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;302:6332:74;;;16424:32:8;;302:6332:74;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;2403:769:74;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;302:6332:74;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;302:6332:74;;;16587:43:8;;302:6332:74;12810:59:8;;;302:6332:74;;;;-1:-1:-1;;302:6332:74;;;12656:92:8;12810:59;;;302:6332:74;;;12810:59:8;302:6332:74;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;2403:769:74;16678:31:8;;;;:::i;:::-;16724:8;;302:6332:74;;;16724:29:8;;2403:769:74;16720:176:8;;;14785:4;;;;;;:::i;:::-;2828:7:74;302:6332;;;-1:-1:-1;;;3106:55:74;;302:6332;;;;;-1:-1:-1;;;;;302:6332:74;;3106:55;;302:6332;;;;;;;;;;;3106:55;-1:-1:-1;;;;;;;;;;;3106:55:74;;;;;;;;2403:769;;;;3106:55;;;302:6332;3106:55;302:6332;3106:55;;;;;;;:::i;:::-;;;;;16724:29:8;-1:-1:-1;;16736:17:8;;;-1:-1:-1;3074:17:74;16724:29:8;;16587:43;;;;;:::i;:::-;302:6332:74;;16587:43:8;;;;16424:32;;;;;302:6332:74;16424:32:8;;302:6332:74;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;302:6332:74;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15698:126;13208:33;;:::i;:::-;;15698:126;;2980:53:74;;;;;:::i;:::-;302:6332;;2980:53;;;;2877:38;;;;;:::i;:::-;302:6332;;2877:38;;;;2828:35;;;;;;;;;;;;;:::i;:::-;;;;302:6332;-1:-1:-1;;;302:6332:74;;;;;;;;2189:38;;;;302:6332;;;;;;;;;;;;;;;;;;3038:18:5;302:6332:74;;;;;;;3038:18:5;302:6332:74;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;302:6332:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3331:16:5;302:6332:74;;;;;;;3331:16:5;302:6332:74;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;302:6332:74;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;302:6332:74;;;;;;;;;;;;;;1363:7;302:6332;;;;;;;;;;1363:35;;302:6332;;;;1363:35;;302:6332;-1:-1:-1;;;;;;;;;;;302:6332:74;;;;-1:-1:-1;;;;;;;;;;;302:6332:74;;;;1363:35;;;;;;;;;;;;;;;;302:6332;1428:9;;;;:::i;:::-;302:6332;1418:19;;-1:-1:-1;;;;;;;;;;;1408:30:74;;;;302:6332;;;;;;1408:30;;302:6332;1408:30;;302:6332;1408:30;;302:6332;1408:30;-1:-1:-1;;;;;;;;;;;1408:30:74;;;;;;;;;;;302:6332;1468:9;;;;;:::i;:::-;302:6332;1458:19;;-1:-1:-1;;;;;;;;;;;1448:30:74;;;;302:6332;;;;;;1448:30;;302:6332;1448:30;;302:6332;1448:30;;302:6332;1448:30;-1:-1:-1;;;;;;;;;;;1448:30:74;;;;;;;;302:6332;;;;;;;;;;;;;;:::i;:::-;1530:1;302:6332;;;;;;;;1542:20;;;:::i;:::-;302:6332;1572:20;;;:::i;:::-;302:6332;;;-1:-1:-1;;;1630:40:74;;-1:-1:-1;;;;;;;;;;;302:6332:74;1630:40;;302:6332;-1:-1:-1;;;;;;;;;;;302:6332:74;;;;-1:-1:-1;;;;;;;;;;;302:6332:74;;;;;1363:35;302:6332;;;;;;;;;;;;;;;:::i;:::-;1630:40;;;;;;;;;;;;;302:6332;1686:13;;1720:3;302:6332;;1701:17;;;;;1748:9;1739:32;1748:9;302:6332;1748:9;;;:::i;:::-;;302:6332;1739:32;:::i;:::-;1785:34;302:6332;1794:9;;;;:::i;:::-;;:21;302:6332;1785:34;:::i;:::-;302:6332;1686:13;;1701:17;;302:6332;;1630:40;;;;;;;;;;;;;:::i;:::-;;;302:6332;;;;;;;;;;;-1:-1:-1;;;;;302:6332:74;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1630:40;;;;;;;;302:6332;;;;;;;;:::i;:::-;;;;;;;;;1448:30;;;;;;:::i;:::-;302:6332;;1448:30;;;1408;;;;;:::i;:::-;302:6332;;1408:30;;;;1363:35;;;;;;;;;;;;;:::i;:::-;;;;302:6332;;;;;;;;;;;;;3485:19:5;302:6332:74;;;;:::i;:::-;;;;;;;:::i;:::-;;;;3485:19:5;302:6332:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;302:6332:74;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6182:7;302:6332;;;-1:-1:-1;;;6182:35:74;;-1:-1:-1;;;;;;;;;;;302:6332:74;6182:35;;302:6332;-1:-1:-1;;;;;;;;;;;302:6332:74;;;;-1:-1:-1;;;;;;;;;;;302:6332:74;;;;;;;;;6182:35;;302:6332;;;;-1:-1:-1;;;;;302:6332:74;6182:35;;;;;;6228:26;6182:35;;;;;302:6332;;;6228:26;:::i;6182:35::-;;;;;;;;;;;;;:::i;:::-;;;;302:6332;;;;;;;-1:-1:-1;;302:6332:74;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;302:6332:74;;;;;;;;5759:7;302:6332;;;-1:-1:-1;;;5759:37:74;;302:6332;;;5759:37;;;302:6332;-1:-1:-1;;;;;302:6332:74;;;;;;;;;;;;;;;;;;;;5759:37;;302:6332;;;;;;;;5759:37;;;;;;;;;;;302:6332;;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;302:6332:74;;;;;;2349:24:1;;302:6332:74;2349:24:1;;302:6332:74;;;;;;2349:24:1;;302:6332:74;2349:24:1;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;;;;;302:6332:74;;2349:24:1;;;;;:::i;:::-;302:6332:74;;2349:24:1;302:6332:74;2349:24:1;302:6332:74;;5759:37;;;;;;;;;;;;;:::i;:::-;;;302:6332;;;;;;;;;;;-1:-1:-1;;;;;302:6332:74;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5759:37;;;;;;302:6332;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2563:16:5;302:6332:74;;;;;;;2563:16:5;302:6332:74;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;302:6332:74;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;302:6332:74;;;;;;-1:-1:-1;;;911:20:74;;1590:14:0;302:6332:74;911:20;;1590:14:0;;;;;302:6332:74;-1:-1:-1;;;302:6332:74;;;1590:14:0;-1:-1:-1;302:6332:74;911:20;302:6332;-1:-1:-1;;;;;;;;;;;911:20:74;;;;;;;1590:14:0;911:20:74;1590:14:0;911:20:74;302:6332;911:20;;;302:6332;;;;;;;;;;;891:52;;302:6332;;891:52;;1590:14:0;302:6332:74;1590:14:0;;;;:::i;:::-;873:8:74;1590:14:0;;;302:6332:74;891:52;;302:6332;-1:-1:-1;;;;;;;;;;;891:52:74;;;;;;;;302:6332;;;;963:39;;;;;;;;-1:-1:-1;;;;;963:39:74;;;;;1590:14:0;963:39:74;;;;;;725:42;302:6332;;963:39;;;302:6332;963:39;;;;;953:49;725:42;;-1:-1:-1;;;;;;725:42:74;;;;;;-1:-1:-1;;;;;725:42:74;;;;;;;1012:38;725:42;;-1:-1:-1;;;;;;725:42:74;;;;;-1:-1:-1;;;;;;;;;;;1061:31:74;;;;302:6332;;;;;1061:31;;-1:-1:-1;;;;;;;;;;;302:6332:74;1061:31;;302:6332;;1590:14:0;489:42:74;;;302:6332;;489:42;;302:6332;-1:-1:-1;;;911:20:74;302:6332;;489:42;302:6332;1061:31;;;;-1:-1:-1;;;;;;;;;;;1061:31:74;;;;;;;;302:6332;1102:22;-1:-1:-1;;;;;;;;;;;1102:22:74;;;;302:6332;;;;;;1102:22;;-1:-1:-1;;;;;;;;;;;302:6332:74;1102:22;;302:6332;;1590:14:0;561:42:74;;;302:6332;;561:42;;302:6332;-1:-1:-1;;;911:20:74;302:6332;;561:42;1102:22;;1061:31;1102:22;;-1:-1:-1;;;;;;;;;;;1102:22:74;;;;;;;;302:6332;1134:51;;-1:-1:-1;;;;;;;;;;;1134:51:74;;;;302:6332;;;;;;1134:51;;643:42;302:6332;1134:51;;302:6332;;1590:14:0;643:42:74;;;;302:6332;643:42;;302:6332;-1:-1:-1;;;911:20:74;302:6332;;643:42;1134:51;;1061:31;1134:51;;-1:-1:-1;;;;;;;;;;;1134:51:74;;;;;;;;302:6332;;1102:22;;;;;:::i;:::-;302:6332;;1102:22;;;;1061:31;;;;302:6332;1061:31;;:::i;:::-;302:6332;1061:31;;;;302:6332;;;;;;;;;963:39;302:6332;;;;;;;;1590:14:0;302:6332:74;;891:52;1590:14:0;891:52:74;;1590:14:0;891:52:74;;;;;;1590:14:0;891:52:74;;;:::i;:::-;;;1590:14:0;;;;302:6332:74;891:52;;;;;-1:-1:-1;891:52:74;;911:20;;;;;;302:6332;911:20;;;;;;:::i;:::-;;;;302:6332;;;;;;-1:-1:-1;;302:6332:74;;;;;;-1:-1:-1;;;;;302:6332:74;;;;;;;;6468:59;302:6332;;:::i;:::-;6468:7;302:6332;;;-1:-1:-1;;;6468:59:74;;302:6332;6468:59;;302:6332;;;;-1:-1:-1;;;;;302:6332:74;;;;;;;;;6468:59;;302:6332;;;6468:59;;;;;;302:6332;;;6468:59;;;302:6332;;;;;;;;;;;:::i;:::-;6561:1;302:6332;;;;;;;;6573:21;;;:::i;:::-;302:6332;6604:21;;;:::i;:::-;302:6332;;;;;;;;;;;;;;:::i;6468:59::-;;;;;;;;;;;;;;;;;:::i;:::-;;;302:6332;;;;;;;;;;;;;;6468:59;;;;;-1:-1:-1;6468:59:74;;302:6332;;;;-1:-1:-1;;;;;302:6332:74;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;302:6332:74;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;302:6332:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;302:6332:74;;;;;;;;-1:-1:-1;;302:6332:74;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;302:6332:74;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;302:6332:74;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;302:6332:74;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;302:6332:74;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;302:6332:74;;;;;;;:::o;:::-;-1:-1:-1;;;;;302:6332:74;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;1475:1;302:6332;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;6267:365::-;6468:7;302:6332;;;-1:-1:-1;;;6468:59:74;;-1:-1:-1;;;;;;;;;;;6468:59:74;;;302:6332;-1:-1:-1;;;;;;;;;;;302:6332:74;;;;;6267:365;6468:59;;302:6332;;6468:59;;302:6332;;-1:-1:-1;;;;;302:6332:74;6468:59;;;;;;-1:-1:-1;;;6468:59:74;;;6267:365;302:6332;6604:21;302:6332;;;;;;:::i;:::-;6561:1;302:6332;;;;;;;;6538:25;6573:21;;;;:::i;:::-;302:6332;6604:21;:::i;:::-;302:6332;6267:365::o;6468:59::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;302:6332;;;;;;;;;;;;6468:59;;;;;;-1:-1:-1;6468:59:74;;1590:14:0;-1:-1:-1;;;;;1590:14:0;;;;302:6332:74;;-1:-1:-1;;302:6332:74;1590:14:0;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;1590:14:0;;;;;;;;;;;;;;;;;;;:::i;:::-;302:6332:74;;;;;;;:::i;:::-;1590:14:0;;;;;;;;;;;;-1:-1:-1;1590:14:0;;;;;;;;302:6332:74;;;;;1590:14:0;:::o;:::-;;;;;;;;;302:6332:74;1590:14:0;:::o;725:42:74:-;6854:12:8;725:42:74;;-1:-1:-1;;;;;;725:42:74;-1:-1:-1;;;;;;;;;;;725:42:74;;;:::o;302:6332::-;;;;;;;;;;;-1:-1:-1;;;;;302:6332:74;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;302:6332:74;;;;;;;;-1:-1:-1;302:6332:74;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;725:42;302:6332;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;-1:-1:-1;;;;;;;;;;;302:6332:74;;-1:-1:-1;;;;;;;;;;;302:6332:74;;;;-1:-1:-1;;;;;;;;;;;302:6332:74;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;302:6332:74;;;;;-1:-1:-1;302:6332:74;;;;;;;;;;;:::o;1243:204:1:-;1302:7;302:6332:74;;;;;;;1325:14:1;:::o;1298:143::-;302:6332:74;;;;;;1377:39:1;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;302:6332:74;192:59:1;;;;;;302:6332:74;192:59:1;1377:39;;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;;;;;302:6332:74;1377:39:1;;;1298:143;1377:53;;;1370:60;:::o;1377:39::-;;;192:59;1377:39;;192:59;1377:39;;;;;;1590:14:0;1377:39:1;;;:::i;:::-;;;1590:14:0;;;;302:6332:74;1377:39:1;;;;;;-1:-1:-1;1377:39:1;;2270:110;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;302:6332:74;;;;;;2349:24:1;;;;;302:6332:74;6252:1;302:6332;;;;-1:-1:-1;2349:24:1;;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;;;;;2270:110;:::o;2349:24::-;-1:-1:-1;2349:24:1;;;:::i;:::-;2270:110::o;:::-;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;302:6332:74;;;;;;2349:24:1;;;;;302:6332:74;;;;;-1:-1:-1;2349:24:1;;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;;;;;2270:110;:::o;13112:::-;-1:-1:-1;;;;;;;;;;;13191:24:1;;;;302:6332:74;;;;;;13191:24:1;;;;;302:6332:74;;;;;;;13191:24:1;;;-1:-1:-1;;;;;;;;;;;13191:24:1;;;;;;;;13112:110;:::o;809:3:74:-;;;;;;;;;;:::o;302:6332::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;302:6332:74;;;;:::o;:::-;;;:::o;14296:110:1:-;;-1:-1:-1;;;;;;;;;;;14375:24:1;;;;302:6332:74;;;;;;14375:24:1;;;;;302:6332:74;;;;;-1:-1:-1;14375:24:1;;;-1:-1:-1;;;;;;;;;;;14375:24:1;;;;;;;;14296:110;:::o;426:547:59:-;688:35;426:547;637:17;619:35;302:6332:74;;637:17:59;;;302:6332:74;619:35:59;;:::i;:::-;302:6332:74;;706:17:59;;302:6332:74;688:35:59;;:::i;:::-;769:30;;;;;;801:8;;302:6332:74;801:8:59;:::o;765:201::-;867:29;;;;905:1;898:8;:::o;863:103::-;-1:-1:-1;;3074:17:74;957:9:59:o;302:6332:74:-;;;;;;;;;;;;;;;;;;;;;:::o;953:236:8:-;302:6332:74;1052:14:8;302:6332:74;;:::i;:::-;1052:14:8;;302:6332:74;;;;;;1109:10:8;302:6332:74;;;;;;1109:10:8;1077:1;302:6332:74;;1077:1:8;302:6332:74;;1077:1:8;302:6332:74;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;1077:1:8;11360:3;302:6332:74;;11346:12:8;;;;;11391:4;;1109:10;11391:4;;;:::i;:::-;302:6332:74;;11456:84:8;302:6332:74;11456:84:8;;;;;302:6332:74;11331:13:8;;11346:12;-1:-1:-1;11346:12:8;-1:-1:-1;1094:26:8:o;302:6332:74:-;;;;;1109:10:8;302:6332:74;;;;;;-1:-1:-1;302:6332:74;;;;;;;;1048:135:8;302:6332:74;;;;;;1052:14:8;302:6332:74;:::i;:::-;1151:21:8;:::o;953:236::-;1052:14;;;302:6332:74;;;;;:::i;:::-;1052:21:8;;1109:10;;;;302:6332:74;;;;;;;;;;;;;;;1077:1:8;302:6332:74;;1077:1:8;302:6332:74;;1077:1:8;302:6332:74;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;1077:1:8;11360:3;302:6332:74;;11346:12:8;;;;;11391:4;;1109:10;11391:4;;;:::i;:::-;302:6332:74;;11456:84:8;302:6332:74;11456:84:8;;;;;302:6332:74;11331:13:8;;302:6332:74;;;;;1109:10:8;302:6332:74;;;;;;-1:-1:-1;302:6332:74;;;;;;;;1048:135:8;302:6332:74;;;;;;;;;;;:::i;1251:343:8:-;-1:-1:-1;302:6332:74;1364:48:8;1381:9;302:6332:74;;;1364:48:8;302:6332:74;1392:19:8;27635:8:3;1392:19:8;:::i;:::-;302:6332:74;;1364:48:8;;;;;;302:6332:74;;;;;;;;;;;;;;;;;;;;;;;;1364:48:8;;302:6332:74;;1364:48:8;;;;;;:::i;:::-;1458:12;302:6332:74;1458:29:8;;;-1:-1:-1;;;;;302:6332:74;1458:29:8;;;;;:::i;:::-;1540:11;302:6332:74;;;;;;;;;-1:-1:-1;;;;;302:6332:74;;;;;-1:-1:-1;302:6332:74;;;1364:48:8;11010:13;;:29;1364:48;;;11010:29;1364:48;11010:29;;-1:-1:-1;11049:106:8;11069:7;;;;;;1563:24;;;;;1251:343;:::o;11078:3::-;11114:10;;;;;;;;:::i;:::-;302:6332:74;;;;;;;;;1364:48:8;302:6332:74;;1540:11:8;302:6332:74;;;;;-1:-1:-1;;;;;;302:6332:74;;;11142:1:8;302:6332:74;;;;;;;;;;;11097:47:8;11078:3;302:6332:74;11054:13:8;;;;;11010:29;;;;1251:343;;-1:-1:-1;1381:9:8;1364:48;1381:9;;;302:6332:74;;;1364:48:8;302:6332:74;1392:19:8;;;:::i;1364:48::-;302:6332:74;1458:12:8;;302:6332:74;1458:29:8;;;-1:-1:-1;;;;;302:6332:74;1458:29:8;;1540:11;1458:29;;:::i;:::-;1540:11;;302:6332:74;;;;;;-1:-1:-1;;;;;302:6332:74;;;;;-1:-1:-1;302:6332:74;;;1364:48:8;11010:13;;:29;1364:48;;;11010:29;1364:48;11010:29;;-1:-1:-1;11049:106:8;11069:7;;;;;;1563:24;;;;;1251:343;:::o;11078:3::-;11114:10;;;;;;;;:::i;:::-;302:6332:74;;;;;;;;;1364:48:8;302:6332:74;;1540:11:8;302:6332:74;;;;;-1:-1:-1;;;;;;302:6332:74;;;11142:1:8;302:6332:74;;;;;;;;;;;11097:47:8;11078:3;302:6332:74;11054:13:8;;;;;11010:29;;;;643:59;;;;;;;;;;;;;;;:::i;:::-;302:6332:74;;;;;;;:::i;:::-;643:59:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;192::1;;643::8;;;;;;;;;;4249:2493;4361:12;302:6332:74;4397:9:8;302:6332:74;4438:11:8;302:6332:74;-1:-1:-1;;;;;302:6332:74;;;;;;;;4481:19:8;27635:8:3;4481:19:8;:::i;:::-;4551:15;302:6332:74;;;27635:8:3;302:6332:74;;;;;;;;;;;;;;;;;;;;;;4583:37:8;;;;;;;;;;:::i;:::-;302:6332:74;4573:48:8;;302:6332:74;;;;;4438:11:8;302:6332:74;;;4551:77:8;302:6332:74;;4547:255:8;;-1:-1:-1;;;;;;;;;;;4811:11:8;;;;302:6332:74;;-1:-1:-1;;;4811:11:8;;302:6332:74;;4361:12:8;302:6332:74;;-1:-1:-1;;;;;;;;;;;4811:11:8;;;;;;;;4249:2493;4857:16;;27635:8:3;4857:16:8;:::i;:::-;302:6332:74;;;;;;;4911:25:8;;;4361:12;4911:25;;302:6332:74;4911:25:8;;;;;-1:-1:-1;;;;;;;;;;;4911:25:8;;;;;;;;;;;4249:2493;-1:-1:-1;302:6332:74;;4951:12:8;;4984:74;302:6332:74;;12810:59:8;;;4984:74;;302:6332:74;4361:12:8;4984:74;;643:59;302:6332:74;4911:25:8;643:59;;302:6332:74;643:59:8;302:6332:74;;;643:59:8;;;;;;4984:74;4947:1461;5094:13;5127:3;302:6332:74;;5109:16:8;;;;;5178:8;302:6332:74;5178:8:8;;5165:22;5178:8;;:::i;:::-;302:6332:74;;;-1:-1:-1;;;5165:22:8;;-1:-1:-1;;;;;302:6332:74;;4361:12:8;5165:22;;302:6332:74;;;;;;;;;;;;;;;;;;5165:22:8;;;-1:-1:-1;;;;;;;;;;;5165:22:8;;;;;;;;;;;5127:3;5209:18;;;5205:114;;5127:3;5369:8;;;;:::i;:::-;302:6332:74;4361:12:8;302:6332:74;;;-1:-1:-1;;;1978:27:8;;-1:-1:-1;;;;;302:6332:74;;;4361:12:8;1978:27;;302:6332:74;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1978:27:8;;;;;;;;;;;5127:3;2057:16;;27635:8:3;2057:16:8;:::i;:::-;2102:65;;;:29;;:65;:29;;;-1:-1:-1;;3074:17:74;2102:65:8;-1:-1:-1;;;;;;;;;;;2177:37:8;;;;302:6332:74;;-1:-1:-1;;;2177:37:8;;-1:-1:-1;;;;;302:6332:74;;;;4361:12:8;2177:37;;302:6332:74;12810:59:8;;;302:6332:74;;;12810:59:8;;;302:6332:74;;;;;;12810:59:8;302:6332:74;;-1:-1:-1;;;;;;;;;;;2177:37:8;;;;;;;;;;;2102:65;2254:16;;;27635:8:3;2254:16:8;:::i;:::-;4361:12;302:6332:74;;;;-1:-1:-1;;;;;;302:6332:74;-1:-1:-1;;;;;;;;;;;2281:43:8;;;;302:6332:74;;-1:-1:-1;;;2281:43:8;;-1:-1:-1;;;;;302:6332:74;;;;4361:12:8;2281:43;;302:6332:74;12810:59:8;;;302:6332:74;;;;12810:59:8;;;302:6332:74;;;;;;12810:59:8;302:6332:74;;-1:-1:-1;;;;;;;;;;;2281:43:8;;;;;;;;;;;2102:65;2343:46;;;;;2102:65;5341:37;;;5337:92;;5447:50;;;302:6332:74;;5520:25:8;302:6332:74;;5516:256:8;;2102:65;12275:113;;;;;;;-1:-1:-1;;12275:113:8;;;5902:57;302:6332:74;;5998:29:8;;5994:84;;302:6332:74;;6319:8:8;302:6332:74;6101:89:8;643:59;302:6332:74;;6132:37:8;;302:6332:74;;;6132:37:8;;;302:6332:74;6132:37:8;;;;;:::i;:::-;302:6332:74;6122:48:8;;6180:8;;;;:::i;:::-;302:6332:74;;;;;;;643:59:8;302:6332:74;643:59:8;;302:6332:74;;643:59:8;;302:6332:74;643:59:8;;;302:6332:74;6101:89:8;6319:8;:::i;:::-;302:6332:74;;;;;643:59:8;302:6332:74;;;;;;-1:-1:-1;;;;;302:6332:74;;;;;4438:11:8;302:6332:74;;;;;;6302:58:8;;302:6332:74;;;;6302:58:8;;302:6332:74;;;643:59:8;6302:58;;643:59;302:6332:74;643:59:8;;302:6332:74;;;27635:8:3;302:6332:74;;;;;;;;;;;;;;;;6240:37:8;;;;;;;;;;:::i;:::-;302:6332:74;6230:48:8;;302:6332:74;;;;;;;;;643:59:8;;302:6332:74;;643:59:8;;;302:6332:74;4397:9:8;643:59;;;;;;302:6332:74;;;;;643:59:8;;;;;;;;5089:1309;302:6332:74;;;27635:8:3;302:6332:74;;;;;;;;;;;;;;;;6471:37:8;;;;;;;;;;:::i;:::-;302:6332:74;6461:48:8;;302:6332:74;;;;;4438:11:8;302:6332:74;;;6439:77:8;302:6332:74;;643:59:8;;;302:6332:74;6664:15:8;302:6332:74;;27635:8:3;302:6332:74;;;;;;;;;;6696:37:8;;302:6332:74;;;;;;6696:37:8;;;302:6332:74;6696:37:8;;;;;:::i;:::-;302:6332:74;6686:48:8;;302:6332:74;;;;;4249:2493:8;:::o;643:59::-;302:6332:74;;-1:-1:-1;;;643:59:8;;302:6332:74;4361:12:8;643:59;;;;4911:25;643:59;;302:6332:74;643:59:8;302:6332:74;;;643:59:8;-1:-1:-1;;;643:59:8;;;;;;;5994:84;6051:8;;;;302:6332:74;6051:8:8;5094:13;302:6332:74;5094:13:8;;5516:256;5654:8;;3216:27;5654:8;;;;;;:::i;:::-;302:6332:74;4361:12:8;302:6332:74;;;-1:-1:-1;;;3216:27:8;;-1:-1:-1;;;;;302:6332:74;;;4361:12:8;3216:27;;302:6332:74;;;;;;;;;;;;;;;;;;;;;;3216:27:8;;;-1:-1:-1;;;;;;;;;;;3216:27:8;;;;;;;;;;;5516:256;3293:28;;;27635:8:3;3293:28:8;:::i;:::-;3372:29;;;;;27635:8:3;3372:29:8;:::i;:::-;4361:12;302:6332:74;;;;;;-1:-1:-1;;;;;302:6332:74;-1:-1:-1;;;;;;;;;;;3497:43:8;;;;302:6332:74;;-1:-1:-1;;;3497:43:8;;-1:-1:-1;;;;;302:6332:74;;;;4361:12:8;3497:43;;302:6332:74;12810:59:8;;;302:6332:74;;;;12810:59:8;;;302:6332:74;;;;;;12810:59:8;302:6332:74;;-1:-1:-1;;;;;;;;;;;3497:43:8;;;;;;;;;;;5516:256;3558:23;;;;;5516:256;5601:62;;5689:6;5516:256;5685:69;5723:8;;;;;302:6332:74;5723:8:8;;;3558:23;;-1:-1:-1;3558:23:8;;;3497:43;;;;;:::i;:::-;302:6332:74;;3497:43:8;;;;302:6332:74;;;;3497:43:8;302:6332:74;;;;;;;;;3497:43:8;302:6332:74;;;3216:27:8;;;;302:6332:74;3216:27:8;;;;;;;;;1590:14:0;3216:27:8;;;:::i;:::-;;;1590:14:0;;;;302:6332:74;3216:27:8;;;;;;;-1:-1:-1;3216:27:8;;;302:6332:74;;;;;;;;;5337:92:8;5402:8;;302:6332:74;5402:8:8;;;2343:46;2355:33;;;-1:-1:-1;2343:46:8;;;;2281:43;;;;;:::i;:::-;302:6332:74;;2281:43:8;;;;302:6332:74;;;;2281:43:8;302:6332:74;;;;;;;;;2281:43:8;302:6332:74;;;2177:37:8;;;;;:::i;:::-;302:6332:74;;2177:37:8;;;;2102:65;;;;;1978:27;;;302:6332:74;1978:27:8;;;;;;;;;1590:14:0;1978:27:8;;;:::i;:::-;;;1590:14:0;;;;302:6332:74;1978:27:8;;;;;;-1:-1:-1;1978:27:8;;;302:6332:74;;;;;;;;;5205:114:8;5256:44;;5290:8;;;;:::i;:::-;302:6332:74;;;;-1:-1:-1;;;;;302:6332:74;;;;;;;;;;;;;;;;;;;5256:44:8;;;;5205:114;;5165:22;;;;302:6332:74;5165:22:8;;;;;;;;;1590:14:0;5165:22:8;;;:::i;:::-;;;1590:14:0;;;;302:6332:74;5165:22:8;;;;;;;-1:-1:-1;5165:22:8;;;302:6332:74;;;;;;;;;5109:16:8;;;;;;4911:25;;;;;;;;;;;;:::i;:::-;;;302:6332:74;643:59:8;;;;;;;;-1:-1:-1;;;;;643:59:8;;;;;;;;;;:::i;:::-;;302:6332:74;643:59:8;;;;-1:-1:-1;;;;;643:59:8;;;;;;;;;:::i;:::-;;4911:25;;;643:59;302:6332:74;;;643:59:8;302:6332:74;;;4811:11:8;;;;;302:6332:74;4811:11:8;;:::i;:::-;302:6332:74;4811:11:8;;;;4547:255;4720:15;;;;;302:6332:74;;27635:8:3;302:6332:74;;;;;;;;;;4752:37:8;;302:6332:74;;;;;;4752:37:8;;;302:6332:74;4752:37:8;;;;;:::i;:::-;302:6332:74;4742:48:8;;302:6332:74;;;;;;;4713:78:8;:::o;11586:239::-;725:42:74;;;11652:12:8;302:6332:74;;11652:12:8;302:6332:74;;;11681:9:8;302:6332:74;;11681:9:8;302:6332:74;11707:10:8;302:6332:74;11645:19:8;11707:10;302:6332:74;;;;11586:239:8;302:6332:74;11645:19:8;11734:11;302:6332:74;725:42;302:6332;11762:25:8;302:6332:74;;11762:25:8;302:6332:74;;11804:14:8;302:6332:74;;:::i;:::-;;;;11586:239:8;:::o;302:6332:74:-;;;;;;;;;11645:19:8;11804:14;302:6332:74;11586:239:8:o;302:6332:74:-;11804:14:8;11645:19;302:6332:74;;;;;;;;;;;;;;;;11804:14:8;11645:19;302:6332:74;11645:19:8;302:6332:74;;;;11804:14:8;302:6332:74;;2270:110:1:o;302:6332:74:-;;;;;;;;;11707:10:8;11645:19;302:6332:74;-1:-1:-1;;;;;;;;;;;302:6332:74;;;;;;;;;;;;;;11645:19:8;302:6332:74;;11707:10:8;302:6332:74;;;2560:514:8;;;2695:1;2698:12;2707:3;2698:12;;;;3050:17;;;;2695:1;3050:17;2695:1;2560:514;:::o;2712:8::-;302:6332:74;2771:3:8;302:6332:74;2771:3:8;302:6332:74;;;;2824:12:8;;;302:6332:74;;;;;;-1:-1:-1;;;;;302:6332:74;-1:-1:-1;;;;;;;;;;;2815:49:8;;;;302:6332:74;;-1:-1:-1;;;2815:49:8;;-1:-1:-1;;;;;302:6332:74;;;;2824:12:8;2815:49;;302:6332:74;12810:59:8;;;302:6332:74;;;12810:59:8;;;302:6332:74;;;;-1:-1:-1;302:6332:74;12810:59:8;302:6332:74;-1:-1:-1;;;;;;;;;;;;2815:49:8;;;;;;;;2712:8;2910:16;;;;:::i;:::-;2945:30;;;2712:8;2941:90;;;302:6332:74;;2678:18:8;;2941:90;2995:21;;;302:6332:74;2995:21:8;;:::o;2945:30::-;2957:17;;;;2945:30;;;2815:49;2695:1;2815:49;;;:::i;:::-;;;;2560:514;;;4551:10;2698:12;2707:3;2698:12;;;;3050:17;;;;4551:10;3050:17;4551:10;2560:514;:::o;2712:8::-;2824:12;;;302:6332:74;;;;;-1:-1:-1;;;;;302:6332:74;-1:-1:-1;;;;;;;;;;;2815:49:8;;;;302:6332:74;;-1:-1:-1;;;2815:49:8;;-1:-1:-1;;;;;302:6332:74;;;;2824:12:8;2815:49;;302:6332:74;12810:59:8;;;302:6332:74;;;12810:59:8;;;302:6332:74;;;;-1:-1:-1;302:6332:74;12810:59:8;302:6332:74;-1:-1:-1;;;;;;;;;;;;2815:49:8;;;;;;;;2712:8;2910:16;;;;:::i;:::-;2945:30;;;2712:8;2941:90;;;302:6332:74;;2678:18:8;;2945:30;2957:17;;;;2945:30;;;2815:49;4551:10;2815:49;;;:::i;:::-;;;","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","getMinLimits(address,address)":"05307621","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testGetCapabilitiesIntegral(bytes32,address,address)":"1fe0c49a","testGetLimitsIntegral()":"23bc9a29","testGetTokensIntegral()":"66f523f5","testPriceFuzzIntegral(uint256,uint256)":"37124eb0","testSwapBuyIncreasing()":"fe3ee58b","testSwapFuzzIntegral(uint256,bool)":"5d511088","testSwapSellIncreasingIntegral()":"b4f3fe0b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"LimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"Unavailable\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"fsig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keysHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"SlotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"WARNING_UninitedSlot\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"}],\"name\":\"getMinLimits\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"limits\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"pair\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"t0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"t1\",\"type\":\"address\"}],\"name\":\"testGetCapabilitiesIntegral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetLimitsIntegral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetTokensIntegral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"testPriceFuzzIntegral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSwapBuyIncreasing\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isBuy\",\"type\":\"bool\"}],\"name\":\"testSwapFuzzIntegral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSwapSellIncreasingIntegral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"LimitExceeded(uint256)\":[{\"details\":\"The LimitExceeded error is thrown when a limit has been exceeded. E.g. the specified amount can't be traded safely.\"}],\"NotImplemented(string)\":[{\"details\":\"The NotImplemented error is thrown when a function is not implemented.\"}],\"Unavailable(string)\":[{\"details\":\"The Unavailable error is thrown when a pool or swap is not available for unexpected reason. E.g. it was paused due to a bug.\"}]},\"kind\":\"dev\",\"methods\":{\"testSwapFuzzIntegral(uint256,bool)\":{\"details\":\"Since TwapRelayer's calculateAmountOut function is internal, and using quoteSell would revert the transaction if calculateAmountOut is not enough, we need a threshold to cover this internal amount, applied to\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/IntegralSwapAdapter.t.sol\":\"IntegralSwapAdapterTest\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b\",\"dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54\",\"dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678\",\"dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdToml.sol\":{\"keccak256\":\"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d\",\"dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e\",\"dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a\",\"dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/integral/IntegralSwapAdapter.sol\":{\"keccak256\":\"0xba81dc8dd2e92b38d2de308f2d4fd5d43043a6646c5c5026cb0599328270913f\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://cdd83b073508b386799138c43800f670b93c49357e7e04e6168a067b80300f98\",\"dweb:/ipfs/QmZrMmCPf7ePH4jeQGzaxbDrt1LSSLSXRJHg6LfaSrVRVm\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/libraries/FractionMath.sol\":{\"keccak256\":\"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c\",\"dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr\"]},\"test/IntegralSwapAdapter.t.sol\":{\"keccak256\":\"0x465e4df3a75322c29ce6a0354292e0d618f82d84bce063e030622fc33d08a0f3\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://428962d48f6a7bf95ccc291c722eadefc41b6f1141fa238c4f7f48d0f21be0bc\",\"dweb:/ipfs/QmSowALtRXXTVrZCtVaamFx41PCm48uFRzowpbBL2AQz8T\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"type":"error","name":"LimitExceeded"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"NotImplemented"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"Unavailable"},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"bytes4","name":"fsig","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"keysHash","type":"bytes32","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"SlotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"WARNING_UninitedSlot","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"}],"stateMutability":"view","type":"function","name":"getMinLimits","outputs":[{"internalType":"uint256[]","name":"limits","type":"uint256[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[{"internalType":"bytes32","name":"pair","type":"bytes32"},{"internalType":"address","name":"t0","type":"address"},{"internalType":"address","name":"t1","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"testGetCapabilitiesIntegral"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testGetLimitsIntegral"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testGetTokensIntegral"},{"inputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testPriceFuzzIntegral"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testSwapBuyIncreasing"},{"inputs":[{"internalType":"uint256","name":"specifiedAmount","type":"uint256"},{"internalType":"bool","name":"isBuy","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"testSwapFuzzIntegral"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testSwapSellIncreasingIntegral"}],"devdoc":{"kind":"dev","methods":{"testSwapFuzzIntegral(uint256,bool)":{"details":"Since TwapRelayer's calculateAmountOut function is internal, and using quoteSell would revert the transaction if calculateAmountOut is not enough, we need a threshold to cover this internal amount, applied to"}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/IntegralSwapAdapter.t.sol":"IntegralSwapAdapterTest"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef","urls":["bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b","dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d","urls":["bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54","dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3","urls":["bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678","dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdToml.sol":{"keccak256":"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab","urls":["bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d","dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe","urls":["bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e","dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456","urls":["bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a","dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/integral/IntegralSwapAdapter.sol":{"keccak256":"0xba81dc8dd2e92b38d2de308f2d4fd5d43043a6646c5c5026cb0599328270913f","urls":["bzz-raw://cdd83b073508b386799138c43800f670b93c49357e7e04e6168a067b80300f98","dweb:/ipfs/QmZrMmCPf7ePH4jeQGzaxbDrt1LSSLSXRJHg6LfaSrVRVm"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/libraries/FractionMath.sol":{"keccak256":"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735","urls":["bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c","dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr"],"license":"AGPL-3.0-or-later"},"test/IntegralSwapAdapter.t.sol":{"keccak256":"0x465e4df3a75322c29ce6a0354292e0d618f82d84bce063e030622fc33d08a0f3","urls":["bzz-raw://428962d48f6a7bf95ccc291c722eadefc41b6f1141fa238c4f7f48d0f21be0bc","dweb:/ipfs/QmSowALtRXXTVrZCtVaamFx41PCm48uFRzowpbBL2AQz8T"],"license":"AGPL-3.0-or-later"}},"version":1},"id":74} \ No newline at end of file diff --git a/evm/out/Math.sol/Math.json b/evm/out/Math.sol/Math.json deleted file mode 100644 index 1a8b00a..0000000 --- a/evm/out/Math.sol/Math.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220eeb9de0d14e93d6b4ebdc70460182e42a39ab446f1f758e7f23ac8ee0558fa4f64736f6c634300081b0033","sourceMap":"281:26664:38:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea2646970667358221220eeb9de0d14e93d6b4ebdc70460182e42a39ab446f1f758e7f23ac8ee0558fa4f64736f6c634300081b0033","sourceMap":"281:26664:38:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0x29074fe5a74bb024c57b3570abf6c74d8bceed3438694d470fd0166a3ecd196a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f4f8435ccbc56e384f4cc9ac9ff491cf30a82f2beac00e33ccc2cf8af3f77cc3\",\"dweb:/ipfs/QmUKJXxTe6nn1qfgnX8xbnboNNAPUuEmJyGqMZCKNiFBgn\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x6fe40ce2addf1fe91a86c334b51ef5abe9c3b831d5d4d74ecae1d9c7d06cdccb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5027588e408027935ac78e32d9e813fda6bf33349b8a5be5c6c936273743369f\",\"dweb:/ipfs/QmZwSzs94V9u7VSdhw2bhbrogWZ37wvrQFBz6QNJTmKokE\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x8cd59334ed58b8884cd1f775afc9400db702e674e5d6a7a438c655b9de788d7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99e62c7de7318f413b6352e3f2704ca23e7725ff144e43c8bd574d12dbf29047\",\"dweb:/ipfs/QmSEXG2rBx1VxU2uFTWdiChjDvA4osEY2mesjmoVeVhHko\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":"Math"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0x29074fe5a74bb024c57b3570abf6c74d8bceed3438694d470fd0166a3ecd196a","urls":["bzz-raw://f4f8435ccbc56e384f4cc9ac9ff491cf30a82f2beac00e33ccc2cf8af3f77cc3","dweb:/ipfs/QmUKJXxTe6nn1qfgnX8xbnboNNAPUuEmJyGqMZCKNiFBgn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x6fe40ce2addf1fe91a86c334b51ef5abe9c3b831d5d4d74ecae1d9c7d06cdccb","urls":["bzz-raw://5027588e408027935ac78e32d9e813fda6bf33349b8a5be5c6c936273743369f","dweb:/ipfs/QmZwSzs94V9u7VSdhw2bhbrogWZ37wvrQFBz6QNJTmKokE"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x8cd59334ed58b8884cd1f775afc9400db702e674e5d6a7a438c655b9de788d7e","urls":["bzz-raw://99e62c7de7318f413b6352e3f2704ca23e7725ff144e43c8bd574d12dbf29047","dweb:/ipfs/QmSEXG2rBx1VxU2uFTWdiChjDvA4osEY2mesjmoVeVhHko"],"license":"MIT"}},"version":1},"id":38} \ No newline at end of file diff --git a/evm/out/MaverickV2SwapAdapter.sol/IMaverickV2Factory.json b/evm/out/MaverickV2SwapAdapter.sol/IMaverickV2Factory.json deleted file mode 100644 index 9cc43d4..0000000 --- a/evm/out/MaverickV2SwapAdapter.sol/IMaverickV2Factory.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"isFactoryPool","inputs":[{"name":"pool","type":"address","internalType":"contract IMaverickV2Pool"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"lookup","inputs":[{"name":"startIndex","type":"uint256","internalType":"uint256"},{"name":"endIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"pools","type":"address[]","internalType":"contract IMaverickV2Pool[]"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"isFactoryPool(address)":"578eaca4","lookup(uint256,uint256)":"b4b9d1f1"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IMaverickV2Pool\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isFactoryPool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endIndex\",\"type\":\"uint256\"}],\"name\":\"lookup\",\"outputs\":[{\"internalType\":\"contract IMaverickV2Pool[]\",\"name\":\"pools\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/maverick-v2/MaverickV2SwapAdapter.sol\":\"IMaverickV2Factory\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/maverick-v2/MaverickV2SwapAdapter.sol\":{\"keccak256\":\"0x4ba52bde98c1ef79e6730645f278c0601392d7466313119be6a307254cdccb38\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://60cf377d4a17957d78c0e14708daa10c3d44831a5a567275293126b54e572a07\",\"dweb:/ipfs/QmT55QZ9W7tu9NzmKMNWp5LSESyNbW8NrjnXYZ6mAujYQ4\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IMaverickV2Pool","name":"pool","type":"address"}],"stateMutability":"view","type":"function","name":"isFactoryPool","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"startIndex","type":"uint256"},{"internalType":"uint256","name":"endIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"lookup","outputs":[{"internalType":"contract IMaverickV2Pool[]","name":"pools","type":"address[]"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/maverick-v2/MaverickV2SwapAdapter.sol":"IMaverickV2Factory"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/maverick-v2/MaverickV2SwapAdapter.sol":{"keccak256":"0x4ba52bde98c1ef79e6730645f278c0601392d7466313119be6a307254cdccb38","urls":["bzz-raw://60cf377d4a17957d78c0e14708daa10c3d44831a5a567275293126b54e572a07","dweb:/ipfs/QmT55QZ9W7tu9NzmKMNWp5LSESyNbW8NrjnXYZ6mAujYQ4"],"license":"AGPL-3.0-or-later"}},"version":1},"id":60} \ No newline at end of file diff --git a/evm/out/MaverickV2SwapAdapter.sol/IMaverickV2Pool.json b/evm/out/MaverickV2SwapAdapter.sol/IMaverickV2Pool.json deleted file mode 100644 index 84af825..0000000 --- a/evm/out/MaverickV2SwapAdapter.sol/IMaverickV2Pool.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"factory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IMaverickV2Factory"}],"stateMutability":"view"},{"type":"function","name":"fee","inputs":[{"name":"tokenAIn","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getState","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct IMaverickV2Pool.State","components":[{"name":"reserveA","type":"uint128","internalType":"uint128"},{"name":"reserveB","type":"uint128","internalType":"uint128"},{"name":"lastTwaD8","type":"int64","internalType":"int64"},{"name":"lastLogPriceD8","type":"int64","internalType":"int64"},{"name":"lastTimestamp","type":"uint40","internalType":"uint40"},{"name":"activeTick","type":"int32","internalType":"int32"},{"name":"isLocked","type":"bool","internalType":"bool"},{"name":"binCounter","type":"uint32","internalType":"uint32"},{"name":"protocolFeeRatioD3","type":"uint8","internalType":"uint8"}]}],"stateMutability":"view"},{"type":"function","name":"swap","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"params","type":"tuple","internalType":"struct IMaverickV2Pool.SwapParams","components":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"tokenAIn","type":"bool","internalType":"bool"},{"name":"exactOutput","type":"bool","internalType":"bool"},{"name":"tickLimit","type":"int32","internalType":"int32"}]},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"tokenA","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"tokenB","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"factory()":"c45a0155","fee(bool)":"2d9d1ca6","getState()":"1865c57d","swap(address,(uint256,bool,bool,int32),bytes)":"3eece7db","tokenA()":"0fc63d10","tokenB()":"5f64b55b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"contract IMaverickV2Factory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"tokenAIn\",\"type\":\"bool\"}],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getState\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"reserveA\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"reserveB\",\"type\":\"uint128\"},{\"internalType\":\"int64\",\"name\":\"lastTwaD8\",\"type\":\"int64\"},{\"internalType\":\"int64\",\"name\":\"lastLogPriceD8\",\"type\":\"int64\"},{\"internalType\":\"uint40\",\"name\":\"lastTimestamp\",\"type\":\"uint40\"},{\"internalType\":\"int32\",\"name\":\"activeTick\",\"type\":\"int32\"},{\"internalType\":\"bool\",\"name\":\"isLocked\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"binCounter\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"protocolFeeRatioD3\",\"type\":\"uint8\"}],\"internalType\":\"struct IMaverickV2Pool.State\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"tokenAIn\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"exactOutput\",\"type\":\"bool\"},{\"internalType\":\"int32\",\"name\":\"tickLimit\",\"type\":\"int32\"}],\"internalType\":\"struct IMaverickV2Pool.SwapParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenA\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenB\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/maverick-v2/MaverickV2SwapAdapter.sol\":\"IMaverickV2Pool\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/maverick-v2/MaverickV2SwapAdapter.sol\":{\"keccak256\":\"0x4ba52bde98c1ef79e6730645f278c0601392d7466313119be6a307254cdccb38\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://60cf377d4a17957d78c0e14708daa10c3d44831a5a567275293126b54e572a07\",\"dweb:/ipfs/QmT55QZ9W7tu9NzmKMNWp5LSESyNbW8NrjnXYZ6mAujYQ4\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"factory","outputs":[{"internalType":"contract IMaverickV2Factory","name":"","type":"address"}]},{"inputs":[{"internalType":"bool","name":"tokenAIn","type":"bool"}],"stateMutability":"view","type":"function","name":"fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getState","outputs":[{"internalType":"struct IMaverickV2Pool.State","name":"","type":"tuple","components":[{"internalType":"uint128","name":"reserveA","type":"uint128"},{"internalType":"uint128","name":"reserveB","type":"uint128"},{"internalType":"int64","name":"lastTwaD8","type":"int64"},{"internalType":"int64","name":"lastLogPriceD8","type":"int64"},{"internalType":"uint40","name":"lastTimestamp","type":"uint40"},{"internalType":"int32","name":"activeTick","type":"int32"},{"internalType":"bool","name":"isLocked","type":"bool"},{"internalType":"uint32","name":"binCounter","type":"uint32"},{"internalType":"uint8","name":"protocolFeeRatioD3","type":"uint8"}]}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"struct IMaverickV2Pool.SwapParams","name":"params","type":"tuple","components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"tokenAIn","type":"bool"},{"internalType":"bool","name":"exactOutput","type":"bool"},{"internalType":"int32","name":"tickLimit","type":"int32"}]},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"swap","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"tokenA","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"tokenB","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/maverick-v2/MaverickV2SwapAdapter.sol":"IMaverickV2Pool"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/maverick-v2/MaverickV2SwapAdapter.sol":{"keccak256":"0x4ba52bde98c1ef79e6730645f278c0601392d7466313119be6a307254cdccb38","urls":["bzz-raw://60cf377d4a17957d78c0e14708daa10c3d44831a5a567275293126b54e572a07","dweb:/ipfs/QmT55QZ9W7tu9NzmKMNWp5LSESyNbW8NrjnXYZ6mAujYQ4"],"license":"AGPL-3.0-or-later"}},"version":1},"id":60} \ No newline at end of file diff --git a/evm/out/MaverickV2SwapAdapter.sol/IMaverickV2Quoter.json b/evm/out/MaverickV2SwapAdapter.sol/IMaverickV2Quoter.json deleted file mode 100644 index 7234df3..0000000 --- a/evm/out/MaverickV2SwapAdapter.sol/IMaverickV2Quoter.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"calculateSwap","inputs":[{"name":"pool","type":"address","internalType":"contract IMaverickV2Pool"},{"name":"amount","type":"uint128","internalType":"uint128"},{"name":"tokenAIn","type":"bool","internalType":"bool"},{"name":"exactOutput","type":"bool","internalType":"bool"},{"name":"tickLimit","type":"int32","internalType":"int32"}],"outputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"gasEstimate","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"calculateSwap(address,uint128,bool,bool,int32)":"49b59311"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IMaverickV2Pool\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"tokenAIn\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"exactOutput\",\"type\":\"bool\"},{\"internalType\":\"int32\",\"name\":\"tickLimit\",\"type\":\"int32\"}],\"name\":\"calculateSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasEstimate\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/maverick-v2/MaverickV2SwapAdapter.sol\":\"IMaverickV2Quoter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/maverick-v2/MaverickV2SwapAdapter.sol\":{\"keccak256\":\"0x4ba52bde98c1ef79e6730645f278c0601392d7466313119be6a307254cdccb38\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://60cf377d4a17957d78c0e14708daa10c3d44831a5a567275293126b54e572a07\",\"dweb:/ipfs/QmT55QZ9W7tu9NzmKMNWp5LSESyNbW8NrjnXYZ6mAujYQ4\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IMaverickV2Pool","name":"pool","type":"address"},{"internalType":"uint128","name":"amount","type":"uint128"},{"internalType":"bool","name":"tokenAIn","type":"bool"},{"internalType":"bool","name":"exactOutput","type":"bool"},{"internalType":"int32","name":"tickLimit","type":"int32"}],"stateMutability":"nonpayable","type":"function","name":"calculateSwap","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"gasEstimate","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/maverick-v2/MaverickV2SwapAdapter.sol":"IMaverickV2Quoter"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/maverick-v2/MaverickV2SwapAdapter.sol":{"keccak256":"0x4ba52bde98c1ef79e6730645f278c0601392d7466313119be6a307254cdccb38","urls":["bzz-raw://60cf377d4a17957d78c0e14708daa10c3d44831a5a567275293126b54e572a07","dweb:/ipfs/QmT55QZ9W7tu9NzmKMNWp5LSESyNbW8NrjnXYZ6mAujYQ4"],"license":"AGPL-3.0-or-later"}},"version":1},"id":60} \ No newline at end of file diff --git a/evm/out/MaverickV2SwapAdapter.sol/IWETH9.json b/evm/out/MaverickV2SwapAdapter.sol/IWETH9.json deleted file mode 100644 index fe4f813..0000000 --- a/evm/out/MaverickV2SwapAdapter.sol/IWETH9.json +++ /dev/null @@ -1 +0,0 @@ -{"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":"deposit","inputs":[],"outputs":[],"stateMutability":"payable"},{"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":"function","name":"withdraw","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[],"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}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","deposit()":"d0e30db0","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256)":"2e1a7d4d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"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\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"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\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deposit()\":{\"notice\":\"Deposit ether to get wrapped ether\"},\"withdraw(uint256)\":{\"notice\":\"Withdraw wrapped ether to get ether\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/maverick-v2/MaverickV2SwapAdapter.sol\":\"IWETH9\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/maverick-v2/MaverickV2SwapAdapter.sol\":{\"keccak256\":\"0x4ba52bde98c1ef79e6730645f278c0601392d7466313119be6a307254cdccb38\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://60cf377d4a17957d78c0e14708daa10c3d44831a5a567275293126b54e572a07\",\"dweb:/ipfs/QmT55QZ9W7tu9NzmKMNWp5LSESyNbW8NrjnXYZ6mAujYQ4\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"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":"payable","type":"function","name":"deposit"},{"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"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdraw"}],"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":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{"deposit()":{"notice":"Deposit ether to get wrapped ether"},"withdraw(uint256)":{"notice":"Withdraw wrapped ether to get ether"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/maverick-v2/MaverickV2SwapAdapter.sol":"IWETH9"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/maverick-v2/MaverickV2SwapAdapter.sol":{"keccak256":"0x4ba52bde98c1ef79e6730645f278c0601392d7466313119be6a307254cdccb38","urls":["bzz-raw://60cf377d4a17957d78c0e14708daa10c3d44831a5a567275293126b54e572a07","dweb:/ipfs/QmT55QZ9W7tu9NzmKMNWp5LSESyNbW8NrjnXYZ6mAujYQ4"],"license":"AGPL-3.0-or-later"}},"version":1},"id":60} \ No newline at end of file diff --git a/evm/out/MaverickV2SwapAdapter.sol/MaverickV2SwapAdapter.json b/evm/out/MaverickV2SwapAdapter.sol/MaverickV2SwapAdapter.json deleted file mode 100644 index 05c0e70..0000000 --- a/evm/out/MaverickV2SwapAdapter.sol/MaverickV2SwapAdapter.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"factory_","type":"address","internalType":"address"},{"name":"_quoter","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"factory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IMaverickV2Factory"}],"stateMutability":"view"},{"type":"function","name":"getCapabilities","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"capabilities","type":"uint8[]","internalType":"enum ISwapAdapterTypes.Capability[]"}],"stateMutability":"pure"},{"type":"function","name":"getLimits","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"}],"outputs":[{"name":"limits","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getPoolIds","inputs":[{"name":"offset","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"ids","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"getTokens","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"maverickV2SwapCallback","inputs":[{"name":"tokenIn","type":"address","internalType":"contract IERC20"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"price","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"specifiedAmounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"calculatedPrices","type":"tuple[]","internalType":"struct ISwapAdapterTypes.Fraction[]","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"priceAt","inputs":[{"name":"pool","type":"address","internalType":"contract IMaverickV2Pool"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"sellAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"calculatedPrice","type":"tuple","internalType":"struct ISwapAdapterTypes.Fraction","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"quoter","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IMaverickV2Quoter"}],"stateMutability":"view"},{"type":"function","name":"swap","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"side","type":"uint8","internalType":"enum ISwapAdapterTypes.OrderSide"},{"name":"specifiedAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"trade","type":"tuple","internalType":"struct ISwapAdapterTypes.Trade","components":[{"name":"calculatedAmount","type":"uint256","internalType":"uint256"},{"name":"gasUsed","type":"uint256","internalType":"uint256"},{"name":"price","type":"tuple","internalType":"struct ISwapAdapterTypes.Fraction","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"nonpayable"},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LimitExceeded","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotImplemented","inputs":[{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"Unavailable","inputs":[{"name":"reason","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x60c03461009a57601f61138538819003918201601f19168301916001600160401b0383118484101761009e57808492604094855283398101031261009a57610052602061004b836100b2565b92016100b2565b6001600160a01b039182166080521660a0526040516112be90816100c78239608051818181610233015281816105ef01526108ac015260a0518181816101ef0152610db90152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361009a5756fe6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c8063212dd07014610a4e57806323eeca011461086b57806348bd7dfd146107a557806367ca7c91146105715780638307c6551461050b578063a9270fbe146103e4578063aad6e48814610262578063c45a01551461021e578063c6bbd5a7146101da5763ecbbc0330361000e57346101d65760203660031901126101d6576040516100ab606082610b39565b6002815260208101604036823760043560601c60405162fc63d160e41b8152602081600481855afa9182156101ae576004926020925f916101b9575b506001600160a01b03166100fa86610ede565b52604051635f64b55b60e01b815292839182905afa9081156101ae575f9161017f575b509091906001600160a01b031661013382610eeb565b52604051918291602083019060208452518091526040830191905f5b81811061015d575050500390f35b82516001600160a01b031684528594506020938401939092019160010161014f565b6101a1915060203d6020116101a7575b6101998183610b39565b810190610b8b565b5f61011d565b503d61018f565b6040513d5f823e3d90fd5b6101d09150833d85116101a7576101998183610b39565b5f6100e7565b5f80fd5b346101d6575f3660031901126101d6576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101d6575f3660031901126101d6576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101d65760803660031901126101d65761027b610a9b565b610283610ab1565b5060643567ffffffffffffffff81116101d657366023820112156101d6578060040135906102b082610b5b565b916102be6040519384610b39565b8083526024602084019160051b830101913683116101d657602401905b8282106103d4575050508051916102f183610b5b565b926102ff6040519485610b39565b80845261030e601f1991610b5b565b015f5b8181106103b157505060043560601c905f5b8351811015610360578061034461033c60019387610efb565b518486610ceb565b61034e8288610efb565b526103598187610efb565b5001610323565b846040518091602082016020835281518091526020604084019201905f5b81811061038c575050500390f35b825180518552602090810151818601528695506040909401939092019160010161037e565b6020906040516103c081610b01565b5f81525f8382015282828801015201610311565b81358152602091820191016102db565b346101d65760046101206103f736610ac7565b9160409391935194858092631865c57d60e01b825260601c5afa9283156101ae575f936104da575b506040519261042f606085610b39565b600284526020840192604036853781516020909201516001600160801b03908116939216916001600160a01b03908116911610156104bf5761047084610ede565b5261047a83610eeb565b52905b604051918291602083019060208452518091526040830191905f5b8181106104a6575050500390f35b8251845285945060209384019390920191600101610498565b906104c984610ede565b526104d383610eeb565b529061047d565b6104fd9193506101203d8111610504575b6104f58183610b39565b810190610bd9565b918361041f565b503d6104eb565b346101d65760a03660031901126101d657610524610a9b565b61052c610ab1565b5060643560028110156101d65760809161054c9160843591600435610f0f565b6020604080519280518452828101518385015201518051604084015201516060820152f35b346101d65760803660031901126101d6576004356001600160a01b038116908190036101d65760643567ffffffffffffffff81116101d657366023820112156101d657806004013567ffffffffffffffff81116101d65781013660248201116101d6576040516315e3ab2960e21b81523360048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156101ae575f9161076b575b501561073557602090829003126101d6576024013560018060a01b0381168091036101d6575f809160405160208101916323b872dd60e01b83526024820152336044820152602435606482015260648152610683608482610b39565b519082855af13d15610729573d67ffffffffffffffff8111610715576106cb91604051916106bb6020601f19601f8401160184610b39565b82523d5f602084013e5b8361122a565b80519081151591826106f2575b50506106e057005b635274afe760e01b5f5260045260245ffd5b81925090602091810103126101d657602061070d9101610bcc565b1582806106d8565b634e487b7160e01b5f52604160045260245ffd5b6106cb906060906106c5565b60405162461bcd60e51b815260206004820152600e60248201526d139bdd119858dd1bdc9e541bdbdb60921b6044820152606490fd5b90506020813d60201161079d575b8161078660209383610b39565b810103126101d65761079790610bcc565b84610627565b3d9150610779565b346101d6576107b336610ac7565b5050506040516107c4608082610b39565b6003815260208101606036823760016107dc83610ede565b5260026107e883610eeb565b528151600210156108575760036060830152604051906020820192602083525180935260408201905f935b8085106108205783830384f35b9091825190600a8210156108435760208160019382935201930194019390610813565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b346101d65760403660031901126101d6576004356024358101808211610a3a5760405163b4b9d1f160e01b8152600481019290925260248201525f816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156101ae575f91610998575b5080519061090a6108f483610b5b565b926109026040519485610b39565b808452610b5b565b602083019190601f19013683375f5b8151811015610953576001906bffffffffffffffffffffffff1961093d8285610efb565b5160601b1661094c8287610efb565b5201610919565b505090604051918291602083019060208452518091526040830191905f5b81811061097f575050500390f35b8251845285945060209384019390920191600101610971565b90503d805f833e6109a98183610b39565b8101906020818303126101d65780519067ffffffffffffffff82116101d657019080601f830112156101d6578151906109e182610b5b565b926109ef6040519485610b39565b82845260208085019360051b8201019182116101d657602001915b818310610a1a57505050816108e4565b82516001600160a01b03811681036101d657815260209283019201610a0a565b634e487b7160e01b5f52601160045260245ffd5b346101d65760603660031901126101d6576004356001600160a01b03811681036101d657610a89604091610a80610a9b565b60443591610ceb565b60208251918051835201516020820152f35b602435906001600160a01b03821682036101d657565b604435906001600160a01b03821682036101d657565b60609060031901126101d657600435906024356001600160a01b03811681036101d657906044356001600160a01b03811681036101d65790565b6040810190811067ffffffffffffffff82111761071557604052565b6080810190811067ffffffffffffffff82111761071557604052565b90601f8019910116810190811067ffffffffffffffff82111761071557604052565b67ffffffffffffffff81116107155760051b60200190565b60405190610b8082610b01565b5f6020838281520152565b908160209103126101d657516001600160a01b03811681036101d65790565b51906001600160801b03821682036101d657565b51908160070b82036101d657565b519081151582036101d657565b90816101209103126101d65760405190610120820182811067ffffffffffffffff82111761071557604052610c0d81610baa565b8252610c1b60208201610baa565b6020830152610c2c60408201610bbe565b6040830152610c3d60608201610bbe565b6060830152608081015164ffffffffff811681036101d657608083015260a08101518060030b81036101d65760a0830152610c7a60c08201610bcc565b60c083015260e08101519063ffffffff821682036101d6576101009160e0840152015160ff811681036101d65761010082015290565b60030b6063190190637fffffff198212637fffffff831317610a3a57565b60030b60640190637fffffff8213637fffffff19831217610a3a57565b919091610cf6610b73565b5060405162fc63d160e41b81526001600160a01b03919091169290602081600481875afa9081156101ae575f91610ebf575b506001600160a01b039182169116148015610e5c57604051631865c57d60e01b815261012081600481875afa80156101ae5760a0610d7b916001600160801b03935f91610e3d575b50015160030b610cce565b925b604051946349b5931160e01b8652600486015216602484015260448301525f606483015260030b608482015260608160a4815f60018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19081156101ae575f905f92610e03575b5060405191610df983610b01565b8252602082015290565b9150506060813d606011610e35575b81610e1f60609383610b39565b810103126101d65760208151910151905f610deb565b3d9150610e12565b610e5691506101203d8111610504576104f58183610b39565b5f610d70565b604051631865c57d60e01b815261012081600481875afa80156101ae5760a0610e9a916001600160801b03935f91610ea0575b50015160030b610cb0565b92610d7d565b610eb991506101203d8111610504576104f58183610b39565b5f610e8f565b610ed8915060203d6020116101a7576101998183610b39565b5f610d28565b8051156108575760200190565b8051600110156108575760400190565b80518210156108575760209160051b010190565b9290604051936060850185811067ffffffffffffffff821117610715576040525f85525f6020860152604051610f4481610b01565b5f81525f602082015260408601528483156111a7575060601c9060405162fc63d160e41b8152602081600481865afa9081156101ae575f91611188575b506001600160a01b03828116911614801561114c57604051631865c57d60e01b815261012081600481875afa9081156101ae57610fcc9160a0915f91610e3d5750015160030b610cce565b905b5a956002811015610843576001036110a6579360409161103b95835192610ff484610b1d565b8352602083015260018383015260030b6060820152815190336020830152602082526110208383610b39565b8251633eece7db60e01b8152958692839233600485016111c6565b03815f865af19182156101ae5761105c935f93611074575b50828652610ceb565b60408301525b5a8103908111610a3a57602082015290565b61109791935060403d60401161109f575b61108f8183610b39565b8101906111b0565b50915f611053565b503d611085565b6040906111029594928251916110bb83610b1d565b86835260208301525f8383015260030b6060820152815190336020830152602082526110e78383610b39565b8251633eece7db60e01b8152968792839233600485016111c6565b03815f855af180156101ae57611121945f9161112b575b508652610ceb565b6040830152611062565b611144915060403d60401161109f5761108f8183610b39565b90505f611119565b604051631865c57d60e01b815261012081600481875afa9081156101ae576111829160a0915f91610ea05750015160030b610cb0565b90610fce565b6111a1915060203d6020116101a7576101998183610b39565b5f610f81565b94505050505090565b91908260409103126101d6576020825192015190565b9192606060e09460209360018060a01b0316855280518486015283810151151560408601526040810151151582860152015160030b608084015260c060a084015280519182918260c0860152018484015e5f828201840152601f01601f1916010190565b9061124e575080511561123f57805190602001fd5b63d6bda27560e01b5f5260045ffd5b8151158061127f575b61125f575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561125756fea2646970667358221220f3ef5375aaed25576a473447336d380f40555b4f9090d9d18f46219133f4367064736f6c634300081b0033","sourceMap":"339:7554:60:-:0;;;;;;;;;;;;;-1:-1:-1;;339:7554:60;;;;-1:-1:-1;;;;;339:7554:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;-1:-1:-1;;;;;339:7554:60;;;807:38;;339:7554;;855:35;339:7554;;;;;;;;807:38;339:7554;;;;;;;;;;;;;;;855:35;339:7554;;;;;;;;;;;;-1:-1:-1;339:7554:60;;;;;;-1:-1:-1;339:7554:60;;;;;-1:-1:-1;339:7554:60;;;;-1:-1:-1;;;;;339:7554:60;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c8063212dd07014610a4e57806323eeca011461086b57806348bd7dfd146107a557806367ca7c91146105715780638307c6551461050b578063a9270fbe146103e4578063aad6e48814610262578063c45a01551461021e578063c6bbd5a7146101da5763ecbbc0330361000e57346101d65760203660031901126101d6576040516100ab606082610b39565b6002815260208101604036823760043560601c60405162fc63d160e41b8152602081600481855afa9182156101ae576004926020925f916101b9575b506001600160a01b03166100fa86610ede565b52604051635f64b55b60e01b815292839182905afa9081156101ae575f9161017f575b509091906001600160a01b031661013382610eeb565b52604051918291602083019060208452518091526040830191905f5b81811061015d575050500390f35b82516001600160a01b031684528594506020938401939092019160010161014f565b6101a1915060203d6020116101a7575b6101998183610b39565b810190610b8b565b5f61011d565b503d61018f565b6040513d5f823e3d90fd5b6101d09150833d85116101a7576101998183610b39565b5f6100e7565b5f80fd5b346101d6575f3660031901126101d6576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101d6575f3660031901126101d6576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101d65760803660031901126101d65761027b610a9b565b610283610ab1565b5060643567ffffffffffffffff81116101d657366023820112156101d6578060040135906102b082610b5b565b916102be6040519384610b39565b8083526024602084019160051b830101913683116101d657602401905b8282106103d4575050508051916102f183610b5b565b926102ff6040519485610b39565b80845261030e601f1991610b5b565b015f5b8181106103b157505060043560601c905f5b8351811015610360578061034461033c60019387610efb565b518486610ceb565b61034e8288610efb565b526103598187610efb565b5001610323565b846040518091602082016020835281518091526020604084019201905f5b81811061038c575050500390f35b825180518552602090810151818601528695506040909401939092019160010161037e565b6020906040516103c081610b01565b5f81525f8382015282828801015201610311565b81358152602091820191016102db565b346101d65760046101206103f736610ac7565b9160409391935194858092631865c57d60e01b825260601c5afa9283156101ae575f936104da575b506040519261042f606085610b39565b600284526020840192604036853781516020909201516001600160801b03908116939216916001600160a01b03908116911610156104bf5761047084610ede565b5261047a83610eeb565b52905b604051918291602083019060208452518091526040830191905f5b8181106104a6575050500390f35b8251845285945060209384019390920191600101610498565b906104c984610ede565b526104d383610eeb565b529061047d565b6104fd9193506101203d8111610504575b6104f58183610b39565b810190610bd9565b918361041f565b503d6104eb565b346101d65760a03660031901126101d657610524610a9b565b61052c610ab1565b5060643560028110156101d65760809161054c9160843591600435610f0f565b6020604080519280518452828101518385015201518051604084015201516060820152f35b346101d65760803660031901126101d6576004356001600160a01b038116908190036101d65760643567ffffffffffffffff81116101d657366023820112156101d657806004013567ffffffffffffffff81116101d65781013660248201116101d6576040516315e3ab2960e21b81523360048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156101ae575f9161076b575b501561073557602090829003126101d6576024013560018060a01b0381168091036101d6575f809160405160208101916323b872dd60e01b83526024820152336044820152602435606482015260648152610683608482610b39565b519082855af13d15610729573d67ffffffffffffffff8111610715576106cb91604051916106bb6020601f19601f8401160184610b39565b82523d5f602084013e5b8361122a565b80519081151591826106f2575b50506106e057005b635274afe760e01b5f5260045260245ffd5b81925090602091810103126101d657602061070d9101610bcc565b1582806106d8565b634e487b7160e01b5f52604160045260245ffd5b6106cb906060906106c5565b60405162461bcd60e51b815260206004820152600e60248201526d139bdd119858dd1bdc9e541bdbdb60921b6044820152606490fd5b90506020813d60201161079d575b8161078660209383610b39565b810103126101d65761079790610bcc565b84610627565b3d9150610779565b346101d6576107b336610ac7565b5050506040516107c4608082610b39565b6003815260208101606036823760016107dc83610ede565b5260026107e883610eeb565b528151600210156108575760036060830152604051906020820192602083525180935260408201905f935b8085106108205783830384f35b9091825190600a8210156108435760208160019382935201930194019390610813565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b346101d65760403660031901126101d6576004356024358101808211610a3a5760405163b4b9d1f160e01b8152600481019290925260248201525f816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156101ae575f91610998575b5080519061090a6108f483610b5b565b926109026040519485610b39565b808452610b5b565b602083019190601f19013683375f5b8151811015610953576001906bffffffffffffffffffffffff1961093d8285610efb565b5160601b1661094c8287610efb565b5201610919565b505090604051918291602083019060208452518091526040830191905f5b81811061097f575050500390f35b8251845285945060209384019390920191600101610971565b90503d805f833e6109a98183610b39565b8101906020818303126101d65780519067ffffffffffffffff82116101d657019080601f830112156101d6578151906109e182610b5b565b926109ef6040519485610b39565b82845260208085019360051b8201019182116101d657602001915b818310610a1a57505050816108e4565b82516001600160a01b03811681036101d657815260209283019201610a0a565b634e487b7160e01b5f52601160045260245ffd5b346101d65760603660031901126101d6576004356001600160a01b03811681036101d657610a89604091610a80610a9b565b60443591610ceb565b60208251918051835201516020820152f35b602435906001600160a01b03821682036101d657565b604435906001600160a01b03821682036101d657565b60609060031901126101d657600435906024356001600160a01b03811681036101d657906044356001600160a01b03811681036101d65790565b6040810190811067ffffffffffffffff82111761071557604052565b6080810190811067ffffffffffffffff82111761071557604052565b90601f8019910116810190811067ffffffffffffffff82111761071557604052565b67ffffffffffffffff81116107155760051b60200190565b60405190610b8082610b01565b5f6020838281520152565b908160209103126101d657516001600160a01b03811681036101d65790565b51906001600160801b03821682036101d657565b51908160070b82036101d657565b519081151582036101d657565b90816101209103126101d65760405190610120820182811067ffffffffffffffff82111761071557604052610c0d81610baa565b8252610c1b60208201610baa565b6020830152610c2c60408201610bbe565b6040830152610c3d60608201610bbe565b6060830152608081015164ffffffffff811681036101d657608083015260a08101518060030b81036101d65760a0830152610c7a60c08201610bcc565b60c083015260e08101519063ffffffff821682036101d6576101009160e0840152015160ff811681036101d65761010082015290565b60030b6063190190637fffffff198212637fffffff831317610a3a57565b60030b60640190637fffffff8213637fffffff19831217610a3a57565b919091610cf6610b73565b5060405162fc63d160e41b81526001600160a01b03919091169290602081600481875afa9081156101ae575f91610ebf575b506001600160a01b039182169116148015610e5c57604051631865c57d60e01b815261012081600481875afa80156101ae5760a0610d7b916001600160801b03935f91610e3d575b50015160030b610cce565b925b604051946349b5931160e01b8652600486015216602484015260448301525f606483015260030b608482015260608160a4815f60018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19081156101ae575f905f92610e03575b5060405191610df983610b01565b8252602082015290565b9150506060813d606011610e35575b81610e1f60609383610b39565b810103126101d65760208151910151905f610deb565b3d9150610e12565b610e5691506101203d8111610504576104f58183610b39565b5f610d70565b604051631865c57d60e01b815261012081600481875afa80156101ae5760a0610e9a916001600160801b03935f91610ea0575b50015160030b610cb0565b92610d7d565b610eb991506101203d8111610504576104f58183610b39565b5f610e8f565b610ed8915060203d6020116101a7576101998183610b39565b5f610d28565b8051156108575760200190565b8051600110156108575760400190565b80518210156108575760209160051b010190565b9290604051936060850185811067ffffffffffffffff821117610715576040525f85525f6020860152604051610f4481610b01565b5f81525f602082015260408601528483156111a7575060601c9060405162fc63d160e41b8152602081600481865afa9081156101ae575f91611188575b506001600160a01b03828116911614801561114c57604051631865c57d60e01b815261012081600481875afa9081156101ae57610fcc9160a0915f91610e3d5750015160030b610cce565b905b5a956002811015610843576001036110a6579360409161103b95835192610ff484610b1d565b8352602083015260018383015260030b6060820152815190336020830152602082526110208383610b39565b8251633eece7db60e01b8152958692839233600485016111c6565b03815f865af19182156101ae5761105c935f93611074575b50828652610ceb565b60408301525b5a8103908111610a3a57602082015290565b61109791935060403d60401161109f575b61108f8183610b39565b8101906111b0565b50915f611053565b503d611085565b6040906111029594928251916110bb83610b1d565b86835260208301525f8383015260030b6060820152815190336020830152602082526110e78383610b39565b8251633eece7db60e01b8152968792839233600485016111c6565b03815f855af180156101ae57611121945f9161112b575b508652610ceb565b6040830152611062565b611144915060403d60401161109f5761108f8183610b39565b90505f611119565b604051631865c57d60e01b815261012081600481875afa9081156101ae576111829160a0915f91610ea05750015160030b610cb0565b90610fce565b6111a1915060203d6020116101a7576101998183610b39565b5f610f81565b94505050505090565b91908260409103126101d6576020825192015190565b9192606060e09460209360018060a01b0316855280518486015283810151151560408601526040810151151582860152015160030b608084015260c060a084015280519182918260c0860152018484015e5f828201840152601f01601f1916010190565b9061124e575080511561123f57805190602001fd5b63d6bda27560e01b5f5260045ffd5b8151158061127f575b61125f575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561125756fea2646970667358221220f3ef5375aaed25576a473447336d380f40555b4f9090d9d18f46219133f4367064736f6c634300081b0033","sourceMap":"339:7554:60:-:0;;;;;;;;;-1:-1:-1;339:7554:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;339:7554:60;;;;;;;;;;:::i;:::-;7295:1;339:7554;;;;;;;;;;;;;;;;;;7401:13;;339:7554;7401:13;339:7554;7401:13;;;;;;;;;339:7554;7401:13;339:7554;7401:13;339:7554;7401:13;;;339:7554;-1:-1:-1;;;;;;339:7554:60;7381:34;;;:::i;:::-;339:7554;;;-1:-1:-1;;;7445:13:60;;339:7554;;;;;7445:13;;;;;;;339:7554;7445:13;;;339:7554;-1:-1:-1;339:7554:60;;;-1:-1:-1;;;;;339:7554:60;7425:34;339:7554;7425:34;:::i;:::-;339:7554;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;339:7554:60;;;;;-1:-1:-1;339:7554:60;;;;;;;;;;;;;7445:13;;;;339:7554;7445:13;339:7554;7445:13;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;339:7554;;;;;;;;;7401:13;;;;;;;;;;;;;;:::i;:::-;;;;339:7554;;;;;;;;;;-1:-1:-1;;339:7554:60;;;;;;474:41;-1:-1:-1;;;;;339:7554:60;;;;;;;;;;;;-1:-1:-1;;339:7554:60;;;;;;425:43;-1:-1:-1;;;;;339:7554:60;;;;;;;;;;;;-1:-1:-1;;339:7554:60;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;1325:13;339:7554;1369:3;339:7554;;1340:27;;;;;1435:19;1410:45;1435:19;339:7554;1435:19;;;:::i;:::-;339:7554;1410:45;;;:::i;:::-;1388:67;;;;:::i;:::-;;;;;;:::i;:::-;;339:7554;1325:13;;1340:27;;339:7554;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;339:7554:60;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;339:7554:60;;-1:-1:-1;339:7554:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6397:15;339:7554;;;:::i;:::-;;;;;;;;;;;;;;6397:15;;339:7554;;6397:15;;;;;;;339:7554;6397:15;;;339:7554;;;;;;;;;:::i;:::-;6446:1;339:7554;;;;;;;;;;;;;6508:14;;;339:7554;-1:-1:-1;;;;;339:7554:60;;;;;;;-1:-1:-1;;;;;339:7554:60;;;;;6536:20;339:7554;;;6572:14;;;:::i;:::-;339:7554;6600:14;;;:::i;:::-;339:7554;6532:166;;339:7554;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;339:7554:60;;;;;;;;;;;;;6532:166;6645:14;;;;:::i;:::-;339:7554;6673:14;;;:::i;:::-;339:7554;6532:166;;;6397:15;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;339:7554;;;;;;-1:-1:-1;;339:7554:60;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;339:7554:60;;;;;;-1:-1:-1;;;;;339:7554:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5871:50:60;;5909:10;339:7554;5871:50;;339:7554;;;;;5871:7;-1:-1:-1;;;;;339:7554:60;5871:50;;;;;;;339:7554;5871:50;;;339:7554;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1829:53:32;;339:7554:60;;;;1829:53:32;;339:7554:60;1829:53:32;;339:7554:60;5909:10;339:7554;;;;;;;;;;;1829:53:32;;;;;;:::i;:::-;3256:31:33;;;;;;339:7554:60;;;;;;;;;;3304:55:33;339:7554:60;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3304:55:33;;:::i;:::-;339:7554:60;;6960:22:32;;;;:57;;;;339:7554:60;6956:135:32;;;;339:7554:60;6956:135:32;7040:40;;;339:7554:60;7040:40:32;339:7554:60;;;;7040:40:32;6960:57;6987:30;;;;339:7554:60;6987:30:32;;;339:7554:60;;;;;;6987:30:32;;339:7554:60;:::i;:::-;6986:31:32;6960:57;;;;339:7554:60;;;;;;;;;;;;;3304:55:33;339:7554:60;;;;;;;;-1:-1:-1;;;339:7554:60;;;;;;;;;;;;-1:-1:-1;;;339:7554:60;;;;;;;5871:50;;;339:7554;5871:50;;339:7554;5871:50;;;;;;339:7554;5871:50;;;:::i;:::-;;;339:7554;;;;;;;:::i;:::-;5871:50;;;;;;-1:-1:-1;5871:50:60;;339:7554;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;6939:1;339:7554;;;;;;;;;6969:20;6951:38;;;:::i;:::-;339:7554;7017:19;6999:37;;;:::i;:::-;339:7554;;;7017:19;339:7554;;;;6939:1;339:7554;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6969:20;339:7554;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;339:7554:60;;;;;;;;;;;;;;;;;-1:-1:-1;;;7689:38:60;;339:7554;7689:38;;339:7554;;;;;;;;-1:-1:-1;339:7554:60;7689:38;339:7554;7689:7;-1:-1:-1;;;;;339:7554:60;7689:38;;;;;;;339:7554;7689:38;;;339:7554;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;-1:-1:-1;;339:7554:60;;;;;7818:3;339:7554;;7800:16;;;;;339:7554;;-1:-1:-1;;7863:8:60;339:7554;7863:8;;:::i;:::-;339:7554;;;;7837:37;;;;:::i;:::-;339:7554;;7785:13;;7800:16;;;;339:7554;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;339:7554:60;;;;;;;;;;;;;7689:38;;;;;339:7554;7689:38;;;;;;:::i;:::-;;;339:7554;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;7689:38;;;;;;339:7554;;;-1:-1:-1;;;;;339:7554:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;339:7554:60;;;;;;-1:-1:-1;;;;;339:7554:60;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;339:7554:60;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;339:7554:60;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;339:7554:60;;;;;;;;;-1:-1:-1;;;;;339:7554:60;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;339:7554:60;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;339:7554:60;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;339:7554:60;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;339:7554:60;;-1:-1:-1;;339:7554:60;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;;339:7554:60;;;;;:::o;1846:569::-;;;;339:7554;;:::i;:::-;-1:-1:-1;339:7554:60;;-1:-1:-1;;;2053:13:60;;-1:-1:-1;;;;;339:7554:60;;;;;;2053:13;339:7554;2053:13;339:7554;;2053:13;;;;;;;-1:-1:-1;2053:13:60;;;1846:569;-1:-1:-1;;;;;;339:7554:60;;;;;2032:35;2096:104;;;;339:7554;;-1:-1:-1;;;2121:15:60;;;339:7554;2053:13;339:7554;2121:15;;;;;;;:26;:32;:15;-1:-1:-1;;;;;2121:15:60;-1:-1:-1;2121:15:60;;;2096:104;2121:26;;339:7554;;;2121:32;:::i;:::-;2096:104;;339:7554;;;;;;2251:99;;2053:13;2251:99;;339:7554;;;;;;;;;;-1:-1:-1;339:7554:60;;;;;;;;;;;;2251:99;339:7554;-1:-1:-1;339:7554:60;;;;;2251:6;339:7554;2251:99;;;;;;;-1:-1:-1;;;2251:99:60;;;2096:104;339:7554;;;;;;;:::i;:::-;;;2053:13;2379:29;;339:7554;1846:569;:::o;2251:99::-;;;;339:7554;2251:99;;339:7554;2251:99;;;;;;339:7554;2251:99;;;:::i;:::-;;;339:7554;;;;2053:13;339:7554;;;;;2251:99;;;;;;;-1:-1:-1;2251:99:60;;2121:15;;;;;;;;;;;;;;:::i;:::-;;;;2096:104;339:7554;;-1:-1:-1;;;2168:15:60;;;339:7554;2053:13;339:7554;2168:15;;;;;;;:26;:32;:15;-1:-1:-1;;;;;2168:15:60;-1:-1:-1;2168:15:60;;;2096:104;2168:26;;339:7554;;;2168:32;:::i;:::-;2096:104;;;2168:15;;;;;;;;;;;;;;:::i;:::-;;;;2053:13;;;;;;;;;;;;;;:::i;:::-;;;;339:7554;;;;;;;;;:::o;:::-;;;6969:20;339:7554;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;2454:1069::-;;;339:7554;;;;;;;;;;;;;;;;;-1:-1:-1;339:7554:60;;-1:-1:-1;339:7554:60;;;;;;;;;:::i;:::-;-1:-1:-1;339:7554:60;;-1:-1:-1;339:7554:60;;;;;;;;2626:18;2660:20;;2656:63;;339:7554;;;;;;;;;2842:13;;339:7554;2842:13;;;;;;;;;;;-1:-1:-1;2842:13:60;;;2454:1069;-1:-1:-1;;;;;;339:7554:60;;;;;2821:35;2884:104;;;;339:7554;;-1:-1:-1;;;2909:15:60;;;339:7554;2842:13;339:7554;2909:15;;;;;;;;:32;:15;:26;:15;-1:-1:-1;2909:15:60;;;:26;;339:7554;;;2909:32;:::i;:::-;2884:104;;3018:9;339:7554;;;;;;;3050:13;3042:21;3050:13;;339:7554;;;4406:39;339:7554;;;;;;;:::i;:::-;;;;4088:187;;339:7554;3050:13;4088:187;;;339:7554;;;;4088:187;;339:7554;;;4363:10;;339:7554;4352:22;;339:7554;;4352:22;;;;;;:::i;:::-;339:7554;;-1:-1:-1;;;4406:39:60;;339:7554;;;;;4363:10;2842:13;4406:39;;;:::i;:::-;;;-1:-1:-1;4406:39:60;;;;;;;;3197:48;4406:39;-1:-1:-1;4406:39:60;;;3038:409;339:7554;;;;3197:48;:::i;:::-;339:7554;3183:11;;:62;3038:409;3485:9;339:7554;;;;;;;;3457:13;;339:7554;2454:1069;:::o;4406:39::-;;;;;339:7554;4406:39;339:7554;4406:39;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;3038:409;339:7554;;5361:39;339:7554;;;;;;;;;:::i;:::-;;;;;5040:188;;339:7554;-1:-1:-1;5040:188:60;;;339:7554;;;;5040:188;;339:7554;;;5316:10;;339:7554;5305:22;;339:7554;;5305:22;;;;;;:::i;:::-;339:7554;;-1:-1:-1;;;5361:39:60;;339:7554;;;;;5316:10;2842:13;5361:39;;;:::i;:::-;;;-1:-1:-1;5361:39:60;;;;;;;3395:41;339:7554;-1:-1:-1;5361:39:60;;;3038:409;339:7554;;;3395:41;:::i;:::-;339:7554;3381:11;;:55;3038:409;;5361:39;;;;339:7554;5361:39;339:7554;5361:39;;;;;;;:::i;:::-;;;;;;2884:104;339:7554;;-1:-1:-1;;;2956:15:60;;;339:7554;2842:13;339:7554;2956:15;;;;;;;;:32;:15;:26;:15;-1:-1:-1;2956:15:60;;;:26;;339:7554;;;2956:32;:::i;:::-;2884:104;;;2842:13;;;;339:7554;2842:13;339:7554;2842:13;;;;;;;:::i;:::-;;;;2656:63;2696:12;;;;;;;:::o;339:7554::-;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;339:7554:60;;;;:::o;4421:582:33:-;;4593:8;;-1:-1:-1;339:7554:60;;5674:21:33;:17;;5846:142;;;;;;5670:385;6025:19;;;5694:1;6025:19;;5694:1;6025:19;4589:408;339:7554:60;;4841:22:33;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:33;4917:24;;;-1:-1:-1;;;;;339:7554:60;;;;4917:24:33;339:7554:60;;;4917:24:33;4841:49;4867:18;;;:23;4841:49;","linkReferences":{},"immutableReferences":{"66057":[{"start":563,"length":32},{"start":1519,"length":32},{"start":2220,"length":32}],"66060":[{"start":495,"length":32},{"start":3513,"length":32}]}},"methodIdentifiers":{"factory()":"c45a0155","getCapabilities(bytes32,address,address)":"48bd7dfd","getLimits(bytes32,address,address)":"a9270fbe","getPoolIds(uint256,uint256)":"23eeca01","getTokens(bytes32)":"ecbbc033","maverickV2SwapCallback(address,uint256,uint256,bytes)":"67ca7c91","price(bytes32,address,address,uint256[])":"aad6e488","priceAt(address,address,uint256)":"212dd070","quoter()":"c6bbd5a7","swap(bytes32,address,address,uint8,uint256)":"8307c655"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factory_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_quoter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"LimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"Unavailable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"contract IMaverickV2Factory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getCapabilities\",\"outputs\":[{\"internalType\":\"enum ISwapAdapterTypes.Capability[]\",\"name\":\"capabilities\",\"type\":\"uint8[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"}],\"name\":\"getLimits\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"limits\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"getPoolIds\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"ids\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"getTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"maverickV2SwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"specifiedAmounts\",\"type\":\"uint256[]\"}],\"name\":\"price\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction[]\",\"name\":\"calculatedPrices\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IMaverickV2Pool\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sellAmount\",\"type\":\"uint256\"}],\"name\":\"priceAt\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction\",\"name\":\"calculatedPrice\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"quoter\",\"outputs\":[{\"internalType\":\"contract IMaverickV2Quoter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"enum ISwapAdapterTypes.OrderSide\",\"name\":\"side\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"calculatedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction\",\"name\":\"price\",\"type\":\"tuple\"}],\"internalType\":\"struct ISwapAdapterTypes.Trade\",\"name\":\"trade\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"LimitExceeded(uint256)\":[{\"details\":\"The LimitExceeded error is thrown when a limit has been exceeded. E.g. the specified amount can't be traded safely.\"}],\"NotImplemented(string)\":[{\"details\":\"The NotImplemented error is thrown when a function is not implemented.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}],\"Unavailable(string)\":[{\"details\":\"The Unavailable error is thrown when a pool or swap is not available for unexpected reason. E.g. it was paused due to a bug.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_quoter\":\"The address of the MaverickV2 quoter.\",\"factory_\":\"The address of the MaverickV2 factory.\"}},\"getCapabilities(bytes32,address,address)\":{\"params\":{\"poolId\":\"The ID of the trading pool.\"},\"returns\":{\"capabilities\":\"An array of Capability.\"}},\"getLimits(bytes32,address,address)\":{\"details\":\"Retrieve the maximum limits of a token that can be traded. The limit is reached when the change in the received amounts is zero or close to zero or when the swap fails because of the pools restrictions. Overestimate if in doubt rather than underestimate. The swap function should not error with `LimitExceeded` if called with amounts below the limit.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\"},\"returns\":{\"limits\":\"An array of size two indicating the limit amount for the sell token (maximum the pool is willing to buy in sell token) as well as the limit amount of the buy token (maximum the pool is willing to sell in buy token).\"}},\"getPoolIds(uint256,uint256)\":{\"details\":\"Mainly used for testing. It is alright to not return all available pools here. Nevertheless, this is useful to test against the substreams implementation. If implemented, it saves time writing custom tests.\",\"params\":{\"limit\":\"The maximum number of pool IDs to retrieve.\",\"offset\":\"The starting index from which to retrieve pool IDs.\"},\"returns\":{\"ids\":\"An array of pool IDs.\"}},\"getTokens(bytes32)\":{\"details\":\"Mainly used for testing as this is redundant with the required substreams implementation.\",\"params\":{\"poolId\":\"The ID of the trading pool.\"},\"returns\":{\"tokens\":\"An array of address contracts.\"}},\"maverickV2SwapCallback(address,uint256,uint256,bytes)\":{\"params\":{\"amountIn\":\"The amount of the token being swapped.\",\"data\":\"The data passed to the callback.\",\"tokenIn\":\"The token being swapped.\"}},\"price(bytes32,address,address,uint256[])\":{\"details\":\"The returned prices should include all dex fees. In case the fee is dynamic on the amount traded, the returned price is expected to include the minimum fee. Note that the returned price should be the marginal price which is distinct from the executed price `swap(amount_in) / amount_in`! The marginal price is defined as the price to trade an arbitrarily small (almost zero) amount after the trade of (amount). E.g. the marginal price of a uniswap v2 pool at amount=0 is `reserve0/reserve1`. Ideally this method should be implemented, although it is optional as the price function can be numerically derived from the swap function. In case it is not available, it should be flagged via capabilities and calling it should revert using the `NotImplemented` error. The method needs to be implemented as view as this is usually more efficient and can be run in parallel.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\",\"specifiedAmounts\":\"Amounts to calculate marginal prices at.\"},\"returns\":{\"calculatedPrices\":\"array of prices as fractions corresponding to the provided amounts.\"}},\"priceAt(address,address,uint256)\":{\"params\":{\"pool\":\"The pool to calculate the price for.\",\"sellAmount\":\"The amount of the token to calculate the price for.\",\"sellToken\":\"The token to calculate the price for.\"},\"returns\":{\"calculatedPrice\":\"The calculated price of the token.\"}},\"swap(bytes32,address,address,uint8,uint256)\":{\"details\":\"This function should be state modifying, meaning it should actually execute the swap and change the state of the EVM accordingly. Please include a gas usage estimate for each amount. This can be achieved e.g. by using the `gasleft()` function. The return type `Trade` has an attribute called price which should contain the value of `price(specifiedAmount)`. As this is optional, defined via `Capability.PriceFunction`, it is valid to return a Fraction(0, 0) value for this price. In that case the price will be estimated numerically.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\",\"side\":\"The side of the trade (Sell or Buy).\",\"specifiedAmount\":\"The amount to be traded.\"},\"returns\":{\"trade\":\"Trade struct representing the executed trade.\"}}},\"title\":\"MaverickV2SwapAdapter\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Constructor to initialize the adapter with factory, quoter, and WETH addresses.\"},\"getCapabilities(bytes32,address,address)\":{\"notice\":\"Retrieves the capabilities of the selected pool.\"},\"getLimits(bytes32,address,address)\":{\"notice\":\"Retrieves the limits for each token.\"},\"getPoolIds(uint256,uint256)\":{\"notice\":\"Retrieves a range of pool IDs.\"},\"getTokens(bytes32)\":{\"notice\":\"Retrieves the tokens in the selected pool.\"},\"maverickV2SwapCallback(address,uint256,uint256,bytes)\":{\"notice\":\"MaverickV2SwapCallback is the callback function for MaverickV2 pools.\"},\"price(bytes32,address,address,uint256[])\":{\"notice\":\"Calculates marginal prices for specified amounts (optional).\"},\"priceAt(address,address,uint256)\":{\"notice\":\"Calculate the price of a token at a specified amount.\"},\"swap(bytes32,address,address,uint8,uint256)\":{\"notice\":\"Simulates swapping tokens on a given pool.\"}},\"notice\":\"Adapter for swapping tokens on MaverickV2 pools.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/maverick-v2/MaverickV2SwapAdapter.sol\":\"MaverickV2SwapAdapter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/maverick-v2/MaverickV2SwapAdapter.sol\":{\"keccak256\":\"0x4ba52bde98c1ef79e6730645f278c0601392d7466313119be6a307254cdccb38\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://60cf377d4a17957d78c0e14708daa10c3d44831a5a567275293126b54e572a07\",\"dweb:/ipfs/QmT55QZ9W7tu9NzmKMNWp5LSESyNbW8NrjnXYZ6mAujYQ4\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"factory_","type":"address"},{"internalType":"address","name":"_quoter","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"type":"error","name":"LimitExceeded"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"NotImplemented"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"Unavailable"},{"inputs":[],"stateMutability":"view","type":"function","name":"factory","outputs":[{"internalType":"contract IMaverickV2Factory","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function","name":"getCapabilities","outputs":[{"internalType":"enum ISwapAdapterTypes.Capability[]","name":"capabilities","type":"uint8[]"}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"}],"stateMutability":"view","type":"function","name":"getLimits","outputs":[{"internalType":"uint256[]","name":"limits","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPoolIds","outputs":[{"internalType":"bytes32[]","name":"ids","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getTokens","outputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}]},{"inputs":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"maverickV2SwapCallback"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"specifiedAmounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"price","outputs":[{"internalType":"struct ISwapAdapterTypes.Fraction[]","name":"calculatedPrices","type":"tuple[]","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]},{"inputs":[{"internalType":"contract IMaverickV2Pool","name":"pool","type":"address"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"uint256","name":"sellAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"priceAt","outputs":[{"internalType":"struct ISwapAdapterTypes.Fraction","name":"calculatedPrice","type":"tuple","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"quoter","outputs":[{"internalType":"contract IMaverickV2Quoter","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"enum ISwapAdapterTypes.OrderSide","name":"side","type":"uint8"},{"internalType":"uint256","name":"specifiedAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swap","outputs":[{"internalType":"struct ISwapAdapterTypes.Trade","name":"trade","type":"tuple","components":[{"internalType":"uint256","name":"calculatedAmount","type":"uint256"},{"internalType":"uint256","name":"gasUsed","type":"uint256"},{"internalType":"struct ISwapAdapterTypes.Fraction","name":"price","type":"tuple","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"constructor":{"params":{"_quoter":"The address of the MaverickV2 quoter.","factory_":"The address of the MaverickV2 factory."}},"getCapabilities(bytes32,address,address)":{"params":{"poolId":"The ID of the trading pool."},"returns":{"capabilities":"An array of Capability."}},"getLimits(bytes32,address,address)":{"details":"Retrieve the maximum limits of a token that can be traded. The limit is reached when the change in the received amounts is zero or close to zero or when the swap fails because of the pools restrictions. Overestimate if in doubt rather than underestimate. The swap function should not error with `LimitExceeded` if called with amounts below the limit.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold."},"returns":{"limits":"An array of size two indicating the limit amount for the sell token (maximum the pool is willing to buy in sell token) as well as the limit amount of the buy token (maximum the pool is willing to sell in buy token)."}},"getPoolIds(uint256,uint256)":{"details":"Mainly used for testing. It is alright to not return all available pools here. Nevertheless, this is useful to test against the substreams implementation. If implemented, it saves time writing custom tests.","params":{"limit":"The maximum number of pool IDs to retrieve.","offset":"The starting index from which to retrieve pool IDs."},"returns":{"ids":"An array of pool IDs."}},"getTokens(bytes32)":{"details":"Mainly used for testing as this is redundant with the required substreams implementation.","params":{"poolId":"The ID of the trading pool."},"returns":{"tokens":"An array of address contracts."}},"maverickV2SwapCallback(address,uint256,uint256,bytes)":{"params":{"amountIn":"The amount of the token being swapped.","data":"The data passed to the callback.","tokenIn":"The token being swapped."}},"price(bytes32,address,address,uint256[])":{"details":"The returned prices should include all dex fees. In case the fee is dynamic on the amount traded, the returned price is expected to include the minimum fee. Note that the returned price should be the marginal price which is distinct from the executed price `swap(amount_in) / amount_in`! The marginal price is defined as the price to trade an arbitrarily small (almost zero) amount after the trade of (amount). E.g. the marginal price of a uniswap v2 pool at amount=0 is `reserve0/reserve1`. Ideally this method should be implemented, although it is optional as the price function can be numerically derived from the swap function. In case it is not available, it should be flagged via capabilities and calling it should revert using the `NotImplemented` error. The method needs to be implemented as view as this is usually more efficient and can be run in parallel.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold.","specifiedAmounts":"Amounts to calculate marginal prices at."},"returns":{"calculatedPrices":"array of prices as fractions corresponding to the provided amounts."}},"priceAt(address,address,uint256)":{"params":{"pool":"The pool to calculate the price for.","sellAmount":"The amount of the token to calculate the price for.","sellToken":"The token to calculate the price for."},"returns":{"calculatedPrice":"The calculated price of the token."}},"swap(bytes32,address,address,uint8,uint256)":{"details":"This function should be state modifying, meaning it should actually execute the swap and change the state of the EVM accordingly. Please include a gas usage estimate for each amount. This can be achieved e.g. by using the `gasleft()` function. The return type `Trade` has an attribute called price which should contain the value of `price(specifiedAmount)`. As this is optional, defined via `Capability.PriceFunction`, it is valid to return a Fraction(0, 0) value for this price. In that case the price will be estimated numerically.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold.","side":"The side of the trade (Sell or Buy).","specifiedAmount":"The amount to be traded."},"returns":{"trade":"Trade struct representing the executed trade."}}},"version":1},"userdoc":{"kind":"user","methods":{"constructor":{"notice":"Constructor to initialize the adapter with factory, quoter, and WETH addresses."},"getCapabilities(bytes32,address,address)":{"notice":"Retrieves the capabilities of the selected pool."},"getLimits(bytes32,address,address)":{"notice":"Retrieves the limits for each token."},"getPoolIds(uint256,uint256)":{"notice":"Retrieves a range of pool IDs."},"getTokens(bytes32)":{"notice":"Retrieves the tokens in the selected pool."},"maverickV2SwapCallback(address,uint256,uint256,bytes)":{"notice":"MaverickV2SwapCallback is the callback function for MaverickV2 pools."},"price(bytes32,address,address,uint256[])":{"notice":"Calculates marginal prices for specified amounts (optional)."},"priceAt(address,address,uint256)":{"notice":"Calculate the price of a token at a specified amount."},"swap(bytes32,address,address,uint8,uint256)":{"notice":"Simulates swapping tokens on a given pool."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/maverick-v2/MaverickV2SwapAdapter.sol":"MaverickV2SwapAdapter"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/maverick-v2/MaverickV2SwapAdapter.sol":{"keccak256":"0x4ba52bde98c1ef79e6730645f278c0601392d7466313119be6a307254cdccb38","urls":["bzz-raw://60cf377d4a17957d78c0e14708daa10c3d44831a5a567275293126b54e572a07","dweb:/ipfs/QmT55QZ9W7tu9NzmKMNWp5LSESyNbW8NrjnXYZ6mAujYQ4"],"license":"AGPL-3.0-or-later"}},"version":1},"id":60} \ No newline at end of file diff --git a/evm/out/MaverickV2SwapAdapter.t.sol/MaverickV2SwapAdapterTest.json b/evm/out/MaverickV2SwapAdapter.t.sol/MaverickV2SwapAdapterTest.json deleted file mode 100644 index 5069c9c..0000000 --- a/evm/out/MaverickV2SwapAdapter.t.sol/MaverickV2SwapAdapterTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"fractionToInt","inputs":[{"name":"price","type":"tuple","internalType":"struct ISwapAdapterTypes.Fraction","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"runPoolBehaviourTest","inputs":[{"name":"adapter","type":"address","internalType":"contract ISwapAdapter"},{"name":"poolIds","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stringPctgs","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testGetCapabilities","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"testGetLimits","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"testGetPoolIds","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"testGetTokens","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"testMavV2PoolBehaviour","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPrice","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPriceDecreasing","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPriceFuzz","inputs":[{"name":"amount0","type":"uint256","internalType":"uint256"},{"name":"amount1","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapBuy","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapBuyIncreasing","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapFuzz","inputs":[{"name":"specifiedAmount","type":"uint256","internalType":"uint256"},{"name":"isBuy","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapSell","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapSellIncreasing","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LimitExceeded","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotImplemented","inputs":[{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"Unavailable","inputs":[{"name":"reason","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x6080604052346102be57600160ff19600c541617600c55600160ff19601e541617601e556040516080810181811060018060401b0382111761020c5760405261004860406102c2565b6002815261302560f01b6020820152815261006360406102c2565b6004815263302e312560e01b6020820152602082015261008360406102c2565b600381526235302560e81b602082015260408201526100a260406102c2565b60048152633130302560e01b60208201526060820152601f546004601f5580600410610220575b50601f5f9081525f51602061a7a45f395f51905f52915b600482106100f75760405161a46e90816103368239f35b80518051906001600160401b03821161020c5761011485546102e7565b601f81116101d1575b50602090601f83116001146101685792826001949360209386955f9261015d575b50505f19600383901b1c191690841b1786555b019301910190916100e0565b015190505f8061013e565b90601f19831691865f52815f20925f5b8181106101b957509360209360019693879693838895106101a1575b505050811b018655610151565b01515f1960f88460031b161c191690555f8080610194565b82840151855560019094019360209384019301610178565b6101fc90865f5260205f20601f850160051c81019160208610610202575b601f0160051c019061031f565b5f61011d565b90915081906101ef565b634e487b7160e01b5f52604160045260245ffd5b601f5f525f51602061a7a45f395f51905f52017fa03837a25210ee280c2113ff4b77ca23440b19d4866cca721c801278fd08d80b5b81811061026257506100c9565b8061026f600192546102e7565b8061027c575b5001610255565b601f8111831461029157505f81555b5f610275565b6102ad90825f5283601f60205f20920160051c8201910161031f565b805f525f602081208183555561028b565b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761020c57604052565b90600182811c92168015610315575b602083101461030157565b634e487b7160e01b5f52602260045260245ffd5b91607f16916102f6565b81811061032a575050565b5f815560010161031f56fe610160806040526004361015610013575f80fd5b5f905f3560e01c90816308c41745146156b1575080630a9254e41461514a578063111f33921461460d5780631c6e35e414613d525780631e1e26fa146133ae5780631ed7831c146133305780632ade3880146131715780633e5e3c23146130f35780633f7286f4146130755780634a36e37214612e9f5780634b13c57114612d825780635cca77b214612d2c57806366d9a9a014612b7e5780637f55213e14611cd35780638335a17f14611beb57806385226c8114611b595780638f1ed4c6146119c5578063916a17c61461173957806399cef81b14611571578063a00872f114611505578063a502846b146111c7578063b5508aa91461112e578063ba414fa614611109578063d170c3cc14611067578063d3479a0114610eed578063e20c9f7114610e5f578063fa7626d414610e3c5763fe3ee58b14610153575f80fd5b34610aa55780600319360112610aa55780610160906040516101758382615720565b600a8152601f19830180366020840137845b600a8110610dbb5750828060405160208101906370a0823160e01b8252306024820152602481526101b9604482615720565b51905f51602061a4195f395f51905f525afa506101e66101d7617e24565b60208082518301019101615ab1565b506101ef615ac0565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015610c615761022481600161023d9301600e556158b5565b919091309083549060031b91821b915f19901b19161790565b905560018060a01b0360115416600f5460e01b6010549061025c61809e565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908188526020526040872060405160208101906102ae816102a0888886618087565b03601f198101835282615720565b519020885260205260ff60036040892001541615610dad575b6001600160a01b0384165f908152600d602052604090209087526020526102a06103006040882093604051928391602083019586618087565b5190208552602052604084209060018201549160028101546103228185615d3d565b610cd5575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052949091906020866044815f51602061a3995f395f51905f525afa958615610b16578996610ca1575b506001908201610100031b5f1901811b198516915f51602061a3995f395f51905f523b15610ade576040516370ca10bb60e01b81526001600160a01b0386166004820152602481019190915269152d02c7e14af680000090911b9190911760448201528681606481835f51602061a3995f395f51905f525af18015610ad3578790610c8a575b5050610404618257565b9015908115610c75575b506109c35750505061041e618d3e565b828060405160208101906370a0823160e01b825230602482015260248152610447604482615720565b51905f51602061a3b95f395f51905f525afa506104656101d7617e24565b5061046e615ae1565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015610c61576102248160016104a39301600e556158b5565b905560018060a01b0360115416600f5460e01b601054906104c261809e565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818852602052604087206040516020810190610506816102a0888886618087565b519020885260205260ff60036040892001541615610c53575b6001600160a01b0384165f908152600d602052604090209087526020526102a06105586040882093604051928391602083019586618087565b51902085526020526040842090600182015491600281015461057a8185615d3d565b610b21575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052949091906020866044815f51602061a3995f395f51905f525afa958615610b16578996610ae2575b506001908201610100031b5f1901811b198516915f51602061a3995f395f51905f523b15610ade576040516370ca10bb60e01b81526001600160a01b0386166004820152602481019190915264174876e80090911b9190911760448201528681606481835f51602061a3995f395f51905f525af18015610ad3578790610ab8575b5050610657618257565b9015908115610aa8575b506109c357505050610671618d3e565b61067e6040519485615720565b600a8452825b8181106109ac575050815b600a81106107c057505060015b600981106106a8578380f35b6106b28184615d77565b515160018201908183116107ac57906106da610724926106d28388615d77565b515190617dd5565b61070160206106e98588615d77565b51015160206106f88489615d77565b51015190617dd5565b604061071b816107118689615d77565b5101519287615d77565b510151906163f2565b820b5f51602061a3995f395f51905f523b156107a8576040519063fe74f05b60e01b825260048201526001602482015282816044815f51602061a3995f395f51905f525afa801561079d57908391610781575b505060010161069c565b9061078b91615720565b81841261079957815f610777565b5080fd5b6040513d85823e3d90fd5b8280fd5b634e487b7160e01b84526011600452602484fd5b604051634b88b8ad60e11b8152602081600481875f51602061a3995f395f51905f525af1908115610917578491610977575b506020805460405163095ea7b360e01b81526001600160a01b03909116600482015264174876e80060248201529081604481885f51602061a3b95f395f51905f525af180156109505761095b575b50602054849060809061087f906001600160a01b03166108608688615d77565b51604051948580948193638307c65560e01b8352600160048401615b7b565b03925af1908115610950578591610922575b5061089c8387615d77565b526108a78286615d77565b5060405190631135fc2960e21b82526004820152602081602481875f51602061a3995f395f51905f525af180156109175790600192916108e9575b500161068f565b6109099060203d8111610910575b6109018183615720565b810190615b02565b505f6108e2565b503d6108f7565b6040513d86823e3d90fd5b610943915060803d8111610949575b61093b8183615720565b810190615b42565b5f610891565b503d610931565b6040513d87823e3d90fd5b6109729060203d8111610910576109018183615720565b610840565b90506020813d82116109a4575b8161099160209383615720565b810103126109a057515f6107f2565b5f80fd5b3d9150610984565b6020906109b76162fc565b82828801015201610684565b85809392899254905f51602061a3995f395f51905f523b156107a8576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810191909152604481019390935282606481835f51602061a3995f395f51905f525af1801561079d57610a8e575b60405162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b610a99838093615720565b12610aa5578080610a2d565b80fd5b64174876e800915014155f610661565b610ac191615720565b858812610acf575f8661064d565b8580fd5b6040513d89823e3d90fd5b8880fd5b9095506020813d602011610b0e575b81610afe60209383615720565b810103126109a0575194816105cc565b3d9150610af1565b6040513d8b823e3d90fd5b610b2b8185615d3d565b610100036101008111610c3f5760ff8111610c3f576001901b60405163348051d760e11b815281600482015288816024815f51602061a3995f395f51905f525afa908115610b1657606a60209392610be3928c91610c1d575b506040519485915f51602061a3f95f395f51905f52828401525f51602061a3795f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018c838201520301601f198101845283615720565b64174876e8001015610bf5575061057f565b60405162461bcd60e51b815260206004820152908190610c19906024830190615783565b0390fd5b610c3991503d808e833e610c318183615720565b810190615a4f565b5f610b84565b634e487b7160e01b88526011600452602488fd5b610c5b618474565b5061051f565b634e487b7160e01b84526041600452602484fd5b69152d02c7e14af6800000915014155f61040e565b610c9391615720565b858812610acf575f866103fa565b9095506020813d602011610ccd575b81610cbd60209383615720565b810103126109a057519481610374565b3d9150610cb0565b610cdf8185615d3d565b610100036101008111610c3f5760ff8111610c3f576001901b60405163348051d760e11b815281600482015288816024815f51602061a3995f395f51905f525afa908115610b1657606a60209392610d96928c91610c1d57506040519485915f51602061a3f95f395f51905f52828401525f51602061a3795f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018c838201520301601f198101845283615720565b69152d02c7e14af68000001015610bf55750610327565b610db5618474565b506102c7565b9280610e285750849260018101808211610e14578060640290606482048103610c3f5768056bc75e2d631000000290808204670de0b6b3a76400001490151715610e145790600191610e0d8286615d77565b5201610187565b634e487b7160e01b87526011600452602487fd5b634e487b7160e01b81526021600452602490fd5b5034610aa55780600319360112610aa557602060ff601e54166040519015158152f35b5034610aa55780600319360112610aa55760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b818110610ece57610eca85610ebe81870382615720565b60405191829182615741565b0390f35b82546001600160a01b0316845260209093019260019283019201610ea7565b5034610aa55780600319360112610aa55760205460405163549387df60e11b81525f51602061a3d95f395f51905f5260048201525f51602061a4195f395f51905f5260248201525f51602061a3b95f395f51905f526044820152908290829060649082906001600160a01b03165afa90811561105c5761103791610fe391849161103a575b50610f7d815161651f565b610fde610f8982615d4a565b5160405190610f99606083615720565b602d82527f4c696d697420666f722073656c6c20746f6b656e2073686f756c64206265206760208301526c0726561746572207468616e203609c1b604083015261634a565b615d57565b5160405190610ff3606083615720565b602c82527f4c696d697420666f722062757920746f6b656e2073686f756c6420626520677260208301526b06561746572207468616e20360a41b604083015261634a565b80f35b61105691503d8086833e61104e8183615720565b810190615f83565b5f610f72565b6040513d84823e3d90fd5b5034610aa5576040366003190112610aa557600435906001600160a01b0382168203610aa5576024356001600160401b0381116107995736602382011215610799578060040135926110b8846159b2565b916110c66040519384615720565b8483526024602084019560051b8201019036821161110557602401945b8186106110f55784611037858561617e565b85358152602095860195016110e3565b8480fd5b5034610aa55780600319360112610aa55760206111246160e3565b6040519015158152f35b5034610aa55780600319360112610aa55760195461114b816159b2565b916111596040519384615720565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b83831061119b5760405180610eca8782615856565b6001602081926040516111b9816111b28189615931565b0382615720565b815201920192019190611186565b5034610aa5576040366003190112610aa5578060043560243560018060a01b036020541660405163549387df60e11b81527314cf6d2fe3e1b326114b07d22a6f6bb59e346c6760601b60048201525f51602061a4195f395f51905f5260248201525f51602061a3b95f395f51905f5260448201528481606481855afa9081156109505785916114eb575b5061125b81615d4a565b5184105f51602061a3995f395f51905f523b15610acf5760405190632631f2b160e11b8252600482015285816024815f51602061a3995f395f51905f525afa9081156114e05786916114cb575b50506112b390615d4a565b5182105f51602061a3995f395f51905f523b156111055760405190632631f2b160e11b8252600482015284816024815f51602061a3995f395f51905f525afa9081156109505785916114b6575b50505f51602061a3995f395f51905f523b1561149c57604051632631f2b160e11b8152662386f26fc100008411600482015284816024815f51602061a3995f395f51905f525afa9081156109505785916114a1575b50505f51602061a3995f395f51905f523b1561149c57604051632631f2b160e11b8152662386f26fc10000831160048201529284846024815f51602061a3995f395f51905f525afa928315610950578593611483575b6113fc939450604051916113c0606084615720565b6002835260403660208501376113d583615d4a565b526113df82615d57565b5260405195868094819363155adc9160e31b835260048301615e0f565b03925af1918215611476578192611452575b50805b825181101561144e578061143161142a60019386615d77565b5151616430565b61144860206114408387615d77565b510151616430565b01611411565b5080f35b61146f9192503d8084833e6114678183615720565b810190615d8b565b905f61140e565b50604051903d90823e3d90fd5b9290938161149091615720565b61149c578284926113ab565b505050fd5b816114ab91615720565b61149c57835f611355565b816114c091615720565b61149c57835f611300565b816114d591615720565b61110557845f6112a8565b6040513d88823e3d90fd5b6114ff91503d8087833e61104e8183615720565b5f611251565b5034610aa5576020366003190112610aa557600435601f548110156107995761152d906158e1565b91909161155d57604051610eca90611549816111b28187615931565b604051918291602083526020830190615783565b634e487b7160e01b81526004819052602490fd5b5034610aa55780600319360112610aa5576020546040516323eeca0160e01b815260048101839052600a6024820152908290829060449082906001600160a01b03165afa90811561105c5782916116f8575b50818151604051906115d6606083615720565b603882527f4e756d626572206f6620706f6f6c204944732073686f756c64206265206c657360208301527f73207468616e206f7220657175616c20746f206c696d6974000000000000000060408301525f51602061a3995f395f51905f523b156107a85761166f918391604051938492839263d17d4b0d60e01b84526004840152600a6024840152606060448401526064830190615783565b03815f51602061a3995f395f51905f525afa801561105c576116e3575b50508051611698575080f35b6116a461103791615d4a565b51604051906116b4604083615720565b602082527f506f6f6c2049442073686f756c642062652067726561746572207468616e2030602083015261634a565b816116ed91615720565b61079957815f61168c565b90503d8083833e6117098183615720565b81016020828203126107a85781516001600160401b0381116117355761172f9201616086565b5f6115c3565b8380fd5b5034610aa55780600319360112610aa557601c54611756816159b2565b906117646040519283615720565b808252601c8352827f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b8383106117a75760405180610eca87826157a7565b6040516117b3816156ea565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b816007840110611926578460019794600297946020979461183e94549181811061190a575b8181106118ee575b8181106118d2575b8181106118b6575b81811061189a575b81811061187e575b818110611864575b10611850575b500382615720565b83820152815201920192019190611792565b6001600160e01b031916815286015f611836565b828a1b6001600160e01b0319168452928901928b01611830565b604083901b6001600160e01b0319168452928901928b01611828565b606083901b6001600160e01b0319168452928901928b01611820565b608083901b6001600160e01b0319168452928901928b01611818565b60a083901b6001600160e01b0319168452928901928b01611810565b60c083901b6001600160e01b0319168452928901928b01611808565b60e083901b6001600160e01b0319168452928901928b01611800565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e08201520194019201916117db565b5034610aa55780600319360112610aa55760205460405163ecbbc03360e01b81525f51602061a3d95f395f51905f52600482015282918290829060249082906001600160a01b03165afa90811561105c578291611b37575b50611a28815161651f565b6001600160a01b03611a3982615d4a565b51165f51602061a3995f395f51905f523b15611b3357604051906328a9b0fb60e11b825260048201525f51602061a4195f395f51905f52602482015282816044815f51602061a3995f395f51905f525afa90811561079d578391611b1e575b506001600160a01b0391611aac9150615d57565b51165f51602061a3995f395f51905f523b15611b1b57604051906328a9b0fb60e11b825260048201525f51602061a3b95f395f51905f52602482015281816044815f51602061a3995f395f51905f525afa801561105c57611b0a5750f35b81611b1491615720565b610aa55780f35b50fd5b81611b2891615720565b611b1b57815f611a98565b5050fd5b611b5391503d8084833e611b4b8183615720565b810190615ffc565b5f611a1d565b5034610aa55780600319360112610aa557601a54611b76816159b2565b91611b846040519384615720565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b838310611bc65760405180610eca8782615856565b600160208192604051611bdd816111b28189615931565b815201920192019190611bb1565b5034610aa55780600319360112610aa55760408180611c5c8351611c0f8582615720565b60018152601f198501366020830137678ac7230489e80000611c3082615d4a565b52602054855163155adc9160e31b81529485936001600160a01b03909216928492839160048301615e0f565b03925af1918215611cca5750611ca5611037926020928591611cb0575b50611c8481516164cf565b611ca0611c9082615d4a565b5151611c9a615c5e565b9061634a565b615d4a565b510151611c9a615caa565b611cc491503d8087833e6114678183615720565b5f611c79565b513d84823e3d90fd5b5034610aa5576040366003190112610aa5576004359060243580151581036107995715612b785760015b60205460405163549387df60e11b81525f51602061a3d95f395f51905f5260048201525f51602061a4195f395f51905f5260248201525f51602061a3b95f395f51905f526044820152908390829060649082906001600160a01b03165afa90811561079d578391612b5e575b506002821015612b4a57600182149081156126a65792611d8c8195929394615d57565b5182105f51602061a3995f395f51905f523b156107995760405190632631f2b160e11b8252600482015281816024815f51602061a3995f395f51905f525afa801561105c57612691575b508060405160208101906370a0823160e01b825230602482015260248152611dff604482615720565b51905f51602061a4195f395f51905f525afa50611e1d6101d7617e24565b50611e26615ac0565b6370a0823163ffffffff19600f541617600f55600e54600160401b81101561267d5790611e5e61022483600188969501600e556158b5565b905560018060a01b0360115416600f5460e01b60105490611e7d61809e565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818852602052604087206040516020810190611ec1816102a0888886618087565b519020885260205260ff6003604089200154161561266f575b6001600160a01b0384165f908152600d602052604090209087526020526102a0611f136040882093604051928391602083019586618087565b519020855260205260408420906001820154916002810154611f358185615d3d565b612559578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052949091906020866044815f51602061a3995f395f51905f525afa958615610b16578996612520575b506001908201610100031b5f1901811b1985165f51602061a3995f395f51905f523b15610ade576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528681606481835f51602061a3995f395f51905f525af1908115610ad357879161250b575b505061200a618257565b90159081156124ff575b5061241c57505050612024618d3e565b6020805460405163095ea7b360e01b81526001600160a01b0390911660048201525f1960248201529081604481875f51602061a4195f395f51905f525af18015610917576123fd575b505b6040516370a0823160e01b8152306004820152916020836024815f51602061a3b95f395f51905f525afa9283156109175784936123c6575b506040516370a0823160e01b8152306004820152946020866024815f51602061a4195f395f51905f525afa95861561095057859661238d575b50602054604051638307c65560e01b81525f51602061a3d95f395f51905f5260048201525f51602061a4195f395f51905f5260248201525f51602061a3b95f395f51905f5260448201526064810192909252608482018490529094608091869160a4918391906001600160a01b03165af19384156114e057869461236c575b50835161216a578580f35b15612271576040516370a0823160e01b81523060048201526020816024815f51602061a3b95f395f51905f525afa9081156114e057869161223d575b506121ba926121b491615ee6565b9061656f565b516040516370a0823160e01b81523060048201526020816024815f51602061a4195f395f51905f525afa908115610917578491612209575b506121b49061220093615ee6565b5f808080808580f35b90506020813d602011612235575b8161222460209383615720565b810103126109a057516122006121f2565b3d9150612217565b90506020813d602011612269575b8161225860209383615720565b810103126109a057516121ba6121a6565b3d915061224b565b6040516370a0823160e01b81523060048201529193916020816024815f51602061a4195f395f51905f525afa9081156114e0578691612338575b506121b4906122b993615ee6565b516040516370a0823160e01b81523060048201526020816024815f51602061a3b95f395f51905f525afa908115610917578491612304575b506122ff926121b491615ee6565b612200565b90506020813d602011612330575b8161231f60209383615720565b810103126109a057516122ff6122f1565b3d9150612312565b90506020813d602011612364575b8161235360209383615720565b810103126109a057516122b96122ab565b3d9150612346565b61238691945060803d6080116109495761093b8183615720565b925f61215f565b945094506020843d6020116123be575b816123aa60209383615720565b810103126109a057608086945195906120e0565b3d915061239d565b935091506020833d6020116123f5575b816123e360209383615720565b810103126109a057849251915f6120a7565b3d91506123d6565b6124159060203d602011610910576109018183615720565b505f61206d565b92509250935054905f51602061a3995f395f51905f523b156107a8576040516370ca10bb60e01b81526001600160a01b039091166004820152602481019190915260448101929092528180606481015b0381835f51602061a3995f395f51905f525af1801561105c576124ea5760405162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b6124f5828092615720565b610aa55780610a2d565b5f19141590505f612014565b8161251591615720565b610acf57855f612000565b985094506020883d602011612551575b8161253d60209383615720565b810103126109a05796518997909481611f86565b3d9150612530565b612564879185615d3d565b61010003610100811161265b5760ff811161265b5760405163348051d760e11b8152600190911b600482015281816024815f51602061a3995f395f51905f525afa90811561105c57606a6020928461261f93610c19969261263f575b506040519485925f51602061a3f95f395f51905f52828501525f51602061a3795f395f51905f52604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f198101835282615720565b60405162461bcd60e51b8152602060048201529182916024830190615783565b6126549192503d8084833e610c318183615720565b90866125c0565b634e487b7160e01b82526011600452602482fd5b612677618474565b50611eda565b634e487b7160e01b85526041600452602485fd5b8161269b91615720565b61173557835f611dd6565b6126af90615d4a565b5184105f51602061a3995f395f51905f523b156117355760405190632631f2b160e11b8252600482015283816024815f51602061a3995f395f51905f525afa801561091757908491612b35575b508060405160208101906370a0823160e01b825230602482015260248152612725604482615720565b51905f51602061a4195f395f51905f525afa506127436101d7617e24565b5061274c615ac0565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015610c61576102248160016127819301600e556158b5565b905560018060a01b036011541693600f5460e01b601054906127a161809e565b6001600160a01b0388165f908152600d60205260409020909163ffffffff60e01b16908188526020526040872060405160208101906127e5816102a0888886618087565b519020885260205260ff60036040892001541615612b27575b6001600160a01b0388165f908152600d602052604090209087526020526102a06128376040882093604051928391602083019586618087565b5190208552602052604084209460018601549060028701549661285a8884615d3d565b612a1b575b8054604051630667f9d760e41b81526001600160a01b03841660048201526024810182905297989697899790946020866044815f51602061a3995f395f51905f525afa958615610b165789966129e2575b506001908201610100031b5f1901811b198516915f51602061a3995f395f51905f523b15610ade576040516370ca10bb60e01b81526001600160a01b038616600482015260248101919091529086901b9190911760448201528681606481835f51602061a3995f395f51905f525af1908115610ad35787916129cd575b505083612938618257565b9190159182156129c2575b505061241c57505050612954618d3e565b6020805460405163095ea7b360e01b81526001600160a01b039091166004820152602481018390529081604481875f51602061a4195f395f51905f525af18015610917576129a3575b5061206f565b6129bb9060203d602011610910576109018183615720565b505f61299d565b14159050845f612943565b816129d791615720565b610acf57855f61292d565b985094506020883d602011612a13575b816129ff60209383615720565b810103126109a057965189979094816128b0565b3d91506129f2565b612a258884615d3d565b610100036101008111610c3f5760ff8111610c3f576001901b976040519863348051d760e11b8a528060048b0152888a6024815f51602061a3995f395f51905f525afa998a15610b1657606a60209b612ade928c91612b0d575b506040519c8d915f51602061a3f95f395f51905f52828401525f51602061a3795f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018c838201520301601f1981018c528b615720565b851015612aec57975061285f565b60405162461bcd60e51b81526020600482015280610c19602482018c615783565b612b2191503d808e833e610c318183615720565b5f612a7f565b612b2f618474565b506127fe565b81612b3f91615720565b6107a857825f6126fc565b634e487b7160e01b83526021600452602483fd5b612b7291503d8085833e61104e8183615720565b5f611d69565b80611cfd565b5034610aa55780600319360112610aa557601b54612b9b816159b2565b90612ba96040519283615720565b808252601b8352827f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1602084015b838310612bec5760405180610eca87826157a7565b604051612bf8816156ea565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b816007840110612c8d5784600197946002979460209794612c7b94549181811061190a578181106118ee578181106118d2578181106118b65781811061189a5781811061187e57818110611864571061185057500382615720565b83820152815201920192019190612bd7565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e0820152019401920191612c20565b5034610aa55780600319360112610aa557611037604051612d4e604082615720565b60018152602036818301375f51602061a3d95f395f51905f52612d7082615d4a565b526020546001600160a01b031661617e565b5034610aa55780600319360112610aa5576020546040516348bd7dfd60e01b81525f51602061a3d95f395f51905f5260048201525f51602061a4195f395f51905f5260248201525f51602061a3b95f395f51905f526044820152908290829060649082906001600160a01b03165afa90811561105c578291612e7d575b50612e0a815161647f565b612e1b612e1682615d4a565b615f76565b600a811015612b4a57612e2d906164cf565b612e39612e1682615d57565b600a811015612b4a57612e5791612e52612e169261651f565b615d67565b600a811015612e69576110379061647f565b634e487b7160e01b82526021600452602482fd5b612e9991503d8084833e612e918183615720565b810190615ef3565b5f612dff565b5034610aa55780600319360112610aa55760405190610160612ec18184615720565b600a8352601f1901366020840137805b600a8110613011575080612f08819360018060a01b03602054169060405194858094819363155adc9160e31b835260048301615e0f565b03925af190811561105c578291612ff7575b50815b60098110612f29578280f35b612f338183615d77565b51906001810191828211612fe357612f578591612f508587615d77565b51906163f2565b810b5f51602061a3995f395f51905f523b156107995760405190630a30b77160e01b825260048201526001602482015281816044815f51602061a3995f395f51905f525afa801561105c57612fce575b5050612fc86020611440600194612fc283611440878a615d77565b86615d77565b01612f1d565b81612fd891615720565b61173557835f612fa7565b634e487b7160e01b85526011600452602485fd5b61300b91503d8084833e6114678183615720565b5f612f1a565b600181018082116130615780606402906064820481036107ac5768056bc75e2d631000000290808204670de0b6b3a76400001490151715613061579060019161305a8286615d77565b5201612ed1565b634e487b7160e01b83526011600452602483fd5b5034610aa55780600319360112610aa55760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b8181106130d457610eca85610ebe81870382615720565b82546001600160a01b03168452602090930192600192830192016130bd565b5034610aa55780600319360112610aa55760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b81811061315257610eca85610ebe81870382615720565b82546001600160a01b031684526020909301926001928301920161313b565b5034610aa55780600319360112610aa557601d5461318e816159b2565b61319b6040519182615720565b818152601d83526020810191837f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f845b83831061329f5786858760405192839260208401906020855251809152604084019160408260051b8601019392815b8383106132075786860387f35b919395509193603f198782030183528551906020604082019260018060a01b0381511683520151916040602083015282518091526060820190602060608260051b850101940192855b828110613274575050505050602080600192970193019301909286959492936131fa565b9091929394602080613292600193605f198782030189528951615783565b9701950193929101613250565b6040516132ab816156ea565b82546001600160a01b031681526001830180546132c7816159b2565b916132d56040519384615720565b8183528a526020808b20908b9084015b83821061330b5750505050600192826020928360029501528152019201920191906131cb565b600160208192604051613322816111b2818a615931565b8152019301910190916132e5565b5034610aa55780600319360112610aa55760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b81811061338f57610eca85610ebe81870382615720565b82546001600160a01b0316845260209093019260019283019201613378565b5034610aa55780600319360112610aa557808060405160208101906370a0823160e01b8252306024820152602481526133e8604482615720565b51905f51602061a4195f395f51905f525afa506134066101d7617e24565b5061340f615ac0565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015613bd3576102248160016134449301600e556158b5565b905560018060a01b0360115416600f5460e01b6010549061346361809e565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908186526020526040852060405160208101906134a7816102a0888886618087565b519020865260205260ff60036040872001541615613d44575b6001600160a01b0384165f908152600d602052604090209085526020526102a06134f96040862093604051928391602083019586618087565b5190208352602052816040812091600183015492600281015461351c8186615d3d565b613c4a575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f51602061a3995f395f51905f525afa9687156114e0578697613c11575b506001908201610100031b5f1901811b198616915f51602061a3995f395f51905f523b15610acf576040516370ca10bb60e01b81526001600160a01b0386166004820152602481019190915269152d02c7e14af680000090911b9190911760448201528381606481835f51602061a3995f395f51905f525af1908115610917578491613bfc575b50506135ff618257565b9015908115613be7575b50613a0f5782613617618d3e565b808060405160208101906370a0823160e01b825230602482015260248152613640604482615720565b51905f51602061a3b95f395f51905f525afa5061365e6101d7617e24565b50613667615ae1565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015613bd35761022481600161369c9301600e556158b5565b905560018060a01b0360115416600f5460e01b601054906136bb61809e565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908186526020526040852060405160208101906136ff816102a0888886618087565b519020865260205260ff60036040872001541615613bc5575b6001600160a01b0384165f908152600d602052604090209085526020526102a06137516040862093604051928391602083019586618087565b519020835260205281604081209160018301549260028101546137748186615d3d565b613abb575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f51602061a3995f395f51905f525afa9687156114e0578697613a82575b506001908201610100031b5f1901811b198616915f51602061a3995f395f51905f523b15610acf576040516370ca10bb60e01b81526001600160a01b0386166004820152602481019190915264174876e80090911b9190911760448201528381606481835f51602061a3995f395f51905f525af1908115610917578491613a6d575b5050613852618257565b9015908115613a5d575b50613a0f578261386a618d3e565b5f51602061a3995f395f51905f523b15610aa55760405163ca669fa760e01b815230600482015281908181602481835f51602061a3995f395f51905f525af1801561105c576139fa575b50506020805460405163095ea7b360e01b81526001600160a01b03909116600482015264174876e80060248201529081604481855f51602061a3b95f395f51905f525af1801561105c576139dd575b50602054604051638307c65560e01b81525f51602061a3d95f395f51905f5260048201525f51602061a3b95f395f51905f5260248201525f51602061a4195f395f51905f5260448201526001606482015268056bc75e2d63100000608482015290608090829060a490829086906001600160a01b03165af190811561105c576110379160209184916139be575b5061399e8151611c9a615c10565b6139b48260408301611ca5815151611c9a615c5e565b0151611c9a615cf8565b6139d7915060803d6080116109495761093b8183615720565b84613990565b6139f59060203d602011610910576109018183615720565b613903565b81613a0491615720565b610aa55780826138b4565b54905f51602061a3995f395f51905f523b156107a8576040516370ca10bb60e01b81526001600160a01b0390911660048201526024810191909152604481019290925281806064810161246c565b64174876e800915014158661385c565b81613a7791615720565b6107a8578286613848565b955095506020853d602011613ab3575b81613a9f60209383615720565b810103126109a057935194869490816137c6565b3d9150613a92565b90919250613ac98185615d3d565b610100036101008111613bb15760ff8111613bb15760405163348051d760e11b8152600190911b6004820181905286826024815f51602061a3995f395f51905f525afa8015610ad357606a613b81916020948a91613b97575b506040519485915f51602061a3f95f395f51905f52828401525f51602061a3795f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018a838201520301601f198101845283615720565b64174876e8001015610bf5575090849291613779565b613bab91503d808c833e610c318183615720565b8a613b22565b634e487b7160e01b86526011600452602486fd5b613bcd618474565b50613718565b634e487b7160e01b82526041600452602482fd5b69152d02c7e14af6800000915014155f613609565b81613c0691615720565b6107a857825f6135f5565b955095506020853d602011613c42575b81613c2e60209383615720565b810103126109a0579351948694908161356e565b3d9150613c21565b90919250613c588185615d3d565b610100036101008111613bb15760ff8111613bb15760405163348051d760e11b8152600190911b6004820181905286826024815f51602061a3995f395f51905f525afa8015610ad357606a613d0f916020948a91613d2a57506040519485915f51602061a3f95f395f51905f52828401525f51602061a3795f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018a838201520301601f198101845283615720565b69152d02c7e14af68000001015610bf5575090849291613521565b613d3e91503d808c833e610c318183615720565b5f613b22565b613d4c618474565b506134c0565b5034610aa55780600319360112610aa557808060405160208101906370a0823160e01b825230602482015260248152613d8c604482615720565b51905f51602061a4195f395f51905f525afa50613daa6101d7617e24565b50613db3615ac0565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015613bd357610224816001613de89301600e556158b5565b905560018060a01b0360115416600f5460e01b60105490613e0761809e565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818652602052604085206040516020810190613e4b816102a0888886618087565b519020865260205260ff600360408720015416156145ff575b6001600160a01b0384165f908152600d602052604090209085526020526102a0613e9d6040862093604051928391602083019586618087565b51902083526020528160408120916001830154926002810154613ec08186615d3d565b61451f575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f51602061a3995f395f51905f525afa9687156114e05786976144e6575b506001908201610100031b5f1901811b198616915f51602061a3995f395f51905f523b15610acf576040516370ca10bb60e01b81526001600160a01b0386166004820152602481019190915269152d02c7e14af680000090911b9190911760448201528381606481835f51602061a3995f395f51905f525af19081156109175784916144d1575b5050613fa3618257565b90159081156144bc575b50613a0f5782613fbb618d3e565b808060405160208101906370a0823160e01b825230602482015260248152613fe4604482615720565b51905f51602061a3b95f395f51905f525afa506140026101d7617e24565b5061400b615ae1565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015613bd3576102248160016140409301600e556158b5565b905560018060a01b0360115416600f5460e01b6010549061405f61809e565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908186526020526040852060405160208101906140a3816102a0888886618087565b519020865260205260ff600360408720015416156144ae575b6001600160a01b0384165f908152600d602052604090209085526020526102a06140f56040862093604051928391602083019586618087565b519020835260205281604081209160018301549260028101546141188186615d3d565b6143d3575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f51602061a3995f395f51905f525afa9687156114e057869761439a575b506001908201610100031b5f1901811b198616915f51602061a3995f395f51905f523b15610acf576040516370ca10bb60e01b81526001600160a01b0386166004820152602481019190915264174876e80090911b9190911760448201528381606481835f51602061a3995f395f51905f525af1908115610917578491614385575b50506141f6618257565b9015908115614375575b50613a0f578261420e618d3e565b5f51602061a3995f395f51905f523b15610aa55760405163ca669fa760e01b815230600482015281908181602481835f51602061a3995f395f51905f525af1801561105c57614360575b50506020805460405163095ea7b360e01b81526001600160a01b039091166004820152678ac7230489e8000060248201529081604481855f51602061a4195f395f51905f525af1801561105c57614343575b50602054604051638307c65560e01b81525f51602061a3d95f395f51905f5260048201525f51602061a4195f395f51905f5260248201525f51602061a3b95f395f51905f52604482015260648101839052678ac7230489e80000608482015290608090829060a490829086906001600160a01b03165af190811561105c576110379160209184916139be575061399e8151611c9a615c10565b61435b9060203d602011610910576109018183615720565b6142aa565b8161436a91615720565b610aa5578082614258565b64174876e8009150141586614200565b8161438f91615720565b6107a85782866141ec565b955095506020853d6020116143cb575b816143b760209383615720565b810103126109a0579351948694908161416a565b3d91506143aa565b909192506143e18185615d3d565b610100036101008111613bb15760ff8111613bb15760405163348051d760e11b8152600190911b6004820181905286826024815f51602061a3995f395f51905f525afa8015610ad357606a614498916020948a91613b9757506040519485915f51602061a3f95f395f51905f52828401525f51602061a3795f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018a838201520301601f198101845283615720565b64174876e8001015610bf557509084929161411d565b6144b6618474565b506140bc565b69152d02c7e14af6800000915014155f613fad565b816144db91615720565b6107a857825f613f99565b955095506020853d602011614517575b8161450360209383615720565b810103126109a05793519486949081613f12565b3d91506144f6565b9091925061452d8185615d3d565b610100036101008111613bb15760ff8111613bb15760405163348051d760e11b8152600190911b6004820181905286826024815f51602061a3995f395f51905f525afa8015610ad357606a6145e4916020948a91613d2a57506040519485915f51602061a3f95f395f51905f52828401525f51602061a3795f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018a838201520301601f198101845283615720565b69152d02c7e14af68000001015610bf5575090849291613ec5565b614607618474565b50613e64565b5034610aa55780600319360112610aa55761016060405161462e8282615720565b600a8152601f19820180366020840137835b84600a82106150d85780915060405160208101906370a0823160e01b825230602482015260248152614673604482615720565b51905f51602061a4195f395f51905f525afa506146916101d7617e24565b5061469a615ac0565b6370a0823163ffffffff19600f541617600f55600e54600160401b81101561267d576102248160016146cf9301600e556158b5565b905560018060a01b0360115416600f5460e01b601054906146ee61809e565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818952602052604088206040516020810190614732816102a0888886618087565b519020895260205260ff600360408a20015416156150ca575b6001600160a01b0384165f908152600d602052604090209088526020526102a06147846040892093604051928391602083019586618087565b519020865260205284604081209160018301549260028101546147a78186615d3d565b614fea575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f51602061a3995f395f51905f525afa9687156114e0578697614fb1575b506001908201610100031b5f1901811b198616915f51602061a3995f395f51905f523b15610acf576040516370ca10bb60e01b81526001600160a01b0386166004820152602481019190915269152d02c7e14af680000090911b9190911760448201528381606481835f51602061a3995f395f51905f525af1908115610917578491614f9c575b505061488a618257565b9015908115614f87575b50614db557505050506148a5618d3e565b838060405160208101906370a0823160e01b8252306024820152602481526148ce604482615720565b51905f51602061a3b95f395f51905f525afa506148ec6101d7617e24565b506148f5615ae1565b6370a0823163ffffffff19600f541617600f55600e54600160401b81101561267d5761022481600161492a9301600e556158b5565b905560018060a01b0360115416600f5460e01b6010549061494961809e565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b169081895260205260408820604051602081019061498d816102a0888886618087565b519020895260205260ff600360408a2001541615614f79575b6001600160a01b0384165f908152600d602052604090209088526020526102a06149df6040892093604051928391602083019586618087565b51902086526020528460408120916001830154926002810154614a028186615d3d565b614e64575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f51602061a3995f395f51905f525afa9687156114e0578697614e2b575b506001908201610100031b5f1901811b198616915f51602061a3995f395f51905f523b15610acf576040516370ca10bb60e01b81526001600160a01b0386166004820152602481019190915264174876e80090911b9190911760448201528381606481835f51602061a3995f395f51905f525af1908115610917578491614e16575b5050614ae0618257565b9015908115614e06575b50614db55750505050614afb618d3e565b614b086040519384615720565b600a8352835b818110614d9e575050825b600a8110614beb57505060015b60098110614b32578280f35b614b3c8183615d77565b51516001820190818311612fe35781614b5d614b7c926106d2889588615d77565b614b6c60206106e98688615d77565b604061071b816107118789615d77565b810b5f51602061a3995f395f51905f523b15610799576040519063fe74f05b60e01b825260048201526001602482015281816044815f51602061a3995f395f51905f525afa801561105c57614bd6575b5050600101614b26565b81614be091615720565b6107a857825f614bcc565b604051634b88b8ad60e11b815290602082600481885f51602061a3995f395f51905f525af1918215610950578592614d6b575b506020805460405163095ea7b360e01b81526001600160a01b03909116600482015264174876e80060248201529081604481895f51602061a3b95f395f51905f525af180156114e057614d4f575b506020548590608090614caa906001600160a01b0316614c8c8588615d77565b51604051948580948193638307c65560e01b83528360048401615b7b565b03925af19081156114e0578691614d31575b50614cc78286615d77565b52614cd28185615d77565b5060405191631135fc2960e21b83526004830152602082602481885f51602061a3995f395f51905f525af191821561095057600192614d13575b5001614b19565b614d2a9060203d8111610910576109018183615720565b505f614d0c565b614d49915060803d81116109495761093b8183615720565b5f614cbc565b614d669060203d8111610910576109018183615720565b614c6c565b9091506020813d8211614d96575b81614d8660209383615720565b810103126109a05751905f614c1e565b3d9150614d79565b602090614da96162fc565b82828701015201614b0e565b82945054905f51602061a3995f395f51905f523b156107a8576040516370ca10bb60e01b81526001600160a01b0390911660048201526024810191909152604481019290925281806064810161246c565b64174876e800915014155f614aea565b81614e2091615720565b6107a857825f614ad6565b955095506020853d602011614e5c575b81614e4860209383615720565b810103126109a05793519489949081614a54565b3d9150614e3b565b90919250614e728185615d3d565b610100036101008111614f655760ff8111614f655760405163348051d760e11b8152600190911b6004820181905289826024815f51602061a3995f395f51905f525afa8015614f5a57606a614f2a916020948d91614f40575b506040519485915f51602061a3f95f395f51905f52828401525f51602061a3795f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018d838201520301601f198101845283615720565b64174876e8001015610bf5575090879291614a07565b614f5491503d808f833e610c318183615720565b5f614ecb565b6040513d8c823e3d90fd5b634e487b7160e01b89526011600452602489fd5b614f81618474565b506149a6565b69152d02c7e14af6800000915014155f614894565b81614fa691615720565b6107a857825f614880565b955095506020853d602011614fe2575b81614fce60209383615720565b810103126109a057935194899490816147f9565b3d9150614fc1565b90919250614ff88185615d3d565b610100036101008111614f655760ff8111614f655760405163348051d760e11b8152600190911b6004820181905289826024815f51602061a3995f395f51905f525afa8015614f5a57606a6150af916020948d91614f4057506040519485915f51602061a3f95f395f51905f52828401525f51602061a3795f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018d838201520301601f198101845283615720565b69152d02c7e14af68000001015610bf55750908792916147ac565b6150d2618474565b5061474b565b615136576001810190818111615122578160640291606483048103615122576305f5e1000291808304620f424014901517156151225760019161511b8286615d77565b5201614640565b634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b85526021600452602485fd5b50346109a0575f3660031901126109a05760405163975a6ce960e01b81526020600482015260076024820152661b585a5b9b995d60ca1b60448201525f816064815f51602061a3995f395f51905f525afa908115615649576151d3916020915f91615697575b50604051809381926371ee464d60e01b8352604060048401526044830190615783565b6301512880602483015203815f5f51602061a3995f395f51905f525af1801561564957615668575b50604051611385808201908282106001600160401b03831117615654576040918391618ff48339730a7e848aca42d879ef06507fca0e7b33a0a63c1e815273b40afdb85a07f37ae217e7d6462e609900dd8d7a60208201520301905ff0801561564957602080546001600160a01b0319166001600160a01b039290921691821790555f51602061a3995f395f51905f523b156109a057604051906318caf8e360e31b8252600482015260406024820152601560448201527426b0bb32b934b1b5ab1929bbb0b820b230b83a32b960591b60648201525f81608481835f51602061a3995f395f51905f525af1801561564957615636575b505f51602061a3995f395f51905f523b15610aa557806040516318caf8e360e31b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260048201526040602482015260046044820152630ae8aa8960e31b60648201528181608481835f51602061a3995f395f51905f525af1801561105c57615621575b50505f51602061a3995f395f51905f523b15610aa557806040516318caf8e360e31b815273b40afdb85a07f37ae217e7d6462e609900dd8d7a600482015260406024820152600660448201526528bab7ba32b960d11b60648201528181608481835f51602061a3995f395f51905f525af1801561105c5761560c575b50505f51602061a3995f395f51905f523b15610aa557806040516318caf8e360e31b8152730a7e848aca42d879ef06507fca0e7b33a0a63c1e6004820152604060248201526007604482015266466163746f727960c81b60648201528181608481835f51602061a3995f395f51905f525af1801561105c576155f7575b50505f51602061a3995f395f51905f523b15610aa557806040516318caf8e360e31b81525f51602061a3b95f395f51905f5260048201526040602482015260046044820152635553444360e01b60648201528181608481835f51602061a3995f395f51905f525af1801561105c576155e2575b50505f51602061a3995f395f51905f523b15610aa557806040516318caf8e360e31b81525f51602061a4195f395f51905f52600482015260406024820152600360448201526247484f60e81b60648201528181608481835f51602061a3995f395f51905f525af1801561105c576155cd575b50505f51602061a3995f395f51905f523b15610aa557806040516318caf8e360e31b81527314cf6d2fe3e1b326114b07d22a6f6bb59e346c67600482015260406024820152600d60448201526c11d213d7d554d110d7d413d3d3609a1b60648201528181608481835f51602061a3995f395f51905f525af1801561105c57611b0a5750f35b816155d791615720565b610aa557805f615548565b816155ec91615720565b610aa557805f6154d6565b8161560191615720565b610aa557805f615463565b8161561691615720565b610aa557805f6153e6565b8161562b91615720565b610aa557805f61536a565b61564291505f90615720565b5f5f6152f1565b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b6020813d60201161568f575b8161568160209383615720565b810103126109a057516151fb565b3d9150615674565b6156ab91503d805f833e610c318183615720565b5f6151b0565b346109a05760403660031901126109a0576156e26020916156d1816156ea565b6004358152602435838201526159fa565b604051908152f35b604081019081106001600160401b0382111761565457604052565b606081019081106001600160401b0382111761565457604052565b90601f801991011681019081106001600160401b0382111761565457604052565b60206040818301928281528451809452019201905f5b8181106157645750505090565b82516001600160a01b0316845260209384019390920191600101615757565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b602081016020825282518091526040820191602060408360051b8301019401925f915b8383106157d957505050505090565b9091929394603f1982820301835285516020606081604085019360018060a01b0381511686520151936040838201528451809452019201905f905b80821061583357505050602080600192970193019301919392906157ca565b82516001600160e01b031916845260209384019390920191600190910190615814565b602081016020825282518091526040820191602060408360051b8301019401925f915b83831061588857505050505090565b90919293946020806158a6600193603f198682030187528951615783565b97019301930191939290615879565b600e548110156158cd57600e5f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b601f548110156158cd57601f5f5260205f2001905f90565b90600182811c92168015615927575b602083101461591357565b634e487b7160e01b5f52602260045260245ffd5b91607f1691615908565b5f9291815491615940836158f9565b8083529260018116908115615995575060011461595c57505050565b5f9081526020812093945091925b83831061597b575060209250010190565b60018160209294939454838587010152019101919061596a565b915050602093945060ff929192191683830152151560051b010190565b6001600160401b0381116156545760051b60200190565b8181029291811591840414171561512257565b81156159e6570490565b634e487b7160e01b5f52601260045260245ffd5b80516a084595161401484a0000008102908082046a084595161401484a0000001490151715615122576020615a31920151906159dc565b90565b6001600160401b03811161565457601f01601f191660200190565b6020818303126109a0578051906001600160401b0382116109a0570181601f820112156109a057805190615a8282615a34565b92615a906040519485615720565b828452602083830101116109a057815f9260208093018386015e8301015290565b908160209103126109a0575190565b601180546001600160a01b0319165f51602061a4195f395f51905f52179055565b601180546001600160a01b0319165f51602061a3b95f395f51905f52179055565b908160209103126109a0575180151581036109a05790565b91908260409103126109a057604051615b32816156ea565b6020808294805184520151910152565b906080828203126109a057615b73906040805193615b5f85615705565b805185526020810151602086015201615b1a565b604082015290565b5f51602061a3d95f395f51905f5281525f51602061a3b95f395f51905f5260208201525f51602061a4195f395f51905f52604082015260a08101939291906002821015615bce5760809160608201520152565b634e487b7160e01b5f52602160045260245ffd5b9081526001600160a01b039182166020820152911660408201525f6060820152608081019190915260a00190565b60405190615c1f606083615720565b602a8252690746572207468616e20360b41b6040837f43616c63756c6174656420616d6f756e742073686f756c64206265206772656160208201520152565b60405190615c6d606083615720565b6028825267072207468616e20360c41b6040837f5072696365206e756d657261746f722073686f756c642062652067726561746560208201520152565b60405190615cb9606083615720565b602a8252690746572207468616e20360b41b6040837f50726963652064656e6f6d696e61746f722073686f756c64206265206772656160208201520152565b60405190615d07606083615720565b60218252600360fc1b6040837f47617320757365642073686f756c642062652067726561746572207468616e2060208201520152565b9190820180921161512257565b8051156158cd5760200190565b8051600110156158cd5760400190565b8051600210156158cd5760600190565b80518210156158cd5760209160051b010190565b6020818303126109a0578051906001600160401b0382116109a0570181601f820112156109a0578051615dbd816159b2565b92615dcb6040519485615720565b81845260208085019260061b840101928184116109a057602001915b838310615df5575050505090565b6020604091615e048486615b1a565b815201920191615de7565b602060a060808301927314cf6d2fe3e1b326114b07d22a6f6bb59e346c6760601b81525f51602061a4195f395f51905f52838201525f51602061a3b95f395f51905f526040820152608060608201528451809452019201905f5b818110615e765750505090565b8251845260209384019390920191600101615e69565b60a0919360209360808301958352600180851b031684830152600180841b03166040820152608060608201528451809452019201905f5b818110615ed05750505090565b8251845260209384019390920191600101615ec3565b9190820391821161512257565b6020818303126109a0578051906001600160401b0382116109a057019080601f830112156109a057815190615f27826159b2565b92615f356040519485615720565b82845260208085019360051b8201019182116109a057602001915b818310615f5d5750505090565b8251600a8110156109a057815260209283019201615f50565b51600a811015615bce5790565b6020818303126109a0578051906001600160401b0382116109a057019080601f830112156109a0578151615fb6816159b2565b92615fc46040519485615720565b81845260208085019260051b8201019283116109a057602001905b828210615fec5750505090565b8151815260209182019101615fdf565b6020818303126109a0578051906001600160401b0382116109a057019080601f830112156109a057815190616030826159b2565b9261603e6040519485615720565b82845260208085019360051b8201019182116109a057602001915b8183106160665750505090565b82516001600160a01b03811681036109a057815260209283019201616059565b9080601f830112156109a057815161609d816159b2565b926160ab6040519485615720565b81845260208085019260051b8201019283116109a057602001905b8282106160d35750505090565b81518152602091820191016160c6565b60085460ff1680156160f25790565b50604051630667f9d760e41b81525f51602061a3995f395f51905f5260048201526519985a5b195960d21b60248201526020816044815f51602061a3995f395f51905f525afa908115615649575f9161614c575b50151590565b90506020813d602011616176575b8161616760209383615720565b810103126109a057515f616146565b3d915061615a565b6001600160a01b03811692919061619482615d4a565b51604051906348bd7dfd60e01b825260048201525f60248201525f60448201525f8160648183895af18015615649576161d4915f916162e2575b506165be565b15905f5b83518110156162da576161eb8185615d77565b51906040519163ecbbc03360e01b835260048301525f82602481838b5af1801561564957846162ba916001945f916162c0575b506162398a868060a01b0361623284615d4a565b511661665b565b61624c8a868060a01b0361623284615d57565b6162848261625a868b615d77565b51878060a01b0361626a85615d4a565b5116888060a01b0361627b86615d57565b5116918a61679d565b61628e8489615d77565b5190858060a01b0361629f82615d57565b5116906162b1878060a01b0391615d4a565b5116918761679d565b016161d8565b6162d491503d805f833e611b4b8183615720565b5f61621e565b505050509050565b6162f691503d805f833e612e918183615720565b5f6161ce565b6040519061630982615705565b815f81525f60208201526040805191616321836156ea565b5f83525f60208401520152565b615a319392606092825260208201528160408201520190615783565b5f51602061a3995f395f51905f523b156109a057616392915f916040519384928392636cd1e26960e11b84526004840152846024840152606060448401526064830190615783565b03815f51602061a3995f395f51905f525afa8015615649576163b15750565b5f6163bb91615720565b565b905f51602061a3995f395f51905f523b156109a0575f916163926040519485938493636cd1e26960e11b85526004850161632e565b616412906020616407825182860151906159c9565b9351910151906159c9565b908082036164205750505f90565b111561642b57600190565b5f1990565b5f51602061a3995f395f51905f523b156109a05760405190636d83fe6960e11b825260048201525f60248201525f816044815f51602061a3995f395f51905f525afa8015615649576163b15750565b5f51602061a3995f395f51905f523b156109a0576040519063260a5b1560e21b82526004820152600360248201525f816044815f51602061a3995f395f51905f525afa8015615649576163b15750565b5f51602061a3995f395f51905f523b156109a0576040519063260a5b1560e21b82526004820152600160248201525f816044815f51602061a3995f395f51905f525afa8015615649576163b15750565b5f51602061a3995f395f51905f523b156109a0576040519063260a5b1560e21b82526004820152600260248201525f816044815f51602061a3995f395f51905f525afa8015615649576163b15750565b905f51602061a3995f395f51905f523b156109a0576040519163260a5b1560e21b8352600483015260248201525f816044815f51602061a3995f395f51905f525afa8015615649576163b15750565b5f5b81518110156165f5576165d6612e168284615d77565b600a811015615bce576005146165ee576001016165c0565b5050600190565b50505f90565b5f5b81518110156165f557616613612e168284615d77565b600a811015615bce576009146165ee576001016165fd565b5f5b81518110156165f557616643612e168284615d77565b600a811015615bce576008146165ee5760010161662d565b60405190602082019263095ea7b360e01b845260018060a01b0316928360248401525f19604484015260448352616693606484615720565b82516001600160a01b038316915f91829182855af1906166b1617e24565b82616711575b5081616706575b50156166c957505050565b6167016163bb936040519063095ea7b360e01b602083015260248201525f6044820152604481526166fb606482615720565b82617e53565b617e53565b90503b15155f6166be565b80519192508115918215616729575b5050905f6166b7565b61673c9250602080918301019101615b02565b5f80616720565b60405190616752606083615720565b603682527536103a3790383934b1b29030b33a32b91039bbb0b81760511b6040837f45786563757465642070726963652073686f756c64206265206f72206571756160208201520152565b60c09490945260405163549387df60e11b8152600481018290526001600160a01b0380841660248301528416604482015291939290915f8180606481016101208490520381836001600160a01b0389165af1801561564957616806915f91617dbb575b50615d4a565b5161010052606060a0819052604051616862916168239082615720565b602381527f53656c6c206c696d69742073686f756c6420626520677265617465722074686160208201526206e20360ec1b60408201526101005161634a565b60a051505f806168ea61691860405161687d60a05182615720565b603681527f544553543a2054657374696e672070726963657320666f722070616972202573602082015275080b4f88095ccb8814d95b1b081b1a5b5a5d0e88095960521b6040820152604051928391638ef3f39960e01b60208401526080602484015260a4830190615783565b6001600160a01b038a811660448401528716606483015261010051608483015203601f198101835282615720565b6020815191016a636f6e736f6c652e6c6f675afa506040516348bd7dfd60e01b8152600481018390526001600160a01b038086166024830152821660448201525f8180606481010381836001600160a01b0389165af1801561564957616985915f91617da1575b506165fb565b906040519161699560a084615720565b60048352608036602085013715617d94575f5b6169b183615d4a565b526103e861010051046169c383615d57565b526101005160011c6169d483615d67565b528151600310156158cd5761010051608083015260405163155adc9160e31b8152935f8580616a0986868b8a60048601615e8c565b0381836001600160a01b0386165af1948515615649575f95617d78575b50616a39616a3386615d4a565b516159fa565b85515f1981019190821161512257616a57616a33616ab19389615d77565b60a0516040519290616a699084615720565b603083527f5072696365206174206c696d69742073686f756c6420626520736d616c6c657260208401526f0207468616e20707269636520617420360841b60408401526163bd565b616abd616a3386615d4a565b85515f19810190811161512257616b58616b715f93616ae0616a3386958c615d77565b60a051604051929190616af39084615720565b602d83527f544553543a20507269636520617420303a2025642c207072696365206174207360208401526c195b1b081b1a5b5a5d0e880959609a1b604084015260405194859363ca47c4eb60e01b602086015260a05160248601526084850190615783565b916044840152606483015203601f198101835282615720565b6020815191016a636f6e736f6c652e6c6f675afa5060a051604051616bd791616b9a9082615720565b602581527f544553543a2054657374696e67206265686176696f7220666f72207072696365602082015264020617420360dc1b6040820152617efa565b616c29616be386615d4a565b5151604060e081905280519190616bfa9083615720565b601882527f4e6f6d696e61746f722073686f756c646e277420626520300000000000000000602083015261634a565b616c7a6020616c3787615d4a565b51015160e05180519190616c4b9083615720565b601a82527f44656e6f6d696e61746f722073686f756c646e27742062652030000000000000602083015261634a565b616c86616a3386615d4a565b9460e05150616cc58660e05151616c9f60e05182615720565b6014815273151154d50e88141c9a58d948185d080c0e88095960621b6020820152617f3e565b616ccd6162fc565b5083515f19810190811161512257616ce59085615d77565b516005818102048103615122575f8060e0515160208101906370a0823160e01b825230602482015260248152616d1c604482615720565b51908b5afa50616d2d6101d7617e24565b50601180546001600160a01b0319166001600160a01b038a16179055600f805463ffffffff19166370a08231179055600e54600160401b81101561565457610224816001616d7e9301600e556158b5565b90556011546001600160a01b031661014052600f546010549060e01b616da261809e565b610140516001600160a01b03165f908152600d60205260409020909163ffffffff60e01b1690815f5260205260e0515f2060e051516020810190616deb816102a0888886618087565b5190205f5260205260ff600360e0515f2001541615617d6a575b610140516001600160a01b03165f908152600d60205260409020905f526020526102a0616e4360e0515f209360e05151928391602083019586618087565b5190205f5260205260e0515f206001810154916002820154616e658185615d3d565b617c54575b825460e05151630667f9d760e41b8152610140516001600160a01b0316600482015260248101829052949091906020866044815f51602061a3995f395f51905f525afa958615617c14575f96617c20575b506001908201610100031b5f1901811b1985165f51602061a3995f395f51905f523b156109a05760e051516370ca10bb60e01b8152610140516001600160a01b0316600482015260248101939093526005840290911b1760448201525f81606481835f51602061a3995f395f51905f525af18015617c1457617bff575b50616f41618257565b9015918215617bf1575b5050617afd575050616f5b618d3e565b60e05151634b88b8ad60e11b8152602081600481610120515f51602061a3995f395f51905f525af180156174515761012051608052617aca575b5060015b845181101561751e575f80617050617076616fb3856158e1565b50616fbe868b615d77565b516170626111b261702a60e0515194616fd960a05187615720565b603086527f544553543a2054657374696e67206265686176696f7220666f7220707269636560208701526f1030ba1012b99037b3103634b6b4ba1760811b60e05187015260e0515192838092615931565b60e05151635821efa160e01b602082015260a05160248201529586946084860190615783565b84810360231901604486015290615783565b90606483015203601f198101835282615720565b6020815191016a636f6e736f6c652e6c6f675afa50617098616a338284615d77565b5f8061710d6171318c6170ab878c615d77565b5160e05151916170bd60e05184615720565b601783527f544553543a205377617070696e67202564206f66202573000000000000000000602084015260e0515194859363038fd88960e31b602086015260a05160248601526084850190615783565b60448401929092526001600160a01b0316606483015203601f198101835282615720565b6020815191016a636f6e736f6c652e6c6f675afa508460808a89617175617158878c615d77565b5160e05151638307c65560e01b8152958694859460048601615be2565b03816101205160018060a01b038a165af1908115617451576101205191617500575b508051806a084595161401484a0000008102046a084595161401484a00000014811517156174e6576171e46171ef916a084595161401484a0000006171dc878c615d77565b5191026159dc565b9160e05101516159fa565b916172338260e0515161720460e05182615720565b601d81527f544553543a20202d2045786563757465642070726963653a20202025640000006020820152617f3e565b6172768160e0515161724760e05182615720565b601d81527f544553543a20202d20507269636520617420616d6f756e743a202025640000006020820152617f3e565b6172b98360e0515161728a60e05182615720565b601d81527f544553543a20202d20507269636520616674657220737761703a2025640000006020820152617f3e565b60c05115617460576173ec926173276173919260a0515060e05151906172e160a05183615720565b602c82527f50726963652073686f756c642062652067726561746564207468616e2065786560208301526b31baba32b210383934b1b29760a11b60e05183015285617f81565b60a05160e05151919061733a9083615720565b603782527f45786563757465642070726963652073686f756c64206265206772656174657260208301527f207468616e20707269636520616674657220737761702e00000000000000000060e051830152836163bd565b60a05160e0515191906173a49083615720565b602e82527f50726963652073686f756c642062652067726561746564207468616e2070726960208301526d31b29030b33a32b91039bbb0b81760911b60e051830152896163bd565b60e0515190631135fc2960e21b82526080516004830152602082602481610120515f51602061a3995f395f51905f525af191821561745157600192617433575b5001616f99565b61744a9060203d8111610910576109018183615720565b505f61742c565b60e051513d61012051823e3d90fd5b6174899061747a6174e194617473616743565b908d617f81565b617482616743565b908b617f81565b60e051519061749a60a05183615720565b602d82527f50726963652073686f756c64206265206f7220657175616c20746f207072696360208301526c329030b33a32b91039bbb0b81760991b60e05183015289617f81565b6173ec565b634e487b7160e01b61012051526011600452602461012051fd5b617518915060803d81116109495761093b8183615720565b5f617197565b505091509193925060696101005102610100518104606914610100511517156174e65760e051516348bd7dfd60e01b81526101208051600483018890526001600160a01b0387811660248501528681166044850152915160649485900497949192849291839188165af18015617451576175a2916101205191617aad575b5061662b565b156179505761760a8460e051516175bb60a05182615720565b603681527f544553543a2054657374696e6720726576657274206265686176696f722061626020820152751bdd99481d1a19481cd95b1b081b1a5b5a5d0e88095960521b60e051820152617f3e565b60e0518051949061761b9086615720565b6001855260e051601f190136602087013761763585615d4a565b5260e0515163155adc9160e31b815261012051818061765a8888878c60048601615e8c565b03816101205160018060a01b0388165af19081617935575b506178c9576001617681617fb6565b6308c379a01461783b575b6174515761769b608094615d4a565b51946176be60e0515196879586948594638307c65560e01b865260048601615be2565b61012051919003926001600160a01b03165af1908161781e575b506177bc5760016176e7617fb6565b6308c379a014617739575b617451575b6163bb60e0515161770a60e05182615720565b601781527f544553543a20416c6c207465737473207061737365642e0000000000000000006020820152617efa565b617741617fd1565b8061774d575b506176f2565b6101205160a05160e051519193506177b692919061776b9082615720565b603281527f544553543a204578706563746564206572726f72207768656e207377617070696020820152716e672061626f7665206c696d69743a20257360701b60e051820152618043565b5f617747565b60e0515162461bcd60e51b815260206004820152603360248201527f506f6f6c2073686f756c646e27742062652061626c6520746f20737761702061604482015272189bdd99481d1a19481cd95b1b081b1a5b5a5d606a1b6064820152608490fd5b6178369060803d6080116109495761093b8183615720565b6176d8565b617843617fd1565b8061784f575b5061768c565b90506178c3610120519160a0515060e0515161786d60a05182615720565b603881527f544553543a204578706563746564206572726f72207768656e2066657463686960208201527f6e672070726963652061626f7665206c696d69743a202573000000000000000060e051820152618043565b5f617849565b60e0515162461bcd60e51b815260206004820152603b60248201527f506f6f6c2073686f756c646e27742062652061626c6520746f2066657463682060448201527f7072696365732061626f7665207468652073656c6c206c696d697400000000006064820152608490fd5b61794b903d8061012051833e6114678183615720565b617672565b60a05160e051516179b2918691906179689082615720565b603181527f544553543a2054657374696e67206f7065726174696f6e732061626f766520746020820152701a19481cd95b1b081b1a5b5a5d0e880959607a1b60e051820152617f3e565b60e051805194906179c39086615720565b6001855260e051601f19013660208701376179dd85615d4a565b5260e051519363155adc9160e31b8552610120518580617a038488878c60048601615e8c565b03816101205160018060a01b0388165af190811561745157608095617a2c92617a925750615d4a565b5194617a4f60e0515196879586948594638307c65560e01b865260048601615be2565b61012051919003926001600160a01b03165af1801561745157617a73575b506176f7565b617a8b9060803d6080116109495761093b8183615720565b505f617a6d565b617aa8903d8061012051833e6114678183615720565b616800565b617ac491503d8061012051833e612e918183615720565b5f61759c565b6020813d602011617af5575b81617ae360209383615720565b810103126109a057516080525f616f95565b3d9150617ad6565b545f51602061a3995f395f51905f523b15617bea5760e051516370ca10bb60e01b815261012051610140516001600160a01b03166004830152602482019290925260448101929092528180606481010381610120515f51602061a3995f395f51905f525af1801561745157617bcf575b60e0515162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b61012051617bdc91615720565b61012051617bea5780617b6d565b6101205180fd5b600502141590505f80616f4b565b5f617c0991615720565b5f610120525f616f38565b60e051513d5f823e3d90fd5b9095506020813d602011617c4c575b81617c3c60209383615720565b810103126109a057519481616ebb565b3d9150617c2f565b617c5e8185615d3d565b6101000361010081116151225760ff81116151225760e0515163348051d760e11b81526001821b60048201525f816024815f51602061a3995f395f51905f525afa918215617c1457617d1a606a6020946001945f91617d50575b5060e051519586915f51602061a3f95f395f51905f52828401525f51602061a3795f395f51905f5260e05184015269030ba32b9103a3430b7160b51b60a0518401528051918291018484015e81015f838201520301601f198101855284615720565b1b836005021015617d2b5750616e6a565b60e0515162461bcd60e51b815260206004820152908190610c19906024830190615783565b617d6491503d805f833e610c318183615720565b5f617cb8565b617d72618474565b50616e05565b617d8d9195503d805f833e6114678183615720565b935f616a26565b61271061010051046169a8565b617db591503d805f833e612e918183615720565b5f61697f565b617dcf91503d805f833e61104e8183615720565b5f616800565b905f51602061a3995f395f51905f523b156109a05760405191638466f41560e01b8352600483015260248201525f816044815f51602061a3995f395f51905f525afa8015615649576163b15750565b3d15617e4e573d90617e3582615a34565b91617e436040519384615720565b82523d5f602084013e565b606090565b8151617e7e926001600160a01b03909216915f91829160200182855af1617e78617e24565b91618416565b80519081617e8a575050565b602080617e9b938301019101615b02565b15617ea257565b60405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b5f6102a0617f27829360405192839163104c13eb60e21b6020840152602060248401526044830190615783565b6020815191016a636f6e736f6c652e6c6f675afa50565b617f6d617f275f93928493604051938492632d839cb360e21b6020850152604060248501526064840190615783565b90604483015203601f198101835282615720565b905f51602061a3995f395f51905f523b156109a0575f916163926040519485938493630389490b60e61b85526004850161632e565b5f9060033d11617fc257565b905060045f803e5f5160e01c90565b5f60443d10615a31576040513d600319016004823e8051913d60248401116001600160401b0384111761803d57828201928351916001600160401b038311618035573d840160031901858401602001116180355750615a3192910160200190615720565b949350505050565b92915050565b618075617f275f93926102a08594604051948593634b5c427760e01b6020860152604060248601526064850190615783565b83810360231901604485015290615783565b60209291908391805192839101825e019081520190565b6180a96014546158f9565b618166576040519081826020600e549283815201600e5f5260205f20925f5b81811061814d5750506180dd92500383615720565b81518060051b9080820460201490151715615122576180fb81615a34565b906181096040519283615720565b808252618118601f1991615a34565b013660208301375f5b8351811015618148578061813760019286615d77565b5160208260051b8501015201618121565b509150565b84548352600194850194879450602090930192016180c8565b604051615a31816111b2816014615931565b600781019061818782546158f9565b61824357600191500190604051808360208295549384815201905f5260205f20925f5b81811061822a5750506181bf92500383615720565b81518060051b9080820460201490151715615122576181dd81615a34565b906181eb6040519283615720565b8082526181fa601f1991615a34565b013660208301375f5b8351811015618148578061821960019286615d77565b5160208260051b8501015201618203565b84548352600194850194879450602090930192016181aa565b50615a316111b29160405192838092615931565b5f806020600f5460e01b6182a56024618270600d618178565b6040519485918183019563ffffffff60e01b1686528051918291018484015e810186838201520301601f198101845283615720565b6011549151916001600160a01b03165afa906182bf617e24565b601054909290600581901b906001600160fb1b03811603615122575f938051602081115f1461834a57506020905b5f925b8284106182ff57505050509190565b9091929561830d8783615d3d565b83518110156158cd57830160200151600388901b91906001600160f81b031916881560088a8504141715615122576001921c1796019291906182f0565b906182ed565b905f806020600285015460e01b61836b602461827088618178565b60048601549151916001600160a01b03165afa6003618388617e24565b930154600581901b906001600160fb1b03811603615122575f938051602081115f1461841057506020905b5f925b8284106183c557505050509190565b909192956183d38783615d3d565b83518110156158cd57830160200151600388901b91906001600160f81b031916881560088a8504141715615122576001921c1796019291906183b6565b906183b3565b9061843a575080511561842b57805190602001fd5b63d6bda27560e01b5f5260045ffd5b8151158061846b575b61844b575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15618443565b601154600f546010546001600160a01b03909216915f9160e01b618498600d618178565b90845f52600d60205260405f209063ffffffff60e01b1690815f5260205260405f2060405160208101906184d1816102a0888886618087565b5190205f5260205260ff600360405f20015416618cfd575f51602061a3995f395f51905f523b156109a05760405163266cf10960e01b81525f81600481835f51602061a3995f395f51905f525af1801561564957618ce8575b50618535600d618350565b90506040516365bc948160e01b81528660048201528581602481835f51602061a3995f395f51905f525af19081156114e0578691618c80575b5080516185df57608460405162461bcd60e51b815260206004820152604060248201527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152fd5b855b8151811015618c78578160206185fa8361862b95615d77565b51604051630667f9d760e41b81526001600160a01b038c166004820152602481019190915293849081906044820190565b03815f51602061a3995f395f51905f525afa928315618c6d578893618c3a575b508215618be2575b61865d8282615d77565b51601154604051630667f9d760e41b81526001600160a01b03909116600482018190526024820183905291906020816044815f51602061a3995f395f51905f525afa908115618bd7578b91618ba6575b506186b8600d618350565b91909382155f14618b9f575f19905b5f51602061a3995f395f51905f523b15618b86576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810185905260448101919091528c81606481835f51602061a3995f395f51905f525af18015618b0b57908d91618b8a575b5050618738600d618350565b601154909491506001600160a01b03165f51602061a3995f395f51905f523b15618b86576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528b81606481835f51602061a3995f395f51905f525af18015618b7b57908c91618b62575b505082618b57575b505015618b4d578793889360ff601354166189d2575b6001868601610100031b5f1901851b16841c81036189c4575090618852917f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed60808b896102a06188278d604051928391602083019586618087565b5190206188348686615d77565b51906040519283528a602084015260408301526060820152a1615d77565b51906040519060808201928284106001600160401b038511176156545760039360405282526020820193845260408201908152606082019360018552898952600d60205260408920868a526020526040892060405160208101906188bb816102a08d8d86618087565b5190208a526020526040892092518355516001830155516002820155019051151560ff801983541691161790555b848452600d60205260408420818552602052604084206040516020810190618916816102a0888886618087565b519020855260205260ff60036040862001541615618967576040948452600d6020528484209084526020526102a061895b858520938651928391602083019586618087565b51902082526020522090565b60405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201526e3a143994903737ba103337bab7321760891b6064820152608490fd5b935091506001905b016185e1565b9450618a1d93506189e38383615d77565b51601154604051630667f9d760e41b81526001600160a01b0390911660048201526024810182905290959094602090869081906044820190565b03815f51602061a3995f395f51905f525afa948515614f5a578a95618b1a575b50618a4986600d618e57565b959096618a5781600d618f30565b60115490939192906001600160a01b03165f51602061a3995f395f51905f523b15618b16576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528c81606481835f51602061a3995f395f51905f525af18015618b0b57908d91618af2575b505087618aea575b5094956187cc5750935091506001906189cc565b96505f618ad6565b81618afc91615720565b618b07578b5f618ace565b8b80fd5b6040513d8f823e3d90fd5b8e80fd5b9094506020813d8211618b45575b81618b3560209383615720565b810103126109a05751935f618a3d565b3d9150618b28565b91506001906189cc565b141590505f806187b6565b81618b6c91615720565b618b77578a5f6187ae565b8a80fd5b6040513d8e823e3d90fd5b8d80fd5b81618b9491615720565b618b07578b5f61872c565b8c906186c7565b90506020813d8211618bcf575b81618bc060209383615720565b810103126109a057515f6186ad565b3d9150618bb3565b6040513d8d823e3d90fd5b7f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5618c32618c108484615d77565b51604080516001600160a01b038e168152602081019290925290918291820190565b0390a1618653565b9092506020813d8211618c65575b81618c5560209383615720565b810103126109a05751915f61864b565b3d9150618c48565b6040513d8a823e3d90fd5b5050506188e9565b90503d8087833e618c918183615720565b8101604082820312618ce45781516001600160401b038111618ce05781618cb9918401616086565b916020810151906001600160401b038211610ade57618cd9929101616086565b505f61856e565b8780fd5b8680fd5b618cf59194505f90615720565b5f925f61852a565b91939092505f52600d60205260405f20905f526020526102a0618d2f60405f2093604051928391602083019586618087565b5190205f5260205260405f2090565b6bffffffffffffffffffffffff60a01b6011541660115563ffffffff19600f5416600f55600e545f600e5580618e15575b505f60105560ff1960135416601355618d896014546158f9565b80618d915750565b601f8111600114618da357505f601455565b60145f52601f0160051c7fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec017fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ed5b818110618e0a57505060145f525f602081208160145555565b5f8155600101618df1565b600e5f527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd908101905b818110618e4c5750618d6f565b5f8155600101618e3f565b91905f5b6101008110618e6e57505090505f905f90565b8060ff0360ff8111615122576004850154600190911b906001600160a01b03165f51602061a3995f395f51905f523b156109a0576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f51602061a3995f395f51905f525af1801561564957618f20575b50618efa84618350565b81618f16575b50618f0d57600101618e5b565b92505060019190565b905015155f618f00565b5f618f2a91615720565b5f618ef0565b91905f5b6101008110618f4757505090505f905f90565b60048401546001821b906001600160a01b03165f51602061a3995f395f51905f523b156109a0576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f51602061a3995f395f51905f525af1801561564957618fe3575b50618fc684618350565b81618fd9575b50618f0d57600101618f34565b905015155f618fcc565b5f618fed91615720565b5f618fbc56fe60c03461009a57601f61138538819003918201601f19168301916001600160401b0383118484101761009e57808492604094855283398101031261009a57610052602061004b836100b2565b92016100b2565b6001600160a01b039182166080521660a0526040516112be90816100c78239608051818181610233015281816105ef01526108ac015260a0518181816101ef0152610db90152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361009a5756fe6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c8063212dd07014610a4e57806323eeca011461086b57806348bd7dfd146107a557806367ca7c91146105715780638307c6551461050b578063a9270fbe146103e4578063aad6e48814610262578063c45a01551461021e578063c6bbd5a7146101da5763ecbbc0330361000e57346101d65760203660031901126101d6576040516100ab606082610b39565b6002815260208101604036823760043560601c60405162fc63d160e41b8152602081600481855afa9182156101ae576004926020925f916101b9575b506001600160a01b03166100fa86610ede565b52604051635f64b55b60e01b815292839182905afa9081156101ae575f9161017f575b509091906001600160a01b031661013382610eeb565b52604051918291602083019060208452518091526040830191905f5b81811061015d575050500390f35b82516001600160a01b031684528594506020938401939092019160010161014f565b6101a1915060203d6020116101a7575b6101998183610b39565b810190610b8b565b5f61011d565b503d61018f565b6040513d5f823e3d90fd5b6101d09150833d85116101a7576101998183610b39565b5f6100e7565b5f80fd5b346101d6575f3660031901126101d6576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101d6575f3660031901126101d6576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101d65760803660031901126101d65761027b610a9b565b610283610ab1565b5060643567ffffffffffffffff81116101d657366023820112156101d6578060040135906102b082610b5b565b916102be6040519384610b39565b8083526024602084019160051b830101913683116101d657602401905b8282106103d4575050508051916102f183610b5b565b926102ff6040519485610b39565b80845261030e601f1991610b5b565b015f5b8181106103b157505060043560601c905f5b8351811015610360578061034461033c60019387610efb565b518486610ceb565b61034e8288610efb565b526103598187610efb565b5001610323565b846040518091602082016020835281518091526020604084019201905f5b81811061038c575050500390f35b825180518552602090810151818601528695506040909401939092019160010161037e565b6020906040516103c081610b01565b5f81525f8382015282828801015201610311565b81358152602091820191016102db565b346101d65760046101206103f736610ac7565b9160409391935194858092631865c57d60e01b825260601c5afa9283156101ae575f936104da575b506040519261042f606085610b39565b600284526020840192604036853781516020909201516001600160801b03908116939216916001600160a01b03908116911610156104bf5761047084610ede565b5261047a83610eeb565b52905b604051918291602083019060208452518091526040830191905f5b8181106104a6575050500390f35b8251845285945060209384019390920191600101610498565b906104c984610ede565b526104d383610eeb565b529061047d565b6104fd9193506101203d8111610504575b6104f58183610b39565b810190610bd9565b918361041f565b503d6104eb565b346101d65760a03660031901126101d657610524610a9b565b61052c610ab1565b5060643560028110156101d65760809161054c9160843591600435610f0f565b6020604080519280518452828101518385015201518051604084015201516060820152f35b346101d65760803660031901126101d6576004356001600160a01b038116908190036101d65760643567ffffffffffffffff81116101d657366023820112156101d657806004013567ffffffffffffffff81116101d65781013660248201116101d6576040516315e3ab2960e21b81523360048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156101ae575f9161076b575b501561073557602090829003126101d6576024013560018060a01b0381168091036101d6575f809160405160208101916323b872dd60e01b83526024820152336044820152602435606482015260648152610683608482610b39565b519082855af13d15610729573d67ffffffffffffffff8111610715576106cb91604051916106bb6020601f19601f8401160184610b39565b82523d5f602084013e5b8361122a565b80519081151591826106f2575b50506106e057005b635274afe760e01b5f5260045260245ffd5b81925090602091810103126101d657602061070d9101610bcc565b1582806106d8565b634e487b7160e01b5f52604160045260245ffd5b6106cb906060906106c5565b60405162461bcd60e51b815260206004820152600e60248201526d139bdd119858dd1bdc9e541bdbdb60921b6044820152606490fd5b90506020813d60201161079d575b8161078660209383610b39565b810103126101d65761079790610bcc565b84610627565b3d9150610779565b346101d6576107b336610ac7565b5050506040516107c4608082610b39565b6003815260208101606036823760016107dc83610ede565b5260026107e883610eeb565b528151600210156108575760036060830152604051906020820192602083525180935260408201905f935b8085106108205783830384f35b9091825190600a8210156108435760208160019382935201930194019390610813565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b346101d65760403660031901126101d6576004356024358101808211610a3a5760405163b4b9d1f160e01b8152600481019290925260248201525f816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156101ae575f91610998575b5080519061090a6108f483610b5b565b926109026040519485610b39565b808452610b5b565b602083019190601f19013683375f5b8151811015610953576001906bffffffffffffffffffffffff1961093d8285610efb565b5160601b1661094c8287610efb565b5201610919565b505090604051918291602083019060208452518091526040830191905f5b81811061097f575050500390f35b8251845285945060209384019390920191600101610971565b90503d805f833e6109a98183610b39565b8101906020818303126101d65780519067ffffffffffffffff82116101d657019080601f830112156101d6578151906109e182610b5b565b926109ef6040519485610b39565b82845260208085019360051b8201019182116101d657602001915b818310610a1a57505050816108e4565b82516001600160a01b03811681036101d657815260209283019201610a0a565b634e487b7160e01b5f52601160045260245ffd5b346101d65760603660031901126101d6576004356001600160a01b03811681036101d657610a89604091610a80610a9b565b60443591610ceb565b60208251918051835201516020820152f35b602435906001600160a01b03821682036101d657565b604435906001600160a01b03821682036101d657565b60609060031901126101d657600435906024356001600160a01b03811681036101d657906044356001600160a01b03811681036101d65790565b6040810190811067ffffffffffffffff82111761071557604052565b6080810190811067ffffffffffffffff82111761071557604052565b90601f8019910116810190811067ffffffffffffffff82111761071557604052565b67ffffffffffffffff81116107155760051b60200190565b60405190610b8082610b01565b5f6020838281520152565b908160209103126101d657516001600160a01b03811681036101d65790565b51906001600160801b03821682036101d657565b51908160070b82036101d657565b519081151582036101d657565b90816101209103126101d65760405190610120820182811067ffffffffffffffff82111761071557604052610c0d81610baa565b8252610c1b60208201610baa565b6020830152610c2c60408201610bbe565b6040830152610c3d60608201610bbe565b6060830152608081015164ffffffffff811681036101d657608083015260a08101518060030b81036101d65760a0830152610c7a60c08201610bcc565b60c083015260e08101519063ffffffff821682036101d6576101009160e0840152015160ff811681036101d65761010082015290565b60030b6063190190637fffffff198212637fffffff831317610a3a57565b60030b60640190637fffffff8213637fffffff19831217610a3a57565b919091610cf6610b73565b5060405162fc63d160e41b81526001600160a01b03919091169290602081600481875afa9081156101ae575f91610ebf575b506001600160a01b039182169116148015610e5c57604051631865c57d60e01b815261012081600481875afa80156101ae5760a0610d7b916001600160801b03935f91610e3d575b50015160030b610cce565b925b604051946349b5931160e01b8652600486015216602484015260448301525f606483015260030b608482015260608160a4815f60018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19081156101ae575f905f92610e03575b5060405191610df983610b01565b8252602082015290565b9150506060813d606011610e35575b81610e1f60609383610b39565b810103126101d65760208151910151905f610deb565b3d9150610e12565b610e5691506101203d8111610504576104f58183610b39565b5f610d70565b604051631865c57d60e01b815261012081600481875afa80156101ae5760a0610e9a916001600160801b03935f91610ea0575b50015160030b610cb0565b92610d7d565b610eb991506101203d8111610504576104f58183610b39565b5f610e8f565b610ed8915060203d6020116101a7576101998183610b39565b5f610d28565b8051156108575760200190565b8051600110156108575760400190565b80518210156108575760209160051b010190565b9290604051936060850185811067ffffffffffffffff821117610715576040525f85525f6020860152604051610f4481610b01565b5f81525f602082015260408601528483156111a7575060601c9060405162fc63d160e41b8152602081600481865afa9081156101ae575f91611188575b506001600160a01b03828116911614801561114c57604051631865c57d60e01b815261012081600481875afa9081156101ae57610fcc9160a0915f91610e3d5750015160030b610cce565b905b5a956002811015610843576001036110a6579360409161103b95835192610ff484610b1d565b8352602083015260018383015260030b6060820152815190336020830152602082526110208383610b39565b8251633eece7db60e01b8152958692839233600485016111c6565b03815f865af19182156101ae5761105c935f93611074575b50828652610ceb565b60408301525b5a8103908111610a3a57602082015290565b61109791935060403d60401161109f575b61108f8183610b39565b8101906111b0565b50915f611053565b503d611085565b6040906111029594928251916110bb83610b1d565b86835260208301525f8383015260030b6060820152815190336020830152602082526110e78383610b39565b8251633eece7db60e01b8152968792839233600485016111c6565b03815f855af180156101ae57611121945f9161112b575b508652610ceb565b6040830152611062565b611144915060403d60401161109f5761108f8183610b39565b90505f611119565b604051631865c57d60e01b815261012081600481875afa9081156101ae576111829160a0915f91610ea05750015160030b610cb0565b90610fce565b6111a1915060203d6020116101a7576101998183610b39565b5f610f81565b94505050505090565b91908260409103126101d6576020825192015190565b9192606060e09460209360018060a01b0316855280518486015283810151151560408601526040810151151582860152015160030b608084015260c060a084015280519182918260c0860152018484015e5f828201840152601f01601f1916010190565b9061124e575080511561123f57805190602001fd5b63d6bda27560e01b5f5260045ffd5b8151158061127f575b61125f575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561125756fea2646970667358221220f3ef5375aaed25576a473447336d380f40555b4f9090d9d18f46219133f4367064736f6c634300081b00336b656420736c6f742e2057652063616e2774206669742076616c7565206772650000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4814cf6d2fe3e1b326114b07d22a6f6bb59e346c6700000000000000000000000073746453746f726167652066696e642853746453746f72616765293a2050616300000000000000000000000040d16fc0246ad3160ccc09b8d0d3a2cd28ae6c2fa2646970667358221220bae43ca7403f70453b04d8151f07828c1fb657532904f476624062272a2063fc64736f6c634300081b0033a03837a25210ee280c2113ff4b77ca23440b19d4866cca721c801278fd08d807","sourceMap":"270:9967:75:-:0;;;;;;3166:4:2;270:9967:75;;3166:4:2;270:9967:75;;;3166:4:2;270:9967:75;3166:4:2;270:9967:75;;1038:4:12;270:9967:75;;;1038:4:12;270:9967:75;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;270:9967:75;;;;;;;;;:::i;:::-;564:29:65;270:9967:75;;-1:-1:-1;;;270:9967:75;;;;;564:29:65;;270:9967:75;;;;:::i;:::-;;;;-1:-1:-1;;;270:9967:75;;;;;564:29:65;;270:9967:75;;;;:::i;:::-;564:29:65;270:9967:75;;-1:-1:-1;;;270:9967:75;;;;564:29:65;;;270:9967:75;;;564:29:65;270:9967:75;;;564:29:65;270:9967:75;;;-1:-1:-1;;270:9967:75;;;;;-1:-1:-1;;;;;;;;;;;270:9967:75;;564:29:65;270:9967:75;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;270:9967:75;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3166:4:2;270:9967:75;;;;;;;;;;;-1:-1:-1;;;;270:9967:75;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;270:9967:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3166:4:2;270:9967:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3166:4:2;270:9967:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;270:9967:75;;;;;;;;;;;564:29:65;270:9967:75;;;;;;;;-1:-1:-1;;;;;;;;;;;270:9967:75;;;;;;;;;;;;;;3166:4:2;270:9967:75;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;270:9967:75;;;-1:-1:-1;;;;;270:9967:75;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x610160806040526004361015610013575f80fd5b5f905f3560e01c90816308c41745146156b1575080630a9254e41461514a578063111f33921461460d5780631c6e35e414613d525780631e1e26fa146133ae5780631ed7831c146133305780632ade3880146131715780633e5e3c23146130f35780633f7286f4146130755780634a36e37214612e9f5780634b13c57114612d825780635cca77b214612d2c57806366d9a9a014612b7e5780637f55213e14611cd35780638335a17f14611beb57806385226c8114611b595780638f1ed4c6146119c5578063916a17c61461173957806399cef81b14611571578063a00872f114611505578063a502846b146111c7578063b5508aa91461112e578063ba414fa614611109578063d170c3cc14611067578063d3479a0114610eed578063e20c9f7114610e5f578063fa7626d414610e3c5763fe3ee58b14610153575f80fd5b34610aa55780600319360112610aa55780610160906040516101758382615720565b600a8152601f19830180366020840137845b600a8110610dbb5750828060405160208101906370a0823160e01b8252306024820152602481526101b9604482615720565b51905f51602061a4195f395f51905f525afa506101e66101d7617e24565b60208082518301019101615ab1565b506101ef615ac0565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015610c615761022481600161023d9301600e556158b5565b919091309083549060031b91821b915f19901b19161790565b905560018060a01b0360115416600f5460e01b6010549061025c61809e565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908188526020526040872060405160208101906102ae816102a0888886618087565b03601f198101835282615720565b519020885260205260ff60036040892001541615610dad575b6001600160a01b0384165f908152600d602052604090209087526020526102a06103006040882093604051928391602083019586618087565b5190208552602052604084209060018201549160028101546103228185615d3d565b610cd5575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052949091906020866044815f51602061a3995f395f51905f525afa958615610b16578996610ca1575b506001908201610100031b5f1901811b198516915f51602061a3995f395f51905f523b15610ade576040516370ca10bb60e01b81526001600160a01b0386166004820152602481019190915269152d02c7e14af680000090911b9190911760448201528681606481835f51602061a3995f395f51905f525af18015610ad3578790610c8a575b5050610404618257565b9015908115610c75575b506109c35750505061041e618d3e565b828060405160208101906370a0823160e01b825230602482015260248152610447604482615720565b51905f51602061a3b95f395f51905f525afa506104656101d7617e24565b5061046e615ae1565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015610c61576102248160016104a39301600e556158b5565b905560018060a01b0360115416600f5460e01b601054906104c261809e565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818852602052604087206040516020810190610506816102a0888886618087565b519020885260205260ff60036040892001541615610c53575b6001600160a01b0384165f908152600d602052604090209087526020526102a06105586040882093604051928391602083019586618087565b51902085526020526040842090600182015491600281015461057a8185615d3d565b610b21575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052949091906020866044815f51602061a3995f395f51905f525afa958615610b16578996610ae2575b506001908201610100031b5f1901811b198516915f51602061a3995f395f51905f523b15610ade576040516370ca10bb60e01b81526001600160a01b0386166004820152602481019190915264174876e80090911b9190911760448201528681606481835f51602061a3995f395f51905f525af18015610ad3578790610ab8575b5050610657618257565b9015908115610aa8575b506109c357505050610671618d3e565b61067e6040519485615720565b600a8452825b8181106109ac575050815b600a81106107c057505060015b600981106106a8578380f35b6106b28184615d77565b515160018201908183116107ac57906106da610724926106d28388615d77565b515190617dd5565b61070160206106e98588615d77565b51015160206106f88489615d77565b51015190617dd5565b604061071b816107118689615d77565b5101519287615d77565b510151906163f2565b820b5f51602061a3995f395f51905f523b156107a8576040519063fe74f05b60e01b825260048201526001602482015282816044815f51602061a3995f395f51905f525afa801561079d57908391610781575b505060010161069c565b9061078b91615720565b81841261079957815f610777565b5080fd5b6040513d85823e3d90fd5b8280fd5b634e487b7160e01b84526011600452602484fd5b604051634b88b8ad60e11b8152602081600481875f51602061a3995f395f51905f525af1908115610917578491610977575b506020805460405163095ea7b360e01b81526001600160a01b03909116600482015264174876e80060248201529081604481885f51602061a3b95f395f51905f525af180156109505761095b575b50602054849060809061087f906001600160a01b03166108608688615d77565b51604051948580948193638307c65560e01b8352600160048401615b7b565b03925af1908115610950578591610922575b5061089c8387615d77565b526108a78286615d77565b5060405190631135fc2960e21b82526004820152602081602481875f51602061a3995f395f51905f525af180156109175790600192916108e9575b500161068f565b6109099060203d8111610910575b6109018183615720565b810190615b02565b505f6108e2565b503d6108f7565b6040513d86823e3d90fd5b610943915060803d8111610949575b61093b8183615720565b810190615b42565b5f610891565b503d610931565b6040513d87823e3d90fd5b6109729060203d8111610910576109018183615720565b610840565b90506020813d82116109a4575b8161099160209383615720565b810103126109a057515f6107f2565b5f80fd5b3d9150610984565b6020906109b76162fc565b82828801015201610684565b85809392899254905f51602061a3995f395f51905f523b156107a8576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810191909152604481019390935282606481835f51602061a3995f395f51905f525af1801561079d57610a8e575b60405162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b610a99838093615720565b12610aa5578080610a2d565b80fd5b64174876e800915014155f610661565b610ac191615720565b858812610acf575f8661064d565b8580fd5b6040513d89823e3d90fd5b8880fd5b9095506020813d602011610b0e575b81610afe60209383615720565b810103126109a0575194816105cc565b3d9150610af1565b6040513d8b823e3d90fd5b610b2b8185615d3d565b610100036101008111610c3f5760ff8111610c3f576001901b60405163348051d760e11b815281600482015288816024815f51602061a3995f395f51905f525afa908115610b1657606a60209392610be3928c91610c1d575b506040519485915f51602061a3f95f395f51905f52828401525f51602061a3795f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018c838201520301601f198101845283615720565b64174876e8001015610bf5575061057f565b60405162461bcd60e51b815260206004820152908190610c19906024830190615783565b0390fd5b610c3991503d808e833e610c318183615720565b810190615a4f565b5f610b84565b634e487b7160e01b88526011600452602488fd5b610c5b618474565b5061051f565b634e487b7160e01b84526041600452602484fd5b69152d02c7e14af6800000915014155f61040e565b610c9391615720565b858812610acf575f866103fa565b9095506020813d602011610ccd575b81610cbd60209383615720565b810103126109a057519481610374565b3d9150610cb0565b610cdf8185615d3d565b610100036101008111610c3f5760ff8111610c3f576001901b60405163348051d760e11b815281600482015288816024815f51602061a3995f395f51905f525afa908115610b1657606a60209392610d96928c91610c1d57506040519485915f51602061a3f95f395f51905f52828401525f51602061a3795f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018c838201520301601f198101845283615720565b69152d02c7e14af68000001015610bf55750610327565b610db5618474565b506102c7565b9280610e285750849260018101808211610e14578060640290606482048103610c3f5768056bc75e2d631000000290808204670de0b6b3a76400001490151715610e145790600191610e0d8286615d77565b5201610187565b634e487b7160e01b87526011600452602487fd5b634e487b7160e01b81526021600452602490fd5b5034610aa55780600319360112610aa557602060ff601e54166040519015158152f35b5034610aa55780600319360112610aa55760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b818110610ece57610eca85610ebe81870382615720565b60405191829182615741565b0390f35b82546001600160a01b0316845260209093019260019283019201610ea7565b5034610aa55780600319360112610aa55760205460405163549387df60e11b81525f51602061a3d95f395f51905f5260048201525f51602061a4195f395f51905f5260248201525f51602061a3b95f395f51905f526044820152908290829060649082906001600160a01b03165afa90811561105c5761103791610fe391849161103a575b50610f7d815161651f565b610fde610f8982615d4a565b5160405190610f99606083615720565b602d82527f4c696d697420666f722073656c6c20746f6b656e2073686f756c64206265206760208301526c0726561746572207468616e203609c1b604083015261634a565b615d57565b5160405190610ff3606083615720565b602c82527f4c696d697420666f722062757920746f6b656e2073686f756c6420626520677260208301526b06561746572207468616e20360a41b604083015261634a565b80f35b61105691503d8086833e61104e8183615720565b810190615f83565b5f610f72565b6040513d84823e3d90fd5b5034610aa5576040366003190112610aa557600435906001600160a01b0382168203610aa5576024356001600160401b0381116107995736602382011215610799578060040135926110b8846159b2565b916110c66040519384615720565b8483526024602084019560051b8201019036821161110557602401945b8186106110f55784611037858561617e565b85358152602095860195016110e3565b8480fd5b5034610aa55780600319360112610aa55760206111246160e3565b6040519015158152f35b5034610aa55780600319360112610aa55760195461114b816159b2565b916111596040519384615720565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b83831061119b5760405180610eca8782615856565b6001602081926040516111b9816111b28189615931565b0382615720565b815201920192019190611186565b5034610aa5576040366003190112610aa5578060043560243560018060a01b036020541660405163549387df60e11b81527314cf6d2fe3e1b326114b07d22a6f6bb59e346c6760601b60048201525f51602061a4195f395f51905f5260248201525f51602061a3b95f395f51905f5260448201528481606481855afa9081156109505785916114eb575b5061125b81615d4a565b5184105f51602061a3995f395f51905f523b15610acf5760405190632631f2b160e11b8252600482015285816024815f51602061a3995f395f51905f525afa9081156114e05786916114cb575b50506112b390615d4a565b5182105f51602061a3995f395f51905f523b156111055760405190632631f2b160e11b8252600482015284816024815f51602061a3995f395f51905f525afa9081156109505785916114b6575b50505f51602061a3995f395f51905f523b1561149c57604051632631f2b160e11b8152662386f26fc100008411600482015284816024815f51602061a3995f395f51905f525afa9081156109505785916114a1575b50505f51602061a3995f395f51905f523b1561149c57604051632631f2b160e11b8152662386f26fc10000831160048201529284846024815f51602061a3995f395f51905f525afa928315610950578593611483575b6113fc939450604051916113c0606084615720565b6002835260403660208501376113d583615d4a565b526113df82615d57565b5260405195868094819363155adc9160e31b835260048301615e0f565b03925af1918215611476578192611452575b50805b825181101561144e578061143161142a60019386615d77565b5151616430565b61144860206114408387615d77565b510151616430565b01611411565b5080f35b61146f9192503d8084833e6114678183615720565b810190615d8b565b905f61140e565b50604051903d90823e3d90fd5b9290938161149091615720565b61149c578284926113ab565b505050fd5b816114ab91615720565b61149c57835f611355565b816114c091615720565b61149c57835f611300565b816114d591615720565b61110557845f6112a8565b6040513d88823e3d90fd5b6114ff91503d8087833e61104e8183615720565b5f611251565b5034610aa5576020366003190112610aa557600435601f548110156107995761152d906158e1565b91909161155d57604051610eca90611549816111b28187615931565b604051918291602083526020830190615783565b634e487b7160e01b81526004819052602490fd5b5034610aa55780600319360112610aa5576020546040516323eeca0160e01b815260048101839052600a6024820152908290829060449082906001600160a01b03165afa90811561105c5782916116f8575b50818151604051906115d6606083615720565b603882527f4e756d626572206f6620706f6f6c204944732073686f756c64206265206c657360208301527f73207468616e206f7220657175616c20746f206c696d6974000000000000000060408301525f51602061a3995f395f51905f523b156107a85761166f918391604051938492839263d17d4b0d60e01b84526004840152600a6024840152606060448401526064830190615783565b03815f51602061a3995f395f51905f525afa801561105c576116e3575b50508051611698575080f35b6116a461103791615d4a565b51604051906116b4604083615720565b602082527f506f6f6c2049442073686f756c642062652067726561746572207468616e2030602083015261634a565b816116ed91615720565b61079957815f61168c565b90503d8083833e6117098183615720565b81016020828203126107a85781516001600160401b0381116117355761172f9201616086565b5f6115c3565b8380fd5b5034610aa55780600319360112610aa557601c54611756816159b2565b906117646040519283615720565b808252601c8352827f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b8383106117a75760405180610eca87826157a7565b6040516117b3816156ea565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b816007840110611926578460019794600297946020979461183e94549181811061190a575b8181106118ee575b8181106118d2575b8181106118b6575b81811061189a575b81811061187e575b818110611864575b10611850575b500382615720565b83820152815201920192019190611792565b6001600160e01b031916815286015f611836565b828a1b6001600160e01b0319168452928901928b01611830565b604083901b6001600160e01b0319168452928901928b01611828565b606083901b6001600160e01b0319168452928901928b01611820565b608083901b6001600160e01b0319168452928901928b01611818565b60a083901b6001600160e01b0319168452928901928b01611810565b60c083901b6001600160e01b0319168452928901928b01611808565b60e083901b6001600160e01b0319168452928901928b01611800565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e08201520194019201916117db565b5034610aa55780600319360112610aa55760205460405163ecbbc03360e01b81525f51602061a3d95f395f51905f52600482015282918290829060249082906001600160a01b03165afa90811561105c578291611b37575b50611a28815161651f565b6001600160a01b03611a3982615d4a565b51165f51602061a3995f395f51905f523b15611b3357604051906328a9b0fb60e11b825260048201525f51602061a4195f395f51905f52602482015282816044815f51602061a3995f395f51905f525afa90811561079d578391611b1e575b506001600160a01b0391611aac9150615d57565b51165f51602061a3995f395f51905f523b15611b1b57604051906328a9b0fb60e11b825260048201525f51602061a3b95f395f51905f52602482015281816044815f51602061a3995f395f51905f525afa801561105c57611b0a5750f35b81611b1491615720565b610aa55780f35b50fd5b81611b2891615720565b611b1b57815f611a98565b5050fd5b611b5391503d8084833e611b4b8183615720565b810190615ffc565b5f611a1d565b5034610aa55780600319360112610aa557601a54611b76816159b2565b91611b846040519384615720565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b838310611bc65760405180610eca8782615856565b600160208192604051611bdd816111b28189615931565b815201920192019190611bb1565b5034610aa55780600319360112610aa55760408180611c5c8351611c0f8582615720565b60018152601f198501366020830137678ac7230489e80000611c3082615d4a565b52602054855163155adc9160e31b81529485936001600160a01b03909216928492839160048301615e0f565b03925af1918215611cca5750611ca5611037926020928591611cb0575b50611c8481516164cf565b611ca0611c9082615d4a565b5151611c9a615c5e565b9061634a565b615d4a565b510151611c9a615caa565b611cc491503d8087833e6114678183615720565b5f611c79565b513d84823e3d90fd5b5034610aa5576040366003190112610aa5576004359060243580151581036107995715612b785760015b60205460405163549387df60e11b81525f51602061a3d95f395f51905f5260048201525f51602061a4195f395f51905f5260248201525f51602061a3b95f395f51905f526044820152908390829060649082906001600160a01b03165afa90811561079d578391612b5e575b506002821015612b4a57600182149081156126a65792611d8c8195929394615d57565b5182105f51602061a3995f395f51905f523b156107995760405190632631f2b160e11b8252600482015281816024815f51602061a3995f395f51905f525afa801561105c57612691575b508060405160208101906370a0823160e01b825230602482015260248152611dff604482615720565b51905f51602061a4195f395f51905f525afa50611e1d6101d7617e24565b50611e26615ac0565b6370a0823163ffffffff19600f541617600f55600e54600160401b81101561267d5790611e5e61022483600188969501600e556158b5565b905560018060a01b0360115416600f5460e01b60105490611e7d61809e565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818852602052604087206040516020810190611ec1816102a0888886618087565b519020885260205260ff6003604089200154161561266f575b6001600160a01b0384165f908152600d602052604090209087526020526102a0611f136040882093604051928391602083019586618087565b519020855260205260408420906001820154916002810154611f358185615d3d565b612559578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052949091906020866044815f51602061a3995f395f51905f525afa958615610b16578996612520575b506001908201610100031b5f1901811b1985165f51602061a3995f395f51905f523b15610ade576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528681606481835f51602061a3995f395f51905f525af1908115610ad357879161250b575b505061200a618257565b90159081156124ff575b5061241c57505050612024618d3e565b6020805460405163095ea7b360e01b81526001600160a01b0390911660048201525f1960248201529081604481875f51602061a4195f395f51905f525af18015610917576123fd575b505b6040516370a0823160e01b8152306004820152916020836024815f51602061a3b95f395f51905f525afa9283156109175784936123c6575b506040516370a0823160e01b8152306004820152946020866024815f51602061a4195f395f51905f525afa95861561095057859661238d575b50602054604051638307c65560e01b81525f51602061a3d95f395f51905f5260048201525f51602061a4195f395f51905f5260248201525f51602061a3b95f395f51905f5260448201526064810192909252608482018490529094608091869160a4918391906001600160a01b03165af19384156114e057869461236c575b50835161216a578580f35b15612271576040516370a0823160e01b81523060048201526020816024815f51602061a3b95f395f51905f525afa9081156114e057869161223d575b506121ba926121b491615ee6565b9061656f565b516040516370a0823160e01b81523060048201526020816024815f51602061a4195f395f51905f525afa908115610917578491612209575b506121b49061220093615ee6565b5f808080808580f35b90506020813d602011612235575b8161222460209383615720565b810103126109a057516122006121f2565b3d9150612217565b90506020813d602011612269575b8161225860209383615720565b810103126109a057516121ba6121a6565b3d915061224b565b6040516370a0823160e01b81523060048201529193916020816024815f51602061a4195f395f51905f525afa9081156114e0578691612338575b506121b4906122b993615ee6565b516040516370a0823160e01b81523060048201526020816024815f51602061a3b95f395f51905f525afa908115610917578491612304575b506122ff926121b491615ee6565b612200565b90506020813d602011612330575b8161231f60209383615720565b810103126109a057516122ff6122f1565b3d9150612312565b90506020813d602011612364575b8161235360209383615720565b810103126109a057516122b96122ab565b3d9150612346565b61238691945060803d6080116109495761093b8183615720565b925f61215f565b945094506020843d6020116123be575b816123aa60209383615720565b810103126109a057608086945195906120e0565b3d915061239d565b935091506020833d6020116123f5575b816123e360209383615720565b810103126109a057849251915f6120a7565b3d91506123d6565b6124159060203d602011610910576109018183615720565b505f61206d565b92509250935054905f51602061a3995f395f51905f523b156107a8576040516370ca10bb60e01b81526001600160a01b039091166004820152602481019190915260448101929092528180606481015b0381835f51602061a3995f395f51905f525af1801561105c576124ea5760405162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b6124f5828092615720565b610aa55780610a2d565b5f19141590505f612014565b8161251591615720565b610acf57855f612000565b985094506020883d602011612551575b8161253d60209383615720565b810103126109a05796518997909481611f86565b3d9150612530565b612564879185615d3d565b61010003610100811161265b5760ff811161265b5760405163348051d760e11b8152600190911b600482015281816024815f51602061a3995f395f51905f525afa90811561105c57606a6020928461261f93610c19969261263f575b506040519485925f51602061a3f95f395f51905f52828501525f51602061a3795f395f51905f52604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f198101835282615720565b60405162461bcd60e51b8152602060048201529182916024830190615783565b6126549192503d8084833e610c318183615720565b90866125c0565b634e487b7160e01b82526011600452602482fd5b612677618474565b50611eda565b634e487b7160e01b85526041600452602485fd5b8161269b91615720565b61173557835f611dd6565b6126af90615d4a565b5184105f51602061a3995f395f51905f523b156117355760405190632631f2b160e11b8252600482015283816024815f51602061a3995f395f51905f525afa801561091757908491612b35575b508060405160208101906370a0823160e01b825230602482015260248152612725604482615720565b51905f51602061a4195f395f51905f525afa506127436101d7617e24565b5061274c615ac0565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015610c61576102248160016127819301600e556158b5565b905560018060a01b036011541693600f5460e01b601054906127a161809e565b6001600160a01b0388165f908152600d60205260409020909163ffffffff60e01b16908188526020526040872060405160208101906127e5816102a0888886618087565b519020885260205260ff60036040892001541615612b27575b6001600160a01b0388165f908152600d602052604090209087526020526102a06128376040882093604051928391602083019586618087565b5190208552602052604084209460018601549060028701549661285a8884615d3d565b612a1b575b8054604051630667f9d760e41b81526001600160a01b03841660048201526024810182905297989697899790946020866044815f51602061a3995f395f51905f525afa958615610b165789966129e2575b506001908201610100031b5f1901811b198516915f51602061a3995f395f51905f523b15610ade576040516370ca10bb60e01b81526001600160a01b038616600482015260248101919091529086901b9190911760448201528681606481835f51602061a3995f395f51905f525af1908115610ad35787916129cd575b505083612938618257565b9190159182156129c2575b505061241c57505050612954618d3e565b6020805460405163095ea7b360e01b81526001600160a01b039091166004820152602481018390529081604481875f51602061a4195f395f51905f525af18015610917576129a3575b5061206f565b6129bb9060203d602011610910576109018183615720565b505f61299d565b14159050845f612943565b816129d791615720565b610acf57855f61292d565b985094506020883d602011612a13575b816129ff60209383615720565b810103126109a057965189979094816128b0565b3d91506129f2565b612a258884615d3d565b610100036101008111610c3f5760ff8111610c3f576001901b976040519863348051d760e11b8a528060048b0152888a6024815f51602061a3995f395f51905f525afa998a15610b1657606a60209b612ade928c91612b0d575b506040519c8d915f51602061a3f95f395f51905f52828401525f51602061a3795f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018c838201520301601f1981018c528b615720565b851015612aec57975061285f565b60405162461bcd60e51b81526020600482015280610c19602482018c615783565b612b2191503d808e833e610c318183615720565b5f612a7f565b612b2f618474565b506127fe565b81612b3f91615720565b6107a857825f6126fc565b634e487b7160e01b83526021600452602483fd5b612b7291503d8085833e61104e8183615720565b5f611d69565b80611cfd565b5034610aa55780600319360112610aa557601b54612b9b816159b2565b90612ba96040519283615720565b808252601b8352827f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1602084015b838310612bec5760405180610eca87826157a7565b604051612bf8816156ea565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b816007840110612c8d5784600197946002979460209794612c7b94549181811061190a578181106118ee578181106118d2578181106118b65781811061189a5781811061187e57818110611864571061185057500382615720565b83820152815201920192019190612bd7565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e0820152019401920191612c20565b5034610aa55780600319360112610aa557611037604051612d4e604082615720565b60018152602036818301375f51602061a3d95f395f51905f52612d7082615d4a565b526020546001600160a01b031661617e565b5034610aa55780600319360112610aa5576020546040516348bd7dfd60e01b81525f51602061a3d95f395f51905f5260048201525f51602061a4195f395f51905f5260248201525f51602061a3b95f395f51905f526044820152908290829060649082906001600160a01b03165afa90811561105c578291612e7d575b50612e0a815161647f565b612e1b612e1682615d4a565b615f76565b600a811015612b4a57612e2d906164cf565b612e39612e1682615d57565b600a811015612b4a57612e5791612e52612e169261651f565b615d67565b600a811015612e69576110379061647f565b634e487b7160e01b82526021600452602482fd5b612e9991503d8084833e612e918183615720565b810190615ef3565b5f612dff565b5034610aa55780600319360112610aa55760405190610160612ec18184615720565b600a8352601f1901366020840137805b600a8110613011575080612f08819360018060a01b03602054169060405194858094819363155adc9160e31b835260048301615e0f565b03925af190811561105c578291612ff7575b50815b60098110612f29578280f35b612f338183615d77565b51906001810191828211612fe357612f578591612f508587615d77565b51906163f2565b810b5f51602061a3995f395f51905f523b156107995760405190630a30b77160e01b825260048201526001602482015281816044815f51602061a3995f395f51905f525afa801561105c57612fce575b5050612fc86020611440600194612fc283611440878a615d77565b86615d77565b01612f1d565b81612fd891615720565b61173557835f612fa7565b634e487b7160e01b85526011600452602485fd5b61300b91503d8084833e6114678183615720565b5f612f1a565b600181018082116130615780606402906064820481036107ac5768056bc75e2d631000000290808204670de0b6b3a76400001490151715613061579060019161305a8286615d77565b5201612ed1565b634e487b7160e01b83526011600452602483fd5b5034610aa55780600319360112610aa55760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b8181106130d457610eca85610ebe81870382615720565b82546001600160a01b03168452602090930192600192830192016130bd565b5034610aa55780600319360112610aa55760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b81811061315257610eca85610ebe81870382615720565b82546001600160a01b031684526020909301926001928301920161313b565b5034610aa55780600319360112610aa557601d5461318e816159b2565b61319b6040519182615720565b818152601d83526020810191837f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f845b83831061329f5786858760405192839260208401906020855251809152604084019160408260051b8601019392815b8383106132075786860387f35b919395509193603f198782030183528551906020604082019260018060a01b0381511683520151916040602083015282518091526060820190602060608260051b850101940192855b828110613274575050505050602080600192970193019301909286959492936131fa565b9091929394602080613292600193605f198782030189528951615783565b9701950193929101613250565b6040516132ab816156ea565b82546001600160a01b031681526001830180546132c7816159b2565b916132d56040519384615720565b8183528a526020808b20908b9084015b83821061330b5750505050600192826020928360029501528152019201920191906131cb565b600160208192604051613322816111b2818a615931565b8152019301910190916132e5565b5034610aa55780600319360112610aa55760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b81811061338f57610eca85610ebe81870382615720565b82546001600160a01b0316845260209093019260019283019201613378565b5034610aa55780600319360112610aa557808060405160208101906370a0823160e01b8252306024820152602481526133e8604482615720565b51905f51602061a4195f395f51905f525afa506134066101d7617e24565b5061340f615ac0565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015613bd3576102248160016134449301600e556158b5565b905560018060a01b0360115416600f5460e01b6010549061346361809e565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908186526020526040852060405160208101906134a7816102a0888886618087565b519020865260205260ff60036040872001541615613d44575b6001600160a01b0384165f908152600d602052604090209085526020526102a06134f96040862093604051928391602083019586618087565b5190208352602052816040812091600183015492600281015461351c8186615d3d565b613c4a575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f51602061a3995f395f51905f525afa9687156114e0578697613c11575b506001908201610100031b5f1901811b198616915f51602061a3995f395f51905f523b15610acf576040516370ca10bb60e01b81526001600160a01b0386166004820152602481019190915269152d02c7e14af680000090911b9190911760448201528381606481835f51602061a3995f395f51905f525af1908115610917578491613bfc575b50506135ff618257565b9015908115613be7575b50613a0f5782613617618d3e565b808060405160208101906370a0823160e01b825230602482015260248152613640604482615720565b51905f51602061a3b95f395f51905f525afa5061365e6101d7617e24565b50613667615ae1565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015613bd35761022481600161369c9301600e556158b5565b905560018060a01b0360115416600f5460e01b601054906136bb61809e565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908186526020526040852060405160208101906136ff816102a0888886618087565b519020865260205260ff60036040872001541615613bc5575b6001600160a01b0384165f908152600d602052604090209085526020526102a06137516040862093604051928391602083019586618087565b519020835260205281604081209160018301549260028101546137748186615d3d565b613abb575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f51602061a3995f395f51905f525afa9687156114e0578697613a82575b506001908201610100031b5f1901811b198616915f51602061a3995f395f51905f523b15610acf576040516370ca10bb60e01b81526001600160a01b0386166004820152602481019190915264174876e80090911b9190911760448201528381606481835f51602061a3995f395f51905f525af1908115610917578491613a6d575b5050613852618257565b9015908115613a5d575b50613a0f578261386a618d3e565b5f51602061a3995f395f51905f523b15610aa55760405163ca669fa760e01b815230600482015281908181602481835f51602061a3995f395f51905f525af1801561105c576139fa575b50506020805460405163095ea7b360e01b81526001600160a01b03909116600482015264174876e80060248201529081604481855f51602061a3b95f395f51905f525af1801561105c576139dd575b50602054604051638307c65560e01b81525f51602061a3d95f395f51905f5260048201525f51602061a3b95f395f51905f5260248201525f51602061a4195f395f51905f5260448201526001606482015268056bc75e2d63100000608482015290608090829060a490829086906001600160a01b03165af190811561105c576110379160209184916139be575b5061399e8151611c9a615c10565b6139b48260408301611ca5815151611c9a615c5e565b0151611c9a615cf8565b6139d7915060803d6080116109495761093b8183615720565b84613990565b6139f59060203d602011610910576109018183615720565b613903565b81613a0491615720565b610aa55780826138b4565b54905f51602061a3995f395f51905f523b156107a8576040516370ca10bb60e01b81526001600160a01b0390911660048201526024810191909152604481019290925281806064810161246c565b64174876e800915014158661385c565b81613a7791615720565b6107a8578286613848565b955095506020853d602011613ab3575b81613a9f60209383615720565b810103126109a057935194869490816137c6565b3d9150613a92565b90919250613ac98185615d3d565b610100036101008111613bb15760ff8111613bb15760405163348051d760e11b8152600190911b6004820181905286826024815f51602061a3995f395f51905f525afa8015610ad357606a613b81916020948a91613b97575b506040519485915f51602061a3f95f395f51905f52828401525f51602061a3795f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018a838201520301601f198101845283615720565b64174876e8001015610bf5575090849291613779565b613bab91503d808c833e610c318183615720565b8a613b22565b634e487b7160e01b86526011600452602486fd5b613bcd618474565b50613718565b634e487b7160e01b82526041600452602482fd5b69152d02c7e14af6800000915014155f613609565b81613c0691615720565b6107a857825f6135f5565b955095506020853d602011613c42575b81613c2e60209383615720565b810103126109a0579351948694908161356e565b3d9150613c21565b90919250613c588185615d3d565b610100036101008111613bb15760ff8111613bb15760405163348051d760e11b8152600190911b6004820181905286826024815f51602061a3995f395f51905f525afa8015610ad357606a613d0f916020948a91613d2a57506040519485915f51602061a3f95f395f51905f52828401525f51602061a3795f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018a838201520301601f198101845283615720565b69152d02c7e14af68000001015610bf5575090849291613521565b613d3e91503d808c833e610c318183615720565b5f613b22565b613d4c618474565b506134c0565b5034610aa55780600319360112610aa557808060405160208101906370a0823160e01b825230602482015260248152613d8c604482615720565b51905f51602061a4195f395f51905f525afa50613daa6101d7617e24565b50613db3615ac0565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015613bd357610224816001613de89301600e556158b5565b905560018060a01b0360115416600f5460e01b60105490613e0761809e565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818652602052604085206040516020810190613e4b816102a0888886618087565b519020865260205260ff600360408720015416156145ff575b6001600160a01b0384165f908152600d602052604090209085526020526102a0613e9d6040862093604051928391602083019586618087565b51902083526020528160408120916001830154926002810154613ec08186615d3d565b61451f575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f51602061a3995f395f51905f525afa9687156114e05786976144e6575b506001908201610100031b5f1901811b198616915f51602061a3995f395f51905f523b15610acf576040516370ca10bb60e01b81526001600160a01b0386166004820152602481019190915269152d02c7e14af680000090911b9190911760448201528381606481835f51602061a3995f395f51905f525af19081156109175784916144d1575b5050613fa3618257565b90159081156144bc575b50613a0f5782613fbb618d3e565b808060405160208101906370a0823160e01b825230602482015260248152613fe4604482615720565b51905f51602061a3b95f395f51905f525afa506140026101d7617e24565b5061400b615ae1565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015613bd3576102248160016140409301600e556158b5565b905560018060a01b0360115416600f5460e01b6010549061405f61809e565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b16908186526020526040852060405160208101906140a3816102a0888886618087565b519020865260205260ff600360408720015416156144ae575b6001600160a01b0384165f908152600d602052604090209085526020526102a06140f56040862093604051928391602083019586618087565b519020835260205281604081209160018301549260028101546141188186615d3d565b6143d3575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f51602061a3995f395f51905f525afa9687156114e057869761439a575b506001908201610100031b5f1901811b198616915f51602061a3995f395f51905f523b15610acf576040516370ca10bb60e01b81526001600160a01b0386166004820152602481019190915264174876e80090911b9190911760448201528381606481835f51602061a3995f395f51905f525af1908115610917578491614385575b50506141f6618257565b9015908115614375575b50613a0f578261420e618d3e565b5f51602061a3995f395f51905f523b15610aa55760405163ca669fa760e01b815230600482015281908181602481835f51602061a3995f395f51905f525af1801561105c57614360575b50506020805460405163095ea7b360e01b81526001600160a01b039091166004820152678ac7230489e8000060248201529081604481855f51602061a4195f395f51905f525af1801561105c57614343575b50602054604051638307c65560e01b81525f51602061a3d95f395f51905f5260048201525f51602061a4195f395f51905f5260248201525f51602061a3b95f395f51905f52604482015260648101839052678ac7230489e80000608482015290608090829060a490829086906001600160a01b03165af190811561105c576110379160209184916139be575061399e8151611c9a615c10565b61435b9060203d602011610910576109018183615720565b6142aa565b8161436a91615720565b610aa5578082614258565b64174876e8009150141586614200565b8161438f91615720565b6107a85782866141ec565b955095506020853d6020116143cb575b816143b760209383615720565b810103126109a0579351948694908161416a565b3d91506143aa565b909192506143e18185615d3d565b610100036101008111613bb15760ff8111613bb15760405163348051d760e11b8152600190911b6004820181905286826024815f51602061a3995f395f51905f525afa8015610ad357606a614498916020948a91613b9757506040519485915f51602061a3f95f395f51905f52828401525f51602061a3795f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018a838201520301601f198101845283615720565b64174876e8001015610bf557509084929161411d565b6144b6618474565b506140bc565b69152d02c7e14af6800000915014155f613fad565b816144db91615720565b6107a857825f613f99565b955095506020853d602011614517575b8161450360209383615720565b810103126109a05793519486949081613f12565b3d91506144f6565b9091925061452d8185615d3d565b610100036101008111613bb15760ff8111613bb15760405163348051d760e11b8152600190911b6004820181905286826024815f51602061a3995f395f51905f525afa8015610ad357606a6145e4916020948a91613d2a57506040519485915f51602061a3f95f395f51905f52828401525f51602061a3795f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018a838201520301601f198101845283615720565b69152d02c7e14af68000001015610bf5575090849291613ec5565b614607618474565b50613e64565b5034610aa55780600319360112610aa55761016060405161462e8282615720565b600a8152601f19820180366020840137835b84600a82106150d85780915060405160208101906370a0823160e01b825230602482015260248152614673604482615720565b51905f51602061a4195f395f51905f525afa506146916101d7617e24565b5061469a615ac0565b6370a0823163ffffffff19600f541617600f55600e54600160401b81101561267d576102248160016146cf9301600e556158b5565b905560018060a01b0360115416600f5460e01b601054906146ee61809e565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818952602052604088206040516020810190614732816102a0888886618087565b519020895260205260ff600360408a20015416156150ca575b6001600160a01b0384165f908152600d602052604090209088526020526102a06147846040892093604051928391602083019586618087565b519020865260205284604081209160018301549260028101546147a78186615d3d565b614fea575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f51602061a3995f395f51905f525afa9687156114e0578697614fb1575b506001908201610100031b5f1901811b198616915f51602061a3995f395f51905f523b15610acf576040516370ca10bb60e01b81526001600160a01b0386166004820152602481019190915269152d02c7e14af680000090911b9190911760448201528381606481835f51602061a3995f395f51905f525af1908115610917578491614f9c575b505061488a618257565b9015908115614f87575b50614db557505050506148a5618d3e565b838060405160208101906370a0823160e01b8252306024820152602481526148ce604482615720565b51905f51602061a3b95f395f51905f525afa506148ec6101d7617e24565b506148f5615ae1565b6370a0823163ffffffff19600f541617600f55600e54600160401b81101561267d5761022481600161492a9301600e556158b5565b905560018060a01b0360115416600f5460e01b6010549061494961809e565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b169081895260205260408820604051602081019061498d816102a0888886618087565b519020895260205260ff600360408a2001541615614f79575b6001600160a01b0384165f908152600d602052604090209088526020526102a06149df6040892093604051928391602083019586618087565b51902086526020528460408120916001830154926002810154614a028186615d3d565b614e64575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f51602061a3995f395f51905f525afa9687156114e0578697614e2b575b506001908201610100031b5f1901811b198616915f51602061a3995f395f51905f523b15610acf576040516370ca10bb60e01b81526001600160a01b0386166004820152602481019190915264174876e80090911b9190911760448201528381606481835f51602061a3995f395f51905f525af1908115610917578491614e16575b5050614ae0618257565b9015908115614e06575b50614db55750505050614afb618d3e565b614b086040519384615720565b600a8352835b818110614d9e575050825b600a8110614beb57505060015b60098110614b32578280f35b614b3c8183615d77565b51516001820190818311612fe35781614b5d614b7c926106d2889588615d77565b614b6c60206106e98688615d77565b604061071b816107118789615d77565b810b5f51602061a3995f395f51905f523b15610799576040519063fe74f05b60e01b825260048201526001602482015281816044815f51602061a3995f395f51905f525afa801561105c57614bd6575b5050600101614b26565b81614be091615720565b6107a857825f614bcc565b604051634b88b8ad60e11b815290602082600481885f51602061a3995f395f51905f525af1918215610950578592614d6b575b506020805460405163095ea7b360e01b81526001600160a01b03909116600482015264174876e80060248201529081604481895f51602061a3b95f395f51905f525af180156114e057614d4f575b506020548590608090614caa906001600160a01b0316614c8c8588615d77565b51604051948580948193638307c65560e01b83528360048401615b7b565b03925af19081156114e0578691614d31575b50614cc78286615d77565b52614cd28185615d77565b5060405191631135fc2960e21b83526004830152602082602481885f51602061a3995f395f51905f525af191821561095057600192614d13575b5001614b19565b614d2a9060203d8111610910576109018183615720565b505f614d0c565b614d49915060803d81116109495761093b8183615720565b5f614cbc565b614d669060203d8111610910576109018183615720565b614c6c565b9091506020813d8211614d96575b81614d8660209383615720565b810103126109a05751905f614c1e565b3d9150614d79565b602090614da96162fc565b82828701015201614b0e565b82945054905f51602061a3995f395f51905f523b156107a8576040516370ca10bb60e01b81526001600160a01b0390911660048201526024810191909152604481019290925281806064810161246c565b64174876e800915014155f614aea565b81614e2091615720565b6107a857825f614ad6565b955095506020853d602011614e5c575b81614e4860209383615720565b810103126109a05793519489949081614a54565b3d9150614e3b565b90919250614e728185615d3d565b610100036101008111614f655760ff8111614f655760405163348051d760e11b8152600190911b6004820181905289826024815f51602061a3995f395f51905f525afa8015614f5a57606a614f2a916020948d91614f40575b506040519485915f51602061a3f95f395f51905f52828401525f51602061a3795f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018d838201520301601f198101845283615720565b64174876e8001015610bf5575090879291614a07565b614f5491503d808f833e610c318183615720565b5f614ecb565b6040513d8c823e3d90fd5b634e487b7160e01b89526011600452602489fd5b614f81618474565b506149a6565b69152d02c7e14af6800000915014155f614894565b81614fa691615720565b6107a857825f614880565b955095506020853d602011614fe2575b81614fce60209383615720565b810103126109a057935194899490816147f9565b3d9150614fc1565b90919250614ff88185615d3d565b610100036101008111614f655760ff8111614f655760405163348051d760e11b8152600190911b6004820181905289826024815f51602061a3995f395f51905f525afa8015614f5a57606a6150af916020948d91614f4057506040519485915f51602061a3f95f395f51905f52828401525f51602061a3795f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018d838201520301601f198101845283615720565b69152d02c7e14af68000001015610bf55750908792916147ac565b6150d2618474565b5061474b565b615136576001810190818111615122578160640291606483048103615122576305f5e1000291808304620f424014901517156151225760019161511b8286615d77565b5201614640565b634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b85526021600452602485fd5b50346109a0575f3660031901126109a05760405163975a6ce960e01b81526020600482015260076024820152661b585a5b9b995d60ca1b60448201525f816064815f51602061a3995f395f51905f525afa908115615649576151d3916020915f91615697575b50604051809381926371ee464d60e01b8352604060048401526044830190615783565b6301512880602483015203815f5f51602061a3995f395f51905f525af1801561564957615668575b50604051611385808201908282106001600160401b03831117615654576040918391618ff48339730a7e848aca42d879ef06507fca0e7b33a0a63c1e815273b40afdb85a07f37ae217e7d6462e609900dd8d7a60208201520301905ff0801561564957602080546001600160a01b0319166001600160a01b039290921691821790555f51602061a3995f395f51905f523b156109a057604051906318caf8e360e31b8252600482015260406024820152601560448201527426b0bb32b934b1b5ab1929bbb0b820b230b83a32b960591b60648201525f81608481835f51602061a3995f395f51905f525af1801561564957615636575b505f51602061a3995f395f51905f523b15610aa557806040516318caf8e360e31b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260048201526040602482015260046044820152630ae8aa8960e31b60648201528181608481835f51602061a3995f395f51905f525af1801561105c57615621575b50505f51602061a3995f395f51905f523b15610aa557806040516318caf8e360e31b815273b40afdb85a07f37ae217e7d6462e609900dd8d7a600482015260406024820152600660448201526528bab7ba32b960d11b60648201528181608481835f51602061a3995f395f51905f525af1801561105c5761560c575b50505f51602061a3995f395f51905f523b15610aa557806040516318caf8e360e31b8152730a7e848aca42d879ef06507fca0e7b33a0a63c1e6004820152604060248201526007604482015266466163746f727960c81b60648201528181608481835f51602061a3995f395f51905f525af1801561105c576155f7575b50505f51602061a3995f395f51905f523b15610aa557806040516318caf8e360e31b81525f51602061a3b95f395f51905f5260048201526040602482015260046044820152635553444360e01b60648201528181608481835f51602061a3995f395f51905f525af1801561105c576155e2575b50505f51602061a3995f395f51905f523b15610aa557806040516318caf8e360e31b81525f51602061a4195f395f51905f52600482015260406024820152600360448201526247484f60e81b60648201528181608481835f51602061a3995f395f51905f525af1801561105c576155cd575b50505f51602061a3995f395f51905f523b15610aa557806040516318caf8e360e31b81527314cf6d2fe3e1b326114b07d22a6f6bb59e346c67600482015260406024820152600d60448201526c11d213d7d554d110d7d413d3d3609a1b60648201528181608481835f51602061a3995f395f51905f525af1801561105c57611b0a5750f35b816155d791615720565b610aa557805f615548565b816155ec91615720565b610aa557805f6154d6565b8161560191615720565b610aa557805f615463565b8161561691615720565b610aa557805f6153e6565b8161562b91615720565b610aa557805f61536a565b61564291505f90615720565b5f5f6152f1565b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b6020813d60201161568f575b8161568160209383615720565b810103126109a057516151fb565b3d9150615674565b6156ab91503d805f833e610c318183615720565b5f6151b0565b346109a05760403660031901126109a0576156e26020916156d1816156ea565b6004358152602435838201526159fa565b604051908152f35b604081019081106001600160401b0382111761565457604052565b606081019081106001600160401b0382111761565457604052565b90601f801991011681019081106001600160401b0382111761565457604052565b60206040818301928281528451809452019201905f5b8181106157645750505090565b82516001600160a01b0316845260209384019390920191600101615757565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b602081016020825282518091526040820191602060408360051b8301019401925f915b8383106157d957505050505090565b9091929394603f1982820301835285516020606081604085019360018060a01b0381511686520151936040838201528451809452019201905f905b80821061583357505050602080600192970193019301919392906157ca565b82516001600160e01b031916845260209384019390920191600190910190615814565b602081016020825282518091526040820191602060408360051b8301019401925f915b83831061588857505050505090565b90919293946020806158a6600193603f198682030187528951615783565b97019301930191939290615879565b600e548110156158cd57600e5f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b601f548110156158cd57601f5f5260205f2001905f90565b90600182811c92168015615927575b602083101461591357565b634e487b7160e01b5f52602260045260245ffd5b91607f1691615908565b5f9291815491615940836158f9565b8083529260018116908115615995575060011461595c57505050565b5f9081526020812093945091925b83831061597b575060209250010190565b60018160209294939454838587010152019101919061596a565b915050602093945060ff929192191683830152151560051b010190565b6001600160401b0381116156545760051b60200190565b8181029291811591840414171561512257565b81156159e6570490565b634e487b7160e01b5f52601260045260245ffd5b80516a084595161401484a0000008102908082046a084595161401484a0000001490151715615122576020615a31920151906159dc565b90565b6001600160401b03811161565457601f01601f191660200190565b6020818303126109a0578051906001600160401b0382116109a0570181601f820112156109a057805190615a8282615a34565b92615a906040519485615720565b828452602083830101116109a057815f9260208093018386015e8301015290565b908160209103126109a0575190565b601180546001600160a01b0319165f51602061a4195f395f51905f52179055565b601180546001600160a01b0319165f51602061a3b95f395f51905f52179055565b908160209103126109a0575180151581036109a05790565b91908260409103126109a057604051615b32816156ea565b6020808294805184520151910152565b906080828203126109a057615b73906040805193615b5f85615705565b805185526020810151602086015201615b1a565b604082015290565b5f51602061a3d95f395f51905f5281525f51602061a3b95f395f51905f5260208201525f51602061a4195f395f51905f52604082015260a08101939291906002821015615bce5760809160608201520152565b634e487b7160e01b5f52602160045260245ffd5b9081526001600160a01b039182166020820152911660408201525f6060820152608081019190915260a00190565b60405190615c1f606083615720565b602a8252690746572207468616e20360b41b6040837f43616c63756c6174656420616d6f756e742073686f756c64206265206772656160208201520152565b60405190615c6d606083615720565b6028825267072207468616e20360c41b6040837f5072696365206e756d657261746f722073686f756c642062652067726561746560208201520152565b60405190615cb9606083615720565b602a8252690746572207468616e20360b41b6040837f50726963652064656e6f6d696e61746f722073686f756c64206265206772656160208201520152565b60405190615d07606083615720565b60218252600360fc1b6040837f47617320757365642073686f756c642062652067726561746572207468616e2060208201520152565b9190820180921161512257565b8051156158cd5760200190565b8051600110156158cd5760400190565b8051600210156158cd5760600190565b80518210156158cd5760209160051b010190565b6020818303126109a0578051906001600160401b0382116109a0570181601f820112156109a0578051615dbd816159b2565b92615dcb6040519485615720565b81845260208085019260061b840101928184116109a057602001915b838310615df5575050505090565b6020604091615e048486615b1a565b815201920191615de7565b602060a060808301927314cf6d2fe3e1b326114b07d22a6f6bb59e346c6760601b81525f51602061a4195f395f51905f52838201525f51602061a3b95f395f51905f526040820152608060608201528451809452019201905f5b818110615e765750505090565b8251845260209384019390920191600101615e69565b60a0919360209360808301958352600180851b031684830152600180841b03166040820152608060608201528451809452019201905f5b818110615ed05750505090565b8251845260209384019390920191600101615ec3565b9190820391821161512257565b6020818303126109a0578051906001600160401b0382116109a057019080601f830112156109a057815190615f27826159b2565b92615f356040519485615720565b82845260208085019360051b8201019182116109a057602001915b818310615f5d5750505090565b8251600a8110156109a057815260209283019201615f50565b51600a811015615bce5790565b6020818303126109a0578051906001600160401b0382116109a057019080601f830112156109a0578151615fb6816159b2565b92615fc46040519485615720565b81845260208085019260051b8201019283116109a057602001905b828210615fec5750505090565b8151815260209182019101615fdf565b6020818303126109a0578051906001600160401b0382116109a057019080601f830112156109a057815190616030826159b2565b9261603e6040519485615720565b82845260208085019360051b8201019182116109a057602001915b8183106160665750505090565b82516001600160a01b03811681036109a057815260209283019201616059565b9080601f830112156109a057815161609d816159b2565b926160ab6040519485615720565b81845260208085019260051b8201019283116109a057602001905b8282106160d35750505090565b81518152602091820191016160c6565b60085460ff1680156160f25790565b50604051630667f9d760e41b81525f51602061a3995f395f51905f5260048201526519985a5b195960d21b60248201526020816044815f51602061a3995f395f51905f525afa908115615649575f9161614c575b50151590565b90506020813d602011616176575b8161616760209383615720565b810103126109a057515f616146565b3d915061615a565b6001600160a01b03811692919061619482615d4a565b51604051906348bd7dfd60e01b825260048201525f60248201525f60448201525f8160648183895af18015615649576161d4915f916162e2575b506165be565b15905f5b83518110156162da576161eb8185615d77565b51906040519163ecbbc03360e01b835260048301525f82602481838b5af1801561564957846162ba916001945f916162c0575b506162398a868060a01b0361623284615d4a565b511661665b565b61624c8a868060a01b0361623284615d57565b6162848261625a868b615d77565b51878060a01b0361626a85615d4a565b5116888060a01b0361627b86615d57565b5116918a61679d565b61628e8489615d77565b5190858060a01b0361629f82615d57565b5116906162b1878060a01b0391615d4a565b5116918761679d565b016161d8565b6162d491503d805f833e611b4b8183615720565b5f61621e565b505050509050565b6162f691503d805f833e612e918183615720565b5f6161ce565b6040519061630982615705565b815f81525f60208201526040805191616321836156ea565b5f83525f60208401520152565b615a319392606092825260208201528160408201520190615783565b5f51602061a3995f395f51905f523b156109a057616392915f916040519384928392636cd1e26960e11b84526004840152846024840152606060448401526064830190615783565b03815f51602061a3995f395f51905f525afa8015615649576163b15750565b5f6163bb91615720565b565b905f51602061a3995f395f51905f523b156109a0575f916163926040519485938493636cd1e26960e11b85526004850161632e565b616412906020616407825182860151906159c9565b9351910151906159c9565b908082036164205750505f90565b111561642b57600190565b5f1990565b5f51602061a3995f395f51905f523b156109a05760405190636d83fe6960e11b825260048201525f60248201525f816044815f51602061a3995f395f51905f525afa8015615649576163b15750565b5f51602061a3995f395f51905f523b156109a0576040519063260a5b1560e21b82526004820152600360248201525f816044815f51602061a3995f395f51905f525afa8015615649576163b15750565b5f51602061a3995f395f51905f523b156109a0576040519063260a5b1560e21b82526004820152600160248201525f816044815f51602061a3995f395f51905f525afa8015615649576163b15750565b5f51602061a3995f395f51905f523b156109a0576040519063260a5b1560e21b82526004820152600260248201525f816044815f51602061a3995f395f51905f525afa8015615649576163b15750565b905f51602061a3995f395f51905f523b156109a0576040519163260a5b1560e21b8352600483015260248201525f816044815f51602061a3995f395f51905f525afa8015615649576163b15750565b5f5b81518110156165f5576165d6612e168284615d77565b600a811015615bce576005146165ee576001016165c0565b5050600190565b50505f90565b5f5b81518110156165f557616613612e168284615d77565b600a811015615bce576009146165ee576001016165fd565b5f5b81518110156165f557616643612e168284615d77565b600a811015615bce576008146165ee5760010161662d565b60405190602082019263095ea7b360e01b845260018060a01b0316928360248401525f19604484015260448352616693606484615720565b82516001600160a01b038316915f91829182855af1906166b1617e24565b82616711575b5081616706575b50156166c957505050565b6167016163bb936040519063095ea7b360e01b602083015260248201525f6044820152604481526166fb606482615720565b82617e53565b617e53565b90503b15155f6166be565b80519192508115918215616729575b5050905f6166b7565b61673c9250602080918301019101615b02565b5f80616720565b60405190616752606083615720565b603682527536103a3790383934b1b29030b33a32b91039bbb0b81760511b6040837f45786563757465642070726963652073686f756c64206265206f72206571756160208201520152565b60c09490945260405163549387df60e11b8152600481018290526001600160a01b0380841660248301528416604482015291939290915f8180606481016101208490520381836001600160a01b0389165af1801561564957616806915f91617dbb575b50615d4a565b5161010052606060a0819052604051616862916168239082615720565b602381527f53656c6c206c696d69742073686f756c6420626520677265617465722074686160208201526206e20360ec1b60408201526101005161634a565b60a051505f806168ea61691860405161687d60a05182615720565b603681527f544553543a2054657374696e672070726963657320666f722070616972202573602082015275080b4f88095ccb8814d95b1b081b1a5b5a5d0e88095960521b6040820152604051928391638ef3f39960e01b60208401526080602484015260a4830190615783565b6001600160a01b038a811660448401528716606483015261010051608483015203601f198101835282615720565b6020815191016a636f6e736f6c652e6c6f675afa506040516348bd7dfd60e01b8152600481018390526001600160a01b038086166024830152821660448201525f8180606481010381836001600160a01b0389165af1801561564957616985915f91617da1575b506165fb565b906040519161699560a084615720565b60048352608036602085013715617d94575f5b6169b183615d4a565b526103e861010051046169c383615d57565b526101005160011c6169d483615d67565b528151600310156158cd5761010051608083015260405163155adc9160e31b8152935f8580616a0986868b8a60048601615e8c565b0381836001600160a01b0386165af1948515615649575f95617d78575b50616a39616a3386615d4a565b516159fa565b85515f1981019190821161512257616a57616a33616ab19389615d77565b60a0516040519290616a699084615720565b603083527f5072696365206174206c696d69742073686f756c6420626520736d616c6c657260208401526f0207468616e20707269636520617420360841b60408401526163bd565b616abd616a3386615d4a565b85515f19810190811161512257616b58616b715f93616ae0616a3386958c615d77565b60a051604051929190616af39084615720565b602d83527f544553543a20507269636520617420303a2025642c207072696365206174207360208401526c195b1b081b1a5b5a5d0e880959609a1b604084015260405194859363ca47c4eb60e01b602086015260a05160248601526084850190615783565b916044840152606483015203601f198101835282615720565b6020815191016a636f6e736f6c652e6c6f675afa5060a051604051616bd791616b9a9082615720565b602581527f544553543a2054657374696e67206265686176696f7220666f72207072696365602082015264020617420360dc1b6040820152617efa565b616c29616be386615d4a565b5151604060e081905280519190616bfa9083615720565b601882527f4e6f6d696e61746f722073686f756c646e277420626520300000000000000000602083015261634a565b616c7a6020616c3787615d4a565b51015160e05180519190616c4b9083615720565b601a82527f44656e6f6d696e61746f722073686f756c646e27742062652030000000000000602083015261634a565b616c86616a3386615d4a565b9460e05150616cc58660e05151616c9f60e05182615720565b6014815273151154d50e88141c9a58d948185d080c0e88095960621b6020820152617f3e565b616ccd6162fc565b5083515f19810190811161512257616ce59085615d77565b516005818102048103615122575f8060e0515160208101906370a0823160e01b825230602482015260248152616d1c604482615720565b51908b5afa50616d2d6101d7617e24565b50601180546001600160a01b0319166001600160a01b038a16179055600f805463ffffffff19166370a08231179055600e54600160401b81101561565457610224816001616d7e9301600e556158b5565b90556011546001600160a01b031661014052600f546010549060e01b616da261809e565b610140516001600160a01b03165f908152600d60205260409020909163ffffffff60e01b1690815f5260205260e0515f2060e051516020810190616deb816102a0888886618087565b5190205f5260205260ff600360e0515f2001541615617d6a575b610140516001600160a01b03165f908152600d60205260409020905f526020526102a0616e4360e0515f209360e05151928391602083019586618087565b5190205f5260205260e0515f206001810154916002820154616e658185615d3d565b617c54575b825460e05151630667f9d760e41b8152610140516001600160a01b0316600482015260248101829052949091906020866044815f51602061a3995f395f51905f525afa958615617c14575f96617c20575b506001908201610100031b5f1901811b1985165f51602061a3995f395f51905f523b156109a05760e051516370ca10bb60e01b8152610140516001600160a01b0316600482015260248101939093526005840290911b1760448201525f81606481835f51602061a3995f395f51905f525af18015617c1457617bff575b50616f41618257565b9015918215617bf1575b5050617afd575050616f5b618d3e565b60e05151634b88b8ad60e11b8152602081600481610120515f51602061a3995f395f51905f525af180156174515761012051608052617aca575b5060015b845181101561751e575f80617050617076616fb3856158e1565b50616fbe868b615d77565b516170626111b261702a60e0515194616fd960a05187615720565b603086527f544553543a2054657374696e67206265686176696f7220666f7220707269636560208701526f1030ba1012b99037b3103634b6b4ba1760811b60e05187015260e0515192838092615931565b60e05151635821efa160e01b602082015260a05160248201529586946084860190615783565b84810360231901604486015290615783565b90606483015203601f198101835282615720565b6020815191016a636f6e736f6c652e6c6f675afa50617098616a338284615d77565b5f8061710d6171318c6170ab878c615d77565b5160e05151916170bd60e05184615720565b601783527f544553543a205377617070696e67202564206f66202573000000000000000000602084015260e0515194859363038fd88960e31b602086015260a05160248601526084850190615783565b60448401929092526001600160a01b0316606483015203601f198101835282615720565b6020815191016a636f6e736f6c652e6c6f675afa508460808a89617175617158878c615d77565b5160e05151638307c65560e01b8152958694859460048601615be2565b03816101205160018060a01b038a165af1908115617451576101205191617500575b508051806a084595161401484a0000008102046a084595161401484a00000014811517156174e6576171e46171ef916a084595161401484a0000006171dc878c615d77565b5191026159dc565b9160e05101516159fa565b916172338260e0515161720460e05182615720565b601d81527f544553543a20202d2045786563757465642070726963653a20202025640000006020820152617f3e565b6172768160e0515161724760e05182615720565b601d81527f544553543a20202d20507269636520617420616d6f756e743a202025640000006020820152617f3e565b6172b98360e0515161728a60e05182615720565b601d81527f544553543a20202d20507269636520616674657220737761703a2025640000006020820152617f3e565b60c05115617460576173ec926173276173919260a0515060e05151906172e160a05183615720565b602c82527f50726963652073686f756c642062652067726561746564207468616e2065786560208301526b31baba32b210383934b1b29760a11b60e05183015285617f81565b60a05160e05151919061733a9083615720565b603782527f45786563757465642070726963652073686f756c64206265206772656174657260208301527f207468616e20707269636520616674657220737761702e00000000000000000060e051830152836163bd565b60a05160e0515191906173a49083615720565b602e82527f50726963652073686f756c642062652067726561746564207468616e2070726960208301526d31b29030b33a32b91039bbb0b81760911b60e051830152896163bd565b60e0515190631135fc2960e21b82526080516004830152602082602481610120515f51602061a3995f395f51905f525af191821561745157600192617433575b5001616f99565b61744a9060203d8111610910576109018183615720565b505f61742c565b60e051513d61012051823e3d90fd5b6174899061747a6174e194617473616743565b908d617f81565b617482616743565b908b617f81565b60e051519061749a60a05183615720565b602d82527f50726963652073686f756c64206265206f7220657175616c20746f207072696360208301526c329030b33a32b91039bbb0b81760991b60e05183015289617f81565b6173ec565b634e487b7160e01b61012051526011600452602461012051fd5b617518915060803d81116109495761093b8183615720565b5f617197565b505091509193925060696101005102610100518104606914610100511517156174e65760e051516348bd7dfd60e01b81526101208051600483018890526001600160a01b0387811660248501528681166044850152915160649485900497949192849291839188165af18015617451576175a2916101205191617aad575b5061662b565b156179505761760a8460e051516175bb60a05182615720565b603681527f544553543a2054657374696e6720726576657274206265686176696f722061626020820152751bdd99481d1a19481cd95b1b081b1a5b5a5d0e88095960521b60e051820152617f3e565b60e0518051949061761b9086615720565b6001855260e051601f190136602087013761763585615d4a565b5260e0515163155adc9160e31b815261012051818061765a8888878c60048601615e8c565b03816101205160018060a01b0388165af19081617935575b506178c9576001617681617fb6565b6308c379a01461783b575b6174515761769b608094615d4a565b51946176be60e0515196879586948594638307c65560e01b865260048601615be2565b61012051919003926001600160a01b03165af1908161781e575b506177bc5760016176e7617fb6565b6308c379a014617739575b617451575b6163bb60e0515161770a60e05182615720565b601781527f544553543a20416c6c207465737473207061737365642e0000000000000000006020820152617efa565b617741617fd1565b8061774d575b506176f2565b6101205160a05160e051519193506177b692919061776b9082615720565b603281527f544553543a204578706563746564206572726f72207768656e207377617070696020820152716e672061626f7665206c696d69743a20257360701b60e051820152618043565b5f617747565b60e0515162461bcd60e51b815260206004820152603360248201527f506f6f6c2073686f756c646e27742062652061626c6520746f20737761702061604482015272189bdd99481d1a19481cd95b1b081b1a5b5a5d606a1b6064820152608490fd5b6178369060803d6080116109495761093b8183615720565b6176d8565b617843617fd1565b8061784f575b5061768c565b90506178c3610120519160a0515060e0515161786d60a05182615720565b603881527f544553543a204578706563746564206572726f72207768656e2066657463686960208201527f6e672070726963652061626f7665206c696d69743a202573000000000000000060e051820152618043565b5f617849565b60e0515162461bcd60e51b815260206004820152603b60248201527f506f6f6c2073686f756c646e27742062652061626c6520746f2066657463682060448201527f7072696365732061626f7665207468652073656c6c206c696d697400000000006064820152608490fd5b61794b903d8061012051833e6114678183615720565b617672565b60a05160e051516179b2918691906179689082615720565b603181527f544553543a2054657374696e67206f7065726174696f6e732061626f766520746020820152701a19481cd95b1b081b1a5b5a5d0e880959607a1b60e051820152617f3e565b60e051805194906179c39086615720565b6001855260e051601f19013660208701376179dd85615d4a565b5260e051519363155adc9160e31b8552610120518580617a038488878c60048601615e8c565b03816101205160018060a01b0388165af190811561745157608095617a2c92617a925750615d4a565b5194617a4f60e0515196879586948594638307c65560e01b865260048601615be2565b61012051919003926001600160a01b03165af1801561745157617a73575b506176f7565b617a8b9060803d6080116109495761093b8183615720565b505f617a6d565b617aa8903d8061012051833e6114678183615720565b616800565b617ac491503d8061012051833e612e918183615720565b5f61759c565b6020813d602011617af5575b81617ae360209383615720565b810103126109a057516080525f616f95565b3d9150617ad6565b545f51602061a3995f395f51905f523b15617bea5760e051516370ca10bb60e01b815261012051610140516001600160a01b03166004830152602482019290925260448101929092528180606481010381610120515f51602061a3995f395f51905f525af1801561745157617bcf575b60e0515162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b61012051617bdc91615720565b61012051617bea5780617b6d565b6101205180fd5b600502141590505f80616f4b565b5f617c0991615720565b5f610120525f616f38565b60e051513d5f823e3d90fd5b9095506020813d602011617c4c575b81617c3c60209383615720565b810103126109a057519481616ebb565b3d9150617c2f565b617c5e8185615d3d565b6101000361010081116151225760ff81116151225760e0515163348051d760e11b81526001821b60048201525f816024815f51602061a3995f395f51905f525afa918215617c1457617d1a606a6020946001945f91617d50575b5060e051519586915f51602061a3f95f395f51905f52828401525f51602061a3795f395f51905f5260e05184015269030ba32b9103a3430b7160b51b60a0518401528051918291018484015e81015f838201520301601f198101855284615720565b1b836005021015617d2b5750616e6a565b60e0515162461bcd60e51b815260206004820152908190610c19906024830190615783565b617d6491503d805f833e610c318183615720565b5f617cb8565b617d72618474565b50616e05565b617d8d9195503d805f833e6114678183615720565b935f616a26565b61271061010051046169a8565b617db591503d805f833e612e918183615720565b5f61697f565b617dcf91503d805f833e61104e8183615720565b5f616800565b905f51602061a3995f395f51905f523b156109a05760405191638466f41560e01b8352600483015260248201525f816044815f51602061a3995f395f51905f525afa8015615649576163b15750565b3d15617e4e573d90617e3582615a34565b91617e436040519384615720565b82523d5f602084013e565b606090565b8151617e7e926001600160a01b03909216915f91829160200182855af1617e78617e24565b91618416565b80519081617e8a575050565b602080617e9b938301019101615b02565b15617ea257565b60405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b5f6102a0617f27829360405192839163104c13eb60e21b6020840152602060248401526044830190615783565b6020815191016a636f6e736f6c652e6c6f675afa50565b617f6d617f275f93928493604051938492632d839cb360e21b6020850152604060248501526064840190615783565b90604483015203601f198101835282615720565b905f51602061a3995f395f51905f523b156109a0575f916163926040519485938493630389490b60e61b85526004850161632e565b5f9060033d11617fc257565b905060045f803e5f5160e01c90565b5f60443d10615a31576040513d600319016004823e8051913d60248401116001600160401b0384111761803d57828201928351916001600160401b038311618035573d840160031901858401602001116180355750615a3192910160200190615720565b949350505050565b92915050565b618075617f275f93926102a08594604051948593634b5c427760e01b6020860152604060248601526064850190615783565b83810360231901604485015290615783565b60209291908391805192839101825e019081520190565b6180a96014546158f9565b618166576040519081826020600e549283815201600e5f5260205f20925f5b81811061814d5750506180dd92500383615720565b81518060051b9080820460201490151715615122576180fb81615a34565b906181096040519283615720565b808252618118601f1991615a34565b013660208301375f5b8351811015618148578061813760019286615d77565b5160208260051b8501015201618121565b509150565b84548352600194850194879450602090930192016180c8565b604051615a31816111b2816014615931565b600781019061818782546158f9565b61824357600191500190604051808360208295549384815201905f5260205f20925f5b81811061822a5750506181bf92500383615720565b81518060051b9080820460201490151715615122576181dd81615a34565b906181eb6040519283615720565b8082526181fa601f1991615a34565b013660208301375f5b8351811015618148578061821960019286615d77565b5160208260051b8501015201618203565b84548352600194850194879450602090930192016181aa565b50615a316111b29160405192838092615931565b5f806020600f5460e01b6182a56024618270600d618178565b6040519485918183019563ffffffff60e01b1686528051918291018484015e810186838201520301601f198101845283615720565b6011549151916001600160a01b03165afa906182bf617e24565b601054909290600581901b906001600160fb1b03811603615122575f938051602081115f1461834a57506020905b5f925b8284106182ff57505050509190565b9091929561830d8783615d3d565b83518110156158cd57830160200151600388901b91906001600160f81b031916881560088a8504141715615122576001921c1796019291906182f0565b906182ed565b905f806020600285015460e01b61836b602461827088618178565b60048601549151916001600160a01b03165afa6003618388617e24565b930154600581901b906001600160fb1b03811603615122575f938051602081115f1461841057506020905b5f925b8284106183c557505050509190565b909192956183d38783615d3d565b83518110156158cd57830160200151600388901b91906001600160f81b031916881560088a8504141715615122576001921c1796019291906183b6565b906183b3565b9061843a575080511561842b57805190602001fd5b63d6bda27560e01b5f5260045ffd5b8151158061846b575b61844b575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15618443565b601154600f546010546001600160a01b03909216915f9160e01b618498600d618178565b90845f52600d60205260405f209063ffffffff60e01b1690815f5260205260405f2060405160208101906184d1816102a0888886618087565b5190205f5260205260ff600360405f20015416618cfd575f51602061a3995f395f51905f523b156109a05760405163266cf10960e01b81525f81600481835f51602061a3995f395f51905f525af1801561564957618ce8575b50618535600d618350565b90506040516365bc948160e01b81528660048201528581602481835f51602061a3995f395f51905f525af19081156114e0578691618c80575b5080516185df57608460405162461bcd60e51b815260206004820152604060248201527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152fd5b855b8151811015618c78578160206185fa8361862b95615d77565b51604051630667f9d760e41b81526001600160a01b038c166004820152602481019190915293849081906044820190565b03815f51602061a3995f395f51905f525afa928315618c6d578893618c3a575b508215618be2575b61865d8282615d77565b51601154604051630667f9d760e41b81526001600160a01b03909116600482018190526024820183905291906020816044815f51602061a3995f395f51905f525afa908115618bd7578b91618ba6575b506186b8600d618350565b91909382155f14618b9f575f19905b5f51602061a3995f395f51905f523b15618b86576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810185905260448101919091528c81606481835f51602061a3995f395f51905f525af18015618b0b57908d91618b8a575b5050618738600d618350565b601154909491506001600160a01b03165f51602061a3995f395f51905f523b15618b86576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528b81606481835f51602061a3995f395f51905f525af18015618b7b57908c91618b62575b505082618b57575b505015618b4d578793889360ff601354166189d2575b6001868601610100031b5f1901851b16841c81036189c4575090618852917f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed60808b896102a06188278d604051928391602083019586618087565b5190206188348686615d77565b51906040519283528a602084015260408301526060820152a1615d77565b51906040519060808201928284106001600160401b038511176156545760039360405282526020820193845260408201908152606082019360018552898952600d60205260408920868a526020526040892060405160208101906188bb816102a08d8d86618087565b5190208a526020526040892092518355516001830155516002820155019051151560ff801983541691161790555b848452600d60205260408420818552602052604084206040516020810190618916816102a0888886618087565b519020855260205260ff60036040862001541615618967576040948452600d6020528484209084526020526102a061895b858520938651928391602083019586618087565b51902082526020522090565b60405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201526e3a143994903737ba103337bab7321760891b6064820152608490fd5b935091506001905b016185e1565b9450618a1d93506189e38383615d77565b51601154604051630667f9d760e41b81526001600160a01b0390911660048201526024810182905290959094602090869081906044820190565b03815f51602061a3995f395f51905f525afa948515614f5a578a95618b1a575b50618a4986600d618e57565b959096618a5781600d618f30565b60115490939192906001600160a01b03165f51602061a3995f395f51905f523b15618b16576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528c81606481835f51602061a3995f395f51905f525af18015618b0b57908d91618af2575b505087618aea575b5094956187cc5750935091506001906189cc565b96505f618ad6565b81618afc91615720565b618b07578b5f618ace565b8b80fd5b6040513d8f823e3d90fd5b8e80fd5b9094506020813d8211618b45575b81618b3560209383615720565b810103126109a05751935f618a3d565b3d9150618b28565b91506001906189cc565b141590505f806187b6565b81618b6c91615720565b618b77578a5f6187ae565b8a80fd5b6040513d8e823e3d90fd5b8d80fd5b81618b9491615720565b618b07578b5f61872c565b8c906186c7565b90506020813d8211618bcf575b81618bc060209383615720565b810103126109a057515f6186ad565b3d9150618bb3565b6040513d8d823e3d90fd5b7f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5618c32618c108484615d77565b51604080516001600160a01b038e168152602081019290925290918291820190565b0390a1618653565b9092506020813d8211618c65575b81618c5560209383615720565b810103126109a05751915f61864b565b3d9150618c48565b6040513d8a823e3d90fd5b5050506188e9565b90503d8087833e618c918183615720565b8101604082820312618ce45781516001600160401b038111618ce05781618cb9918401616086565b916020810151906001600160401b038211610ade57618cd9929101616086565b505f61856e565b8780fd5b8680fd5b618cf59194505f90615720565b5f925f61852a565b91939092505f52600d60205260405f20905f526020526102a0618d2f60405f2093604051928391602083019586618087565b5190205f5260205260405f2090565b6bffffffffffffffffffffffff60a01b6011541660115563ffffffff19600f5416600f55600e545f600e5580618e15575b505f60105560ff1960135416601355618d896014546158f9565b80618d915750565b601f8111600114618da357505f601455565b60145f52601f0160051c7fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec017fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ed5b818110618e0a57505060145f525f602081208160145555565b5f8155600101618df1565b600e5f527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd908101905b818110618e4c5750618d6f565b5f8155600101618e3f565b91905f5b6101008110618e6e57505090505f905f90565b8060ff0360ff8111615122576004850154600190911b906001600160a01b03165f51602061a3995f395f51905f523b156109a0576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f51602061a3995f395f51905f525af1801561564957618f20575b50618efa84618350565b81618f16575b50618f0d57600101618e5b565b92505060019190565b905015155f618f00565b5f618f2a91615720565b5f618ef0565b91905f5b6101008110618f4757505090505f905f90565b60048401546001821b906001600160a01b03165f51602061a3995f395f51905f523b156109a0576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f51602061a3995f395f51905f525af1801561564957618fe3575b50618fc684618350565b81618fd9575b50618f0d57600101618f34565b905015155f618fcc565b5f618fed91615720565b5f618fbc56fe60c03461009a57601f61138538819003918201601f19168301916001600160401b0383118484101761009e57808492604094855283398101031261009a57610052602061004b836100b2565b92016100b2565b6001600160a01b039182166080521660a0526040516112be90816100c78239608051818181610233015281816105ef01526108ac015260a0518181816101ef0152610db90152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361009a5756fe6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c8063212dd07014610a4e57806323eeca011461086b57806348bd7dfd146107a557806367ca7c91146105715780638307c6551461050b578063a9270fbe146103e4578063aad6e48814610262578063c45a01551461021e578063c6bbd5a7146101da5763ecbbc0330361000e57346101d65760203660031901126101d6576040516100ab606082610b39565b6002815260208101604036823760043560601c60405162fc63d160e41b8152602081600481855afa9182156101ae576004926020925f916101b9575b506001600160a01b03166100fa86610ede565b52604051635f64b55b60e01b815292839182905afa9081156101ae575f9161017f575b509091906001600160a01b031661013382610eeb565b52604051918291602083019060208452518091526040830191905f5b81811061015d575050500390f35b82516001600160a01b031684528594506020938401939092019160010161014f565b6101a1915060203d6020116101a7575b6101998183610b39565b810190610b8b565b5f61011d565b503d61018f565b6040513d5f823e3d90fd5b6101d09150833d85116101a7576101998183610b39565b5f6100e7565b5f80fd5b346101d6575f3660031901126101d6576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101d6575f3660031901126101d6576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101d65760803660031901126101d65761027b610a9b565b610283610ab1565b5060643567ffffffffffffffff81116101d657366023820112156101d6578060040135906102b082610b5b565b916102be6040519384610b39565b8083526024602084019160051b830101913683116101d657602401905b8282106103d4575050508051916102f183610b5b565b926102ff6040519485610b39565b80845261030e601f1991610b5b565b015f5b8181106103b157505060043560601c905f5b8351811015610360578061034461033c60019387610efb565b518486610ceb565b61034e8288610efb565b526103598187610efb565b5001610323565b846040518091602082016020835281518091526020604084019201905f5b81811061038c575050500390f35b825180518552602090810151818601528695506040909401939092019160010161037e565b6020906040516103c081610b01565b5f81525f8382015282828801015201610311565b81358152602091820191016102db565b346101d65760046101206103f736610ac7565b9160409391935194858092631865c57d60e01b825260601c5afa9283156101ae575f936104da575b506040519261042f606085610b39565b600284526020840192604036853781516020909201516001600160801b03908116939216916001600160a01b03908116911610156104bf5761047084610ede565b5261047a83610eeb565b52905b604051918291602083019060208452518091526040830191905f5b8181106104a6575050500390f35b8251845285945060209384019390920191600101610498565b906104c984610ede565b526104d383610eeb565b529061047d565b6104fd9193506101203d8111610504575b6104f58183610b39565b810190610bd9565b918361041f565b503d6104eb565b346101d65760a03660031901126101d657610524610a9b565b61052c610ab1565b5060643560028110156101d65760809161054c9160843591600435610f0f565b6020604080519280518452828101518385015201518051604084015201516060820152f35b346101d65760803660031901126101d6576004356001600160a01b038116908190036101d65760643567ffffffffffffffff81116101d657366023820112156101d657806004013567ffffffffffffffff81116101d65781013660248201116101d6576040516315e3ab2960e21b81523360048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156101ae575f9161076b575b501561073557602090829003126101d6576024013560018060a01b0381168091036101d6575f809160405160208101916323b872dd60e01b83526024820152336044820152602435606482015260648152610683608482610b39565b519082855af13d15610729573d67ffffffffffffffff8111610715576106cb91604051916106bb6020601f19601f8401160184610b39565b82523d5f602084013e5b8361122a565b80519081151591826106f2575b50506106e057005b635274afe760e01b5f5260045260245ffd5b81925090602091810103126101d657602061070d9101610bcc565b1582806106d8565b634e487b7160e01b5f52604160045260245ffd5b6106cb906060906106c5565b60405162461bcd60e51b815260206004820152600e60248201526d139bdd119858dd1bdc9e541bdbdb60921b6044820152606490fd5b90506020813d60201161079d575b8161078660209383610b39565b810103126101d65761079790610bcc565b84610627565b3d9150610779565b346101d6576107b336610ac7565b5050506040516107c4608082610b39565b6003815260208101606036823760016107dc83610ede565b5260026107e883610eeb565b528151600210156108575760036060830152604051906020820192602083525180935260408201905f935b8085106108205783830384f35b9091825190600a8210156108435760208160019382935201930194019390610813565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b346101d65760403660031901126101d6576004356024358101808211610a3a5760405163b4b9d1f160e01b8152600481019290925260248201525f816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156101ae575f91610998575b5080519061090a6108f483610b5b565b926109026040519485610b39565b808452610b5b565b602083019190601f19013683375f5b8151811015610953576001906bffffffffffffffffffffffff1961093d8285610efb565b5160601b1661094c8287610efb565b5201610919565b505090604051918291602083019060208452518091526040830191905f5b81811061097f575050500390f35b8251845285945060209384019390920191600101610971565b90503d805f833e6109a98183610b39565b8101906020818303126101d65780519067ffffffffffffffff82116101d657019080601f830112156101d6578151906109e182610b5b565b926109ef6040519485610b39565b82845260208085019360051b8201019182116101d657602001915b818310610a1a57505050816108e4565b82516001600160a01b03811681036101d657815260209283019201610a0a565b634e487b7160e01b5f52601160045260245ffd5b346101d65760603660031901126101d6576004356001600160a01b03811681036101d657610a89604091610a80610a9b565b60443591610ceb565b60208251918051835201516020820152f35b602435906001600160a01b03821682036101d657565b604435906001600160a01b03821682036101d657565b60609060031901126101d657600435906024356001600160a01b03811681036101d657906044356001600160a01b03811681036101d65790565b6040810190811067ffffffffffffffff82111761071557604052565b6080810190811067ffffffffffffffff82111761071557604052565b90601f8019910116810190811067ffffffffffffffff82111761071557604052565b67ffffffffffffffff81116107155760051b60200190565b60405190610b8082610b01565b5f6020838281520152565b908160209103126101d657516001600160a01b03811681036101d65790565b51906001600160801b03821682036101d657565b51908160070b82036101d657565b519081151582036101d657565b90816101209103126101d65760405190610120820182811067ffffffffffffffff82111761071557604052610c0d81610baa565b8252610c1b60208201610baa565b6020830152610c2c60408201610bbe565b6040830152610c3d60608201610bbe565b6060830152608081015164ffffffffff811681036101d657608083015260a08101518060030b81036101d65760a0830152610c7a60c08201610bcc565b60c083015260e08101519063ffffffff821682036101d6576101009160e0840152015160ff811681036101d65761010082015290565b60030b6063190190637fffffff198212637fffffff831317610a3a57565b60030b60640190637fffffff8213637fffffff19831217610a3a57565b919091610cf6610b73565b5060405162fc63d160e41b81526001600160a01b03919091169290602081600481875afa9081156101ae575f91610ebf575b506001600160a01b039182169116148015610e5c57604051631865c57d60e01b815261012081600481875afa80156101ae5760a0610d7b916001600160801b03935f91610e3d575b50015160030b610cce565b925b604051946349b5931160e01b8652600486015216602484015260448301525f606483015260030b608482015260608160a4815f60018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19081156101ae575f905f92610e03575b5060405191610df983610b01565b8252602082015290565b9150506060813d606011610e35575b81610e1f60609383610b39565b810103126101d65760208151910151905f610deb565b3d9150610e12565b610e5691506101203d8111610504576104f58183610b39565b5f610d70565b604051631865c57d60e01b815261012081600481875afa80156101ae5760a0610e9a916001600160801b03935f91610ea0575b50015160030b610cb0565b92610d7d565b610eb991506101203d8111610504576104f58183610b39565b5f610e8f565b610ed8915060203d6020116101a7576101998183610b39565b5f610d28565b8051156108575760200190565b8051600110156108575760400190565b80518210156108575760209160051b010190565b9290604051936060850185811067ffffffffffffffff821117610715576040525f85525f6020860152604051610f4481610b01565b5f81525f602082015260408601528483156111a7575060601c9060405162fc63d160e41b8152602081600481865afa9081156101ae575f91611188575b506001600160a01b03828116911614801561114c57604051631865c57d60e01b815261012081600481875afa9081156101ae57610fcc9160a0915f91610e3d5750015160030b610cce565b905b5a956002811015610843576001036110a6579360409161103b95835192610ff484610b1d565b8352602083015260018383015260030b6060820152815190336020830152602082526110208383610b39565b8251633eece7db60e01b8152958692839233600485016111c6565b03815f865af19182156101ae5761105c935f93611074575b50828652610ceb565b60408301525b5a8103908111610a3a57602082015290565b61109791935060403d60401161109f575b61108f8183610b39565b8101906111b0565b50915f611053565b503d611085565b6040906111029594928251916110bb83610b1d565b86835260208301525f8383015260030b6060820152815190336020830152602082526110e78383610b39565b8251633eece7db60e01b8152968792839233600485016111c6565b03815f855af180156101ae57611121945f9161112b575b508652610ceb565b6040830152611062565b611144915060403d60401161109f5761108f8183610b39565b90505f611119565b604051631865c57d60e01b815261012081600481875afa9081156101ae576111829160a0915f91610ea05750015160030b610cb0565b90610fce565b6111a1915060203d6020116101a7576101998183610b39565b5f610f81565b94505050505090565b91908260409103126101d6576020825192015190565b9192606060e09460209360018060a01b0316855280518486015283810151151560408601526040810151151582860152015160030b608084015260c060a084015280519182918260c0860152018484015e5f828201840152601f01601f1916010190565b9061124e575080511561123f57805190602001fd5b63d6bda27560e01b5f5260045ffd5b8151158061127f575b61125f575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561125756fea2646970667358221220f3ef5375aaed25576a473447336d380f40555b4f9090d9d18f46219133f4367064736f6c634300081b00336b656420736c6f742e2057652063616e2774206669742076616c7565206772650000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4814cf6d2fe3e1b326114b07d22a6f6bb59e346c6700000000000000000000000073746453746f726167652066696e642853746453746f72616765293a2050616300000000000000000000000040d16fc0246ad3160ccc09b8d0d3a2cd28ae6c2fa2646970667358221220bae43ca7403f70453b04d8151f07828c1fb657532904f476624062272a2063fc64736f6c634300081b0033","sourceMap":"270:9967:75:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7726:30;270:9967;;;;;;;;:::i;:::-;880:2;270:9967;;-1:-1:-1;;880:2:75;;;270:9967;880:2;;;;7771:13;7786:19;880:2;7786:19;;;;270:9967;;;;;880:2;27501:38:3;;1590:14:0;;;;27501:38:3;;8077:4:75;27501:38:3;;;270:9967:75;27501:38:3;;;;;;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;:::-;880:2:75;270:9967;;;27568:30:3;;;;;;:::i;:::-;;6854:22:8;;:::i;:::-;27524:10:3;270:9967:75;;7009:9:8;270:9967:75;;;7009:9:8;270:9967:75;7505:10:8;270:9967:75;-1:-1:-1;;;270:9967:75;;;;;;;7548:13;270:9967;;;7505:10:8;270:9967:75;;:::i;:::-;8077:4;;;;270:9967;;;;;;;;;6036:17;;;270:9967;;;;;;;;;;1136:42;270:9967;;;;6854:12:8;270:9967:75;;7009:9:8;270:9967:75;;1590:14:0;15610:11:8;270:9967:75;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;270:9967:75;;;;;;27635:8:3;270:9967:75;;;;;15703:15:8;;270:9967:75;;;;;;;;880:2;270:9967;;;;;;880:2;15735:37:8;;;;;;;;;;:::i;:::-;;880:2:75;;15735:37:8;;;;;;:::i;:::-;270:9967:75;15725:48:8;;270:9967:75;;880:2;270:9967;;15610:11:8;270:9967:75;;;15703:77:8;270:9967:75;;15702:78:8;15698:126;;7766:283:75;-1:-1:-1;;;;;270:9967:75;;;;;;27635:8:3;270:9967:75;;;;;;;;880:2;270:9967;15889:37:8;;270:9967:75;;;;;;15889:37:8;;;880:2:75;15889:37:8;;;;;:::i;:::-;270:9967:75;15879:48:8;;270:9967:75;;880:2;270:9967;;;;15943:15:8;7548:13:75;15943:15:8;;270:9967:75;15961:16:8;972:13:75;15961:16:8;;270:9967:75;15943:34:8;;;;:::i;:::-;15938:460;;7766:283:75;270:9967;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;270:9967:75;;;16424:32:8;;270:9967:75;972:13;;;270:9967;;;;;;;880:2;270:9967;972:13;270:9967;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;7766:283:75;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;270:9967:75;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;270:9967:75;;;16587:43:8;;270:9967:75;12810:59:8;;;270:9967:75;;;;920:14;270:9967;;;12656:92:8;;;;12810:59;;;270:9967:75;;;12810:59:8;270:9967:75;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;7766:283:75;16678:31:8;;;;:::i;:::-;16724:8;;270:9967:75;;;16724:29:8;;7766:283:75;16720:176:8;;;14785:4;;;;;:::i;:::-;270:9967:75;;;;880:2;27501:38:3;;1590:14:0;;;;27501:38:3;;8077:4:75;27501:38:3;;;270:9967:75;27501:38:3;;;;;;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;;6854:22:8;;:::i;:::-;27524:10:3;270:9967:75;;7009:9:8;270:9967:75;;;7009:9:8;270:9967:75;7505:10:8;270:9967:75;-1:-1:-1;;;270:9967:75;;;;;;;7548:13;270:9967;;;7505:10:8;270:9967:75;;:::i;:::-;;;1136:42;270:9967;;;;6854:12:8;270:9967:75;;7009:9:8;270:9967:75;;1590:14:0;15610:11:8;270:9967:75;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;270:9967:75;;;;;;27635:8:3;270:9967:75;;;;;15703:15:8;;270:9967:75;;;;;;;;880:2;270:9967;;;;;;880:2;15735:37:8;;;;;;;;;;:::i;:::-;270:9967:75;15725:48:8;;270:9967:75;;880:2;270:9967;;15610:11:8;270:9967:75;;;15703:77:8;270:9967:75;;15702:78:8;15698:126;;7766:283:75;-1:-1:-1;;;;;270:9967:75;;;;;;27635:8:3;270:9967:75;;;;;;;;880:2;270:9967;15889:37:8;;270:9967:75;;;;;;15889:37:8;;;880:2:75;15889:37:8;;;;;:::i;:::-;270:9967:75;15879:48:8;;270:9967:75;;880:2;270:9967;;;;15943:15:8;7548:13:75;15943:15:8;;270:9967:75;15961:16:8;972:13:75;15961:16:8;;270:9967:75;15943:34:8;;;;:::i;:::-;15938:460;;7766:283:75;270:9967;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;270:9967:75;;;16424:32:8;;270:9967:75;972:13;;;270:9967;;;;;;;880:2;270:9967;972:13;270:9967;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;7766:283:75;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;270:9967:75;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;270:9967:75;;;16587:43:8;;270:9967:75;12810:59:8;;;270:9967:75;;;;972:13;270:9967;;;12656:92:8;;;;12810:59;;;270:9967:75;;;12810:59:8;270:9967:75;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;7766:283:75;16678:31:8;;;;:::i;:::-;16724:8;;270:9967:75;;;16724:29:8;;7766:283:75;16720:176:8;;;14785:4;;;;;:::i;:::-;270:9967:75;;;;;;:::i;:::-;880:2;270:9967;;;;;;;;;8251:13;;;8266:19;880:2;8266:19;;;;8536:13;;7548;8551:23;880:2;8551:23;;;;270:9967;;;8576:3;8604:9;;;;:::i;:::-;;270:9967;7548:13;880:2;;;;;;;;8632:13;:30;8750:53;8632:13;;;;;:::i;:::-;;270:9967;8632:30;;:::i;:::-;8705:21;880:2;8686:9;;;;:::i;:::-;;:17;270:9967;880:2;8705:13;;;;:::i;:::-;;:21;270:9967;8705:21;;:::i;:::-;270:9967;8783:13;8750:9;;;;;:::i;:::-;;:15;;880:2;8783:13;;:::i;:::-;;:19;;8750:53;;:::i;:::-;880:2;;-1:-1:-1;;;;;;;;;;;2943:24:1;;;;270:9967:75;;1590:14:0;;;;2943:24:1;;270:9967:75;2943:24:1;;270:9967:75;7548:13;27501:38:3;270:9967:75;;;2943:24:1;;27501:38:3;2943:24:1;-1:-1:-1;;;;;;;;;;;2943:24:1;;;;;;;;;;;8576:3:75;;;7548:13;880:2;8536:13;;2943:24:1;;;;;:::i;:::-;270:9967:75;;;;;2943:24:1;;;;270:9967:75;;;;2943:24:1;270:9967:75;;1590:14:0;270:9967:75;;1590:14:0;;;;2943:24:1;270:9967:75;;;880:2;-1:-1:-1;;;523:5:65;;6854:12:8;270:9967:75;523:5:65;27501:38:3;270:9967:75;523:5:65;8287:3:75;270:9967;;-1:-1:-1;;;8319:13:75;;880:2;270:9967;;;8319:13;-1:-1:-1;;;;;;;;;;;8319:13:75;;;;;;;;;;;8287:3;-1:-1:-1;880:2:75;497:42;;270:9967;;-1:-1:-1;;;8347:52:75;;-1:-1:-1;;;;;270:9967:75;;;;8347:52;;270:9967;972:13;27501:38:3;972:13:75;;270:9967;;;27501:38:3;270:9967:75;8347:52;-1:-1:-1;;;;;;;;;;;8347:52:75;;;;;;;;8287:3;-1:-1:-1;880:2:75;497:42;270:9967;;8426:47;;;;-1:-1:-1;;;;;270:9967:75;8462:10;;;;:::i;:::-;270:9967;;;1590:14:0;;;;;;;;;8426:47:75;;7548:13;270:9967;8426:47;;;:::i;:::-;;;;;;;;;;;;;;8287:3;8414:59;;;;;:::i;:::-;;;;;;:::i;:::-;;270:9967;;1590:14:0;;;;8487:23:75;;270:9967;8487:23;;270:9967;880:2;8487:23;27501:38:3;8487:23:75;;-1:-1:-1;;;;;;;;;;;8487:23:75;;;;;;;7548:13;8487:23;;;;8287:3;;880:2;8251:13;;8487:23;;;880:2;8487:23;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;270:9967;;1590:14:0;270:9967:75;;1590:14:0;;;;8426:47:75;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;270:9967;;1590:14:0;270:9967:75;;1590:14:0;;;;8347:52:75;;;880:2;8347:52;;;;;;;;;:::i;:::-;;;8319:13;;;880:2;8319:13;;;;;;;;;1590:14:0;8319:13:75;;;:::i;:::-;;;1590:14:0;;;;;8319:13:75;;;1590:14:0;-1:-1:-1;270:9967:75;;8319:13;;;-1:-1:-1;8319:13:75;;270:9967;880:2;270:9967;;;:::i;:::-;;;;;;;;;;16720:176:8;270:9967:75;;;;;;;16769:41:8;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;270:9967:75;;-1:-1:-1;;;16769:41:8;;-1:-1:-1;;;;;270:9967:75;;;;;16769:41:8;;270:9967:75;12810:59:8;;;270:9967:75;;;;12810:59:8;;;270:9967:75;;;;;12810:59:8;270:9967:75;16769:41:8;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;;;;;16720:176;270:9967:75;;-1:-1:-1;;;16824:61:8;;880:2:75;270:9967;16824:61:8;;12810:59;;27501:38:3;12810:59:8;;270:9967:75;12810:59:8;27501:38:3;270:9967:75;;12810:59:8;-1:-1:-1;;;7981:3:75;12810:59:8;;;16824:61;;;16769:41;;;;;;:::i;:::-;270:9967:75;;;16769:41:8;;;;270:9967:75;;;16724:29:8;972:13:75;16736:17:8;;;;16724:29;;;16587:43;;;;:::i;:::-;270:9967:75;;;;;16587:43:8;;;;270:9967:75;;;;16587:43:8;270:9967:75;;1590:14:0;270:9967:75;;1590:14:0;;;;16587:43:8;270:9967:75;;;16424:32:8;;;;880:2:75;16424:32:8;;880:2:75;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;;270:9967:75;;1590:14:0;270:9967:75;;1590:14:0;;;;15938:460:8;16028:34;;;;:::i;:::-;16021:3;880:2:75;16021:3:8;880:2:75;;;;270:9967;;;;;7548:13;270:9967;;;;1590:14:0;;;16314:19:8;;;270:9967:75;16314:19:8;;270:9967:75;16314:19:8;;27501:38:3;16314:19:8;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;12810:59;880:2:75;16314:19:8;;16170:185;16314:19;;;;;15938:460;270:9967:75;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;270:9967:75;12810:59:8;;;-1:-1:-1;;;270:9967:75;12810:59:8;;;270:9967:75;;;;;;12810:59:8;;;270:9967:75;;;;;;;;16170:185:8;;880:2:75;;16170:185:8;;;;;;:::i;:::-;972:13:75;16103:21:8;12810:59;;;15938:460;;;12810:59;270:9967:75;;-1:-1:-1;;;12810:59:8;;880:2:75;270:9967;12810:59:8;;270:9967:75;;;;;;27501:38:3;270:9967:75;;;;:::i;:::-;12810:59:8;;;16314:19;;;-1:-1:-1;16314:19:8;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;270:9967:75;-1:-1:-1;;;523:5:65;;6854:12:8;270:9967:75;523:5:65;27501:38:3;270:9967:75;523:5:65;15698:126:8;13208:33;;:::i;:::-;;15698:126;;270:9967:75;-1:-1:-1;;;270:9967:75;;;;;27501:38:3;270:9967:75;;16724:29:8;920:14:75;16736:17:8;;;;16724:29;;;16587:43;;;;:::i;:::-;270:9967:75;;;;;16587:43:8;;;;16424:32;;;;880:2:75;16424:32:8;;880:2:75;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;:::i;:::-;16021:3;880:2:75;16021:3:8;880:2:75;;;;270:9967;;;;;7548:13;270:9967;;;;1590:14:0;;;16314:19:8;;;270:9967:75;16314:19:8;;270:9967:75;16314:19:8;;27501:38:3;16314:19:8;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;12810:59;880:2:75;16314:19:8;;16170:185;16314:19;;;;;270:9967:75;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;270:9967:75;12810:59:8;;;-1:-1:-1;;;270:9967:75;12810:59:8;;;270:9967:75;;;;;;12810:59:8;;;270:9967:75;;;;;;;;16170:185:8;;880:2:75;;16170:185:8;;;;;;:::i;:::-;920:14:75;16103:21:8;12810:59;;;15938:460;;;15698:126;13208:33;;:::i;:::-;;15698:126;;7807:3:75;972:13;;;;7826:213;;880:2;7548:13;880:2;;;;;;;523:5:65;7981:3:75;523:5:65;;7981:3:75;523:5:65;;;;;;;;;;;;7997:8:75;523:5:65;;;;;;;7968:37:75;7548:13;7968:37;;;;;:::i;:::-;270:9967;880:2;7771:13;;523:5:65;-1:-1:-1;;;523:5:65;;;270:9967:75;523:5:65;;270:9967:75;523:5:65;972:13:75;-1:-1:-1;;;972:13:75;;;270:9967;972:13;;;;270:9967;;;;;;;;;;;;;;;1016:26:12;270:9967:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;2421:18:5;270:9967:75;;;;;;;2421:18:5;270:9967:75;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;270:9967:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1600:7;497:42;270:9967;;-1:-1:-1;;;1600:34:75;;-1:-1:-1;;;;;;;;;;;270:9967:75;1600:34;;270:9967;-1:-1:-1;;;;;;;;;;;270:9967:75;;;;-1:-1:-1;;;;;;;;;;;270:9967:75;;;;;;;;;1600:34;;270:9967;;-1:-1:-1;;;;;270:9967:75;1600:34;;;;;;;1762:70;1600:34;1771:9;1600:34;;;;;270:9967;;1645:26;270:9967;;1645:26;:::i;:::-;1681:71;1690:9;;;:::i;:::-;270:9967;;;;;;;;:::i;:::-;;972:13;;270:9967;1600:7;270:9967;;;-1:-1:-1;;;270:9967:75;;;;1681:71;:::i;:::-;1771:9;:::i;:::-;270:9967;;;;;;;;:::i;:::-;;972:13;;270:9967;1600:7;270:9967;;;-1:-1:-1;;;270:9967:75;;;;1762:70;:::i;:::-;270:9967;;1600:34;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;270:9967;;1590:14:0;270:9967:75;;1590:14:0;;;;270:9967:75;;;;;;;-1:-1:-1;;270:9967:75;;;;;;;-1:-1:-1;;;;;270:9967:75;;;;;;;;-1:-1:-1;;;;;270:9967:75;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;2273:18:5;270:9967:75;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;2273:18:5;270:9967:75;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;270:9967:75;;;;;;;;;1136:42;270:9967;;;;;497:42;270:9967;;;1590:14:0;;;2001:34:75;;796:42;270:9967;;;2001:34;;270:9967;-1:-1:-1;;;;;;;;;;;270:9967:75;;;;-1:-1:-1;;;;;;;;;;;270:9967:75;;;;2001:34;;;;;;;;;;;;;;;;270:9967;2065:9;;;;:::i;:::-;270:9967;2055:19;;-1:-1:-1;;;;;;;;;;;2045:30:75;;;;270:9967;;1590:14:0;;;;2045:30:75;;270:9967;2045:30;;270:9967;2045:30;;270:9967;2045:30;-1:-1:-1;;;;;;;;;;;2045:30:75;;;;;;;;;;;270:9967;2105:9;;;;;:::i;:::-;270:9967;2095:19;;-1:-1:-1;;;;;;;;;;;2085:30:75;;;;270:9967;;1590:14:0;;;;2085:30:75;;270:9967;2085:30;;270:9967;2085:30;;270:9967;2085:30;-1:-1:-1;;;;;;;;;;;2085:30:75;;;;;;;;;;;270:9967;2125:25;;-1:-1:-1;;;;;;;;;;;2125:25:75;;;;270:9967;;-1:-1:-1;;;2125:25:75;;2145:4;2135:14;;270:9967;2125:25;;270:9967;2125:25;270:9967;;;-1:-1:-1;;;;;;;;;;;2125:25:75;;;;;;;;;;;270:9967;2160:25;;-1:-1:-1;;;;;;;;;;;2160:25:75;;;;270:9967;;-1:-1:-1;;;2160:25:75;;2145:4;2170:14;;270:9967;2160:25;;270:9967;;2160:25;270:9967;;;-1:-1:-1;;;;;;;;;;;2160:25:75;;;;;;;;;;;270:9967;2337:39;270:9967;;;;;;;;;;:::i;:::-;2237:1;270:9967;;880:2;270:9967;;880:2;;;2249:20;;;:::i;:::-;270:9967;2279:20;;;:::i;:::-;270:9967;;;1590:14:0;;;;;;;;;2337:39:75;;270:9967;2337:39;;;:::i;:::-;;;;;;;;;;;;;;270:9967;2392:13;;2426:3;270:9967;;2407:17;;;;;2454:9;2445:32;2454:9;270:9967;2454:9;;;:::i;:::-;;270:9967;2445:32;:::i;:::-;2491:34;270:9967;2500:9;;;;:::i;:::-;;:21;270:9967;2491:34;:::i;:::-;880:2;2392:13;;2407:17;;270:9967;;2337:39;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;270:9967;;;1590:14:0;;;;;;;;2160:25:75;;;;;;;;:::i;:::-;270:9967;;2160:25;;;;;270:9967;;;;;2125:25;;;;;:::i;:::-;270:9967;;2125:25;;;;2085:30;;;;;:::i;:::-;270:9967;;2085:30;;;;2045;;;;;:::i;:::-;270:9967;;2045:30;;;;;270:9967;;1590:14:0;270:9967:75;;1590:14:0;;;;2001:34:75;;;;;;;;;;;;;:::i;:::-;;;;270:9967;;;;;;;-1:-1:-1;;270:9967:75;;;;;;534:59:65;270:9967:75;534:59:65;;;;;;;;:::i;:::-;270:9967:75;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;270:9967:75;;;;;;;;;;;;;;;;;;;;;;9712:7;497:42;270:9967;;-1:-1:-1;;;9712:33:75;;270:9967;9712:33;;270:9967;;;9673:2;270:9967;;;;;;;;;9712:33;;270:9967;;-1:-1:-1;;;;;270:9967:75;9712:33;;;;;;;;;;;270:9967;;;;;;;;;;;;:::i;:::-;;972:13;;270:9967;9712:7;270:9967;;;;;;;;-1:-1:-1;;;;;;;;;;;14510:29:1;;;;270:9967:75;;;;;;1590:14:0;;;;;;;;14510:29:1;;270:9967:75;14510:29:1;;270:9967:75;9673:2;270:9967;;;;;9712:33;270:9967;;;;;;;;:::i;:::-;14510:29:1;;-1:-1:-1;;;;;;;;;;;14510:29:1;;;;;;;;270:9967:75;;;;;9903:117;;270:9967;;;9903:117;9958:10;9941:68;9958:10;;:::i;:::-;270:9967;;;;;;;;:::i;:::-;9712:7;972:13;;270:9967;9712:7;270:9967;;;9941:68;:::i;14510:29:1:-;;;;;:::i;:::-;270:9967:75;;14510:29:1;;;;9712:33:75;;;;;;;;;;;;:::i;:::-;;;:7;270:9967;;;;;;;;-1:-1:-1;;;;;270:9967:75;;;;;;;;:::i;:::-;9712:33;;;270:9967;;;;;;;;;;;;;;;;;3190:18:5;270:9967:75;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;3190:18:5;270:9967:75;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;-1:-1:-1;;;;;270:9967:75;;;;;1136:42;270:9967;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1590:14:0;270:9967:75;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;270:9967:75;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;270:9967:75;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;270:9967:75;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;270:9967:75;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;270:9967:75;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;270:9967:75;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;270:9967:75;;;;;;;;;;;;;;;;;;;;;;1590:14:0;270:9967:75;1590:14:0;270:9967:75;;;;;;1590:14:0;270:9967:75;1590:14:0;;270:9967:75;;;;;;;1590:14:0;270:9967:75;1590:14:0;;270:9967:75;;;;;;;1590:14:0;270:9967:75;1590:14:0;;270:9967:75;;;;;;;1590:14:0;270:9967:75;1590:14:0;;270:9967:75;;;;;;;1590:14:0;270:9967:75;1590:14:0;;270:9967:75;;;;;;;1590:14:0;270:9967:75;1590:14:0;;270:9967:75;;;;;;;1590:14:0;270:9967:75;;;;;;;;;;;;;;;;;;;;;;;;;9439:7;497:42;270:9967;;-1:-1:-1;;;9439:23:75;;-1:-1:-1;;;;;;;;;;;270:9967:75;9439:23;;270:9967;;;;;;;9439:23;;270:9967;;-1:-1:-1;;;;;270:9967:75;9439:23;;;;;;;;;;;270:9967;;9473:26;270:9967;;9473:26;:::i;:::-;-1:-1:-1;;;;;9518:9:75;;;:::i;:::-;270:9967;;-1:-1:-1;;;;;;;;;;;3533:24:1;;;;270:9967:75;;1590:14:0;;;;3533:24:1;;270:9967:75;3533:24:1;;270:9967:75;-1:-1:-1;;;;;;;;;;;9439:23:75;497:42;;270:9967;3533:24:1;;;;-1:-1:-1;;;;;;;;;;;3533:24:1;;;;;;;;;;;270:9967:75;-1:-1:-1;;;;;;270:9967:75;9552:9;;-1:-1:-1;9552:9:75;:::i;:::-;270:9967;;-1:-1:-1;;;;;;;;;;;3533:24:1;;;;270:9967:75;;1590:14:0;;;;3533:24:1;;270:9967:75;3533:24:1;;270:9967:75;-1:-1:-1;;;;;;;;;;;9439:23:75;497:42;;270:9967;3533:24:1;;;;-1:-1:-1;;;;;;;;;;;3533:24:1;;;;;;;;270:9967:75;;3533:24:1;;;;;:::i;:::-;270:9967:75;;3533:24:1;270:9967:75;3533:24:1;270:9967:75;;3533:24:1;;;;;:::i;:::-;270:9967:75;;3533:24:1;;;;;270:9967:75;;;9439:23;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;270:9967;;;;;;;;;;;;;2707:18:5;270:9967:75;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;2707:18:5;270:9967:75;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;2761:39;270:9967;;;;;;:::i;:::-;2683:1;270:9967;;-1:-1:-1;;880:2:75;;270:9967;880:2;;;;2708:5;2695:18;;;:::i;:::-;270:9967;880:2;497:42;270:9967;;-1:-1:-1;;;2761:39:75;;270:9967;;;-1:-1:-1;;;;;270:9967:75;;;;;;;;;2761:39;;;:::i;:::-;;;;;;;;;;;2977:9;2955:126;2761:39;880:2;2761:39;;;;;270:9967;;2811:26;270:9967;;2811:26;:::i;:::-;2847:98;2869:9;;;:::i;:::-;;270:9967;972:13;;:::i;:::-;2847:98;;:::i;:::-;2977:9;:::i;:::-;;:21;270:9967;972:13;;:::i;2761:39::-;;;;;;;;;;;;;:::i;:::-;;;;;270:9967;1590:14:0;270:9967:75;;1590:14:0;;;;270:9967:75;;;;;;;-1:-1:-1;;270:9967:75;;;;;;;;;;;;;;;;5702:38;;;270:9967;5702:38;270:9967;497:42;270:9967;;-1:-1:-1;;;5833:34:75;;-1:-1:-1;;;;;;;;;;;270:9967:75;5833:34;;270:9967;-1:-1:-1;;;;;;;;;;;270:9967:75;;;;-1:-1:-1;;;;;;;;;;;270:9967:75;;;;;;;;;5833:34;;270:9967;;-1:-1:-1;;;;;270:9967:75;5833:34;;;;;;;;;;;5702:38;972:13;;;;;;;270:9967;5882:21;;;;;;;5986:9;;;;;;;;:::i;:::-;270:9967;5968:27;;-1:-1:-1;;;;;;;;;;;5958:38:75;;;;270:9967;;1590:14:0;;;;5958:38:75;;270:9967;5958:38;;270:9967;5958:38;;270:9967;5958:38;-1:-1:-1;;;;;;;;;;;5958:38:75;;;;;;;;5878:489;270:9967;;;;;27501:38:3;;1590:14:0;;;;27501:38:3;;6029:4:75;270:9967;27501:38:3;;270:9967:75;;27501:38:3;;;270:9967:75;27501:38:3;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;;6854:22:8;;:::i;:::-;27524:10:3;270:9967:75;;7009:9:8;270:9967:75;;;7009:9:8;270:9967:75;7505:10:8;270:9967:75;-1:-1:-1;;;270:9967:75;;;;;;;;;;;;;;7505:10:8;270:9967:75;;:::i;:::-;;;1136:42;270:9967;;;;6854:12:8;270:9967:75;;7009:9:8;270:9967:75;;1590:14:0;15610:11:8;270:9967:75;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;270:9967:75;;;;;;27635:8:3;270:9967:75;;;;;15703:15:8;;270:9967:75;;;;;;;;;;;;;;;;15735:37:8;;;;;;;;;;:::i;:::-;270:9967:75;15725:48:8;;270:9967:75;;;;;15610:11:8;270:9967:75;;;15703:77:8;270:9967:75;;15702:78:8;15698:126;;5878:489:75;-1:-1:-1;;;;;270:9967:75;;;;;;27635:8:3;270:9967:75;;;;;;;;;;15889:37:8;;270:9967:75;;;;;;15889:37:8;;;270:9967:75;15889:37:8;;;;;:::i;:::-;270:9967:75;15879:48:8;;270:9967:75;;;;;;;15943:15:8;270:9967:75;15943:15:8;;270:9967:75;15961:16:8;972:13:75;15961:16:8;;270:9967:75;15943:34:8;;;;:::i;:::-;15938:460;;270:9967:75;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;270:9967:75;;;16424:32:8;;270:9967:75;972:13;;;270:9967;;;;;;;;;972:13;270:9967;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;5878:489:75;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;270:9967:75;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;270:9967:75;;;16587:43:8;;270:9967:75;12810:59:8;;;270:9967:75;;;;-1:-1:-1;;270:9967:75;;;12656:92:8;12810:59;;;270:9967:75;;;12810:59:8;270:9967:75;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;5878:489:75;16678:31:8;;;;:::i;:::-;16724:8;;270:9967:75;;;16724:29:8;;5878:489:75;16720:176:8;;;14785:4;;;;;:::i;:::-;270:9967:75;497:42;;270:9967;;-1:-1:-1;;;6068:56:75;;-1:-1:-1;;;;;270:9967:75;;;;6068:56;;270:9967;-1:-1:-1;;270:9967:75;972:13;;270:9967;;;;;6068:56;-1:-1:-1;;;;;;;;;;;6068:56:75;;;;;;;;5878:489;;;270:9967;;-1:-1:-1;;;6400:37:75;;6431:4;270:9967;6400:37;;270:9967;;;;;;-1:-1:-1;;;;;;;;;;;6400:37:75;;;;;;;;;;;5878:489;-1:-1:-1;270:9967:75;;-1:-1:-1;;;6469:36:75;;6431:4;270:9967;6469:36;;270:9967;;;;;;-1:-1:-1;;;;;;;;;;;6469:36:75;;;;;;;;;;;5878:489;-1:-1:-1;270:9967:75;497:42;270:9967;;-1:-1:-1;;;6549:52:75;;-1:-1:-1;;;;;;;;;;;270:9967:75;6549:52;;270:9967;-1:-1:-1;;;;;;;;;;;270:9967:75;972:13;;270:9967;-1:-1:-1;;;;;;;;;;;270:9967:75;972:13;;270:9967;5833:34;972:13;;;;;;;;;270:9967;;;;;972:13;;270:9967;;6549:52;;270:9967;;1590:14:0;-1:-1:-1;;;;;270:9967:75;6549:52;;;;;;;;;;;5878:489;270:9967;;;6612:749;;270:9967;;;6612:749;6662:21;;;270:9967;;-1:-1:-1;;;6770:37:75;;6431:4;270:9967;6770:37;;270:9967;;;;;-1:-1:-1;;;;;;;;;;;6770:37:75;;;;;;;;;;;6658:693;6770:52;;;;;;:::i;:::-;;;:::i;:::-;270:9967;;;-1:-1:-1;;;6946:36:75;;6431:4;270:9967;6946:36;;270:9967;;;;;-1:-1:-1;;;;;;;;;;;6946:36:75;;;;;;;;;;;6658:693;6932:50;;;;;;:::i;:::-;6612:749;;;;;270:9967;;;6946:36;;;270:9967;6946:36;;270:9967;6946:36;;;;;;1590:14:0;6946:36:75;;;:::i;:::-;;;1590:14:0;;;;;6932:50:75;6946:36;;;;;-1:-1:-1;6946:36:75;;6770:37;;;270:9967;6770:37;;270:9967;6770:37;;;;;;1590:14:0;6770:37:75;;;:::i;:::-;;;1590:14:0;;;;;6770:52:75;:37;;;;;-1:-1:-1;6770:37:75;;6658:693;270:9967;;-1:-1:-1;;;7120:36:75;;6431:4;270:9967;7120:36;;270:9967;;;;;;;;-1:-1:-1;;;;;;;;;;;7120:36:75;;;;;;;;;;;6658:693;7106:50;;;;;;:::i;:::-;270:9967;;;-1:-1:-1;;;7266:37:75;;6431:4;270:9967;7266:37;;270:9967;;;;;-1:-1:-1;;;;;;;;;;;7266:37:75;;;;;;;;;;;6658:693;7266:52;;;;;;:::i;:::-;6658:693;;7266:37;;;270:9967;7266:37;;270:9967;7266:37;;;;;;1590:14:0;7266:37:75;;;:::i;:::-;;;1590:14:0;;;;;7266:52:75;:37;;;;;-1:-1:-1;7266:37:75;;7120:36;;;270:9967;7120:36;;270:9967;7120:36;;;;;;1590:14:0;7120:36:75;;;:::i;:::-;;;1590:14:0;;;;;7106:50:75;7120:36;;;;;-1:-1:-1;7120:36:75;;6549:52;;;;;972:13;6549:52;972:13;6549:52;;;;;;;:::i;:::-;;;;;6469:36;;;;;270:9967;6469:36;;270:9967;6469:36;;;;;;1590:14:0;6469:36:75;;;:::i;:::-;;;1590:14:0;;;;972:13:75;1590:14:0;;;6469:36:75;;;;;;;-1:-1:-1;6469:36:75;;6400:37;;;;;270:9967;6400:37;;270:9967;6400:37;;;;;;1590:14:0;6400:37:75;;;:::i;:::-;;;1590:14:0;;;;;;;6400:37:75;;;;;;;-1:-1:-1;6400:37:75;;6068:56;;;270:9967;6068:56;270:9967;6068:56;;;;;;;:::i;:::-;;;;;16720:176:8;270:9967:75;;;;;;;16769:41:8;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;270:9967:75;;-1:-1:-1;;;16769:41:8;;-1:-1:-1;;;;;270:9967:75;;;;16769:41:8;;270:9967:75;12810:59:8;;;270:9967:75;;;;12810:59:8;;;270:9967:75;;;;;;12810:59:8;;;16769:41;;;;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;;;;;270:9967:75;;-1:-1:-1;;;16824:61:8;;270:9967:75;;16824:61:8;;12810:59;;270:9967:75;12810:59:8;;270:9967:75;12810:59:8;270:9967:75;;;12810:59:8;-1:-1:-1;;;5833:34:75;12810:59:8;;;16824:61;;;16769:41;;;;;;:::i;:::-;270:9967:75;;16769:41:8;;;16724:29;-1:-1:-1;;16736:17:8;;;-1:-1:-1;6036:17:75;16724:29:8;;16587:43;;;;;:::i;:::-;270:9967:75;;16587:43:8;;;;16424:32;;;;;270:9967:75;16424:32:8;;270:9967:75;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;:::i;:::-;16021:3;880:2:75;16021:3:8;880:2:75;;;;270:9967;;;;;;;-1:-1:-1;;;16314:19:8;;270:9967:75;;;;;16314:19:8;;270:9967:75;16314:19:8;270:9967:75;;;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;12810:59;270:9967:75;16314:19:8;;16170:185;16314:19;270:9967:75;16314:19:8;;;;15938:460;270:9967:75;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;270:9967:75;12810:59:8;;;-1:-1:-1;;;270:9967:75;12810:59:8;;;270:9967:75;;;;;;12810:59:8;;;270:9967:75;;;;;;;;16170:185:8;;880:2:75;;16170:185:8;;;;;;:::i;:::-;270:9967:75;;-1:-1:-1;;;12810:59:8;;270:9967:75;;12810:59:8;;270:9967:75;;;;;;;;;:::i;16314:19:8:-;;;;;;;;;;;;;;:::i;:::-;;;;;270:9967:75;-1:-1:-1;;;523:5:65;;6854:12:8;270:9967:75;523:5:65;270:9967:75;;523:5:65;15698:126:8;13208:33;;:::i;:::-;;15698:126;;270:9967:75;-1:-1:-1;;;270:9967:75;;;;;;;;5958:38;;;;;:::i;:::-;270:9967;;5958:38;;;;5878:489;6222:9;;;:::i;:::-;270:9967;6204:27;;-1:-1:-1;;;;;;;;;;;6194:38:75;;;;270:9967;;1590:14:0;;;;6194:38:75;;270:9967;6194:38;;270:9967;6194:38;;270:9967;6194:38;-1:-1:-1;;;;;;;;;;;6194:38:75;;;;;;;;;;;5878:489;270:9967;;;;;27501:38:3;;1590:14:0;;;;27501:38:3;;6265:4:75;270:9967;27501:38:3;;270:9967:75;;27501:38:3;;;270:9967:75;27501:38:3;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;;6854:22:8;;:::i;:::-;27524:10:3;270:9967:75;;7009:9:8;270:9967:75;;;7009:9:8;270:9967:75;7505:10:8;270:9967:75;-1:-1:-1;;;270:9967:75;;;;;;;;;;;7505:10:8;270:9967:75;;:::i;:::-;;;1136:42;270:9967;;;;6854:12:8;270:9967:75;;;7009:9:8;270:9967:75;;1590:14:0;15610:11:8;270:9967:75;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;270:9967:75;;;;;;27635:8:3;270:9967:75;;;;;15703:15:8;;270:9967:75;;;;;;;;;;;;;;;;15735:37:8;;;;;;;;;;:::i;:::-;270:9967:75;15725:48:8;;270:9967:75;;;;;15610:11:8;270:9967:75;;;15703:77:8;270:9967:75;;15702:78:8;15698:126;;5878:489:75;-1:-1:-1;;;;;270:9967:75;;;;;;27635:8:3;270:9967:75;;;;;;;;;;15889:37:8;;270:9967:75;;;;;;15889:37:8;;;270:9967:75;15889:37:8;;;;;:::i;:::-;270:9967:75;15879:48:8;;270:9967:75;;;;;;;15943:15:8;270:9967:75;15943:15:8;;270:9967:75;15961:16:8;972:13:75;15961:16:8;;270:9967:75;15943:34:8;;;;;:::i;:::-;15938:460;;5878:489:75;270:9967;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;270:9967:75;;;16424:32:8;;270:9967:75;972:13;;;270:9967;;;;;;;;;;;;;972:13;270:9967;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;5878:489:75;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;270:9967:75;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;270:9967:75;;;16587:43:8;;270:9967:75;12810:59:8;;;270:9967:75;;;;;;;;12656:92:8;;;;12810:59;;;270:9967:75;;;12810:59:8;270:9967:75;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;5878:489:75;16678:31:8;;;;;:::i;:::-;16724:8;;;270:9967:75;;;16724:29:8;;5878:489:75;16720:176:8;;;;14785:4;;;;;:::i;:::-;270:9967:75;497:42;;270:9967;;-1:-1:-1;;;6302:54:75;;-1:-1:-1;;;;;270:9967:75;;;;6302:54;;270:9967;972:13;;;270:9967;;;;;972:13;270:9967;6302:54;-1:-1:-1;;;;;;;;;;;6302:54:75;;;;;;;;5878:489;;;;6302:54;;;270:9967;6302:54;270:9967;6302:54;;;;;;;:::i;:::-;;;;;16724:29:8;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;270:9967:75;;16587:43:8;;;;16424:32;;;;;270:9967:75;16424:32:8;;270:9967:75;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;:::i;:::-;16021:3;880:2:75;16021:3:8;880:2:75;;;;270:9967;;;;;;;;;;;1590:14:0;;;;16314:19:8;;;270:9967:75;16314:19:8;;270:9967:75;16314:19:8;;270:9967:75;16314:19:8;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;12810:59;270:9967:75;16314:19:8;16170:185;16314:19;;;;;15938:460;270:9967:75;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;270:9967:75;12810:59:8;;;-1:-1:-1;;;270:9967:75;12810:59:8;;;270:9967:75;;;;;;12810:59:8;;;270:9967:75;;;;;;;;16170:185:8;;880:2:75;;16170:185:8;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;;12810:59;270:9967:75;;-1:-1:-1;;;12810:59:8;;270:9967:75;;12810:59:8;;270:9967:75;;;;;;;;:::i;16314:19:8:-;;;-1:-1:-1;16314:19:8;;;;;;;;;:::i;:::-;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;6194:38:75;;;;;:::i;:::-;270:9967;;6194:38;;;;972:13;-1:-1:-1;;;972:13:75;;;270:9967;972:13;270:9967;;972:13;5833:34;;;;;;;;;;;;;:::i;:::-;;;;5702:38;;;;270:9967;;;;;;;;;;;;;2883:26:5;270:9967:75;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;2883:26:5;270:9967:75;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;-1:-1:-1;;;;;270:9967:75;;;;;1136:42;270:9967;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;1590:14:0;270:9967:75;1590:14:0;270:9967:75;;;;;;1590:14:0;270:9967:75;1590:14:0;;270:9967:75;;;;;;;1590:14:0;270:9967:75;1590:14:0;;270:9967:75;;;;;;;1590:14:0;270:9967:75;1590:14:0;;270:9967:75;;;;;;;1590:14:0;270:9967:75;1590:14:0;;270:9967:75;;;;;;;1590:14:0;270:9967:75;1590:14:0;;270:9967:75;;;;;;;1590:14:0;270:9967:75;1590:14:0;;270:9967:75;;;;;;;1590:14:0;270:9967:75;;;;;;;;;;;;;;;;;;;;;;;;;10190:38;270:9967;;;;;;:::i;:::-;10124:1;270:9967;;;;;;;880:2;-1:-1:-1;;;;;;;;;;;10136:44:75;;;:::i;:::-;270:9967;;497:42;-1:-1:-1;;;;;270:9967:75;10190:38;:::i;270:9967::-;;;;;;;;;;;;;8986:7;497:42;270:9967;;-1:-1:-1;;;8986:40:75;;-1:-1:-1;;;;;;;;;;;270:9967:75;8986:40;;270:9967;-1:-1:-1;;;;;;;;;;;270:9967:75;;;;-1:-1:-1;;;;;;;;;;;270:9967:75;;;;;;;;;8986:40;;270:9967;;-1:-1:-1;;;;;270:9967:75;8986:40;;;;;;;;;;;270:9967;;9037:32;270:9967;;9037:32;:::i;:::-;9096:15;;;;:::i;:::-;;:::i;:::-;270:9967;;;;;;9114:29;;;:::i;:::-;9171:15;;;;:::i;:::-;270:9967;;;;;;9245:15;9189:28;;9245:15;9189:28;;:::i;:::-;9245:15;:::i;:::-;270:9967;;;;;;9263:33;;;:::i;270:9967::-;-1:-1:-1;;;972:13:75;;;270:9967;972:13;270:9967;;972:13;8986:40;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;270:9967;;;;;;;;;;;;;;;;;;;;;:::i;:::-;880:2;270:9967;;-1:-1:-1;;880:2:75;270:9967;880:2;;;;3271:13;3286:19;880:2;3286:19;;;;270:9967;;3411:39;270:9967;;1136:42;270:9967;;;;880:2;497:42;270:9967;;;;1590:14:0;;;;;;;;;3411:39:75;;270:9967;3411:39;;;:::i;:::-;;;;;;;;;;;;;;3266:108;3466:13;;3481:23;880:2;3481:23;;;;270:9967;;;3506:3;3534:9;;;;:::i;:::-;;880:2;3350:1;880:2;;;;;;;;3534:41;3561:13;;;;;;:::i;:::-;;3534:41;;:::i;:::-;880:2;;-1:-1:-1;;;;;;;;;;;16153:24:1;;;;270:9967:75;;1590:14:0;;;;16153:24:1;;270:9967:75;16153:24:1;;270:9967:75;3350:1;270:9967;;;;16153:24:1;;;;-1:-1:-1;;;;;;;;;;;16153:24:1;;;;;;;;3506:3:75;3648:9;;3687:38;880:2;3696:13;3350:1;3648:9;3639:34;3648:9;;;;;:::i;3639:34::-;3696:13;;:::i;3687:38::-;880:2;3466:13;;16153:24:1;;;;;:::i;:::-;270:9967:75;;16153:24:1;;;;880:2:75;-1:-1:-1;;;523:5:65;;;270:9967:75;523:5:65;;270:9967:75;523:5:65;3411:39:75;;;;;;;;;;;;;:::i;:::-;;;;3307:3;3350:1;880:2;;;;;;;523:5:65;3339:3:75;523:5:65;;3339:3:75;523:5:65;;;;;;;;;;;;3355:8:75;523:5:65;;;;;;;3326:37:75;3350:1;3326:37;;;;;:::i;:::-;270:9967;880:2;3271:13;;523:5:65;-1:-1:-1;;;523:5:65;;;270:9967:75;523:5:65;;270:9967:75;523:5:65;270:9967:75;;;;;;;;;;;;;;;;;;3038:18:5;270:9967:75;;;;;;;3038:18:5;270:9967:75;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;270:9967:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3331:16:5;270:9967:75;;;;;;;3331:16:5;270:9967:75;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;270:9967:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3485:19:5;270:9967:75;;;;:::i;:::-;;;;;;;:::i;:::-;;;;3485:19:5;270:9967:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1136:42;270:9967;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;270:9967:75;;;1136:42;270:9967;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2563:16:5;270:9967:75;;;;;;;2563:16:5;270:9967:75;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;270:9967:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27501:38:3;;;1590:14:0;;;;27501:38:3;;4836:4:75;27501:38:3;;;270:9967:75;27501:38:3;;;;;;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;;6854:22:8;;:::i;:::-;27524:10:3;270:9967:75;;7009:9:8;270:9967:75;;;7009:9:8;270:9967:75;7505:10:8;270:9967:75;-1:-1:-1;;;270:9967:75;;;;;;;7505:10:8;270:9967:75;;;7505:10:8;270:9967:75;;:::i;:::-;;;1136:42;270:9967;;;;6854:12:8;270:9967:75;;7009:9:8;270:9967:75;;1590:14:0;15610:11:8;270:9967:75;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;270:9967:75;;;;;;27635:8:3;270:9967:75;;;;;15703:15:8;;270:9967:75;;;;;;;;27501:38:3;270:9967:75;;;;;;27501:38:3;15735:37:8;;;;;;;;;;:::i;:::-;270:9967:75;15725:48:8;;270:9967:75;;27501:38:3;270:9967:75;;15610:11:8;270:9967:75;;;15703:77:8;270:9967:75;;15702:78:8;15698:126;;270:9967:75;-1:-1:-1;;;;;270:9967:75;;;;;;27635:8:3;270:9967:75;;;;;;;;27501:38:3;270:9967:75;15889:37:8;;270:9967:75;;;;;;15889:37:8;;;27501:38:3;15889:37:8;;;;;:::i;:::-;270:9967:75;15879:48:8;;270:9967:75;;27501:38:3;270:9967:75;;;;;15943:15:8;7505:10;15943:15;;270:9967:75;15961:16:8;7009:9;15961:16;;270:9967:75;15943:34:8;;;;:::i;:::-;15938:460;;270:9967:75;;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;270:9967:75;;;16424:32:8;;270:9967:75;972:13;;;270:9967;;;;;;;27501:38:3;270:9967:75;972:13;270:9967;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;270:9967:75;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;270:9967:75;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;270:9967:75;;;16587:43:8;;270:9967:75;12810:59:8;;;270:9967:75;;;;920:14;270:9967;;;12656:92:8;;;;12810:59;;;270:9967:75;;;12810:59:8;270:9967:75;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;270:9967:75;16678:31:8;;;;:::i;:::-;16724:8;;270:9967:75;;;16724:29:8;;270:9967:75;16720:176:8;;;14785:4;;;:::i;:::-;270:9967:75;;;;27501:38:3;;;1590:14:0;;;;27501:38:3;;4836:4:75;27501:38:3;;;270:9967:75;27501:38:3;;;;;;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;;6854:22:8;;:::i;:::-;27524:10:3;270:9967:75;;7009:9:8;270:9967:75;;;7009:9:8;270:9967:75;7505:10:8;270:9967:75;-1:-1:-1;;;270:9967:75;;;;;;;7505:10:8;270:9967:75;;;7505:10:8;270:9967:75;;:::i;:::-;;;1136:42;270:9967;;;;6854:12:8;270:9967:75;;7009:9:8;270:9967:75;;1590:14:0;15610:11:8;270:9967:75;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;270:9967:75;;;;;;27635:8:3;270:9967:75;;;;;15703:15:8;;270:9967:75;;;;;;;;27501:38:3;270:9967:75;;;;;;27501:38:3;15735:37:8;;;;;;;;;;:::i;:::-;270:9967:75;15725:48:8;;270:9967:75;;27501:38:3;270:9967:75;;15610:11:8;270:9967:75;;;15703:77:8;270:9967:75;;15702:78:8;15698:126;;270:9967:75;-1:-1:-1;;;;;270:9967:75;;;;;;27635:8:3;270:9967:75;;;;;;;;27501:38:3;270:9967:75;15889:37:8;;270:9967:75;;;;;;15889:37:8;;;27501:38:3;15889:37:8;;;;;:::i;:::-;270:9967:75;15879:48:8;;270:9967:75;;27501:38:3;270:9967:75;;;;;15943:15:8;7505:10;15943:15;;270:9967:75;15961:16:8;7009:9;15961:16;;270:9967:75;15943:34:8;;;;:::i;:::-;15938:460;;270:9967:75;;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;270:9967:75;;;16424:32:8;;270:9967:75;972:13;;;270:9967;;;;;;;27501:38:3;270:9967:75;972:13;270:9967;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;270:9967:75;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;270:9967:75;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;270:9967:75;;;16587:43:8;;270:9967:75;12810:59:8;;;270:9967:75;;;;972:13;270:9967;;;12656:92:8;;;;12810:59;;;270:9967:75;;;12810:59:8;270:9967:75;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;270:9967:75;16678:31:8;;;;:::i;:::-;16724:8;;270:9967:75;;;16724:29:8;;270:9967:75;16720:176:8;;;14785:4;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;4956:23:75;;;;270:9967;;-1:-1:-1;;;4956:23:75;;4836:4;270:9967;4956:23;;270:9967;;;;;27501:38:3;270:9967:75;;-1:-1:-1;;;;;;;;;;;4956:23:75;;;;;;;;270:9967;-1:-1:-1;;27501:38:3;497:42:75;;270:9967;;-1:-1:-1;;;4989:52:75;;-1:-1:-1;;;;;270:9967:75;;;;4989:52;;270:9967;972:13;27501:38:3;972:13:75;;270:9967;;;27501:38:3;270:9967:75;4989:52;-1:-1:-1;;;;;;;;;;;4989:52:75;;;;;;;;270:9967;-1:-1:-1;27501:38:3;497:42:75;270:9967;;-1:-1:-1;;;5085:52:75;;-1:-1:-1;;;;;;;;;;;270:9967:75;5085:52;;270:9967;-1:-1:-1;;;;;;;;;;;27501:38:3;972:13:75;;270:9967;-1:-1:-1;;;;;;;;;;;27501:38:3;972:13:75;;270:9967;1136:42;972:13;;;;4786:6;972:13;;;270:9967;;972:13;;270:9967;;5085:52;;270:9967;;;;-1:-1:-1;;;;;270:9967:75;5085:52;;;;;;;5533:63;5085:52;27501:38:3;5085:52:75;;;;;270:9967;;5148:127;270:9967;;972:13;;:::i;5148:127::-;5395:128;5307:11;270:9967;5307:11;;5285:100;5307:11;;270:9967;972:13;;:::i;5395:128::-;5542:13;270:9967;972:13;;:::i;5085:52::-;;;;972:13;5085:52;972:13;5085:52;;;;;;;:::i;:::-;;;;4989;;;27501:38:3;4989:52:75;27501:38:3;4989:52:75;;;;;;;:::i;:::-;;;4956:23;;;;;:::i;:::-;270:9967;;4956:23;;;;16720:176:8;270:9967:75;16769:41:8;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;270:9967:75;;-1:-1:-1;;;16769:41:8;;-1:-1:-1;;;;;270:9967:75;;;;16769:41:8;;270:9967:75;12810:59:8;;;270:9967:75;;;;12810:59:8;;;270:9967:75;;;;;;12810:59:8;;;16769:41;12810:59;16724:29;972:13:75;16736:17:8;;;;16724:29;;;16587:43;;;;;:::i;:::-;270:9967:75;;16587:43:8;;;;16424:32;;;;;27501:38:3;16424:32:8;;27501:38:3;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;;;;:::i;:::-;16021:3;880:2:75;16021:3:8;880:2:75;;;;270:9967;;;;;;;-1:-1:-1;;;16314:19:8;;7505:10;270:9967:75;;;;16314:19:8;;270:9967:75;;;16314:19:8;270:9967:75;27501:38:3;270:9967:75;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;12810:59;16170:185;16314:19;27501:38:3;16314:19:8;;;;;15938:460;270:9967:75;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;270:9967:75;12810:59:8;;;-1:-1:-1;;;270:9967:75;12810:59:8;;;270:9967:75;;;;;;12810:59:8;;;270:9967:75;;;;;;;;16170:185:8;;880:2:75;;16170:185:8;;;;;;:::i;:::-;972:13:75;16103:21:8;12810:59;;;15938:460;;;;;;;16314:19;;;;;;;;;;;;;:::i;:::-;;;;270:9967:75;-1:-1:-1;;;523:5:65;;6854:12:8;270:9967:75;523:5:65;27501:38:3;270:9967:75;523:5:65;15698:126:8;13208:33;;:::i;:::-;;15698:126;;270:9967:75;-1:-1:-1;;;270:9967:75;;;;;27501:38:3;270:9967:75;;16724:29:8;920:14:75;16736:17:8;;;;16724:29;;;16587:43;;;;;:::i;:::-;270:9967:75;;16587:43:8;;;;16424:32;;;;;27501:38:3;16424:32:8;;27501:38:3;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;;;;:::i;:::-;16021:3;880:2:75;16021:3:8;880:2:75;;;;270:9967;;;;;;;-1:-1:-1;;;16314:19:8;;7505:10;270:9967:75;;;;16314:19:8;;270:9967:75;;;16314:19:8;270:9967:75;27501:38:3;270:9967:75;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;12810:59;16170:185;16314:19;27501:38:3;16314:19:8;;;;;270:9967:75;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;270:9967:75;12810:59:8;;;-1:-1:-1;;;270:9967:75;12810:59:8;;;270:9967:75;;;;;;12810:59:8;;;270:9967:75;;;;;;;;16170:185:8;;880:2:75;;16170:185:8;;;;;;:::i;:::-;920:14:75;16103:21:8;12810:59;;;15938:460;;;;;;;16314:19;;;;;;;;;;;;;:::i;:::-;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;270:9967:75;;;;;;;;;;;;;;;;;27501:38:3;;;1590:14:0;;;;27501:38:3;;3906:4:75;27501:38:3;;;270:9967:75;27501:38:3;;;;;;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;;6854:22:8;;:::i;:::-;27524:10:3;270:9967:75;;7009:9:8;270:9967:75;;;7009:9:8;270:9967:75;7505:10:8;270:9967:75;-1:-1:-1;;;270:9967:75;;;;;;;7505:10:8;270:9967:75;;;7505:10:8;270:9967:75;;:::i;:::-;;;1136:42;270:9967;;;;6854:12:8;270:9967:75;;7009:9:8;270:9967:75;;1590:14:0;15610:11:8;270:9967:75;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;270:9967:75;;;;;;27635:8:3;270:9967:75;;;;;15703:15:8;;270:9967:75;;;;;;;;27501:38:3;270:9967:75;;;;;;27501:38:3;15735:37:8;;;;;;;;;;:::i;:::-;270:9967:75;15725:48:8;;270:9967:75;;27501:38:3;270:9967:75;;15610:11:8;270:9967:75;;;15703:77:8;270:9967:75;;15702:78:8;15698:126;;270:9967:75;-1:-1:-1;;;;;270:9967:75;;;;;;27635:8:3;270:9967:75;;;;;;;;27501:38:3;270:9967:75;15889:37:8;;270:9967:75;;;;;;15889:37:8;;;27501:38:3;15889:37:8;;;;;:::i;:::-;270:9967:75;15879:48:8;;270:9967:75;;27501:38:3;270:9967:75;;;;;15943:15:8;7505:10;15943:15;;270:9967:75;15961:16:8;7009:9;15961:16;;270:9967:75;15943:34:8;;;;:::i;:::-;15938:460;;270:9967:75;;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;270:9967:75;;;16424:32:8;;270:9967:75;972:13;;;270:9967;;;;;;;27501:38:3;270:9967:75;972:13;270:9967;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;270:9967:75;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;270:9967:75;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;270:9967:75;;;16587:43:8;;270:9967:75;12810:59:8;;;270:9967:75;;;;920:14;270:9967;;;12656:92:8;;;;12810:59;;;270:9967:75;;;12810:59:8;270:9967:75;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;270:9967:75;16678:31:8;;;;:::i;:::-;16724:8;;270:9967:75;;;16724:29:8;;270:9967:75;16720:176:8;;;14785:4;;;:::i;:::-;270:9967:75;;;;27501:38:3;;;1590:14:0;;;;27501:38:3;;3906:4:75;27501:38:3;;;270:9967:75;27501:38:3;;;;;;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;;6854:22:8;;:::i;:::-;27524:10:3;270:9967:75;;7009:9:8;270:9967:75;;;7009:9:8;270:9967:75;7505:10:8;270:9967:75;-1:-1:-1;;;270:9967:75;;;;;;;7505:10:8;270:9967:75;;;7505:10:8;270:9967:75;;:::i;:::-;;;1136:42;270:9967;;;;6854:12:8;270:9967:75;;7009:9:8;270:9967:75;;1590:14:0;15610:11:8;270:9967:75;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;270:9967:75;;;;;;27635:8:3;270:9967:75;;;;;15703:15:8;;270:9967:75;;;;;;;;27501:38:3;270:9967:75;;;;;;27501:38:3;15735:37:8;;;;;;;;;;:::i;:::-;270:9967:75;15725:48:8;;270:9967:75;;27501:38:3;270:9967:75;;15610:11:8;270:9967:75;;;15703:77:8;270:9967:75;;15702:78:8;15698:126;;270:9967:75;-1:-1:-1;;;;;270:9967:75;;;;;;27635:8:3;270:9967:75;;;;;;;;27501:38:3;270:9967:75;15889:37:8;;270:9967:75;;;;;;15889:37:8;;;27501:38:3;15889:37:8;;;;;:::i;:::-;270:9967:75;15879:48:8;;270:9967:75;;27501:38:3;270:9967:75;;;;;15943:15:8;7505:10;15943:15;;270:9967:75;15961:16:8;7009:9;15961:16;;270:9967:75;15943:34:8;;;;:::i;:::-;15938:460;;270:9967:75;;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;270:9967:75;;;16424:32:8;;270:9967:75;972:13;;;270:9967;;;;;;;27501:38:3;270:9967:75;972:13;270:9967;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;270:9967:75;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;270:9967:75;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;270:9967:75;;;16587:43:8;;270:9967:75;12810:59:8;;;270:9967:75;;;;972:13;270:9967;;;12656:92:8;;;;12810:59;;;270:9967:75;;;12810:59:8;270:9967:75;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;270:9967:75;16678:31:8;;;;:::i;:::-;16724:8;;270:9967:75;;;16724:29:8;;270:9967:75;16720:176:8;;;14785:4;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;4026:23:75;;;;270:9967;;-1:-1:-1;;;4026:23:75;;3906:4;270:9967;4026:23;;270:9967;;;;;27501:38:3;270:9967:75;;-1:-1:-1;;;;;;;;;;;4026:23:75;;;;;;;;270:9967;-1:-1:-1;;27501:38:3;497:42:75;;270:9967;;-1:-1:-1;;;4059:45:75;;-1:-1:-1;;;;;270:9967:75;;;;4059:45;;270:9967;3862:5;27501:38:3;972:13:75;;270:9967;;;27501:38:3;270:9967:75;4059:45;-1:-1:-1;;;;;;;;;;;4059:45:75;;;;;;;;270:9967;-1:-1:-1;27501:38:3;497:42:75;270:9967;;-1:-1:-1;;;4148:53:75;;-1:-1:-1;;;;;;;;;;;270:9967:75;4148:53;;270:9967;-1:-1:-1;;;;;;;;;;;27501:38:3;972:13:75;;270:9967;-1:-1:-1;;;;;;;;;;;27501:38:3;972:13:75;;270:9967;972:13;;;;;;3862:5;972:13;;;270:9967;;972:13;;270:9967;;4148:53;;270:9967;;;;-1:-1:-1;;;;;270:9967:75;4148:53;;;;;;;4597:63;4148:53;27501:38:3;4148:53:75;;;;;270:9967;4212:127;270:9967;;972:13;;:::i;4059:45::-;;;27501:38:3;4059:45:75;27501:38:3;4059:45:75;;;;;;;:::i;:::-;;;4026:23;;;;;:::i;:::-;270:9967;;4026:23;;;;16724:29:8;972:13:75;16736:17:8;;;;16724:29;;;16587:43;;;;;:::i;:::-;270:9967:75;;16587:43:8;;;;16424:32;;;;;27501:38:3;16424:32:8;;27501:38:3;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;;;;:::i;:::-;16021:3;880:2:75;16021:3:8;880:2:75;;;;270:9967;;;;;;;-1:-1:-1;;;16314:19:8;;7505:10;270:9967:75;;;;16314:19:8;;270:9967:75;;;16314:19:8;270:9967:75;27501:38:3;270:9967:75;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;12810:59;16170:185;16314:19;27501:38:3;16314:19:8;;;;;270:9967:75;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;270:9967:75;12810:59:8;;;-1:-1:-1;;;270:9967:75;12810:59:8;;;270:9967:75;;;;;;12810:59:8;;;270:9967:75;;;;;;;;16170:185:8;;880:2:75;;16170:185:8;;;;;;:::i;:::-;972:13:75;16103:21:8;12810:59;;;15938:460;;;;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;16724:29;920:14:75;16736:17:8;;;;16724:29;;;16587:43;;;;;:::i;:::-;270:9967:75;;16587:43:8;;;;16424:32;;;;;27501:38:3;16424:32:8;;27501:38:3;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;;;;:::i;:::-;16021:3;880:2:75;16021:3:8;880:2:75;;;;270:9967;;;;;;;-1:-1:-1;;;16314:19:8;;7505:10;270:9967:75;;;;16314:19:8;;270:9967:75;;;16314:19:8;270:9967:75;27501:38:3;270:9967:75;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;12810:59;16170:185;16314:19;27501:38:3;16314:19:8;;;;;270:9967:75;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;270:9967:75;12810:59:8;;;-1:-1:-1;;;270:9967:75;12810:59:8;;;270:9967:75;;;;;;12810:59:8;;;270:9967:75;;;;;;;;16170:185:8;;880:2:75;;16170:185:8;;;;;;:::i;:::-;920:14:75;16103:21:8;12810:59;;;15938:460;;;;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;270:9967:75;;;;;;;;;;;;;;;;;;;;:::i;:::-;880:2;270:9967;;-1:-1:-1;;880:2:75;;;270:9967;880:2;;;;7771:13;7786:19;;880:2;7786:19;;;;270:9967;;;;;880:2;27501:38:3;;1590:14:0;;;;27501:38:3;;8077:4:75;27501:38:3;;;270:9967:75;27501:38:3;;;;;;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;;6854:22:8;;:::i;:::-;27524:10:3;270:9967:75;;7009:9:8;270:9967:75;;;7009:9:8;270:9967:75;7505:10:8;270:9967:75;-1:-1:-1;;;270:9967:75;;;;;;;880:2;270:9967;;;7505:10:8;270:9967:75;;:::i;:::-;;;1136:42;270:9967;;;;6854:12:8;270:9967:75;;7009:9:8;270:9967:75;;1590:14:0;15610:11:8;270:9967:75;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;270:9967:75;;;;;;27635:8:3;270:9967:75;;;;;15703:15:8;;270:9967:75;;;;;;;;880:2;270:9967;;;;;;880:2;15735:37:8;;;;;;;;;;:::i;:::-;270:9967:75;15725:48:8;;270:9967:75;;880:2;270:9967;;15610:11:8;270:9967:75;;;15703:77:8;270:9967:75;;15702:78:8;15698:126;;7766:283:75;-1:-1:-1;;;;;270:9967:75;;;;;;27635:8:3;270:9967:75;;;;;;;;880:2;270:9967;15889:37:8;;270:9967:75;;;;;;15889:37:8;;;880:2:75;15889:37:8;;;;;:::i;:::-;270:9967:75;15879:48:8;;270:9967:75;;880:2;270:9967;;;;;15943:15:8;880:2:75;15943:15:8;;270:9967:75;15961:16:8;972:13:75;15961:16:8;;270:9967:75;15943:34:8;;;;:::i;:::-;15938:460;;7766:283:75;270:9967;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;270:9967:75;;;16424:32:8;;270:9967:75;972:13;;;270:9967;;;;;;;880:2;270:9967;972:13;270:9967;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;7766:283:75;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;270:9967:75;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;270:9967:75;;;16587:43:8;;270:9967:75;12810:59:8;;;270:9967:75;;;;920:14;270:9967;;;12656:92:8;;;;12810:59;;;270:9967:75;;;12810:59:8;270:9967:75;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;7766:283:75;16678:31:8;;;;:::i;:::-;16724:8;;270:9967:75;;;16724:29:8;;7766:283:75;16720:176:8;;;14785:4;;;;;;:::i;:::-;270:9967:75;;;;880:2;27501:38:3;;1590:14:0;;;;27501:38:3;;8077:4:75;27501:38:3;;;270:9967:75;27501:38:3;;;;;;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;;6854:22:8;;:::i;:::-;27524:10:3;270:9967:75;;7009:9:8;270:9967:75;;;7009:9:8;270:9967:75;7505:10:8;270:9967:75;-1:-1:-1;;;270:9967:75;;;;;;;880:2;270:9967;;;7505:10:8;270:9967:75;;:::i;:::-;;;1136:42;270:9967;;;;6854:12:8;270:9967:75;;7009:9:8;270:9967:75;;1590:14:0;15610:11:8;270:9967:75;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;270:9967:75;;;;;;27635:8:3;270:9967:75;;;;;15703:15:8;;270:9967:75;;;;;;;;880:2;270:9967;;;;;;880:2;15735:37:8;;;;;;;;;;:::i;:::-;270:9967:75;15725:48:8;;270:9967:75;;880:2;270:9967;;15610:11:8;270:9967:75;;;15703:77:8;270:9967:75;;15702:78:8;15698:126;;7766:283:75;-1:-1:-1;;;;;270:9967:75;;;;;;27635:8:3;270:9967:75;;;;;;;;880:2;270:9967;15889:37:8;;270:9967:75;;;;;;15889:37:8;;;880:2:75;15889:37:8;;;;;:::i;:::-;270:9967:75;15879:48:8;;270:9967:75;;880:2;270:9967;;;;;15943:15:8;880:2:75;15943:15:8;;270:9967:75;15961:16:8;972:13:75;15961:16:8;;270:9967:75;15943:34:8;;;;:::i;:::-;15938:460;;7766:283:75;270:9967;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;270:9967:75;;;16424:32:8;;270:9967:75;972:13;;;270:9967;;;;;;;880:2;270:9967;972:13;270:9967;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;7766:283:75;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;270:9967:75;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;270:9967:75;;;16587:43:8;;270:9967:75;12810:59:8;;;270:9967:75;;;;972:13;270:9967;;;12656:92:8;;;;12810:59;;;270:9967:75;;;12810:59:8;270:9967:75;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;7766:283:75;16678:31:8;;;;:::i;:::-;16724:8;;270:9967:75;;;16724:29:8;;7766:283:75;16720:176:8;;;14785:4;;;;;;:::i;:::-;270:9967:75;;;;;;:::i;:::-;880:2;270:9967;;;;;;;;;8251:13;;;8266:19;880:2;8266:19;;;;8536:13;;880:2;8551:23;880:2;8551:23;;;;270:9967;;;8576:3;8604:9;;;;:::i;:::-;;270:9967;880:2;;;;;;;;;8632:13;:30;8750:53;8632:13;;;;;;:::i;:30::-;8705:21;880:2;8686:9;;;;:::i;8705:21::-;270:9967;8783:13;8750:9;;;;;:::i;:53::-;880:2;;-1:-1:-1;;;;;;;;;;;2943:24:1;;;;270:9967:75;;1590:14:0;;;;2943:24:1;;270:9967:75;2943:24:1;;270:9967:75;880:2;27501:38:3;270:9967:75;;;2943:24:1;;27501:38:3;2943:24:1;-1:-1:-1;;;;;;;;;;;2943:24:1;;;;;;;;8576:3:75;;;880:2;;8536:13;;2943:24:1;;;;;:::i;:::-;270:9967:75;;2943:24:1;;;;8287:3:75;270:9967;;-1:-1:-1;;;8319:13:75;;270:9967;880:2;270:9967;;;8319:13;-1:-1:-1;;;;;;;;;;;8319:13:75;;;;;;;;;;;8287:3;-1:-1:-1;880:2:75;497:42;;270:9967;;-1:-1:-1;;;8347:52:75;;-1:-1:-1;;;;;270:9967:75;;;;8347:52;;270:9967;972:13;27501:38:3;972:13:75;;270:9967;;;27501:38:3;270:9967:75;8347:52;-1:-1:-1;;;;;;;;;;;8347:52:75;;;;;;;;8287:3;-1:-1:-1;880:2:75;497:42;270:9967;;8426:47;;;;-1:-1:-1;;;;;270:9967:75;8462:10;;;;:::i;:::-;270:9967;;;1590:14:0;;;;;;;;;8426:47:75;;;270:9967;8426:47;;;:::i;:::-;;;;;;;;;;;;;;8287:3;8414:59;;;;;:::i;:::-;;;;;;:::i;:::-;;270:9967;;1590:14:0;;;;8487:23:75;;270:9967;8487:23;;270:9967;880:2;8487:23;27501:38:3;8487:23:75;;-1:-1:-1;;;;;;;;;;;8487:23:75;;;;;;;880:2;8487:23;;;8287:3;;880:2;8251:13;;8487:23;;;880:2;8487:23;;;;;;;;;:::i;:::-;;;;;8426:47;;;;;;;;;;;;;;:::i;:::-;;;;8347:52;;;880:2;8347:52;;;;;;;;;:::i;:::-;;;8319:13;;;;880:2;8319:13;;;;;;;;;1590:14:0;8319:13:75;;;:::i;:::-;;;1590:14:0;;;;;8319:13:75;;;;;;;-1:-1:-1;8319:13:75;;270:9967;880:2;270:9967;;;:::i;:::-;;;;;;;;;;16720:176:8;270:9967:75;;;;16769:41:8;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;270:9967:75;;-1:-1:-1;;;16769:41:8;;-1:-1:-1;;;;;270:9967:75;;;;16769:41:8;;270:9967:75;12810:59:8;;;270:9967:75;;;;12810:59:8;;;270:9967:75;;;;;;12810:59:8;;;16769:41;12810:59;16724:29;972:13:75;16736:17:8;;;;16724:29;;;16587:43;;;;;:::i;:::-;270:9967:75;;16587:43:8;;;;16424:32;;;;;880:2:75;16424:32:8;;880:2:75;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;;;;:::i;:::-;16021:3;880:2:75;16021:3:8;880:2:75;;;;270:9967;;;;;;;-1:-1:-1;;;16314:19:8;;880:2:75;270:9967;;;;16314:19:8;;270:9967:75;;;16314:19:8;270:9967:75;27501:38:3;270:9967:75;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;12810:59;16170:185;16314:19;880:2:75;16314:19:8;;;;;15938:460;270:9967:75;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;270:9967:75;12810:59:8;;;-1:-1:-1;;;270:9967:75;12810:59:8;;;270:9967:75;;;;;;12810:59:8;;;270:9967:75;;;;;;;;16170:185:8;;880:2:75;;16170:185:8;;;;;;:::i;:::-;972:13:75;16103:21:8;12810:59;;;15938:460;;;;;;;16314:19;;;-1:-1:-1;16314:19:8;;;;;;;;;:::i;:::-;;;;;270:9967:75;;1590:14:0;270:9967:75;;1590:14:0;;;;270:9967:75;-1:-1:-1;;;523:5:65;;6854:12:8;270:9967:75;523:5:65;27501:38:3;270:9967:75;523:5:65;15698:126:8;13208:33;;:::i;:::-;;15698:126;;16724:29;920:14:75;16736:17:8;;;;16724:29;;;16587:43;;;;;:::i;:::-;270:9967:75;;16587:43:8;;;;16424:32;;;;;880:2:75;16424:32:8;;880:2:75;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;;;;:::i;:::-;16021:3;880:2:75;16021:3:8;880:2:75;;;;270:9967;;;;;;;-1:-1:-1;;;16314:19:8;;880:2:75;270:9967;;;;16314:19:8;;270:9967:75;;;16314:19:8;270:9967:75;27501:38:3;270:9967:75;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;12810:59;16170:185;16314:19;880:2:75;16314:19:8;;;;;270:9967:75;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;270:9967:75;12810:59:8;;;-1:-1:-1;;;270:9967:75;12810:59:8;;;270:9967:75;;;;;;12810:59:8;;;270:9967:75;;;;;;;;16170:185:8;;880:2:75;;16170:185:8;;;;;;:::i;:::-;920:14:75;16103:21:8;12810:59;;;15938:460;;;;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;7807:3:75;972:13;;880:2;;;;;;;;;523:5:65;7885:3:75;523:5:65;;7885:3:75;523:5:65;;;;;;;;;;;;7901:7:75;523:5:65;;;;;;;880:2:75;7872:36;;;;;:::i;:::-;270:9967;880:2;7771:13;;523:5:65;270:9967:75;;;-1:-1:-1;523:5:65;;270:9967:75;523:5:65;;-1:-1:-1;523:5:65;972:13:75;-1:-1:-1;;;972:13:75;;;270:9967;972:13;;270:9967;972:13;270:9967;;;;;;;-1:-1:-1;;270:9967:75;;;;;;-1:-1:-1;;;1084:20:75;;1590:14:0;270:9967:75;1084:20;;1590:14:0;;;;;270:9967:75;-1:-1:-1;;;270:9967:75;;;1590:14:0;-1:-1:-1;270:9967:75;1084:20;270:9967;-1:-1:-1;;;;;;;;;;;1084:20:75;;;;;;;1590:14:0;1084:20:75;1590:14:0;1084:20:75;270:9967;1084:20;;;270:9967;;;;1590:14:0;;;;;;;1064:52:75;;270:9967;;1064:52;;1590:14:0;270:9967:75;1590:14:0;;;;:::i;:::-;1046:8:75;1590:14:0;;;270:9967:75;1064:52;;270:9967;-1:-1:-1;;;;;;;;;;;1064:52:75;;;;;;;;270:9967;;;;1136:42;;;;;;;;-1:-1:-1;;;;;1136:42:75;;;;;270:9967;1136:42;;;;;;572;270:9967;;497:42;1590:14:0;497:42:75;;270:9967;1136:42;;;270:9967;1136:42;;;;;1590:14:0;497:42:75;;-1:-1:-1;;;;;;497:42:75;-1:-1:-1;;;;;270:9967:75;;;;497:42;;;;;-1:-1:-1;;;;;;;;;;;1189:51:75;;;;270:9967;;1590:14:0;;;;1189:51:75;;270:9967;1189:51;;270:9967;;1590:14:0;497:42:75;;;;270:9967;497:42;;270:9967;-1:-1:-1;;;1084:20:75;270:9967;;497:42;270:9967;1189:51;;;;-1:-1:-1;;;;;;;;;;;1189:51:75;;;;;;;;270:9967;1250:22;-1:-1:-1;;;;;;;;;;;1250:22:75;;;;270:9967;;;1590:14:0;;;1250:22:75;;423:42;270:9967;1250:22;;270:9967;;1590:14:0;423:42:75;;;270:9967;;423:42;;270:9967;-1:-1:-1;;;1084:20:75;270:9967;;423:42;1250:22;;1189:51;1250:22;;-1:-1:-1;;;;;;;;;;;1250:22:75;;;;;;;;270:9967;1282:26;;-1:-1:-1;;;;;;;;;;;1282:26:75;;;;270:9967;;;1590:14:0;;;1282:26:75;;497:42;270:9967;1282:26;;270:9967;;1590:14:0;423:42:75;;;;270:9967;423:42;;270:9967;-1:-1:-1;;;1084:20:75;270:9967;;423:42;1282:26;;1189:51;1282:26;;-1:-1:-1;;;;;;;;;;;1282:26:75;;;;;;;;270:9967;1318:28;;-1:-1:-1;;;;;;;;;;;1318:28:75;;;;270:9967;;;1590:14:0;;;1318:28:75;;572:42;270:9967;1318:28;;270:9967;;1590:14:0;423:42:75;;;1590:14:0;270:9967:75;423:42;;270:9967;-1:-1:-1;;;1084:20:75;270:9967;;423:42;1318:28;;1189:51;1318:28;;-1:-1:-1;;;;;;;;;;;1318:28:75;;;;;;;;270:9967;1356:22;;-1:-1:-1;;;;;;;;;;;1356:22:75;;;;270:9967;;;1590:14:0;;;1356:22:75;;-1:-1:-1;;;;;;;;;;;270:9967:75;1356:22;;270:9967;;1590:14:0;644:42:75;;;270:9967;;644:42;;270:9967;-1:-1:-1;;;1084:20:75;270:9967;;644:42;1356:22;;1189:51;1356:22;;-1:-1:-1;;;;;;;;;;;1356:22:75;;;;;;;;270:9967;1388:20;;-1:-1:-1;;;;;;;;;;;1388:20:75;;;;270:9967;;;1590:14:0;;;1388:20:75;;-1:-1:-1;;;;;;;;;;;270:9967:75;1388:20;;270:9967;;1590:14:0;715:42:75;;;;270:9967;715:42;;270:9967;-1:-1:-1;;;1084:20:75;270:9967;;715:42;1388:20;;1189:51;1388:20;;-1:-1:-1;;;;;;;;;;;1388:20:75;;;;;;;;270:9967;1418:40;;-1:-1:-1;;;;;;;;;;;1418:40:75;;;;270:9967;;;1590:14:0;;;1418:40:75;;796:42;270:9967;1418:40;;270:9967;;1590:14:0;796:42:75;;;;270:9967;796:42;;270:9967;-1:-1:-1;;;1084:20:75;270:9967;;796:42;1418:40;;1189:51;1418:40;;-1:-1:-1;;;;;;;;;;;1418:40:75;;;;;;;;270:9967;;1388:20;;;;;:::i;:::-;270:9967;;1388:20;;;;1356:22;;;;;:::i;:::-;270:9967;;1356:22;;;;1318:28;;;;;:::i;:::-;270:9967;;1318:28;;;;1282:26;;;;;:::i;:::-;270:9967;;1282:26;;;;1250:22;;;;;:::i;:::-;270:9967;;1250:22;;;;1189:51;;;;270:9967;1189:51;;:::i;:::-;270:9967;1189:51;;;;270:9967;;1590:14:0;270:9967:75;1590:14:0;;;;;1136:42:75;270:9967;;;;;;;;1590:14:0;270:9967:75;;1064:52;1590:14:0;1064:52:75;;1590:14:0;1064:52:75;;;;;;1590:14:0;1064:52:75;;;:::i;:::-;;;1590:14:0;;;;;1064:52:75;;;;;-1:-1:-1;1064:52:75;;1084:20;;;;;;270:9967;1084:20;;;;;;:::i;:::-;;;;270:9967;;;;;;-1:-1:-1;;270:9967:75;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;270:9967:75;;;;;;;:::o;:::-;972:13;270:9967;;;;;-1:-1:-1;;;;;270:9967:75;;;;;;;:::o;:::-;;;880:2;;270:9967;;;;;;;;-1:-1:-1;;;;;270:9967:75;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;270:9967:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;270:9967:75;;;;;;;;-1:-1:-1;;270:9967:75;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;1136:42;270:9967;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;270:9967:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;7505:10:8;270:9967:75;;;;;;7505:10:8;-1:-1:-1;270:9967:75;;-1:-1:-1;270:9967:75;;;-1:-1:-1;270:9967:75;:::o;:::-;;;;;;;;;;;;;534:59:65;270:9967:75;;;;;;534:59:65;-1:-1:-1;270:9967:75;;-1:-1:-1;270:9967:75;;;-1:-1:-1;270:9967:75;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;270:9967:75;;;;;;;;-1:-1:-1;270:9967:75;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;270:9967:75;;;;;;;;;:::o;523:5:65:-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;270:9967:75;;;523:5:65;;;;;;;;8534:180;270:9967:75;;523:5:65;;;;;;;;;;;;;;;8690:17;8655:52;8690:17;;270:9967:75;8655:52:65;;:::i;:::-;8534:180;:::o;1590:14:0:-;-1:-1:-1;;;;;1590:14:0;;;;270:9967:75;;-1:-1:-1;;270:9967:75;1590:14:0;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;1590:14:0;;;;;;;;;;;;;;;;;;;:::i;:::-;270:9967:75;;;;;;;:::i;:::-;1590:14:0;;;;;;;;;;;;-1:-1:-1;1590:14:0;;;;;;;;270:9967:75;;;;;1590:14:0;:::o;:::-;;;;;;;;;;;:::o;497:42:75:-;6854:12:8;497:42:75;;-1:-1:-1;;;;;;497:42:75;-1:-1:-1;;;;;;;;;;;497:42:75;;;:::o;:::-;6854:12:8;497:42:75;;-1:-1:-1;;;;;;497:42:75;-1:-1:-1;;;;;;;;;;;497:42:75;;;:::o;972:13::-;;;;;;;;;;270:9967;;;;;;;972:13;:::o;:::-;;;;;;;;;;;270:9967;;;;:::i;:::-;972:13;;;1590:14:0;;;972:13:75;;;1590:14:0;972:13:75;;;:::o;:::-;;;;;;;;;;;270:9967;;;;;;;:::i;:::-;1590:14:0;;972:13:75;;;;;1590:14:0;972:13:75;;;;;;:::i;:::-;270:9967;972:13;;;;:::o;:::-;-1:-1:-1;;;;;;;;;;;270:9967:75;;-1:-1:-1;;;;;;;;;;;972:13:75;;;270:9967;-1:-1:-1;;;;;;;;;;;972:13:75;;;270:9967;972:13;;;;;;;;;;;;;;;;;;;;270:9967;972:13::o;:::-;270:9967;;;-1:-1:-1;972:13:75;;;;;-1:-1:-1;972:13:75;;270:9967;;;-1:-1:-1;;;;;270:9967:75;;;972:13;;;270:9967;;;972:13;;;270:9967;-1:-1:-1;972:13:75;;;;;;;270:9967;;;;972:13;;;:::o;:::-;270:9967;;;;;;;:::i;:::-;972:13;;;-1:-1:-1;;;270:9967:75;972:13;;;;;;;;:::o;:::-;270:9967;;;;1590:14:0;270:9967:75;;:::i;:::-;972:13;;;-1:-1:-1;;;270:9967:75;972:13;;1590:14:0;972:13:75;;;;;:::o;:::-;270:9967;;;;;;;:::i;:::-;972:13;;;-1:-1:-1;;;270:9967:75;972:13;;;;;;;;:::o;:::-;270:9967;;;;1590:14:0;270:9967:75;;:::i;:::-;972:13;;;-1:-1:-1;;;270:9967:75;972:13;;1590:14:0;972:13:75;;;;;:::o;880:2::-;;;;;;;;;;:::o;:::-;270:9967;;880:2;;;;;;:::o;:::-;270:9967;;9122:20;880:2;;;;;;;:::o;:::-;270:9967;;9197:19;880:2;;;;;;;:::o;:::-;270:9967;;880:2;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;880:2:75;;;;;;;;;;;;;;;;;;:::i;:::-;270:9967;;;;;;;:::i;:::-;880:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;270:9967;880:2;;;;;:::i;:::-;;;;;;;;;;;270:9967;880:2;;;270:9967;796:42;270:9967;;;;-1:-1:-1;;;;;;;;;;;880:2:75;;;270:9967;-1:-1:-1;;;;;;;;;;;880:2:75;;;270:9967;880:2;;;;;270:9967;;;;;;;;880:2;;;;;;;;;;;;:::o;:::-;;;270:9967;;880:2;;;;;270:9967;;;;880:2;;;;;270:9967;880:2;;;;;;;270:9967;;;1136:42;270:9967;;;;;880:2;;;270:9967;1136:42;270:9967;;;;;880:2;;;270:9967;880:2;;;;;270:9967;;;;;;;;880:2;;;;;;;;;;;;:::o;:::-;;;270:9967;;880:2;;;;;270:9967;;;;880:2;;;;;;;;;;;;;;:::o;270:9967::-;;;;;;;;;;;-1:-1:-1;;;;;270:9967:75;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;270:9967:75;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;1590:14:0;;270:9967:75;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;270:9967:75;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;270:9967:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;1243:204:1;1302:7;270:9967:75;;;;;;;1325:14:1;:::o;1298:143::-;270:9967:75;;;1590:14:0;;;1377:39:1;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;270:9967:75;192:59:1;;;;;;270:9967:75;192:59:1;1377:39;;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;;;;;270:9967:75;1377:39:1;;;1298:143;1377:53;;;1370:60;:::o;1377:39::-;;;192:59;1377:39;;192:59;1377:39;;;;;;1590:14:0;1377:39:1;;;:::i;:::-;;;1590:14:0;;;;;1377:39:1;;;;;;-1:-1:-1;1377:39:1;;935:818:65;-1:-1:-1;;;;;270:9967:75;;;935:818:65;;1126:10;935:818;1126:10;:::i;:::-;270:9967:75;;;1590:14:0;;;;1102:59:65;;;;;270:9967:75;1134:1:65;270:9967:75;;;;1134:1:65;270:9967:75;;;;1134:1:65;1102:59;;;;;;;;;;;1075:134;1102:59;1134:1;1102:59;;;935:818;1075:134;;:::i;:::-;1074:135;1224:13;1134:1;1259:3;270:9967:75;;1239:18:65;;;;;1322:10;;;;:::i;:::-;270:9967:75;;;;1590:14:0;;;;1304:29:65;;1102:59;1304:29;;270:9967:75;1134:1:65;1304:29;;;;;;;;;;;;1708:14;1304:29;1442:1;1304:29;1134:1;1304:29;;;1259:3;270:9967:75;1396:17:65;270:9967:75;;;;;;1354:9:65;;;:::i;:::-;270:9967:75;;1396:17:65;:::i;:::-;1477;270:9967:75;;;;;;1435:9:65;;;:::i;1477:17::-;1588:14;1554:10;;;;;:::i;:::-;270:9967:75;;;;;;1566:9:65;;;:::i;:::-;270:9967:75;;;;;;;1577:9:65;;;:::i;:::-;270:9967:75;;1588:14:65;;;:::i;:::-;1674:10;;;;:::i;:::-;270:9967:75;;;;;;;1686:9:65;;;:::i;:::-;270:9967:75;;;1697:9:65;270:9967:75;;;;;1697:9:65;;:::i;:::-;270:9967:75;;1708:14:65;;;:::i;:::-;880:2:75;1224:13:65;;1304:29;;;;;;1134:1;1304:29;;;;;;:::i;:::-;;;;1239:18;;;;;;;935:818::o;1102:59::-;;;;;;1134:1;1102:59;;;;;;:::i;:::-;;;;270:9967:75;;;;;;;:::i;:::-;;-1:-1:-1;270:9967:75;;-1:-1:-1;270:9967:75;;;;;;;;;;;:::i;:::-;-1:-1:-1;270:9967:75;;-1:-1:-1;270:9967:75;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;13228:134:1:-;-1:-1:-1;;;;;;;;;;;13326:29:1;;;;270:9967:75;;;;;;1590:14:0;;;;;;;;13326:29:1;;;;;270:9967:75;;;;;;;;;;;;;;;;:::i;:::-;13326:29:1;;-1:-1:-1;;;;;;;;;;;13326:29:1;;;;;;;;13228:134;:::o;13326:29::-;270:9967:75;13326:29:1;;;:::i;:::-;13228:134::o;:::-;;-1:-1:-1;;;;;;;;;;;13326:29:1;;;;;270:9967:75;13326:29:1;270:9967:75;;1590:14:0;;;;;;;;13326:29:1;;;;;;:::i;426:547:59:-;688:35;426:547;637:17;619:35;270:9967:75;;637:17:59;;;270:9967:75;619:35:59;;:::i;:::-;270:9967:75;;706:17:59;;270:9967:75;688:35:59;;:::i;:::-;769:30;;;;;;801:8;;270:9967:75;801:8:59;:::o;765:201::-;867:29;;;;905:1;898:8;:::o;863:103::-;-1:-1:-1;;6036:17:75;957:9:59:o;13112:110:1:-;-1:-1:-1;;;;;;;;;;;13191:24:1;;;;270:9967:75;;1590:14:0;;;;13191:24:1;;;;;270:9967:75;;;;;;;13191:24:1;;;-1:-1:-1;;;;;;;;;;;13191:24:1;;;;;;;;13112:110;:::o;2270:::-;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;270:9967:75;;1590:14:0;;;;2349:24:1;;;;;270:9967:75;9067:1;270:9967;;;;-1:-1:-1;2349:24:1;;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;;;;;2270:110;:::o;:::-;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;270:9967:75;;1590:14:0;;;;2349:24:1;;;;;270:9967:75;9122:20;270:9967;;;;-1:-1:-1;2349:24:1;;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;;;;;2270:110;:::o;:::-;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;270:9967:75;;1590:14:0;;;;2349:24:1;;;;;270:9967:75;9197:19;270:9967;;;;-1:-1:-1;2349:24:1;;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;;;;;2270:110;:::o;:::-;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;270:9967:75;;1590:14:0;;;;2349:24:1;;;;;270:9967:75;;;;;-1:-1:-1;2349:24:1;;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;;;;;2270:110;:::o;8720:323:65:-;270:9967:75;8906:3:65;270:9967:75;;8881:23:65;;;;;8929:15;;;;;:::i;:::-;270:9967:75;;;;;;1175:24:65;8929:29;8925:79;;880:2:75;;8866:13:65;;8925:79;8978:11;;880:2:75;8978:11:65;:::o;8881:23::-;;;270:9967:75;8720:323:65;:::o;:::-;270:9967:75;8906:3:65;270:9967:75;;8881:23:65;;;;;8929:15;;;;;:::i;:::-;270:9967:75;;;;;;2531:24:65;8929:29;8925:79;;880:2:75;;8866:13:65;;8720:323;270:9967:75;8906:3:65;270:9967:75;;8881:23:65;;;;;8929:15;;;;;:::i;:::-;270:9967:75;;;;;;6005:21:65;8929:29;8925:79;;880:2:75;;8866:13:65;;5926:434:58;270:9967:75;;6065:47:58;;;;1590:14:0;;;;6065:47:58;;1136:42:75;270:9967;;;;;6065:47:58;;;;;270:9967:75;6036:17;;972:13;;;270:9967;6065:47:58;;;;;;;:::i;:::-;8511:25;;-1:-1:-1;;;;;270:9967:75;;;-1:-1:-1;;;;;270:9967:75;8511:25:58;;;;;:::i;:::-;8553:81;;;5926:434;8553:127;;;;5926:434;6127:45;;6123:231;;5926:434;;;:::o;6123:231::-;6232:43;6330:12;270:9967:75;;;1590:14:0;;;;6065:47:58;6232:43;;;6065:47;6232:43;;270:9967:75;-1:-1:-1;6065:47:58;270:9967:75;;;6065:47:58;6232:43;;;6065:47;6232:43;;:::i;:::-;;;:::i;:::-;6330:12;:::i;8553:127::-;8650:26;;;:30;;8553:127;;;:81;270:9967:75;;;;-1:-1:-1;8577:22:58;;;:56;;;;8553:81;;;;;;;8577:56;8603:30;;;6065:47;8603:30;;;;;;;;:::i;:::-;8577:56;;;;270:9967:75;;;;;;;;:::i;:::-;;972:13;;-1:-1:-1;;;270:9967:75;;;;;;;;;:::o;1911:4479:65:-;;;;;;270:9967:75;;-1:-1:-1;;;2117:44:65;;;;;270:9967:75;;;-1:-1:-1;;;;;270:9967:75;;;;;;;;;;;;;1911:4479:65;;;;;2117:44;270:9967:75;;;;;2117:44:65;;;;;270:9967:75;2117:44:65;-1:-1:-1;;;;;270:9967:75;;2117:44:65;;;;;;:47;:44;;;;;1911:4479;2117:47;;:::i;:::-;270:9967:75;;;-1:-1:-1;972:13:75;1590:14:0;;;270:9967:75;;2174:61:65;;270:9967:75;;;;:::i;:::-;;972:13;;270:9967;1590:14:0;270:9967:75;;;-1:-1:-1;;;270:9967:75;;;;2174:61:65;;;:::i;:::-;1590:14:0;;270:9967:75;2117:44:65;270:9967:75;;44640:78:15;270:9967:75;;;1590:14:0;;270:9967:75;;:::i;:::-;;972:13;;270:9967;1590:14:0;270:9967:75;;;-1:-1:-1;;;270:9967:75;;;;;;44640:78:15;;;;;;1590:14:0;44640:78:15;;;270:9967:75;44640:78:15;;;270:9967:75;;;;;;:::i;:::-;-1:-1:-1;;;;;270:9967:75;;;;;;;;;;;;;;;;;;;44640:78:15;-1:-1:-1;;44640:78:15;;;;;;:::i;:::-;1222:159;270:9967:75;;1222:159:15;;591:42;1222:159;;-1:-1:-1;270:9967:75;;-1:-1:-1;;;2467:50:65;;2117:44;2467:50;;270:9967:75;;;-1:-1:-1;;;;;270:9967:75;;;;;;;;;;;;;2117:44:65;270:9967:75;;;;;2467:50:65;270:9967:75;;-1:-1:-1;;;;;270:9967:75;;2467:50:65;;;;;;2440:125;2467:50;2117:44;2467:50;;;1911:4479;2440:125;;:::i;:::-;270:9967:75;;;;;;;;:::i;:::-;2117:44:65;270:9967:75;;880:2;;1590:14:0;880:2:75;;;8365:37:65;;;2117:44;8365:37;8352:50;;;:::i;:::-;270:9967:75;8433:4:65;523:5;;;8412:25;;;:::i;:::-;270:9967:75;523:5:65;;8420:1;523:5;8447:22;;;:::i;:::-;270:9967:75;;;8487:1:65;880:2:75;;;;270:9967;;;880:2;;270:9967;;;-1:-1:-1;;;2822:49:65;;270:9967:75;2117:44:65;270:9967:75;;2822:49:65;880:2:75;2822:49:65;;;2117:44;2822:49;;;:::i;:::-;;270:9967:75;;-1:-1:-1;;;;;270:9967:75;;2822:49:65;;;;;;;2117:44;2822:49;;;8365:37;2917:9;2903:24;2917:9;;;:::i;:::-;;2903:24;:::i;:::-;270:9967:75;;-1:-1:-1;;880:2:75;;;6036:17;880:2;;;;2941:40:65;2955:25;2881:174;2955:25;;;:::i;2941:40::-;1590:14:0;;270:9967:75;;;1590:14:0;270:9967:75;;;;:::i;:::-;;972:13;;270:9967;1590:14:0;270:9967:75;;;-1:-1:-1;;;270:9967:75;;;;2881:174:65;:::i;:::-;3152:24;3166:9;;;:::i;3152:24::-;270:9967:75;;-1:-1:-1;;880:2:75;;;;;;;270:9967;12247:66:15;2117:44:65;3204:25;3190:40;3204:25;;;;;:::i;3190:40::-;1590:14:0;;270:9967:75;;;972:13;;270:9967;;;;:::i;:::-;;972:13;;270:9967;1590:14:0;270:9967:75;;;-1:-1:-1;;;270:9967:75;;;;;;12247:66:15;;;;;;1590:14:0;12247:66:15;;;1590:14:0;;44640:78:15;12247:66;;270:9967:75;;;;;;:::i;:::-;;;;;;;;;;12247:66:15;880:2:75;;12247:66:15;;;;;;:::i;:::-;1222:159;270:9967:75;;1222:159:15;;591:42;1222:159;;-1:-1:-1;1590:14:0;;270:9967:75;;3251:53:65;;270:9967:75;;;;:::i;:::-;;972:13;;270:9967;1590:14:0;270:9967:75;;;-1:-1:-1;;;270:9967:75;;;;3251:53:65;:::i;:::-;3314:60;3323:9;;;:::i;:::-;;270:9967:75;;972:13;1590:14:0;;;270:9967:75;;;;;;;;:::i;:::-;;972:13;;270:9967;1590:14:0;270:9967:75;;;3314:60:65;:::i;:::-;3384:64;1590:14:0;3393:9:65;;;:::i;:::-;;:21;270:9967:75;;;;;;;;;;;:::i;:::-;;972:13;;270:9967;1590:14:0;270:9967:75;;;3384:64:65;:::i;:::-;3480:24;3494:9;;;:::i;3480:24::-;972:13:75;270:9967;;;3514:49:65;270:9967:75;;;;;;;;;:::i;:::-;;972:13;;-1:-1:-1;;;1590:14:0;270:9967:75;;;3514:49:65;:::i;:::-;270:9967:75;;:::i;:::-;-1:-1:-1;270:9967:75;;-1:-1:-1;;880:2:75;;;;;;;3635:27:65;;;;:::i;:::-;270:9967:75;880:2;523:5:65;;;;;;;;2117:44;270:9967:75;;;;1590:14:0;27501:38:3;;1590:14:0;;;;27501:38:3;;3624:4:65;44640:78:15;27501:38:3;;270:9967:75;44640:78:15;27501:38:3;;;270:9967:75;27501:38:3;;:::i;:::-;27484:56;;;;;;27568:30;27484:56;;:::i;27568:30::-;-1:-1:-1;6854:12:8;497:42:75;;-1:-1:-1;;;;;;497:42:75;-1:-1:-1;;;;;270:9967:75;;497:42;;;7009:9:8;270:9967:75;;-1:-1:-1;;270:9967:75;27524:10:3;270:9967:75;;;7505:10:8;270:9967:75;-1:-1:-1;;;270:9967:75;;;;;;;8420:1:65;270:9967:75;;;7505:10:8;270:9967:75;;:::i;:::-;;;6854:12:8;270:9967:75;-1:-1:-1;;;;;270:9967:75;;;7009:9:8;270:9967:75;15610:11:8;270:9967:75;;1590:14:0;;15653:34:8;;:::i;:::-;15703:15;;-1:-1:-1;;;;;270:9967:75;;;;;27635:8:3;270:9967:75;;;;;15703:15:8;;270:9967:75;;;;;;2117:44:65;270:9967:75;1590:14:0;270:9967:75;;;2117:44:65;270:9967:75;;;;1590:14:0;15735:37:8;;;;;;;;;;:::i;:::-;270:9967:75;15725:48:8;;2117:44:65;270:9967:75;1590:14:0;270:9967:75;;8487:1:65;270:9967:75;;2117:44:65;270:9967:75;15703:77:8;270:9967:75;;15702:78:8;15698:126;;8365:37:65;15857:15:8;;-1:-1:-1;;;;;270:9967:75;;;;;27635:8:3;270:9967:75;;;;;;2117:44:65;270:9967:75;1590:14:0;270:9967:75;15889:37:8;;270:9967:75;;2117:44:65;270:9967:75;;;;;15889:37:8;;;1590:14:0;15889:37:8;;;;;:::i;:::-;270:9967:75;15879:48:8;;2117:44:65;270:9967:75;1590:14:0;270:9967:75;;;2117:44:65;270:9967:75;8420:1:65;15943:15:8;;270:9967:75;15961:16:8;8468:1:65;15961:16:8;;270:9967:75;15943:34:8;;;;:::i;:::-;15938:460;;8365:37:65;270:9967:75;;;;;-1:-1:-1;;;16424:32:8;;;;-1:-1:-1;;;;;270:9967:75;2117:44:65;16424:32:8;;270:9967:75;972:13;;;270:9967;;;;;;;1590:14:0;270:9967:75;972:13;270:9967;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;2117:44:65;16424:32:8;;;8365:37:65;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;270:9967:75;;;-1:-1:-1;;;16587:43:8;;;;-1:-1:-1;;;;;270:9967:75;2117:44:65;16587:43:8;;270:9967:75;12810:59:8;;;270:9967:75;;;;880:2;523:5:65;;270:9967:75;;;12656:92:8;12810:59;;;270:9967:75;-1:-1:-1;270:9967:75;12810:59:8;270:9967:75;-1:-1:-1;;;;;;;;;;;;16587:43:8;;;;;;;;8365:37:65;16678:31:8;;;:::i;:::-;16724:8;;270:9967:75;;;16724:29:8;;8365:37:65;16720:176:8;;;;14785:4;;;;:::i;:::-;270:9967:75;;;1590:14:0;;;3697:13:65;;1590:14:0;2117:44:65;;;;;-1:-1:-1;;;;;;;;;;;3697:13:65;;;;;;2117:44;;3697:13;;;;8365:37;-1:-1:-1;8420:1:65;3761:3;270:9967:75;;3741:18:65;;;;;1222:159:15;3878:14:65;270:9967:75;12952:65:15;3878:14:65;;;:::i;:::-;3910:10;;;;;:::i;:::-;270:9967:75;;;;;;;1590:14:0;270:9967:75;1590:14:0;;270:9967:75;;:::i;:::-;;972:13;;270:9967;1590:14:0;270:9967:75;;;-1:-1:-1;;;270:9967:75;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1590:14:0;12952:65:15;;;1590:14:0;;44640:78:15;12952:65;;270:9967:75;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;270:9967:75;;;;;;;:::i;:::-;;;;;;12952:65:15;880:2:75;;12952:65:15;;;;;;:::i;:::-;1222:159;270:9967:75;;1222:159:15;;591:42;1222:159;;;3972:24:65;3986:9;;;;:::i;3972:24::-;1222:159:15;4051:10:65;270:9967:75;12771:66:15;4051:10:65;;;;;:::i;:::-;270:9967:75;;;;;;;;;;:::i;:::-;;972:13;;270:9967;1590:14:0;270:9967:75;;;;;;12771:66:15;;;;;;1590:14:0;12771:66:15;;;1590:14:0;;44640:78:15;12771:66;;270:9967:75;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;270:9967:75;;;;;12771:66:15;-1:-1:-1;;12771:66:15;;;;;;:::i;:::-;1222:159;270:9967:75;;1222:159:15;;591:42;1222:159;;;4166:10:65;270:9967:75;4166:10:65;;4093:97;4166:10;;;;:::i;:::-;270:9967:75;;;;-1:-1:-1;;;4093:97:65;;270:9967:75;;;;;2117:44:65;4093:97;;;:::i;:::-;;2117:44;;;1136:42:75;270:9967;;;;;;4093:97:65;;;;;;;2117:44;;4093:97;;;3761:3;270:9967:75;;;523:5:65;;;;;;;;;;;;;4244:52;4335:26;4286:10;523:5;4286:10;;;;:::i;:::-;270:9967:75;523:5:65;;4244:52;:::i;:::-;270:9967:75;;;4349:11:65;;4335:26;:::i;:::-;270:9967:75;4375:60:65;270:9967:75;;;;;;;;;:::i;:::-;;972:13;;270:9967;1590:14:0;270:9967:75;;;4375:60:65;:::i;:::-;4449;270:9967:75;;;;;;;;;:::i;:::-;;972:13;;270:9967;1590:14:0;270:9967:75;;;4449:60:65;:::i;:::-;4523:61;270:9967:75;;;;;;;;;:::i;:::-;;972:13;;270:9967;1590:14:0;270:9967:75;;;4523:61:65;:::i;:::-;4599:1176;;;;;5013:164;972:13:75;4637:164:65;4819:176;972:13:75;1590:14:0;;270:9967:75;;;;1590:14:0;270:9967:75;1590:14:0;;270:9967:75;;:::i;:::-;;972:13;;270:9967;1590:14:0;270:9967:75;;;-1:-1:-1;;;270:9967:75;;;;;4637:164:65;;:::i;:::-;1590:14:0;;270:9967:75;;;;1590:14:0;270:9967:75;;;;:::i;:::-;;972:13;;270:9967;1590:14:0;270:9967:75;;;;;;;;;4819:176:65;;:::i;:::-;1590:14:0;;270:9967:75;;;;1590:14:0;270:9967:75;;;;:::i;:::-;;972:13;;270:9967;1590:14:0;270:9967:75;;;-1:-1:-1;;;270:9967:75;;;;;5013:164:65;;:::i;:::-;270:9967:75;;;1590:14:0;;;;5789:25:65;;270:9967:75;;2117:44:65;5789:25;;270:9967:75;1590:14:0;2117:44:65;44640:78:15;2117:44:65;;;-1:-1:-1;;;;;;;;;;;5789:25:65;;;;;;;8420:1;5789:25;;;4599:1176;3761:3;880:2:75;3726:13:65;;5789:25;;;1590:14:0;5789:25:65;;;;;;;;;:::i;:::-;;;;;;270:9967:75;;;1590:14:0;2117:44:65;;1590:14:0;;;;;4599:1176:65;5407:172;270:9967:75;5216:173:65;5597:163;270:9967:75;;;:::i;:::-;5216:173:65;;;:::i;:::-;270:9967:75;;:::i;:::-;5407:172:65;;;:::i;:::-;270:9967:75;;;1590:14:0;270:9967:75;1590:14:0;;270:9967:75;;:::i;:::-;;972:13;;270:9967;1590:14:0;270:9967:75;;;-1:-1:-1;;;270:9967:75;;;;;5597:163:65;;:::i;:::-;4599:1176;;523:5;270:9967:75;;;2117:44:65;;523:5;6854:12:8;2117:44:65;523:5;44640:78:15;2117:44:65;;523:5;4093:97;;;;270:9967:75;4093:97:65;;;;;;;;;:::i;:::-;;;;3741:18;;;;;;;;;5873:3;523:5;;;;;;;5873:3;523:5;;;;;;;;270:9967:75;;;-1:-1:-1;;;5941:50:65;;2117:44;;;;5941:50;;270:9967:75;;;-1:-1:-1;;;;;270:9967:75;;;;;;;;;;;;;;2117:44:65;;270:9967:75;523:5:65;;;;;270:9967:75;2117:44:65;;270:9967:75;;;;;;;5941:50:65;;;;;;5914:122;2117:44;;;5941:50;;;3721:2104;5914:122;;:::i;:::-;;;;6590;270:9967:75;;;;;1590:14:0;;270:9967:75;;:::i;:::-;;972:13;;270:9967;1590:14:0;270:9967:75;;;-1:-1:-1;;;270:9967:75;;;;;6590:122:65;:::i;:::-;270:9967:75;;;;;;;;;;:::i;:::-;8420:1:65;270:9967:75;;;;-1:-1:-1;;880:2:75;;1590:14:0;880:2:75;;;6783:37:65;;;:::i;:::-;270:9967:75;;;;-1:-1:-1;;;6835:57:65;;2117:44;;270:9967:75;;6835:57:65;;;;;2117:44;6835:57;;;:::i;:::-;;2117:44;;;1136:42:75;270:9967;;;;;;6835:57:65;;2117:44;;6835:57;;6047:287;-1:-1:-1;6831:346:65;;8420:1;6831:346;;:::i;:::-;;;;;;;;7259:18;270:9967:75;6831:346:65;7259:18;:::i;:::-;270:9967:75;;7190:97:65;270:9967:75;;;1590:14:0;;;;;;;;;;7190:97:65;;2117:44;7190:97;;;:::i;:::-;2117:44;;7190:97;;;;-1:-1:-1;;;;;270:9967:75;7190:97:65;;2117:44;;7190:97;;6831:346;-1:-1:-1;7186:342:65;;8420:1;7186:342;;:::i;:::-;;;;;;;;6047:287;6344:39;270:9967:75;;;;;;;;:::i;:::-;;972:13;;270:9967;1590:14:0;270:9967:75;;;6344:39:65;:::i;7186:342::-;7375:153;;:::i;:::-;;;;7186:342;;;;7375:153;2117:44;;1590:14:0;;270:9967:75;;;2117:44:65;;-1:-1:-1;7418:99:65;;2117:44;270:9967:75;;;;;:::i;:::-;;972:13;;270:9967;1590:14:0;270:9967:75;;;-1:-1:-1;;;270:9967:75;;;;;7418:99:65;:::i;:::-;7375:153;;;7186:342;270:9967:75;;;-1:-1:-1;;;7302:61:65;;1590:14:0;2117:44:65;7302:61;;270:9967:75;;44640:78:15;270:9967:75;;;;;;;;-1:-1:-1;;;270:9967:75;;;;;;7302:61:65;7190:97;;;270:9967:75;7190:97:65;270:9967:75;7190:97:65;;;;;;;:::i;:::-;;;6831:346;7018:159;;:::i;:::-;;;;6831:346;;;;7018:159;2117:44;;7061:105;2117:44;;972:13:75;1590:14:0;;270:9967:75;;;;;1590:14:0;;270:9967:75;;:::i;:::-;;972:13;;270:9967;1590:14:0;270:9967:75;;;;;;;;;7061:105:65;:::i;:::-;7018:159;;;6831:346;270:9967:75;;;-1:-1:-1;;;6907:99:65;;1590:14:0;2117:44:65;6907:99;;270:9967:75;;44640:78:15;270:9967:75;;;;;;;;;;;;;;;6907:99:65;6835:57;;;;2117:44;;;6835:57;;;;;;:::i;:::-;;;6047:287;1590:14:0;;270:9967:75;;;7738:117:65;;270:9967:75;;;;;;;:::i;:::-;;972:13;;270:9967;1590:14:0;270:9967:75;;;-1:-1:-1;;;270:9967:75;;;;;7738:117:65;:::i;:::-;270:9967:75;;;;;;;;;;:::i;:::-;8420:1:65;270:9967:75;;;;-1:-1:-1;;880:2:75;;1590:14:0;880:2:75;;;7926:37:65;;;:::i;:::-;270:9967:75;;;;1590:14:0;;;;7974:57:65;;2117:44;;7974:57;;;;;;;2117:44;7974:57;;;:::i;:::-;;2117:44;;;1136:42:75;270:9967;;;;;;7974:57:65;;;;;;;270:9967:75;;8110:18:65;;7974:57;;8110:18;;:::i;:::-;270:9967:75;;8041:97:65;270:9967:75;;;1590:14:0;;;;;;;;;;8041:97:65;;2117:44;8041:97;;;:::i;:::-;2117:44;;8041:97;;;;-1:-1:-1;;;;;270:9967:75;8041:97:65;;;;;;;;6047:287;;;;8041:97;;;270:9967:75;8041:97:65;270:9967:75;8041:97:65;;;;;;;:::i;:::-;;;;;7974:57;;;;2117:44;;;7974:57;;;;;;:::i;:::-;;;5941:50;;;;;2117:44;;;5941:50;;;;;;:::i;:::-;;;;3697:13;1590:14:0;3697:13:65;;1590:14:0;3697:13:65;;;;;;1590:14:0;3697:13:65;;;:::i;:::-;;;1590:14:0;;;;;3697:13:65;;;;;;;;-1:-1:-1;3697:13:65;;16720:176:8;270:9967:75;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;270:9967:75;;;-1:-1:-1;;;16769:41:8;;2117:44:65;;16769:41:8;;-1:-1:-1;;;;;270:9967:75;2117:44:65;16769:41:8;;270:9967:75;12810:59:8;;;270:9967:75;;;;12810:59:8;;;270:9967:75;;;;;;12810:59:8;;;16769:41;2117:44:65;;;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;;;;;16720:176;270:9967:75;;;-1:-1:-1;;;16824:61:8;;1590:14:0;2117:44:65;16824:61:8;;12810:59;270:9967:75;44640:78:15;12810:59:8;;270:9967:75;12810:59:8;270:9967:75;;;12810:59:8;-1:-1:-1;;;270:9967:75;12810:59:8;;;270:9967:75;;16824:61:8;16769:41;2117:44:65;;16769:41:8;;;:::i;:::-;270:9967:75;;;;16769:41:8;;;270:9967:75;2117:44:65;;;270:9967:75;16724:29:8;880:2:75;523:5:65;16736:17:8;;;-1:-1:-1;16724:29:8;;;;16587:43;2117:44:65;16587:43:8;;;:::i;:::-;2117:44:65;270:9967:75;;16587:43:8;;;;270:9967:75;;;1590:14:0;2117:44:65;1590:14:0;;;;;16424:32:8;;;;1590:14:0;16424:32:8;;1590:14:0;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;:::i;:::-;16021:3;880:2:75;16021:3:8;880:2:75;;;;270:9967;;;;;;;;-1:-1:-1;;;16314:19:8;;8420:1:65;270:9967:75;;2117:44:65;16314:19:8;;270:9967:75;-1:-1:-1;270:9967:75;44640:78:15;270:9967:75;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;16170:185;12810:59;1590:14:0;16314:19:8;8420:1:65;16314:19:8;2117:44:65;16314:19:8;;;15938:460;270:9967:75;;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;270:9967:75;;12810:59:8;;;-1:-1:-1;;;1590:14:0;;12810:59:8;;;270:9967:75;;;;;;12810:59:8;;;270:9967:75;;;2117:44:65;270:9967:75;;;;16170:185:8;;880:2:75;;16170:185:8;;;;;;:::i;:::-;270:9967:75;523:5:65;880:2:75;523:5:65;16103:21:8;12810:59;;;15938:460;;;12810:59;270:9967:75;;;-1:-1:-1;;;12810:59:8;;1590:14:0;2117:44:65;12810:59:8;;270:9967:75;;;;;;44640:78:15;270:9967:75;;;;:::i;16314:19:8:-;;;;;;2117:44:65;16314:19:8;;;;;;:::i;:::-;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;2822:49:65;;;;;;;2117:44;2822:49;;;;;;:::i;:::-;;;;;8365:37;8397:5;523;;;8365:37;;2467:50;;;;;;2117:44;2467:50;;;;;;:::i;:::-;;;;2117:44;;;;;;;;;;;;;:::i;:::-;;;;14296:110:1;;-1:-1:-1;;;;;;;;;;;14375:24:1;;;;270:9967:75;;1590:14:0;;;;14375:24:1;;;;;270:9967:75;;;;;-1:-1:-1;14375:24:1;;;-1:-1:-1;;;;;;;;;;;14375:24:1;;;;;;;;14296:110;:::o;270:9967:75:-;;;;;;972:13;;;;:::i;:::-;270:9967;;;;;;;:::i;:::-;972:13;;270:9967;-1:-1:-1;270:9967:75;;;;:::o;:::-;;;:::o;6764:749:58:-;3256:31:33;;3304:55;;-1:-1:-1;;;;;270:9967:75;;;;2626:1:33;;;;3256:31;;2626:1;270:9967:75;3256:31:33;;;;:::i;:::-;3304:55;;:::i;:::-;270:9967:75;;7289:21:58;;7285:222;;6764:749;;:::o;7285:222::-;3256:31:33;7390:30:58;;;;;;;;;:::i;:::-;270:9967:75;;;6764:749:58:o;270:9967:75:-;;;-1:-1:-1;;;270:9967:75;;3256:31:33;270:9967:75;;;;;;;;;;;;;;-1:-1:-1;;;270:9967:75;;;;;;;6598:121:15;1222:159;270:9967:75;6669:42:15;6598:121;;270:9967:75;;6669:42:15;;;;;;;;;;;;;;270:9967:75;;;;;;:::i;6669:42:15:-;1222:159;270:9967:75;;1222:159:15;;591:42;1222:159;;;6598:121::o;7546:145::-;1590:14:0;7629:54:15;1222:159;7546:145;;;;270:9967:75;;7629:54:15;;;;;;;;;;270:9967:75;7629:54:15;;;1590:14:0;;;;;;:::i;:::-;;;;;270:9967:75;7629:54:15;880:2:75;;7629:54:15;;;;;;:::i;15596:134:1:-;;-1:-1:-1;;;;;;;;;;;15694:29:1;;;;;270:9967:75;15694:29:1;270:9967:75;;1590:14:0;;;;;;;;15694:29:1;;;;;;:::i;270:9967:75:-;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;270:9967:75;;;;;;;;;;;;-1:-1:-1;;;;;270:9967:75;;;;;;;;;;;;-1:-1:-1;;;;;270:9967:75;;;;;;;-1:-1:-1;;270:9967:75;;;;;;;;;-1:-1:-1;270:9967:75;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;:::o;7846:150:15:-;270:9967:75;7935:53:15;1222:159;7846:150;;270:9967:75;7846:150:15;;270:9967:75;;7935:53:15;;;;;;;;;;270:9967:75;7935:53:15;;;270:9967:75;;;;;;:::i;:::-;;;;-1:-1:-1;;270:9967:75;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::o;953:236:8:-;270:9967:75;1052:14:8;270:9967:75;;:::i;:::-;1052:14:8;;270:9967:75;;;;;;1109:10:8;270:9967:75;;;;;;1109:10:8;1077:1;270:9967:75;;1077:1:8;270:9967:75;;1077:1:8;270:9967:75;;;;;;;;;;;;;;:::i;:::-;;;523:5:65;;;;;;;270:9967:75;523:5:65;;;;;;;972:13:75;;;:::i;:::-;270:9967;;;;;;;:::i;:::-;972:13;;;270:9967;880:2;;270:9967;;:::i;:::-;;880:2;270:9967;;;880:2;1077:1:8;11360:3;270:9967:75;;11346:12:8;;;;;11391:4;;1109:10;11391:4;;;:::i;:::-;270:9967:75;;11456:84:8;523:5:65;11456:84:8;;;;;880:2:75;11331:13:8;;11346:12;-1:-1:-1;11346:12:8;-1:-1:-1;1094:26:8:o;270:9967:75:-;;;;;1109:10:8;270:9967:75;;;;;;-1:-1:-1;270:9967:75;;;;;;;;1048:135:8;270:9967:75;;;;;;1052:14:8;270:9967:75;:::i;953:236:8:-;1052:14;;;270:9967:75;;;;;:::i;:::-;1052:21:8;;1109:10;;;;270:9967:75;;;;;;;;;;;;;;;1077:1:8;270:9967:75;;1077:1:8;270:9967:75;;1077:1:8;270:9967:75;;;;;;;;;;;;;;:::i;:::-;;;523:5:65;;;;;;;270:9967:75;523:5:65;;;;;;;972:13:75;;;:::i;:::-;270:9967;;;;;;;:::i;:::-;972:13;;;270:9967;880:2;;270:9967;;:::i;:::-;;880:2;270:9967;;;880:2;1077:1:8;11360:3;270:9967:75;;11346:12:8;;;;;11391:4;;1109:10;11391:4;;;:::i;:::-;270:9967:75;;11456:84:8;523:5:65;11456:84:8;;;;;880:2:75;11331:13:8;;270:9967:75;;;;;1109:10:8;270:9967:75;;;;;;-1:-1:-1;270:9967:75;;;;;;;;1048:135:8;270:9967:75;;;;;;;;;;;:::i;1251:343:8:-;-1:-1:-1;270:9967:75;1364:48:8;1381:9;270:9967:75;1590:14:0;;1364:48:8;270:9967:75;1392:19:8;27635:8:3;1392:19:8;:::i;:::-;270:9967:75;;1364:48:8;;;;;;270:9967:75;;;;;;;;;;;;;;;;;;;;;;;;1364:48:8;;880:2:75;;1364:48:8;;;;;;:::i;:::-;1458:12;270:9967:75;1458:29:8;;;-1:-1:-1;;;;;270:9967:75;1458:29:8;;;;;:::i;:::-;1540:11;270:9967:75;;;;523:5:65;;;;;-1:-1:-1;;;;;523:5:65;;;;;-1:-1:-1;270:9967:75;;;1364:48:8;11010:13;;:29;1364:48;;;11010:29;1364:48;11010:29;;-1:-1:-1;11049:106:8;11069:7;;;;;;1563:24;;;;;1251:343;:::o;11078:3::-;11114:10;;;;;;;;:::i;:::-;270:9967:75;;;;;;;;;1364:48:8;270:9967:75;;1540:11:8;523:5:65;;;;;-1:-1:-1;;;;;;270:9967:75;523:5:65;;11142:1:8;523:5:65;;;;;;;;880:2:75;270:9967;;11097:47:8;11078:3;880:2:75;11054:13:8;;;;;11010:29;;;;1251:343;;-1:-1:-1;1381:9:8;1364:48;1381:9;;;270:9967:75;1590:14:0;;1364:48:8;270:9967:75;1392:19:8;;;:::i;1364:48::-;270:9967:75;1458:12:8;;270:9967:75;1458:29:8;;;-1:-1:-1;;;;;270:9967:75;1458:29:8;;1540:11;1458:29;;:::i;:::-;1540:11;;270:9967:75;523:5:65;;;;;-1:-1:-1;;;;;523:5:65;;;;;-1:-1:-1;270:9967:75;;;1364:48:8;11010:13;;:29;1364:48;;;11010:29;1364:48;11010:29;;-1:-1:-1;11049:106:8;11069:7;;;;;;1563:24;;;;;1251:343;:::o;11078:3::-;11114:10;;;;;;;;:::i;:::-;270:9967:75;;;;;;;;;1364:48:8;270:9967:75;;1540:11:8;523:5:65;;;;;-1:-1:-1;;;;;;270:9967:75;523:5:65;;11142:1:8;523:5:65;;;;;;;;880:2:75;270:9967;;11097:47:8;11078:3;880:2:75;11054:13:8;;;;;11010:29;;;;4421:582:33;;4593:8;;-1:-1:-1;270:9967:75;;5674:21:33;:17;;5846:142;;;;;;5670:385;6025:19;;;5694:1;6025:19;;5694:1;6025:19;4589:408;270:9967:75;;4841:22:33;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:33;4917:24;;;-1:-1:-1;;;;;270:9967:75;;;;4917:24:33;270:9967:75;972:13;;4917:24:33;4841:49;4867:18;;;:23;4841:49;;4249:2493:8;4361:12;270:9967:75;4397:9:8;270:9967:75;4438:11:8;270:9967:75;-1:-1:-1;;;;;270:9967:75;;;;;;1590:14:0;;4481:19:8;27635:8:3;4481:19:8;:::i;:::-;4551:15;270:9967:75;;;27635:8:3;270:9967:75;;;;;;;;;;;;;;;;;;;;;;4583:37:8;;;;;;;;;;:::i;:::-;270:9967:75;4573:48:8;;270:9967:75;;;;;4438:11:8;270:9967:75;;;4551:77:8;270:9967:75;;4547:255:8;;-1:-1:-1;;;;;;;;;;;4811:11:8;;;;270:9967:75;;-1:-1:-1;;;4811:11:8;;270:9967:75;;4361:12:8;270:9967:75;;-1:-1:-1;;;;;;;;;;;4811:11:8;;;;;;;;4249:2493;4857:16;;27635:8:3;4857:16:8;:::i;:::-;270:9967:75;;;;1590:14:0;;;4911:25:8;;;4361:12;4911:25;;270:9967:75;4911:25:8;;;;;-1:-1:-1;;;;;;;;;;;4911:25:8;;;;;;;;;;;4249:2493;-1:-1:-1;270:9967:75;;4951:12:8;;4984:74;270:9967:75;;12810:59:8;;;4984:74;;270:9967:75;4361:12:8;4984:74;;643:59;270:9967:75;4911:25:8;643:59;;270:9967:75;643:59:8;270:9967:75;;;643:59:8;;;;;;4984:74;4947:1461;5094:13;5127:3;270:9967:75;;5109:16:8;;;;;5178:8;270:9967:75;5178:8:8;;5165:22;5178:8;;:::i;:::-;270:9967:75;;;-1:-1:-1;;;5165:22:8;;-1:-1:-1;;;;;270:9967:75;;4361:12:8;5165:22;;270:9967:75;972:13;;;270:9967;;;;;;;;;972:13;;;;;5165:22:8;;;-1:-1:-1;;;;;;;;;;;5165:22:8;;;;;;;;;;;5127:3;5209:18;;;5205:114;;5127:3;5369:8;;;;:::i;:::-;270:9967:75;4361:12:8;270:9967:75;;;-1:-1:-1;;;1978:27:8;;-1:-1:-1;;;;;270:9967:75;;;4361:12:8;1978:27;;270:9967:75;;;972:13;;;270:9967;;;;;;;972:13;270:9967;-1:-1:-1;;;;;;;;;;;1978:27:8;;;;;;;;;;;5127:3;2057:16;;27635:8:3;2057:16:8;:::i;:::-;2102:65;;;:29;;:65;:29;;;-1:-1:-1;;6036:17:75;2102:65:8;-1:-1:-1;;;;;;;;;;;2177:37:8;;;;270:9967:75;;-1:-1:-1;;;2177:37:8;;-1:-1:-1;;;;;270:9967:75;;;;4361:12:8;2177:37;;270:9967:75;12810:59:8;;;270:9967:75;;;12810:59:8;;;270:9967:75;;;;;;12810:59:8;270:9967:75;;-1:-1:-1;;;;;;;;;;;2177:37:8;;;;;;;;;;;2102:65;2254:16;;;27635:8:3;2254:16:8;:::i;:::-;4361:12;270:9967:75;;;;-1:-1:-1;;;;;;270:9967:75;-1:-1:-1;;;;;;;;;;;2281:43:8;;;;270:9967:75;;-1:-1:-1;;;2281:43:8;;-1:-1:-1;;;;;270:9967:75;;;;4361:12:8;2281:43;;270:9967:75;12810:59:8;;;270:9967:75;;;;12810:59:8;;;270:9967:75;;;;;;12810:59:8;270:9967:75;;-1:-1:-1;;;;;;;;;;;2281:43:8;;;;;;;;;;;2102:65;2343:46;;;;;2102:65;5341:37;;;5337:92;;5447:50;;;270:9967:75;;5520:25:8;270:9967:75;;5516:256:8;;2102:65;12275:113;;;;;;;-1:-1:-1;;12275:113:8;;;5902:57;270:9967:75;;5998:29:8;;5994:84;;270:9967:75;;6319:8:8;270:9967:75;6101:89:8;643:59;270:9967:75;;6132:37:8;;270:9967:75;;;6132:37:8;;;270:9967:75;6132:37:8;;;;;:::i;:::-;270:9967:75;6122:48:8;;6180:8;;;;:::i;:::-;270:9967:75;;;;;;;643:59:8;270:9967:75;643:59:8;;270:9967:75;;643:59:8;;270:9967:75;643:59:8;;;270:9967:75;6101:89:8;6319:8;:::i;:::-;270:9967:75;;;;;643:59:8;270:9967:75;;;;;;-1:-1:-1;;;;;270:9967:75;;;;;4438:11:8;270:9967:75;;;;;;6302:58:8;;270:9967:75;;;;6302:58:8;;270:9967:75;;;643:59:8;6302:58;;643:59;880:2:75;643:59:8;;270:9967:75;;;27635:8:3;270:9967:75;;;;;;;;;;;;;;;;6240:37:8;;;;;;;;;;:::i;:::-;270:9967:75;6230:48:8;;270:9967:75;;;;;;;;;643:59:8;;270:9967:75;880:2;643:59:8;;;270:9967:75;4397:9:8;643:59;;;;;;270:9967:75;;;;;643:59:8;;;;;;;;5089:1309;270:9967:75;;;27635:8:3;270:9967:75;;;;;;;;;;;;;;;;6471:37:8;;;;;;;;;;:::i;:::-;270:9967:75;6461:48:8;;270:9967:75;;;;;4438:11:8;270:9967:75;;;6439:77:8;270:9967:75;;643:59:8;;;270:9967:75;6664:15:8;270:9967:75;;27635:8:3;270:9967:75;;;;;;;;;;6696:37:8;;270:9967:75;;;;;;6696:37:8;;;270:9967:75;6696:37:8;;;;;:::i;:::-;270:9967:75;6686:48:8;;270:9967:75;;;;;4249:2493:8;:::o;643:59::-;270:9967:75;;-1:-1:-1;;;643:59:8;;270:9967:75;4361:12:8;643:59;;;;4911:25;643:59;;270:9967:75;643:59:8;270:9967:75;;;643:59:8;-1:-1:-1;;;643:59:8;;;;;;;5994:84;6051:8;;;;880:2:75;6051:8:8;5094:13;880:2:75;5094:13:8;;5516:256;5654:8;;3216:27;5654:8;;;;;;:::i;:::-;270:9967:75;4361:12:8;270:9967:75;;;-1:-1:-1;;;3216:27:8;;-1:-1:-1;;;;;270:9967:75;;;4361:12:8;3216:27;;270:9967:75;972:13;;;270:9967;;;;;;;;;;;;;972:13;;;;;3216:27:8;;;-1:-1:-1;;;;;;;;;;;3216:27:8;;;;;;;;;;;5516:256;3293:28;;;27635:8:3;3293:28:8;:::i;:::-;3372:29;;;;;27635:8:3;3372:29:8;:::i;:::-;4361:12;270:9967:75;;;;;;-1:-1:-1;;;;;270:9967:75;-1:-1:-1;;;;;;;;;;;3497:43:8;;;;270:9967:75;;-1:-1:-1;;;3497:43:8;;-1:-1:-1;;;;;270:9967:75;;;;4361:12:8;3497:43;;270:9967:75;12810:59:8;;;270:9967:75;;;;12810:59:8;;;270:9967:75;;;;;;12810:59:8;270:9967:75;;-1:-1:-1;;;;;;;;;;;3497:43:8;;;;;;;;;;;5516:256;3558:23;;;;;5516:256;5601:62;;5689:6;5516:256;5685:69;5723:8;;;;;880:2:75;5723:8:8;;;3558:23;;-1:-1:-1;3558:23:8;;;3497:43;;;;;:::i;:::-;270:9967:75;;3497:43:8;;;;270:9967:75;;;;3497:43:8;270:9967:75;;1590:14:0;270:9967:75;;1590:14:0;;;;3497:43:8;270:9967:75;;;3216:27:8;;;;270:9967:75;3216:27:8;;;;;;;;;1590:14:0;3216:27:8;;;:::i;:::-;;;1590:14:0;;;;;3216:27:8;;;;;;;-1:-1:-1;3216:27:8;;5337:92;5402:8;;880:2:75;5402:8:8;;;2343:46;2355:33;;;-1:-1:-1;2343:46:8;;;;2281:43;;;;;:::i;:::-;270:9967:75;;2281:43:8;;;;270:9967:75;;;;2281:43:8;270:9967:75;;1590:14:0;270:9967:75;;1590:14:0;;;;2281:43:8;270:9967:75;;;2177:37:8;;;;;:::i;:::-;270:9967:75;;2177:37:8;;;;2102:65;;;;;1978:27;;;270:9967:75;1978:27:8;;;;;;;;;1590:14:0;1978:27:8;;;:::i;:::-;;;1590:14:0;;;;;1978:27:8;;;;;;-1:-1:-1;1978:27:8;;;270:9967:75;;1590:14:0;270:9967:75;;1590:14:0;;;;5205:114:8;5256:44;;5290:8;;;;:::i;:::-;270:9967:75;;;;-1:-1:-1;;;;;270:9967:75;;;;972:13;;;270:9967;;;;;;;;972:13;;;;5256:44:8;;;;5205:114;;5165:22;;;;270:9967:75;5165:22:8;;;;;;;;;1590:14:0;5165:22:8;;;:::i;:::-;;;1590:14:0;;;;;5165:22:8;;;;;;;-1:-1:-1;5165:22:8;;;270:9967:75;;1590:14:0;270:9967:75;;1590:14:0;;;;5109:16:8;;;;;;4911:25;;;;;;;;;;;;:::i;:::-;;;270:9967:75;643:59:8;;;;;;;;-1:-1:-1;;;;;643:59:8;;;;;;;;;;:::i;:::-;;270:9967:75;643:59:8;;;;-1:-1:-1;;;;;643:59:8;;;;;;;;;:::i;:::-;;4911:25;;;643:59;270:9967:75;;;643:59:8;270:9967:75;;;4811:11:8;;;;;270:9967:75;4811:11:8;;:::i;:::-;270:9967:75;4811:11:8;;;;4547:255;4720:15;;;;;270:9967:75;;27635:8:3;270:9967:75;;;;;;;;;;4752:37:8;;270:9967:75;;;;;;4752:37:8;;;270:9967:75;4752:37:8;;;;;:::i;:::-;270:9967:75;4742:48:8;;270:9967:75;;;;;;;4713:78:8;:::o;11586:239::-;497:42:75;;;11652:12:8;270:9967:75;;11652:12:8;270:9967:75;;;11681:9:8;270:9967:75;;11681:9:8;270:9967:75;11707:10:8;270:9967:75;11645:19:8;11707:10;270:9967:75;;;;11586:239:8;270:9967:75;11645:19:8;11734:11;270:9967:75;;;11762:25:8;270:9967:75;;11762:25:8;270:9967:75;;11804:14:8;270:9967:75;;:::i;:::-;;;;11586:239:8;:::o;270:9967:75:-;;;;;;;;;11645:19:8;11804:14;270:9967:75;11586:239:8:o;270:9967:75:-;11804:14:8;11645:19;270:9967:75;;;;;;;;;;;;;;;;11804:14:8;11645:19;270:9967:75;11645:19:8;270:9967:75;;;;11804:14:8;270:9967:75;;13228:134:1:o;270:9967:75:-;;;;;;;;;11707:10:8;11645:19;270:9967:75;;;;;;;;;;;;;;;;11645:19:8;270:9967:75;;11707:10:8;270:9967:75;;;2560:514:8;;;2695:1;2698:12;2707:3;2698:12;;;;3050:17;;;;2695:1;3050:17;2695:1;2560:514;:::o;2712:8::-;880:2:75;2771:3:8;880:2:75;2771:3:8;880:2:75;;;;2824:12:8;;;270:9967:75;880:2;270:9967;;;;-1:-1:-1;;;;;270:9967:75;-1:-1:-1;;;;;;;;;;;2815:49:8;;;;270:9967:75;;-1:-1:-1;;;2815:49:8;;-1:-1:-1;;;;;270:9967:75;;;;2824:12:8;2815:49;;270:9967:75;12810:59:8;;;270:9967:75;;;12810:59:8;;;270:9967:75;;;;-1:-1:-1;270:9967:75;12810:59:8;270:9967:75;-1:-1:-1;;;;;;;;;;;;2815:49:8;;;;;;;;2712:8;2910:16;;;;:::i;:::-;2945:30;;;2712:8;2941:90;;;880:2:75;;2678:18:8;;2941:90;2995:21;;;880:2:75;2995:21:8;;:::o;2945:30::-;2957:17;;;;2945:30;;;2815:49;2695:1;2815:49;;;:::i;:::-;;;;2560:514;;;4551:10;2698:12;2707:3;2698:12;;;;3050:17;;;;4551:10;3050:17;4551:10;2560:514;:::o;2712:8::-;2824:12;;;270:9967:75;880:2;270:9967;;;-1:-1:-1;;;;;270:9967:75;-1:-1:-1;;;;;;;;;;;2815:49:8;;;;270:9967:75;;-1:-1:-1;;;2815:49:8;;-1:-1:-1;;;;;270:9967:75;;;;2824:12:8;2815:49;;270:9967:75;12810:59:8;;;270:9967:75;;;12810:59:8;;;270:9967:75;;;;-1:-1:-1;270:9967:75;12810:59:8;270:9967:75;-1:-1:-1;;;;;;;;;;;;2815:49:8;;;;;;;;2712:8;2910:16;;;;:::i;:::-;2945:30;;;2712:8;2941:90;;;880:2:75;;2678:18:8;;2945:30;2957:17;;;;2945:30;;;2815:49;4551:10;2815:49;;;:::i;:::-;;;","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","fractionToInt((uint256,uint256))":"08c41745","runPoolBehaviourTest(address,bytes32[])":"d170c3cc","setUp()":"0a9254e4","stringPctgs(uint256)":"a00872f1","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testGetCapabilities()":"4b13c571","testGetLimits()":"d3479a01","testGetPoolIds()":"99cef81b","testGetTokens()":"8f1ed4c6","testMavV2PoolBehaviour()":"5cca77b2","testPrice()":"8335a17f","testPriceDecreasing()":"4a36e372","testPriceFuzz(uint256,uint256)":"a502846b","testSwapBuy()":"1e1e26fa","testSwapBuyIncreasing()":"fe3ee58b","testSwapFuzz(uint256,bool)":"7f55213e","testSwapSell()":"1c6e35e4","testSwapSellIncreasing()":"111f3392"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"LimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"Unavailable\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"fsig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keysHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"SlotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"WARNING_UninitedSlot\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction\",\"name\":\"price\",\"type\":\"tuple\"}],\"name\":\"fractionToInt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISwapAdapter\",\"name\":\"adapter\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"poolIds\",\"type\":\"bytes32[]\"}],\"name\":\"runPoolBehaviourTest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"stringPctgs\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetCapabilities\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetLimits\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetPoolIds\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetTokens\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testMavV2PoolBehaviour\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testPriceDecreasing\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"testPriceFuzz\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSwapBuy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSwapBuyIncreasing\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isBuy\",\"type\":\"bool\"}],\"name\":\"testSwapFuzz\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSwapSell\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSwapSellIncreasing\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"LimitExceeded(uint256)\":[{\"details\":\"The LimitExceeded error is thrown when a limit has been exceeded. E.g. the specified amount can't be traded safely.\"}],\"NotImplemented(string)\":[{\"details\":\"The NotImplemented error is thrown when a function is not implemented.\"}],\"Unavailable(string)\":[{\"details\":\"The Unavailable error is thrown when a pool or swap is not available for unexpected reason. E.g. it was paused due to a bug.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/MaverickV2SwapAdapter.t.sol\":\"MaverickV2SwapAdapterTest\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b\",\"dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54\",\"dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678\",\"dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdToml.sol\":{\"keccak256\":\"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d\",\"dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e\",\"dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a\",\"dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/libraries/EfficientERC20.sol\":{\"keccak256\":\"0x825d7f6aa98465b3c5b5a08d24cadfbb0a06f44693beec4e00ad2fe2824b4ef0\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2a5b53d7d634f50f27a1e45ce9136a054f1f19efc3dcfc1f85c8b1bbeac735fa\",\"dweb:/ipfs/QmQSeQyF86HLRnvKgQogia8W2eoWzncG2m1GkYMnp84DJZ\"]},\"src/libraries/FractionMath.sol\":{\"keccak256\":\"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c\",\"dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr\"]},\"src/maverick-v2/MaverickV2SwapAdapter.sol\":{\"keccak256\":\"0x4ba52bde98c1ef79e6730645f278c0601392d7466313119be6a307254cdccb38\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://60cf377d4a17957d78c0e14708daa10c3d44831a5a567275293126b54e572a07\",\"dweb:/ipfs/QmT55QZ9W7tu9NzmKMNWp5LSESyNbW8NrjnXYZ6mAujYQ4\"]},\"test/AdapterTest.sol\":{\"keccak256\":\"0x56850be2bb3898eee065c3d77aadb6d181ee789da32f30b1d415d5521397fa43\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://8ca34143db16aa27c42ee3f8566ee466095d4aedcc4ea1c7726aa9c593f4fbd0\",\"dweb:/ipfs/QmWBTLXZKbTuT5kVpAbyGCxKRdhsmzWRPZPiTqZMg9BXhd\"]},\"test/MaverickV2SwapAdapter.t.sol\":{\"keccak256\":\"0xf8c58fd7ced9c34d91f482dadf8f3006832f178e99a0ac4ce67eaf6725f9da7f\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://519b9fed93a9d1781df22c4efaa85fa79f791d21bca7fe6187ab77105dbfb6a4\",\"dweb:/ipfs/QmPTWrmVqJSGBFBkd69UYhBhqr8h1dbXGtK2JrP2NumQya\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"type":"error","name":"LimitExceeded"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"NotImplemented"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"Unavailable"},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"bytes4","name":"fsig","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"keysHash","type":"bytes32","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"SlotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"WARNING_UninitedSlot","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct ISwapAdapterTypes.Fraction","name":"price","type":"tuple","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}],"stateMutability":"pure","type":"function","name":"fractionToInt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"contract ISwapAdapter","name":"adapter","type":"address"},{"internalType":"bytes32[]","name":"poolIds","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"runPoolBehaviourTest"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"stringPctgs","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"testGetCapabilities"},{"inputs":[],"stateMutability":"view","type":"function","name":"testGetLimits"},{"inputs":[],"stateMutability":"view","type":"function","name":"testGetPoolIds"},{"inputs":[],"stateMutability":"view","type":"function","name":"testGetTokens"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testMavV2PoolBehaviour"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testPrice"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testPriceDecreasing"},{"inputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testPriceFuzz"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testSwapBuy"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testSwapBuyIncreasing"},{"inputs":[{"internalType":"uint256","name":"specifiedAmount","type":"uint256"},{"internalType":"bool","name":"isBuy","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"testSwapFuzz"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testSwapSell"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testSwapSellIncreasing"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/MaverickV2SwapAdapter.t.sol":"MaverickV2SwapAdapterTest"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef","urls":["bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b","dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d","urls":["bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54","dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3","urls":["bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678","dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdToml.sol":{"keccak256":"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab","urls":["bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d","dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe","urls":["bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e","dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456","urls":["bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a","dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/libraries/EfficientERC20.sol":{"keccak256":"0x825d7f6aa98465b3c5b5a08d24cadfbb0a06f44693beec4e00ad2fe2824b4ef0","urls":["bzz-raw://2a5b53d7d634f50f27a1e45ce9136a054f1f19efc3dcfc1f85c8b1bbeac735fa","dweb:/ipfs/QmQSeQyF86HLRnvKgQogia8W2eoWzncG2m1GkYMnp84DJZ"],"license":"UNLICENSED"},"src/libraries/FractionMath.sol":{"keccak256":"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735","urls":["bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c","dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr"],"license":"AGPL-3.0-or-later"},"src/maverick-v2/MaverickV2SwapAdapter.sol":{"keccak256":"0x4ba52bde98c1ef79e6730645f278c0601392d7466313119be6a307254cdccb38","urls":["bzz-raw://60cf377d4a17957d78c0e14708daa10c3d44831a5a567275293126b54e572a07","dweb:/ipfs/QmT55QZ9W7tu9NzmKMNWp5LSESyNbW8NrjnXYZ6mAujYQ4"],"license":"AGPL-3.0-or-later"},"test/AdapterTest.sol":{"keccak256":"0x56850be2bb3898eee065c3d77aadb6d181ee789da32f30b1d415d5521397fa43","urls":["bzz-raw://8ca34143db16aa27c42ee3f8566ee466095d4aedcc4ea1c7726aa9c593f4fbd0","dweb:/ipfs/QmWBTLXZKbTuT5kVpAbyGCxKRdhsmzWRPZPiTqZMg9BXhd"],"license":"AGPL-3.0-or-later"},"test/MaverickV2SwapAdapter.t.sol":{"keccak256":"0xf8c58fd7ced9c34d91f482dadf8f3006832f178e99a0ac4ce67eaf6725f9da7f","urls":["bzz-raw://519b9fed93a9d1781df22c4efaa85fa79f791d21bca7fe6187ab77105dbfb6a4","dweb:/ipfs/QmPTWrmVqJSGBFBkd69UYhBhqr8h1dbXGtK2JrP2NumQya"],"license":"AGPL-3.0-or-later"}},"version":1},"id":75} \ No newline at end of file diff --git a/evm/out/MockERC20.sol/MockERC20.json b/evm/out/MockERC20.sol/MockERC20.json deleted file mode 100644 index 7a9cf4c..0000000 --- a/evm/out/MockERC20.sol/MockERC20.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"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":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","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":"initialize","inputs":[{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"},{"name":"decimals_","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"nonces","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"permit","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"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":"amount","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":"amount","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}],"bytecode":{"object":"0x60808060405234601557610e0c908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816306fdde0314610a1c57508063095ea7b3146109a35780631624f6c61461066057806318160ddd1461064357806323b872dd14610549578063313ce567146105295780633644e5151461050757806370a08231146104cf5780637ecebe001461049757806395d89b41146103d0578063a9059cbb1461032d578063d505accf146100ff5763dd62ed3e146100ab575f80fd5b346100fb5760403660031901126100fb576100c4610ad2565b6100cc610ae8565b6001600160a01b039182165f908152600560209081526040808320949093168252928352819020549051908152f35b5f80fd5b346100fb5760e03660031901126100fb57610118610ad2565b610120610ae8565b604435606435916084359260ff84168094036100fb574281106102e857610145610bae565b6001600160a01b039095165f818152600860205260409020805496919590915f1988146102d4576020945f9460809460018b01905560405190878201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a604084015260018060a01b03169a8b6060840152898784015260a083015260c082015260c081526101d860e082610afe565b519020604051908682019261190160f01b84526022830152604282015260428152610204606282610afe565b519020906040519182528482015260a435604082015260c435606082015282805260015afa156102c9575f516001600160a01b0316801515806102c0575b1561028a577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916020915f526005825260405f20855f5282528060405f2055604051908152a3005b60405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b6044820152606490fd5b50828114610242565b6040513d5f823e3d90fd5b634e487b7160e01b5f52601160045260245ffd5b60405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606490fd5b346100fb5760403660031901126100fb57610346610ad2565b60243590335f5260046020526103608260405f2054610ce4565b335f52600460205260405f205560018060a01b031690815f52600460205261038c8160405f2054610d3d565b825f52600460205260405f20556040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203392a3602060405160018152f35b346100fb575f3660031901126100fb576040515f6001546103f081610b76565b80845290600181169081156104735750600114610428575b6104248361041881850382610afe565b60405191829182610aa8565b0390f35b91905060015f525f516020610db75f395f51905f52915f905b80821061045957509091508101602001610418610408565b919260018160209254838588010152019101909291610441565b60ff191660208086019190915291151560051b840190910191506104189050610408565b346100fb5760203660031901126100fb576001600160a01b036104b8610ad2565b165f526008602052602060405f2054604051908152f35b346100fb5760203660031901126100fb576001600160a01b036104f0610ad2565b165f526004602052602060405f2054604051908152f35b346100fb575f3660031901126100fb576020610521610bae565b604051908152f35b346100fb575f3660031901126100fb57602060ff60025416604051908152f35b346100fb5760603660031901126100fb57610562610ad2565b61056a610ae8565b6001600160a01b039091165f818152600560209081526040808320338452825290912054604435937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9291856001820161061e575b5050835f52600482526105d68560405f2054610ce4565b845f526004835260405f205560018060a01b031693845f52600482526106008160405f2054610d3d565b855f526004835260405f2055604051908152a3602060405160018152f35b61062791610ce4565b5f858152600584526040808220338352855290205585856105bf565b346100fb575f3660031901126100fb576020600354604051908152f35b346100fb5760603660031901126100fb5760043567ffffffffffffffff81116100fb57610691903690600401610b20565b60243567ffffffffffffffff81116100fb576106b1903690600401610b20565b60443560ff81168091036100fb5760ff6009541661096857825167ffffffffffffffff8111610876576106e45f54610b76565b601f8111610901575b506020601f821160011461089557819293945f9261088a575b50508160011b915f199060031b1c1916175f555b815167ffffffffffffffff811161087657610736600154610b76565b601f811161080e575b50602092601f82116001146107a257928192935f92610797575b50508160011b915f199060031b1c1916176001555b60ff19600254161760025546600655610785610bc8565b6007556009805460ff19166001179055005b015190508380610759565b601f1982169360015f525f516020610db75f395f51905f52915f5b8681106107f657508360019596106107de575b505050811b0160015561076e565b01515f1960f88460031b161c191690558380806107d0565b919260206001819286850151815501940192016107bd565b60015f52601f820160051c5f516020610db75f395f51905f52019060208310610861575b601f0160051c5f516020610db75f395f51905f5201905b818110610856575061073f565b5f8155600101610849565b5f516020610db75f395f51905f529150610832565b634e487b7160e01b5f52604160045260245ffd5b015190508480610706565b601f198216905f80525f516020610d975f395f51905f52915f5b8181106108e9575095836001959697106108d1575b505050811b015f5561071a565b01515f1960f88460031b161c191690558480806108c4565b9192602060018192868b0151815501940192016108af565b5f8052601f820160051c5f516020610d975f395f51905f52019060208310610953575b601f0160051c5f516020610d975f395f51905f5201905b81811061094857506106ed565b5f815560010161093b565b5f516020610d975f395f51905f529150610924565b60405162461bcd60e51b81526020600482015260136024820152721053149150511657d253925512505312569151606a1b6044820152606490fd5b346100fb5760403660031901126100fb576109bc610ad2565b335f8181526005602090815260408083206001600160a01b03909516808452948252918290206024359081905591519182527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a3602060405160018152f35b346100fb575f3660031901126100fb575f5f54610a3881610b76565b80845290600181169081156104735750600114610a5f576104248361041881850382610afe565b5f8080525f516020610d975f395f51905f52939250905b808210610a8e57509091508101602001610418610408565b919260018160209254838588010152019101909291610a76565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b03821682036100fb57565b602435906001600160a01b03821682036100fb57565b90601f8019910116810190811067ffffffffffffffff82111761087657604052565b81601f820112156100fb5780359067ffffffffffffffff82116108765760405192610b55601f8401601f191660200185610afe565b828452602083830101116100fb57815f926020809301838601378301015290565b90600182811c92168015610ba4575b6020831014610b9057565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610b85565b6006544603610bbd5760075490565b610bc5610bc8565b90565b6040515f905f549181610bda84610b76565b9182825260208201946001811690815f14610cc85750600114610c7e575b610c0492500382610afe565b51902060405160208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835260408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a08152610c7860c082610afe565b51902090565b505f80805290915f516020610d975f395f51905f525b818310610cac575050906020610c0492820101610bf8565b6020919350806001915483858801015201910190918392610c94565b60ff1916865250610c0492151560051b82016020019050610bf8565b90808210610cf85781039081116102d45790565b60405162461bcd60e51b815260206004820152601c60248201527f45524332303a207375627472616374696f6e20756e646572666c6f77000000006044820152606490fd5b908101908181116102d4578110610d515790565b60405162461bcd60e51b815260206004820152601860248201527f45524332303a206164646974696f6e206f766572666c6f7700000000000000006044820152606490fdfe290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563b10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6a26469706673582212207bc18d6111241599ac42e2f08bbb23d9e8dc9449368325c017085997bf0db86e64736f6c634300081b0033","sourceMap":"369:7950:20:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f3560e01c90816306fdde0314610a1c57508063095ea7b3146109a35780631624f6c61461066057806318160ddd1461064357806323b872dd14610549578063313ce567146105295780633644e5151461050757806370a08231146104cf5780637ecebe001461049757806395d89b41146103d0578063a9059cbb1461032d578063d505accf146100ff5763dd62ed3e146100ab575f80fd5b346100fb5760403660031901126100fb576100c4610ad2565b6100cc610ae8565b6001600160a01b039182165f908152600560209081526040808320949093168252928352819020549051908152f35b5f80fd5b346100fb5760e03660031901126100fb57610118610ad2565b610120610ae8565b604435606435916084359260ff84168094036100fb574281106102e857610145610bae565b6001600160a01b039095165f818152600860205260409020805496919590915f1988146102d4576020945f9460809460018b01905560405190878201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a604084015260018060a01b03169a8b6060840152898784015260a083015260c082015260c081526101d860e082610afe565b519020604051908682019261190160f01b84526022830152604282015260428152610204606282610afe565b519020906040519182528482015260a435604082015260c435606082015282805260015afa156102c9575f516001600160a01b0316801515806102c0575b1561028a577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916020915f526005825260405f20855f5282528060405f2055604051908152a3005b60405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b6044820152606490fd5b50828114610242565b6040513d5f823e3d90fd5b634e487b7160e01b5f52601160045260245ffd5b60405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606490fd5b346100fb5760403660031901126100fb57610346610ad2565b60243590335f5260046020526103608260405f2054610ce4565b335f52600460205260405f205560018060a01b031690815f52600460205261038c8160405f2054610d3d565b825f52600460205260405f20556040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203392a3602060405160018152f35b346100fb575f3660031901126100fb576040515f6001546103f081610b76565b80845290600181169081156104735750600114610428575b6104248361041881850382610afe565b60405191829182610aa8565b0390f35b91905060015f525f516020610db75f395f51905f52915f905b80821061045957509091508101602001610418610408565b919260018160209254838588010152019101909291610441565b60ff191660208086019190915291151560051b840190910191506104189050610408565b346100fb5760203660031901126100fb576001600160a01b036104b8610ad2565b165f526008602052602060405f2054604051908152f35b346100fb5760203660031901126100fb576001600160a01b036104f0610ad2565b165f526004602052602060405f2054604051908152f35b346100fb575f3660031901126100fb576020610521610bae565b604051908152f35b346100fb575f3660031901126100fb57602060ff60025416604051908152f35b346100fb5760603660031901126100fb57610562610ad2565b61056a610ae8565b6001600160a01b039091165f818152600560209081526040808320338452825290912054604435937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9291856001820161061e575b5050835f52600482526105d68560405f2054610ce4565b845f526004835260405f205560018060a01b031693845f52600482526106008160405f2054610d3d565b855f526004835260405f2055604051908152a3602060405160018152f35b61062791610ce4565b5f858152600584526040808220338352855290205585856105bf565b346100fb575f3660031901126100fb576020600354604051908152f35b346100fb5760603660031901126100fb5760043567ffffffffffffffff81116100fb57610691903690600401610b20565b60243567ffffffffffffffff81116100fb576106b1903690600401610b20565b60443560ff81168091036100fb5760ff6009541661096857825167ffffffffffffffff8111610876576106e45f54610b76565b601f8111610901575b506020601f821160011461089557819293945f9261088a575b50508160011b915f199060031b1c1916175f555b815167ffffffffffffffff811161087657610736600154610b76565b601f811161080e575b50602092601f82116001146107a257928192935f92610797575b50508160011b915f199060031b1c1916176001555b60ff19600254161760025546600655610785610bc8565b6007556009805460ff19166001179055005b015190508380610759565b601f1982169360015f525f516020610db75f395f51905f52915f5b8681106107f657508360019596106107de575b505050811b0160015561076e565b01515f1960f88460031b161c191690558380806107d0565b919260206001819286850151815501940192016107bd565b60015f52601f820160051c5f516020610db75f395f51905f52019060208310610861575b601f0160051c5f516020610db75f395f51905f5201905b818110610856575061073f565b5f8155600101610849565b5f516020610db75f395f51905f529150610832565b634e487b7160e01b5f52604160045260245ffd5b015190508480610706565b601f198216905f80525f516020610d975f395f51905f52915f5b8181106108e9575095836001959697106108d1575b505050811b015f5561071a565b01515f1960f88460031b161c191690558480806108c4565b9192602060018192868b0151815501940192016108af565b5f8052601f820160051c5f516020610d975f395f51905f52019060208310610953575b601f0160051c5f516020610d975f395f51905f5201905b81811061094857506106ed565b5f815560010161093b565b5f516020610d975f395f51905f529150610924565b60405162461bcd60e51b81526020600482015260136024820152721053149150511657d253925512505312569151606a1b6044820152606490fd5b346100fb5760403660031901126100fb576109bc610ad2565b335f8181526005602090815260408083206001600160a01b03909516808452948252918290206024359081905591519182527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a3602060405160018152f35b346100fb575f3660031901126100fb575f5f54610a3881610b76565b80845290600181169081156104735750600114610a5f576104248361041881850382610afe565b5f8080525f516020610d975f395f51905f52939250905b808210610a8e57509091508101602001610418610408565b919260018160209254838588010152019101909291610a76565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b03821682036100fb57565b602435906001600160a01b03821682036100fb57565b90601f8019910116810190811067ffffffffffffffff82111761087657604052565b81601f820112156100fb5780359067ffffffffffffffff82116108765760405192610b55601f8401601f191660200185610afe565b828452602083830101116100fb57815f926020809301838601378301015290565b90600182811c92168015610ba4575b6020831014610b9057565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610b85565b6006544603610bbd5760075490565b610bc5610bc8565b90565b6040515f905f549181610bda84610b76565b9182825260208201946001811690815f14610cc85750600114610c7e575b610c0492500382610afe565b51902060405160208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835260408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a08152610c7860c082610afe565b51902090565b505f80805290915f516020610d975f395f51905f525b818310610cac575050906020610c0492820101610bf8565b6020919350806001915483858801015201910190918392610c94565b60ff1916865250610c0492151560051b82016020019050610bf8565b90808210610cf85781039081116102d45790565b60405162461bcd60e51b815260206004820152601c60248201527f45524332303a207375627472616374696f6e20756e646572666c6f77000000006044820152606490fd5b908101908181116102d4578110610d515790565b60405162461bcd60e51b815260206004820152601860248201527f45524332303a206164646974696f6e206f766572666c6f7700000000000000006044820152606490fdfe290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563b10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6a26469706673582212207bc18d6111241599ac42e2f08bbb23d9e8dc9449368325c017085997bf0db86e64736f6c634300081b0033","sourceMap":"369:7950:20:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;369:7950:20;;;;;;:::i;:::-;;;:::i;:::-;-1:-1:-1;;;;;369:7950:20;;;;;;;1659:10;369:7950;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;369:7950:20;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;4416:15;4404:27;;369:7950;;4617:18;;:::i;:::-;-1:-1:-1;;;;;369:7950:20;;;;;;;5026:6;369:7950;;;;;;;;;;;;-1:-1:-1;;369:7950:20;;;;;;;;;;;;;;;;;4692:413;;;;369:7950;4732:157;369:7950;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4692:413;;;369:7950;4692:413;;:::i;:::-;369:7950;4657:470;;369:7950;;4547:598;;;;369:7950;;;;;;;;;;;;;;;4547:598;;;;;;:::i;:::-;369:7950;4520:639;;369:7950;;;;;;;;;;;;;;;;;;;;;;4497:717;;;369:7950;4497:717;;;;;369:7950;4497:717;-1:-1:-1;;;;;369:7950:20;5233:30;;;;:59;;369:7950;;;;5383:31;369:7950;;;;;5322:10;369:7950;;;;;;-1:-1:-1;369:7950:20;;;;;-1:-1:-1;369:7950:20;;;;;;;5383:31;369:7950;;;;-1:-1:-1;;;369:7950:20;;;;;;;;;;;;-1:-1:-1;;;369:7950:20;;;;;;;5233:59;5267:25;;;;5233:59;;4497:717;369:7950;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;369:7950:20;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;369:7950:20;;;;;;:::i;:::-;;;3420:10;;369:7950;;;;;3404:36;369:7950;;;;;3404:36;:::i;:::-;3420:10;369:7950;;;;;;;;;;;;;;;;;;;;;;3467:28;369:7950;;;;;3467:28;:::i;:::-;369:7950;;;;;;;;;;;;;;;3511:32;369:7950;3420:10;3511:32;;369:7950;;;;;;;;;;;;;-1:-1:-1;;369:7950:20;;;;;;;857:7;369:7950;;;;:::i;:::-;;;;;857:7;369:7950;;;857:7;;;;369:7950;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;857:7;369:7950;;-1:-1:-1;;;;;;;;;;;369:7950:20;;;;;;;;;-1:-1:-1;369:7950:20;;-1:-1:-1;369:7950:20;;;;;;;;;;857:7;369:7950;;;;;;;;;;;;;;;;;;;-1:-1:-1;;369:7950:20;;;;;;;;;;;;;;;;;;;;-1:-1:-1;369:7950:20;;-1:-1:-1;369:7950:20;;;;;;;;-1:-1:-1;;369:7950:20;;;;-1:-1:-1;;;;;369:7950:20;;:::i;:::-;;;;1970:41;369:7950;;;;;;;;;;;;;;;;;;;-1:-1:-1;;369:7950:20;;;;-1:-1:-1;;;;;369:7950:20;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;369:7950:20;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;369:7950:20;;;;;;953:9;369:7950;;;;;;;;;;;;;;-1:-1:-1;;369:7950:20;;;;;;:::i;:::-;;;:::i;:::-;-1:-1:-1;;;;;369:7950:20;;;;;;;3709:10;369:7950;;;;;;;;3726:10;369:7950;;;;;;;;;;;3995:26;;369:7950;;;3788:22;;3784:80;;369:7950;;;;;;;;;3894:30;369:7950;;;;;3894:30;:::i;:::-;369:7950;;;;;;;;;;;;;;;;;;;;;;;3951:28;369:7950;;;;;3951:28;:::i;:::-;369:7950;;;;;;;;;;;;;;;3995:26;369:7950;;;;;;;3784:80;3843:21;;;:::i;:::-;369:7950;;;;3709:10;369:7950;;;;;;3726:10;369:7950;;;;;;;3784:80;;;;369:7950;;;;;;-1:-1:-1;;369:7950:20;;;;;1403:12;369:7950;;;;;;;;;;;;;-1:-1:-1;;369:7950:20;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;2611:11;369:7950;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2680:17;369:7950;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2680:17;369:7950;;;;;;;;;;;2680:17;369:7950;;;;2707:21;369:7950;;;2707:21;369:7950;7884:53;2739:33;369:7950;2809:24;;:::i;:::-;2782:51;369:7950;2611:11;369:7950;;-1:-1:-1;;369:7950:20;2680:17;369:7950;;;;;;;;-1:-1:-1;369:7950:20;;;;;;;;;;2680:17;369:7950;;-1:-1:-1;;;;;;;;;;;369:7950:20;;;;;;;;;;2680:17;369:7950;;;;;;;;;;;;2680:17;369:7950;;;;;;;;;;;;;;;;;;;;;;;;;;;2680:17;369:7950;;;;;;;;;;;;;;;;2680:17;369:7950;;;;;;;-1:-1:-1;;;;;;;;;;;369:7950:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;369:7950:20;;;;;;;;;;;;;;;2680:17;369:7950;;;;-1:-1:-1;;;;;;;;;;;369:7950:20;-1:-1:-1;369:7950:20;;;;;;;;;;;;;;;;;;-1:-1:-1;369:7950:20;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;369:7950:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;369:7950:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;369:7950:20;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;369:7950:20;-1:-1:-1;369:7950:20;;;;;-1:-1:-1;;;369:7950:20;;;;;;;;;;;;-1:-1:-1;;;369:7950:20;;;;;;;;;;;;;-1:-1:-1;;369:7950:20;;;;;;:::i;:::-;3167:10;369:7950;;;;3156:10;369:7950;;;;;;;;-1:-1:-1;;;;;369:7950:20;;;;;;;;;;;;;;;;;;;;;;;;3212:37;;;369:7950;;;;;;;;;;;;;-1:-1:-1;;369:7950:20;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;;;;;;369:7950:20;;-1:-1:-1;369:7950:20;;;;;;;-1:-1:-1;369:7950:20;;-1:-1:-1;369:7950:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;369:7950:20;;;;:::o;:::-;;;;-1:-1:-1;;;;;369:7950:20;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;369:7950:20;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;369:7950:20;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;369:7950:20;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;5427:178;5528:16;369:7950;7884:53;5510:34;:88;;5547:24;369:7950;5427:178;:::o;5510:88::-;5574:24;;:::i;:::-;5427:178;:::o;5611:404::-;369:7950;;5882:5;369:7950;5882:5;369:7950;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5866:23;;369:7950;;;5725:273;;369:7950;5753:95;369:7950;;;;;;5907:14;369:7950;;;;7884:53;369:7950;;;;5979:4;369:7950;;;;;5725:273;;;;;;:::i;:::-;369:7950;5702:306;;5611:404;:::o;369:7950::-;-1:-1:-1;5882:5:20;369:7950;;;;;-1:-1:-1;;;;;;;;;;;369:7950:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;369:7950:20;;;-1:-1:-1;369:7950:20;;;;;;;;;;;-1:-1:-1;369:7950:20;;7038:154;;7124:6;;;369:7950;;;;;;;;;7038:154;:::o;369:7950::-;;;-1:-1:-1;;;369:7950:20;;;;;;;;;;;;;;;;;;;;6859:173;;369:7950;;;;;;;;6972:6;;369:7950;;6859:173;:::o;369:7950::-;;;-1:-1:-1;;;369:7950:20;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","initialize(string,string,uint8)":"1624f6c6","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"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\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"amount\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Forked from: https://github.com/transmissions11/solmate/blob/0384dbaaa4fcb5715738a9254a7c0a4cb62cf458/src/tokens/ERC20.sol\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set, where `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`).\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Be aware of front-running risks: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\"},\"initialize(string,string,uint8)\":{\"details\":\"To hide constructor warnings across solc versions due to different constructor visibility requirements and syntaxes, we add an initialization function that can be called only once.\"}},\"stateVariables\":{\"initialized\":{\"details\":\"A bool to track whether the contract has been initialized.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowance(address,address)\":{\"notice\":\"Returns the remaining number of tokens that `spender` is allowed to spend on behalf of `owner`\"},\"approve(address,uint256)\":{\"notice\":\"Sets `amount` as the allowance of `spender` over the caller's tokens.\"},\"decimals()\":{\"notice\":\"Returns the decimals places of the token.\"},\"name()\":{\"notice\":\"Returns the name of the token.\"},\"symbol()\":{\"notice\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"notice\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"notice\":\"Moves `amount` tokens from the caller's account to `to`.\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance.\"}},\"notice\":\"This is a mock contract of the ERC20 standard for testing purposes only, it SHOULD NOT be used in production.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/mocks/MockERC20.sol\":\"MockERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"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":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"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":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"owner","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":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"permit"},{"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":"amount","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":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"Be aware of front-running risks: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729"},"initialize(string,string,uint8)":{"details":"To hide constructor warnings across solc versions due to different constructor visibility requirements and syntaxes, we add an initialization function that can be called only once."}},"version":1},"userdoc":{"kind":"user","methods":{"allowance(address,address)":{"notice":"Returns the remaining number of tokens that `spender` is allowed to spend on behalf of `owner`"},"approve(address,uint256)":{"notice":"Sets `amount` as the allowance of `spender` over the caller's tokens."},"decimals()":{"notice":"Returns the decimals places of the token."},"name()":{"notice":"Returns the name of the token."},"symbol()":{"notice":"Returns the symbol of the token."},"totalSupply()":{"notice":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"notice":"Moves `amount` tokens from the caller's account to `to`."},"transferFrom(address,address,uint256)":{"notice":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/mocks/MockERC20.sol":"MockERC20"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"}},"version":1},"id":20} \ No newline at end of file diff --git a/evm/out/MockERC721.sol/IERC721TokenReceiver.json b/evm/out/MockERC721.sol/IERC721TokenReceiver.json deleted file mode 100644 index 2e69d60..0000000 --- a/evm/out/MockERC721.sol/IERC721TokenReceiver.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"onERC721Received","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"onERC721Received(address,address,uint256,bytes)":"150b7a02"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/mocks/MockERC721.sol\":\"IERC721TokenReceiver\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/mocks/MockERC721.sol":"IERC721TokenReceiver"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"}},"version":1},"id":21} \ No newline at end of file diff --git a/evm/out/MockERC721.sol/MockERC721.json b/evm/out/MockERC721.sol/MockERC721.json deleted file mode 100644 index b27b465..0000000 --- a/evm/out/MockERC721.sol/MockERC721.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"owner","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"Approval","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_operator","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"_from","type":"address","indexed":true,"internalType":"address"},{"name":"_to","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x60808060405234601557610e8c908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714610a1d5750806306fdde031461098e578063081812fc1461095c578063095ea7b3146108a657806323b872dd1461089457806342842e0e146107d55780634cd88b76146104bd5780636352211e1461044f57806370a08231146103dd57806395d89b411461030e578063a22cb46514610285578063b88d4fde14610155578063c87b56dd146101115763e985e9c5146100b6575f80fd5b3461010d57604036600319011261010d576100cf610aac565b6100d7610ac2565b9060018060a01b03165f52600560205260405f209060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b5f80fd5b3461010d57602036600319011261010d5760405160208152602081816060518082840152806080604085015e5f8382018301830152601f01601f1916820101030190f35b608036600319011261010d57610169610aac565b610171610ac2565b6044359060643567ffffffffffffffff811161010d573660238201121561010d576101a6903690602481600401359101610b34565b906101b2838286610c0d565b803b159283156101c8575b6101c684610dd7565b005b604051630a85bd0160e11b81523360048201526001600160a01b03909516602486015260448501526080606485015260209250839182905f908290610211906084830190610a88565b03926001600160a01b03165af1801561027a576101c6915f9161024b575b506001600160e01b031916630a85bd0160e11b148280806101bd565b61026d915060203d602011610273575b6102658183610b12565b810190610db7565b8261022f565b503d61025b565b6040513d5f823e3d90fd5b3461010d57604036600319011261010d5761029e610aac565b6024359081151580920361010d57335f52600560205260405f2060018060a01b0382165f5260205260405f2060ff1981541660ff841617905560405191825260018060a01b0316907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b3461010d575f36600319011261010d576040515f60015461032e81610b98565b80845290600181169081156103b9575060011461036e575b61036a8361035681850382610b12565b604051918291602083526020830190610a88565b0390f35b91905060015f525f516020610e375f395f51905f52915f905b80821061039f57509091508101602001610356610346565b919260018160209254838588010152019101909291610387565b60ff191660208086019190915291151560051b840190910191506103569050610346565b3461010d57602036600319011261010d576001600160a01b036103fe610aac565b16801561041b575f526003602052602060405f2054604051908152f35b60405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606490fd5b3461010d57602036600319011261010d576004355f908152600260205260409020546001600160a01b0316801561048b57602090604051908152f35b60405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b6044820152606490fd5b3461010d57604036600319011261010d5760043567ffffffffffffffff811161010d576104ee903690600401610b7a565b60243567ffffffffffffffff811161010d5761050e903690600401610b7a565b60ff6006541661079a57815167ffffffffffffffff81116106aa576105335f54610b98565b601f8111610733575b50602092601f82116001146106c957928192935f926106be575b50508160011b915f199060031b1c1916175f555b805167ffffffffffffffff81116106aa57610586600154610b98565b601f8111610642575b50602091601f82116001146105d7579181925f926105cc575b50508160011b915f199060031b1c1916176001555b6006805460ff19166001179055005b0151905082806105a8565b601f1982169260015f525f516020610e375f395f51905f52915f5b85811061062a57508360019510610612575b505050811b016001556105bd565b01515f1960f88460031b161c19169055828080610604565b919260206001819286850151815501940192016105f2565b60015f52601f820160051c5f516020610e375f395f51905f52019060208310610695575b601f0160051c5f516020610e375f395f51905f5201905b81811061068a575061058f565b5f815560010161067d565b5f516020610e375f395f51905f529150610666565b634e487b7160e01b5f52604160045260245ffd5b015190508380610556565b601f198216935f80525f516020610e175f395f51905f52915f5b86811061071b5750836001959610610703575b505050811b015f5561056a565b01515f1960f88460031b161c191690558380806106f6565b919260206001819286850151815501940192016106e3565b5f8052601f820160051c5f516020610e175f395f51905f52019060208310610785575b601f0160051c5f516020610e175f395f51905f5201905b81811061077a575061053c565b5f815560010161076d565b5f516020610e175f395f51905f529150610756565b60405162461bcd60e51b81526020600482015260136024820152721053149150511657d253925512505312569151606a1b6044820152606490fd5b6107de36610ad8565b6107eb8183859495610c0d565b823b159182156107ff575b6101c683610dd7565b604051630a85bd0160e11b81523360048201526001600160a01b0391821660248201526044810192909252608060648301525f60848301819052919360209350849260a4928492165af1801561027a576101c6915f91610875575b506001600160e01b031916630a85bd0160e11b1482806107f6565b61088e915060203d602011610273576102658183610b12565b8261085a565b6101c66108a036610ad8565b91610c0d565b604036600319011261010d576108ba610aac565b60243590815f52600260205260018060a01b0360405f20541690813314801561093a575b6108e790610bd0565b5f83815260046020526040812080546001600160a01b0319166001600160a01b039390931692831790559091907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259080a4005b505f82815260056020908152604080832033845290915290205460ff166108de565b3461010d57602036600319011261010d576004355f526004602052602060018060a01b0360405f205416604051908152f35b3461010d575f36600319011261010d576040515f5f546109ad81610b98565b80845290600181169081156103b957506001146109d45761036a8361035681850382610b12565b5f8080525f516020610e175f395f51905f52939250905b808210610a0357509091508101602001610356610346565b9192600181602092548385880101520191019092916109eb565b3461010d57602036600319011261010d576004359063ffffffff60e01b821680920361010d576020916301ffc9a760e01b8114908115610a77575b8115610a66575b5015158152f35b635b5e139f60e01b14905083610a5f565b6380ac58cd60e01b81149150610a58565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361010d57565b602435906001600160a01b038216820361010d57565b606090600319011261010d576004356001600160a01b038116810361010d57906024356001600160a01b038116810361010d579060443590565b90601f8019910116810190811067ffffffffffffffff8211176106aa57604052565b92919267ffffffffffffffff82116106aa5760405191610b5e601f8201601f191660200184610b12565b82948184528183011161010d578281602093845f960137010152565b9080601f8301121561010d57816020610b9593359101610b34565b90565b90600182811c92168015610bc6575b6020831014610bb257565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610ba7565b15610bd757565b60405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606490fd5b5f838152600260205260409020546001600160a01b039182169291168203610d85576001600160a01b0316908115610d4c578033148015610d2a575b8015610d0b575b610c5990610bd0565b805f52600360205260405f2080548015610cf7575f19019055815f52600360205260405f2080545f198114610cf7576001019055825f52600260205260405f20826bffffffffffffffffffffffff60a01b825416179055825f52600460205260405f206bffffffffffffffffffffffff60a01b81541690557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4565b634e487b7160e01b5f52601160045260245ffd5b505f838152600460205260409020546001600160a01b03163314610c50565b505f81815260056020908152604080832033845290915290205460ff16610c49565b60405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606490fd5b60405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b6044820152606490fd5b9081602091031261010d57516001600160e01b03198116810361010d5790565b15610dde57565b60405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606490fdfe290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563b10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6a2646970667358221220ce9e4d7d81a3950314284aa6d6efd2c6ef90cca76b8f3e3d6835e8b75778531764736f6c634300081b0033","sourceMap":"381:7498:21:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714610a1d5750806306fdde031461098e578063081812fc1461095c578063095ea7b3146108a657806323b872dd1461089457806342842e0e146107d55780634cd88b76146104bd5780636352211e1461044f57806370a08231146103dd57806395d89b411461030e578063a22cb46514610285578063b88d4fde14610155578063c87b56dd146101115763e985e9c5146100b6575f80fd5b3461010d57604036600319011261010d576100cf610aac565b6100d7610ac2565b9060018060a01b03165f52600560205260405f209060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b5f80fd5b3461010d57602036600319011261010d5760405160208152602081816060518082840152806080604085015e5f8382018301830152601f01601f1916820101030190f35b608036600319011261010d57610169610aac565b610171610ac2565b6044359060643567ffffffffffffffff811161010d573660238201121561010d576101a6903690602481600401359101610b34565b906101b2838286610c0d565b803b159283156101c8575b6101c684610dd7565b005b604051630a85bd0160e11b81523360048201526001600160a01b03909516602486015260448501526080606485015260209250839182905f908290610211906084830190610a88565b03926001600160a01b03165af1801561027a576101c6915f9161024b575b506001600160e01b031916630a85bd0160e11b148280806101bd565b61026d915060203d602011610273575b6102658183610b12565b810190610db7565b8261022f565b503d61025b565b6040513d5f823e3d90fd5b3461010d57604036600319011261010d5761029e610aac565b6024359081151580920361010d57335f52600560205260405f2060018060a01b0382165f5260205260405f2060ff1981541660ff841617905560405191825260018060a01b0316907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b3461010d575f36600319011261010d576040515f60015461032e81610b98565b80845290600181169081156103b9575060011461036e575b61036a8361035681850382610b12565b604051918291602083526020830190610a88565b0390f35b91905060015f525f516020610e375f395f51905f52915f905b80821061039f57509091508101602001610356610346565b919260018160209254838588010152019101909291610387565b60ff191660208086019190915291151560051b840190910191506103569050610346565b3461010d57602036600319011261010d576001600160a01b036103fe610aac565b16801561041b575f526003602052602060405f2054604051908152f35b60405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606490fd5b3461010d57602036600319011261010d576004355f908152600260205260409020546001600160a01b0316801561048b57602090604051908152f35b60405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b6044820152606490fd5b3461010d57604036600319011261010d5760043567ffffffffffffffff811161010d576104ee903690600401610b7a565b60243567ffffffffffffffff811161010d5761050e903690600401610b7a565b60ff6006541661079a57815167ffffffffffffffff81116106aa576105335f54610b98565b601f8111610733575b50602092601f82116001146106c957928192935f926106be575b50508160011b915f199060031b1c1916175f555b805167ffffffffffffffff81116106aa57610586600154610b98565b601f8111610642575b50602091601f82116001146105d7579181925f926105cc575b50508160011b915f199060031b1c1916176001555b6006805460ff19166001179055005b0151905082806105a8565b601f1982169260015f525f516020610e375f395f51905f52915f5b85811061062a57508360019510610612575b505050811b016001556105bd565b01515f1960f88460031b161c19169055828080610604565b919260206001819286850151815501940192016105f2565b60015f52601f820160051c5f516020610e375f395f51905f52019060208310610695575b601f0160051c5f516020610e375f395f51905f5201905b81811061068a575061058f565b5f815560010161067d565b5f516020610e375f395f51905f529150610666565b634e487b7160e01b5f52604160045260245ffd5b015190508380610556565b601f198216935f80525f516020610e175f395f51905f52915f5b86811061071b5750836001959610610703575b505050811b015f5561056a565b01515f1960f88460031b161c191690558380806106f6565b919260206001819286850151815501940192016106e3565b5f8052601f820160051c5f516020610e175f395f51905f52019060208310610785575b601f0160051c5f516020610e175f395f51905f5201905b81811061077a575061053c565b5f815560010161076d565b5f516020610e175f395f51905f529150610756565b60405162461bcd60e51b81526020600482015260136024820152721053149150511657d253925512505312569151606a1b6044820152606490fd5b6107de36610ad8565b6107eb8183859495610c0d565b823b159182156107ff575b6101c683610dd7565b604051630a85bd0160e11b81523360048201526001600160a01b0391821660248201526044810192909252608060648301525f60848301819052919360209350849260a4928492165af1801561027a576101c6915f91610875575b506001600160e01b031916630a85bd0160e11b1482806107f6565b61088e915060203d602011610273576102658183610b12565b8261085a565b6101c66108a036610ad8565b91610c0d565b604036600319011261010d576108ba610aac565b60243590815f52600260205260018060a01b0360405f20541690813314801561093a575b6108e790610bd0565b5f83815260046020526040812080546001600160a01b0319166001600160a01b039390931692831790559091907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259080a4005b505f82815260056020908152604080832033845290915290205460ff166108de565b3461010d57602036600319011261010d576004355f526004602052602060018060a01b0360405f205416604051908152f35b3461010d575f36600319011261010d576040515f5f546109ad81610b98565b80845290600181169081156103b957506001146109d45761036a8361035681850382610b12565b5f8080525f516020610e175f395f51905f52939250905b808210610a0357509091508101602001610356610346565b9192600181602092548385880101520191019092916109eb565b3461010d57602036600319011261010d576004359063ffffffff60e01b821680920361010d576020916301ffc9a760e01b8114908115610a77575b8115610a66575b5015158152f35b635b5e139f60e01b14905083610a5f565b6380ac58cd60e01b81149150610a58565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361010d57565b602435906001600160a01b038216820361010d57565b606090600319011261010d576004356001600160a01b038116810361010d57906024356001600160a01b038116810361010d579060443590565b90601f8019910116810190811067ffffffffffffffff8211176106aa57604052565b92919267ffffffffffffffff82116106aa5760405191610b5e601f8201601f191660200184610b12565b82948184528183011161010d578281602093845f960137010152565b9080601f8301121561010d57816020610b9593359101610b34565b90565b90600182811c92168015610bc6575b6020831014610bb257565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610ba7565b15610bd757565b60405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606490fd5b5f838152600260205260409020546001600160a01b039182169291168203610d85576001600160a01b0316908115610d4c578033148015610d2a575b8015610d0b575b610c5990610bd0565b805f52600360205260405f2080548015610cf7575f19019055815f52600360205260405f2080545f198114610cf7576001019055825f52600260205260405f20826bffffffffffffffffffffffff60a01b825416179055825f52600460205260405f206bffffffffffffffffffffffff60a01b81541690557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4565b634e487b7160e01b5f52601160045260245ffd5b505f838152600460205260409020546001600160a01b03163314610c50565b505f81815260056020908152604080832033845290915290205460ff16610c49565b60405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606490fd5b60405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b6044820152606490fd5b9081602091031261010d57516001600160e01b03198116810361010d5790565b15610dde57565b60405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606490fdfe290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563b10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6a2646970667358221220ce9e4d7d81a3950314284aa6d6efd2c6ef90cca76b8f3e3d6835e8b75778531764736f6c634300081b0033","sourceMap":"381:7498:21:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;381:7498:21;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;2173:17;381:7498;;;;;2173:34;381:7498;;;;;;-1:-1:-1;381:7498:21;;;;;;-1:-1:-1;381:7498:21;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;381:7498:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;381:7498:21;;;;;;;;;;;-1:-1:-1;;381:7498:21;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4907:2;;;;;;:::i;:::-;7774:65;;7856:14;;;;4942:175;;381:7498;4921:238;;;:::i;:::-;381:7498;4942:175;381:7498;;-1:-1:-1;;;4978:69:21;;5020:10;381:7498;4978:69;;381:7498;-1:-1:-1;;;;;381:7498:21;;;;;;;;;;;;;;;;;;-1:-1:-1;381:7498:21;;;;;;;;;;;;;;;:::i;:::-;4978:69;;-1:-1:-1;;;;;381:7498:21;4978:69;;;;;;4921:238;4978:69;381:7498;4978:69;;;4942:175;-1:-1:-1;;;;;;;381:7498:21;-1:-1:-1;;;4978:139:21;4942:175;;;;;4978:69;;;;381:7498;4978:69;381:7498;4978:69;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;381:7498;;;;;;;;;;;;;;;-1:-1:-1;;381:7498:21;;;;;;:::i;:::-;;;;;;;;;;;;3525:10;381:7498;;3507:17;381:7498;;;;;;;;;;;;-1:-1:-1;381:7498:21;;;;-1:-1:-1;381:7498:21;;;;;;;;;;;;;;;;;;;;;;;3525:10;3573:46;381:7498;3525:10;3573:46;;381:7498;;;;;;;-1:-1:-1;;381:7498:21;;;;;;;851:7;381:7498;;;;:::i;:::-;;;;;851:7;381:7498;;;851:7;;;;381:7498;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;851:7;381:7498;;-1:-1:-1;;;;;;;;;;;381:7498:21;;;;;;;;;-1:-1:-1;381:7498:21;;-1:-1:-1;381:7498:21;;;;;;;;;;851:7;381:7498;;;;;;;;;;;;;;;;;;;-1:-1:-1;;381:7498:21;;;;;;;;;;;;;;;;;;;;-1:-1:-1;381:7498:21;;-1:-1:-1;381:7498:21;;;;;;;;-1:-1:-1;;381:7498:21;;;;-1:-1:-1;;;;;381:7498:21;;:::i;:::-;;1521:19;;381:7498;;;;1575:10;381:7498;;;;;;;;;;;;;;;;-1:-1:-1;;;381:7498:21;;;;;;;;;;;;-1:-1:-1;;;381:7498:21;;;;;;;;;;;;;-1:-1:-1;;381:7498:21;;;;;;;;;;1367:8;381:7498;;;;;;-1:-1:-1;;;;;381:7498:21;1358:36;;381:7498;;;;;;;;;;;;;-1:-1:-1;;;381:7498:21;;;;;;;;;;;;-1:-1:-1;;;381:7498:21;;;;;;;;;;;;;-1:-1:-1;;381:7498:21;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;2796:11;381:7498;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2865:17;381:7498;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;2865:17;381:7498;;;;;;;;;;;2865:17;381:7498;;2796:11;381:7498;;-1:-1:-1;;381:7498:21;2865:17;381:7498;;;;;;;;-1:-1:-1;381:7498:21;;;;;;;;;;2865:17;381:7498;;-1:-1:-1;;;;;;;;;;;381:7498:21;;;;;;;;;;2865:17;381:7498;;;;;;;;;;;2865:17;381:7498;;;;;;;;;;;;;;;;;;;;;;;;;;;2865:17;381:7498;;;;;;;;;;;;;;;;2865:17;381:7498;;;;;;;-1:-1:-1;;;;;;;;;;;381:7498:21;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;381:7498:21;;;;;;;;;;;;;;;2865:17;381:7498;;;;-1:-1:-1;;;;;;;;;;;381:7498:21;-1:-1:-1;381:7498:21;;;;;;;;;;;;;;;;;;-1:-1:-1;381:7498:21;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;381:7498:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;381:7498:21;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;381:7498:21;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;381:7498:21;-1:-1:-1;381:7498:21;;;;;-1:-1:-1;;;381:7498:21;;;;;;;;;;;;-1:-1:-1;;;381:7498:21;;;;;;;;;;;:::i;:::-;4460:2;;;;;;;:::i;:::-;7774:65;;7856:14;;;;4495:173;;381:7498;4474:236;;;:::i;4495:173::-;381:7498;;-1:-1:-1;;;4531:67:21;;4573:10;381:7498;4531:67;;381:7498;-1:-1:-1;;;;;381:7498:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;381:7498:21;;4531:67;;381:7498;;;4531:67;;;;;;4474:236;4531:67;381:7498;4531:67;;;4495:173;-1:-1:-1;;;;;;;381:7498:21;-1:-1:-1;;;4531:137:21;4495:173;;;;4531:67;;;;381:7498;4531:67;381:7498;4531:67;;;;;;;:::i;:::-;;;;381:7498;;;;;:::i;:::-;;;:::i;:::-;;;-1:-1:-1;;381:7498:21;;;;;;:::i;:::-;;;;;;;3210:8;381:7498;;;;;;;;;;;;3241:10;;;:19;:59;;;;381:7498;3233:86;;;:::i;:::-;381:7498;;;;;;;;;;;;-1:-1:-1;;;;;;381:7498:21;-1:-1:-1;;;;;381:7498:21;;;;;;;;;;;3372:28;;;381:7498;3372:28;381:7498;3241:59;-1:-1:-1;381:7498:21;;;;3264:17;381:7498;;;;;;;;3241:10;381:7498;;;;;;;;;;3241:59;;381:7498;;;;;;-1:-1:-1;;381:7498:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;381:7498:21;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;;;;;;381:7498:21;;-1:-1:-1;381:7498:21;;;;;;;-1:-1:-1;381:7498:21;;-1:-1:-1;381:7498:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;381:7498:21;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5462:25:21;;;:100;;;;381:7498;5462:175;;;;381:7498;;;;;;;5462:175;-1:-1:-1;;;5612:25:21;;-1:-1:-1;5462:175:21;;;:100;-1:-1:-1;;;5537:25:21;;;-1:-1:-1;5462:100:21;;381:7498;;;;;;;;;;;;;;;;;-1:-1:-1;381:7498:21;;;;;;;;-1:-1:-1;;381:7498:21;;;;:::o;:::-;;;;-1:-1:-1;;;;;381:7498:21;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;381:7498:21;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;381:7498:21;;;;;;;;;-1:-1:-1;;;;;381:7498:21;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;381:7498:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;381:7498:21;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;381:7498:21;;;;;;;;;;;;-1:-1:-1;;;381:7498:21;;;;;;;3632:693;-1:-1:-1;381:7498:21;;;3750:8;381:7498;;;;;;-1:-1:-1;;;;;381:7498:21;;;;3632:693;381:7498;3742:20;;381:7498;;-1:-1:-1;;;;;381:7498:21;;3796:16;;381:7498;;3866:10;;:18;:57;;;;3632:693;3866:91;;;;3632:693;3845:152;;;:::i;:::-;381:7498;-1:-1:-1;381:7498:21;4173:10;381:7498;;;-1:-1:-1;381:7498:21;;;;;;;;;;;;;-1:-1:-1;381:7498:21;4173:10;381:7498;;;-1:-1:-1;381:7498:21;;;;;;;;;;;;;;-1:-1:-1;381:7498:21;3750:8;381:7498;;;-1:-1:-1;381:7498:21;;;;;;;;;;;;-1:-1:-1;381:7498:21;4264:12;381:7498;;;-1:-1:-1;381:7498:21;;;;;;;;;4296:22;-1:-1:-1;4296:22:21;;3632:693::o;381:7498::-;;;;-1:-1:-1;381:7498:21;;;;;-1:-1:-1;381:7498:21;3866:91;-1:-1:-1;;381:7498:21;;;3941:12;381:7498;;;;;;-1:-1:-1;;;;;381:7498:21;3866:10;3927:30;3866:91;;:57;-1:-1:-1;;381:7498:21;;;3888:17;381:7498;;;;;;;;3866:10;381:7498;;;;;;;;;;3866:57;;381:7498;;;-1:-1:-1;;;381:7498:21;;;;;;;;;;;;-1:-1:-1;;;381:7498:21;;;;;;;;;;-1:-1:-1;;;381:7498:21;;;;;;;;;;;;-1:-1:-1;;;381:7498:21;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;381:7498:21;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;381:7498:21;;;;;;;;;;;;-1:-1:-1;;;381:7498:21;;;;;;","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","initialize(string,string)":"4cd88b76","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Forked from: https://github.com/transmissions11/solmate/blob/0384dbaaa4fcb5715738a9254a7c0a4cb62cf458/src/tokens/ERC721.sol\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"This emits when the approved address for an NFT is changed or reaffirmed. The zero address indicates there is no approved address. When a Transfer event emits, this also indicates that the approved address for that NFT (if any) is reset to none.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"This emits when an operator is enabled or disabled for an owner. The operator can manage all NFTs of the owner.\"},\"Transfer(address,address,uint256)\":{\"details\":\"This emits when ownership of any NFT changes by any mechanism. This event emits when NFTs are created (`from` == 0) and destroyed (`to` == 0). Exception: during contract creation, any number of NFTs may be created and assigned without emitting Transfer. At the time of any transfer, the approved address for that NFT (if any) is reset to none.\"}},\"kind\":\"dev\",\"methods\":{\"initialize(string,string)\":{\"details\":\"To hide constructor warnings across solc versions due to different constructor visibility requirements and syntaxes, we add an initialization function that can be called only once.\"}},\"stateVariables\":{\"initialized\":{\"details\":\"A bool to track whether the contract has been initialized.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"name()\":{\"notice\":\"A descriptive name for a collection of NFTs in this contract\"},\"symbol()\":{\"notice\":\"An abbreviated name for NFTs in this contract\"}},\"notice\":\"This is a mock contract of the ERC721 standard for testing purposes only, it SHOULD NOT be used in production.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/mocks/MockERC721.sol\":\"MockERC721\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_approved","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_operator","type":"address","indexed":true},{"internalType":"bool","name":"_approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"_from","type":"address","indexed":true},{"internalType":"address","name":"_to","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"payable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"payable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"initialize(string,string)":{"details":"To hide constructor warnings across solc versions due to different constructor visibility requirements and syntaxes, we add an initialization function that can be called only once."}},"version":1},"userdoc":{"kind":"user","methods":{"name()":{"notice":"A descriptive name for a collection of NFTs in this contract"},"symbol()":{"notice":"An abbreviated name for NFTs in this contract"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/mocks/MockERC721.sol":"MockERC721"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"}},"version":1},"id":21} \ No newline at end of file diff --git a/evm/out/MockSETHx.sol/MockSETHx.json b/evm/out/MockSETHx.sol/MockSETHx.json deleted file mode 100644 index 377d908..0000000 --- a/evm/out/MockSETHx.sol/MockSETHx.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_asset","type":"address","internalType":"contract IERC20"}],"stateMutability":"nonpayable"},{"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":"asset","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"convertToAssets","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"convertToShares","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"isBufferInitialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"maxDeposit","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxMint","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxRedeem","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxWithdraw","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"previewDeposit","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"previewMint","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"previewRedeem","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"previewWithdraw","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"redeem","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalAssets","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"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":"function","name":"withdraw","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"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":"Deposit","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"assets","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"shares","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":"event","name":"Withdraw","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"assets","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"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"}]},{"type":"error","name":"ERC4626ExceededMaxDeposit","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"assets","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC4626ExceededMaxMint","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC4626ExceededMaxRedeem","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC4626ExceededMaxWithdraw","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"assets","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60c0806040523461036f576020816113eb803803809161001f8285610373565b83398101031261036f57516001600160a01b038116810361036f5760409081519161004a8184610373565b600b83526a0a6e8c2d6cac8408aa890f60ab1b602084015280519161006f8284610373565b60058352640e68aa890f60db1b602084015283516001600160401b03811161028057600354600181811c91168015610365575b602082101461026257601f8111610302575b50602094601f821160011461029f579481929394955f92610294575b50508160011b915f199060031b1c1916176003555b82516001600160401b03811161028057600454600181811c91168015610276575b602082101461026257601f81116101ff575b506020601f821160011461019c57819293945f92610191575b50508160011b915f199060031b1c1916176004555b61014f81610396565b9015610189575b60a05260805251610fa2908161044982396080518181816104eb015281816108880152610b81015260a0518161052e0152f35b506012610156565b015190505f80610131565b601f1982169060045f52805f20915f5b8181106101e7575095836001959697106101cf575b505050811b01600455610146565b01515f1960f88460031b161c191690555f80806101c1565b9192602060018192868b0151815501940192016101ac565b60045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c81019160208410610258575b601f0160051c01905b81811061024d5750610118565b5f8155600101610240565b9091508190610237565b634e487b7160e01b5f52602260045260245ffd5b90607f1690610106565b634e487b7160e01b5f52604160045260245ffd5b015190505f806100d0565b601f1982169560035f52805f20915f5b8881106102ea575083600195969798106102d2575b505050811b016003556100e5565b01515f1960f88460031b161c191690555f80806102c4565b919260206001819286850151815501940192016102af565b60035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c8101916020841061035b575b601f0160051c01905b81811061035057506100b4565b5f8155600101610343565b909150819061033a565b90607f16906100a2565b5f80fd5b601f909101601f19168101906001600160401b0382119082101761028057604052565b5f8091604051602081019063313ce56760e01b8252600481526103ba602482610373565b51916001600160a01b03165afa3d15610440573d906001600160401b03821161028057604051916103f5601f8201601f191660200184610373565b82523d5f602084013e5b80610434575b610411575b505f905f90565b60208180518101031261036f576020015160ff811161040a579060ff6001921690565b50602081511015610405565b6060906103ff56fe60806040526004361015610011575f80fd5b5f3560e01c806301e1d1141461074b57806306fdde031461069057806307a2d13a1461022e578063095ea7b3146105e85780630a28a477146105ca57806318160ddd146105ad57806323b872dd14610575578063313ce5671461051a57806338d52e0f146104d6578063402d267d146102335780634cdad506146104b85780636e553f651461048557806370a08231146101d357806394bf804d1461045257806395d89b411461034e578063a9059cbb1461031d578063b3d7f6b9146102ff578063b460af94146102a4578063ba08765214610238578063c63d75b614610233578063c6e6f5921461022e578063ce96cb771461020b578063d905777e146101d3578063dc0a9929146101b1578063dd62ed3e146101615763ef8b30f714610137575f80fd5b3461015d57602036600319011261015d576020610155600435610956565b604051908152f35b5f80fd5b3461015d57604036600319011261015d5761017a6107ac565b6101826107c2565b6001600160a01b039182165f908152600160209081526040808320949093168252928352819020549051908152f35b3461015d575f36600319011261015d57602060ff600554166040519015158152f35b3461015d57602036600319011261015d5760206101556101f16107ac565b6001600160a01b03165f9081526020819052604090205490565b3461015d57602036600319011261015d5760206101556102296107ac565b6108fd565b61078f565b6107d8565b3461015d57610246366107fd565b90916102628260018060a01b03165f525f60205260405f205490565b80821161028357508060209361027a61015593610ae0565b93849133610c31565b91632e52afbb60e21b5f5260018060a01b031660045260245260445260645ffd5b3461015d576102b2366107fd565b90916102bd826108fd565b8082116102de5750602092816102d561015593610928565b93849233610c31565b91633fa733bb60e21b5f5260018060a01b031660045260245260445260645ffd5b3461015d57602036600319011261015d576020610155600435610b0d565b3461015d57604036600319011261015d576103436103396107ac565b6024359033610a23565b602060405160018152f35b3461015d575f36600319011261015d576040515f6004548060011c90600181168015610448575b6020831081146104345782855290811561041057506001146103b2575b6103ae836103a281850382610837565b60405191829182610765565b0390f35b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b8082106103f6575090915081016020016103a2610392565b9192600181602092548385880101520191019092916103de565b60ff191660208086019190915291151560051b840190910191506103a29050610392565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610375565b3461015d57604036600319011261015d5760206004356101556104736107c2565b9161047d81610b0d565b809333610b3b565b3461015d57604036600319011261015d5760206004356101556104a66107c2565b6104af83610956565b92839133610b3b565b3461015d57602036600319011261015d576020610155600435610ae0565b3461015d575f36600319011261015d576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461015d575f36600319011261015d5760ff7f00000000000000000000000000000000000000000000000000000000000000001660ff811161056157602090604051908152f35b634e487b7160e01b5f52601160045260245ffd5b3461015d57606036600319011261015d576103436105916107ac565b6105996107c2565b604435916105a8833383610983565b610a23565b3461015d575f36600319011261015d576020600254604051908152f35b3461015d57602036600319011261015d576020610155600435610928565b3461015d57604036600319011261015d576106016107ac565b60243590331561067d576001600160a01b031690811561066a57335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b3461015d575f36600319011261015d576040515f6003548060011c90600181168015610741575b6020831081146104345782855290811561041057506001146106e3576103ae836103a281850382610837565b91905060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f905b808210610727575090915081016020016103a2610392565b91926001816020925483858801015201910190929161070f565b91607f16916106b7565b3461015d575f36600319011261015d57602061015561086d565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b3461015d57602036600319011261015d5760206040516004358152f35b600435906001600160a01b038216820361015d57565b602435906001600160a01b038216820361015d57565b3461015d57602036600319011261015d576107f16107ac565b5060206040515f198152f35b606090600319011261015d57600435906024356001600160a01b038116810361015d57906044356001600160a01b038116810361015d5790565b90601f8019910116810190811067ffffffffffffffff82111761085957604052565b634e487b7160e01b5f52604160045260245ffd5b6040516370a0823160e01b81523060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108f2575f916108c3575090565b90506020813d6020116108ea575b816108de60209383610837565b8101031261015d575190565b3d91506108d1565b6040513d5f823e3d90fd5b60018060a01b03165f525f60205261091860405f2054610ae0565b90565b9190820180921161056157565b60025490600182018092116105615761093f61086d565b600181018091116105615761091892600192610d44565b60025490600182018092116105615761096d61086d565b6001810180911161056157610918925f92610d44565b6001600160a01b039081165f81815260016020818152604080842095871684529490529290205493929184016109ba575b50505050565b828410610a0057801561067d576001600160a01b0382161561066a575f52600160205260405f209060018060a01b03165f5260205260405f20910390555f8080806109b4565b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b0316908115610acd576001600160a01b0316918215610aba57815f525f60205260405f2054818110610aa157817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b63ec442f0560e01b5f525f60045260245ffd5b634b637e8f60e11b5f525f60045260245ffd5b610ae861086d565b9060018201809211610561576002546001810180911161056157610918925f92610d44565b610b1561086d565b906001820180921161056157600254600181018091116105615761091892600192610d44565b6040516323b872dd60e01b60208201526001600160a01b039091166024820181905230604483015260648083018590528252929190610ba590610b7f608482610837565b7f0000000000000000000000000000000000000000000000000000000000000000610e5b565b6001600160a01b0316928315610aba577fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d79181610be660409360025461091b565b600255855f525f602052825f20818154019055855f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60208651858152a382519182526020820152a3565b6001600160a01b03808416959294908216939092918290878603610d33575b5050508415610acd57845f525f60205260405f2054818110610d1a5791816040927ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db94885f525f60205203835f205580600254036002555f877fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60208651858152a3825163a9059cbb60e01b60208201526001600160a01b03909616602487018190526044808801849052875295610d0d90610b7f606482610837565b82519182526020820152a4565b8563391434e360e21b5f5260045260245260445260645ffd5b610d3c92610983565b5f8181610c50565b9291610d51818386610db6565b926004811015610da2576001809116149182610d77575b5050610918925015159061091b565b9080925015610d8e57610918930915155f80610d68565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b91818302915f1981850993838086109503948086039514610e4d5784831115610e2e5790829109815f0382168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b82610e465760125b634e487b715f526020526024601cfd5b6011610e36565b505080925015610d8e570490565b81516001600160a01b03909116915f91829160200182855af13d15610f02573d67ffffffffffffffff811161085957610eb69160405191610ea66020601f19601f8401160184610837565b82523d5f602084013e5b83610f0e565b8051908115159182610ede575b5050610ecc5750565b635274afe760e01b5f5260045260245ffd5b819250906020918101031261015d576020015180159081150361015d575f80610ec3565b610eb690606090610eb0565b90610f325750805115610f2357805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580610f63575b610f43575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15610f3b56fea2646970667358221220b086c5fd69f84195c720e651bd0c3fdfe94026eb8e5f77216c898ab4d4455cb664736f6c634300081b0033","sourceMap":"216:714:79:-:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;216:714:79;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;216:714:79;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;216:714:79;;;;;;-1:-1:-1;;;;;216:714:79;;;;1667:13:28;216:714:79;;;;;;;;;;;-1:-1:-1;216:714:79;;;;;;;;;;;-1:-1:-1;216:714:79;;;;;;;;;;;;;;;;-1:-1:-1;216:714:79;;;;;;;;;;;;;1667:13:28;216:714:79;;;;;1667:13:28;216:714:79;;;;-1:-1:-1;;;;;216:714:79;;;;1690:17:28;216:714:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;216:714:79;;;;;;;;;;;;;1667:13:28;216:714:79;;;;;1690:17:28;216:714:79;;4353:28:30;;;:::i;:::-;4413;;;;;4391:50;;4451:15;;216:714:79;;;;;;;4451:15:30;216:714:79;;;;;;;;;;;;;;;4391:50:30;216:714:79;;;;;;4413:28:30;;4439:2;4413:28;;216:714:79;;;;-1:-1:-1;216:714:79;;;;;;;;;;1690:17:28;-1:-1:-1;216:714:79;;-1:-1:-1;216:714:79;;-1:-1:-1;216:714:79;;;;;;;;;;;;;;;;;;;;;;;1690:17:28;216:714:79;;;;;;;;;;1667:13:28;216:714:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1690:17:28;-1:-1:-1;216:714:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;216:714:79;;;;;;;;;-1:-1:-1;216:714:79;;;;;;;;-1:-1:-1;216:714:79;;1690:17:28;216:714:79;;-1:-1:-1;216:714:79;;;;;;;;;;;;-1:-1:-1;216:714:79;;1690:17:28;216:714:79;;-1:-1:-1;216:714:79;;;;;-1:-1:-1;216:714:79;;;;;;;;;;1667:13:28;-1:-1:-1;216:714:79;;-1:-1:-1;216:714:79;;-1:-1:-1;216:714:79;;;;;;;;;;;;;;;;;;;;;;;1667:13:28;216:714:79;;;;;;;;;;1667:13:28;216:714:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1667:13:28;-1:-1:-1;216:714:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;216:714:79;;;;;;;;;-1:-1:-1;216:714:79;;;;;;;;;;;;-1:-1:-1;216:714:79;;;;;;;-1:-1:-1;;216:714:79;;;;-1:-1:-1;;;;;216:714:79;;;;;;;;;;:::o;4616:533:30:-;4753:93;4616:533;;216:714:79;;4793:43:30;;;;;;;;;;;;;;;;:::i;:::-;4753:93;;-1:-1:-1;;;;;216:714:79;4753:93:30;;216:714:79;;;;;;-1:-1:-1;;;;;216:714:79;;;;;;;;;;;-1:-1:-1;;216:714:79;4793:43:30;216:714:79;;;:::i;:::-;;;;4753:93:30;4793:43;216:714:79;;;;4860:39:30;;;216:714:79;4856:260:30;;216:714:79;5125:17:30;4753:93;5125:17;4753:93;4616:533;:::o;4856:260::-;4793:43;216:714:79;;;4942:38:30;;216:714:79;;;;4793:43:30;4942:38;216:714:79;;4998:35:30;;4856:260;4994:112;5053:38;216:714:79;;;;5053:38:30;:::o;4860:39::-;216:714:79;4793:43:30;216:714:79;;4871:28:30;;4860:39;;216:714:79;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806301e1d1141461074b57806306fdde031461069057806307a2d13a1461022e578063095ea7b3146105e85780630a28a477146105ca57806318160ddd146105ad57806323b872dd14610575578063313ce5671461051a57806338d52e0f146104d6578063402d267d146102335780634cdad506146104b85780636e553f651461048557806370a08231146101d357806394bf804d1461045257806395d89b411461034e578063a9059cbb1461031d578063b3d7f6b9146102ff578063b460af94146102a4578063ba08765214610238578063c63d75b614610233578063c6e6f5921461022e578063ce96cb771461020b578063d905777e146101d3578063dc0a9929146101b1578063dd62ed3e146101615763ef8b30f714610137575f80fd5b3461015d57602036600319011261015d576020610155600435610956565b604051908152f35b5f80fd5b3461015d57604036600319011261015d5761017a6107ac565b6101826107c2565b6001600160a01b039182165f908152600160209081526040808320949093168252928352819020549051908152f35b3461015d575f36600319011261015d57602060ff600554166040519015158152f35b3461015d57602036600319011261015d5760206101556101f16107ac565b6001600160a01b03165f9081526020819052604090205490565b3461015d57602036600319011261015d5760206101556102296107ac565b6108fd565b61078f565b6107d8565b3461015d57610246366107fd565b90916102628260018060a01b03165f525f60205260405f205490565b80821161028357508060209361027a61015593610ae0565b93849133610c31565b91632e52afbb60e21b5f5260018060a01b031660045260245260445260645ffd5b3461015d576102b2366107fd565b90916102bd826108fd565b8082116102de5750602092816102d561015593610928565b93849233610c31565b91633fa733bb60e21b5f5260018060a01b031660045260245260445260645ffd5b3461015d57602036600319011261015d576020610155600435610b0d565b3461015d57604036600319011261015d576103436103396107ac565b6024359033610a23565b602060405160018152f35b3461015d575f36600319011261015d576040515f6004548060011c90600181168015610448575b6020831081146104345782855290811561041057506001146103b2575b6103ae836103a281850382610837565b60405191829182610765565b0390f35b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b8082106103f6575090915081016020016103a2610392565b9192600181602092548385880101520191019092916103de565b60ff191660208086019190915291151560051b840190910191506103a29050610392565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610375565b3461015d57604036600319011261015d5760206004356101556104736107c2565b9161047d81610b0d565b809333610b3b565b3461015d57604036600319011261015d5760206004356101556104a66107c2565b6104af83610956565b92839133610b3b565b3461015d57602036600319011261015d576020610155600435610ae0565b3461015d575f36600319011261015d576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461015d575f36600319011261015d5760ff7f00000000000000000000000000000000000000000000000000000000000000001660ff811161056157602090604051908152f35b634e487b7160e01b5f52601160045260245ffd5b3461015d57606036600319011261015d576103436105916107ac565b6105996107c2565b604435916105a8833383610983565b610a23565b3461015d575f36600319011261015d576020600254604051908152f35b3461015d57602036600319011261015d576020610155600435610928565b3461015d57604036600319011261015d576106016107ac565b60243590331561067d576001600160a01b031690811561066a57335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b3461015d575f36600319011261015d576040515f6003548060011c90600181168015610741575b6020831081146104345782855290811561041057506001146106e3576103ae836103a281850382610837565b91905060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f905b808210610727575090915081016020016103a2610392565b91926001816020925483858801015201910190929161070f565b91607f16916106b7565b3461015d575f36600319011261015d57602061015561086d565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b3461015d57602036600319011261015d5760206040516004358152f35b600435906001600160a01b038216820361015d57565b602435906001600160a01b038216820361015d57565b3461015d57602036600319011261015d576107f16107ac565b5060206040515f198152f35b606090600319011261015d57600435906024356001600160a01b038116810361015d57906044356001600160a01b038116810361015d5790565b90601f8019910116810190811067ffffffffffffffff82111761085957604052565b634e487b7160e01b5f52604160045260245ffd5b6040516370a0823160e01b81523060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108f2575f916108c3575090565b90506020813d6020116108ea575b816108de60209383610837565b8101031261015d575190565b3d91506108d1565b6040513d5f823e3d90fd5b60018060a01b03165f525f60205261091860405f2054610ae0565b90565b9190820180921161056157565b60025490600182018092116105615761093f61086d565b600181018091116105615761091892600192610d44565b60025490600182018092116105615761096d61086d565b6001810180911161056157610918925f92610d44565b6001600160a01b039081165f81815260016020818152604080842095871684529490529290205493929184016109ba575b50505050565b828410610a0057801561067d576001600160a01b0382161561066a575f52600160205260405f209060018060a01b03165f5260205260405f20910390555f8080806109b4565b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b0316908115610acd576001600160a01b0316918215610aba57815f525f60205260405f2054818110610aa157817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b63ec442f0560e01b5f525f60045260245ffd5b634b637e8f60e11b5f525f60045260245ffd5b610ae861086d565b9060018201809211610561576002546001810180911161056157610918925f92610d44565b610b1561086d565b906001820180921161056157600254600181018091116105615761091892600192610d44565b6040516323b872dd60e01b60208201526001600160a01b039091166024820181905230604483015260648083018590528252929190610ba590610b7f608482610837565b7f0000000000000000000000000000000000000000000000000000000000000000610e5b565b6001600160a01b0316928315610aba577fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d79181610be660409360025461091b565b600255855f525f602052825f20818154019055855f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60208651858152a382519182526020820152a3565b6001600160a01b03808416959294908216939092918290878603610d33575b5050508415610acd57845f525f60205260405f2054818110610d1a5791816040927ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db94885f525f60205203835f205580600254036002555f877fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60208651858152a3825163a9059cbb60e01b60208201526001600160a01b03909616602487018190526044808801849052875295610d0d90610b7f606482610837565b82519182526020820152a4565b8563391434e360e21b5f5260045260245260445260645ffd5b610d3c92610983565b5f8181610c50565b9291610d51818386610db6565b926004811015610da2576001809116149182610d77575b5050610918925015159061091b565b9080925015610d8e57610918930915155f80610d68565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b91818302915f1981850993838086109503948086039514610e4d5784831115610e2e5790829109815f0382168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b82610e465760125b634e487b715f526020526024601cfd5b6011610e36565b505080925015610d8e570490565b81516001600160a01b03909116915f91829160200182855af13d15610f02573d67ffffffffffffffff811161085957610eb69160405191610ea66020601f19601f8401160184610837565b82523d5f602084013e5b83610f0e565b8051908115159182610ede575b5050610ecc5750565b635274afe760e01b5f5260045260245ffd5b819250906020918101031261015d576020015180159081150361015d575f80610ec3565b610eb690606090610eb0565b90610f325750805115610f2357805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580610f63575b610f43575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15610f3b56fea2646970667358221220b086c5fd69f84195c720e651bd0c3fdfe94026eb8e5f77216c898ab4d4455cb664736f6c634300081b0033","sourceMap":"216:714:79:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;216:714:79;;;;;7232:45:30;216:714:79;;7232:45:30;:::i;:::-;216:714:79;;;;;;;;;;;;;;;;-1:-1:-1;;216:714:79;;;;;;:::i;:::-;;;:::i;:::-;-1:-1:-1;;;;;216:714:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;216:714:79;;;;;;252:31;216:714;;;;;;;;;;;;;;;;-1:-1:-1;;216:714:79;;;;;;;;:::i;:::-;-1:-1:-1;;;;;216:714:79;3095:9:28;216:714:79;;;;;;;;;;;;3004:116:28;216:714:79;;;;;;-1:-1:-1;;216:714:79;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;7061:16:30;;;;216:714:79;;;;;;3095:9:28;216:714:79;3095:9:28;216:714:79;;;3095:9:28;216:714:79;;3004:116:28;;7061:16:30;9400:18;;;9396:106;;7824:45;;216:714:79;7824:45:30;;9609:6;7824:45;;:::i;:::-;735:10:34;;;;9609:6:30;:::i;9396:106::-;9441:50;;;;216:714:79;9441:50:30;216:714:79;;;;;;;;;;;;;;9441:50:30;216:714:79;;;;;;;:::i;:::-;8914:18:30;;;;;:::i;:::-;8946;;;8942:108;;7627:44;216:714:79;7627:44:30;;;9159:6;7627:44;;:::i;:::-;735:10:34;;;;9159:6:30;:::i;8942:108::-;8987:52;;;;216:714:79;8987:52:30;216:714:79;;;;;;;;;;;;;;8987:52:30;216:714:79;;;;;;-1:-1:-1;;216:714:79;;;;;7426:44:30;216:714:79;;7426:44:30;:::i;216:714:79:-;;;;;;-1:-1:-1;;216:714:79;;;;3459:5:28;216:714:79;;:::i;:::-;;;735:10:34;;3459:5:28;:::i;:::-;216:714:79;;;;;;;;;;;;;-1:-1:-1;;216:714:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;216:714:79;;-1:-1:-1;216:714:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;216:714:79;;;;;;;;;;;;;;;;;;;;-1:-1:-1;216:714:79;;-1:-1:-1;216:714:79;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;216:714:79;;;;;;;8699:6:30;216:714:79;;:::i;:::-;7426:44:30;;;;:::i;:::-;735:10:34;;;8699:6:30;:::i;216:714:79:-;;;;;;-1:-1:-1;;216:714:79;;;;;;;8276:6:30;216:714:79;;:::i;:::-;7232:45:30;;;:::i;:::-;735:10:34;;;;8276:6:30;:::i;216:714:79:-;;;;;;-1:-1:-1;;216:714:79;;;;;7824:45:30;216:714:79;;7824:45:30;:::i;216:714:79:-;;;;;;-1:-1:-1;;216:714:79;;;;;;5829:6:30;-1:-1:-1;;;;;216:714:79;;;;;;;;;;;;-1:-1:-1;;216:714:79;;;;;5659:19:30;216:714:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;216:714:79;;;;4986:5:28;216:714:79;;:::i;:::-;;;:::i;:::-;;;735:10:34;4950:5:28;735:10:34;;4950:5:28;;:::i;:::-;4986;:::i;216:714:79:-;;;;;;-1:-1:-1;;216:714:79;;;;;2927:12:28;216:714:79;;;;;;;;;;;;;-1:-1:-1;;216:714:79;;;;;7627:44:30;216:714:79;;7627:44:30;:::i;216:714:79:-;;;;;;-1:-1:-1;;216:714:79;;;;;;:::i;:::-;;;735:10:34;;9813:19:28;9809:89;;-1:-1:-1;;;;;216:714:79;;9911:21:28;;9907:90;;735:10:34;216:714:79;;;;;;;;;-1:-1:-1;216:714:79;;;;;-1:-1:-1;216:714:79;;;;;;;10085:31:28;216:714:79;735:10:34;10085:31:28;;216:714:79;;;;;;;9907:90:28;9955:31;;;216:714:79;9955:31:28;216:714:79;;;;;9955:31:28;9809:89;9855:32;;;216:714:79;9855:32:28;216:714:79;;;;;9855:32:28;216:714:79;;;;;;-1:-1:-1;;216:714:79;;;;;;;1856:5:28;216:714:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;1856:5:28;216:714:79;;;;;;;;;;;;-1:-1:-1;216:714:79;;-1:-1:-1;216:714:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;216:714:79;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;216:714:79;;;;:::o;:::-;;;;;;-1:-1:-1;;216:714:79;;;;;;;;;;;;;;;;-1:-1:-1;;;;;216:714:79;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;216:714:79;;;;;;:::o;:::-;;;;;;-1:-1:-1;;216:714:79;;;;;;:::i;:::-;;;;;6546:17:30;;216:714:79;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;216:714:79;;;;;;;;;-1:-1:-1;;;;;216:714:79;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;216:714:79;;;;;-1:-1:-1;216:714:79;5893:116:30;216:714:79;;-1:-1:-1;;;5971:31:30;;5996:4;5971:31;;;216:714:79;;;5971:31:30;216:714:79;5971:6:30;-1:-1:-1;;;;;216:714:79;5971:31:30;;;;;;;-1:-1:-1;5971:31:30;;;5964:38;5893:116;:::o;5971:31::-;;;216:714:79;5971:31:30;;216:714:79;5971:31:30;;;;;;216:714:79;5971:31:30;;;:::i;:::-;;;216:714:79;;;;;5893:116:30;:::o;5971:31::-;;;-1:-1:-1;5971:31:30;;;216:714:79;;;-1:-1:-1;216:714:79;;;;;6771:153:30;216:714:79;;;;;;3095:9:28;216:714:79;3095:9:28;216:714:79;;6862:55:30;216:714:79;3095:9:28;216:714:79;;6862:55:30;:::i;:::-;6771:153;:::o;216:714:79:-;;;;;;;;;;:::o;9771:213:30:-;2927:12:28;216:714:79;9924:23:30;7652:18;216:714:79;;;;;;;9949:13:30;;:::i;:::-;7652:18;216:714:79;;;;;;;9894:83:30;;7652:18;9894:83;;:::i;9771:213::-;2927:12:28;216:714:79;9924:23:30;216:714:79;;;;;;;;9949:13:30;;:::i;:::-;216:714:79;;;;;;;;9894:83:30;;216:714:79;9894:83:30;;:::i;10415:477:28:-;-1:-1:-1;;;;;216:714:79;;;-1:-1:-1;216:714:79;;;;;;;;;;;;;;;;;;;;;;;;;10415:477:28;;10580:37;;10576:310;;10415:477;;;;;:::o;10576:310::-;10637:24;;;10633:130;;9813:19;;9809:89;;-1:-1:-1;;;;;216:714:79;;9911:21:28;9907:90;;-1:-1:-1;216:714:79;3657:11:28;216:714:79;;;-1:-1:-1;216:714:79;10006:27:28;216:714:79;;;;;;-1:-1:-1;216:714:79;;;;-1:-1:-1;216:714:79;;;;;10576:310:28;;;;;;10633:130;10688:60;;;;;;-1:-1:-1;10688:60:28;216:714:79;;;;;;10688:60:28;216:714:79;;;;;;-1:-1:-1;10688:60:28;5393:300;-1:-1:-1;;;;;216:714:79;;5476:18:28;;5472:86;;-1:-1:-1;;;;;216:714:79;;5571:16:28;;5567:86;;216:714:79;5492:1:28;216:714:79;5492:1:28;216:714:79;;;5492:1:28;216:714:79;;6340:19:28;;;6336:115;;216:714:79;7083:25:28;216:714:79;;;;5492:1:28;216:714:79;5492:1:28;216:714:79;;;;5492:1:28;216:714:79;;;5492:1:28;216:714:79;5492:1:28;216:714:79;;;5492:1:28;216:714:79;;;;;;;;;;;;7083:25:28;5393:300::o;6336:115::-;6386:50;;;;5492:1;6386:50;;216:714:79;;;;;;5492:1:28;6386:50;5567:86;5610:32;;;5492:1;5610:32;5492:1;5610:32;216:714:79;;5492:1:28;5610:32;5472:86;5517:30;;;5492:1;5517:30;5492:1;5517:30;216:714:79;;5492:1:28;5517:30;10108:213:30;10245:13;;:::i;:::-;216:714:79;10261:1:30;216:714:79;;;;;;;2927:12:28;216:714:79;10261:1:30;216:714:79;;;;;;;10231:83:30;;216:714:79;10231:83:30;;:::i;10108:213::-;10245:13;;:::i;:::-;216:714:79;7451:18:30;216:714:79;;;;;;;2927:12:28;216:714:79;7451:18:30;216:714:79;;;;;;;10231:83:30;;7451:18;10231:83;;:::i;10385:831::-;216:714:79;;-1:-1:-1;;;1829:53:32;;;;-1:-1:-1;;;;;216:714:79;;;1829:53:32;;;216:714:79;;;11105:4:30;216:714:79;;;;;;;;;;;1829:53:32;;216:714:79;10385:831:30;;1829:53:32;;;;216:714:79;1829:53:32;:::i;:::-;11081:6:30;1829:53:32;:::i;:::-;-1:-1:-1;;;;;216:714:79;;7528:21:28;;7524:91;;11168:41:30;216:714:79;;6233:21:28;216:714:79;;6233:21:28;216:714:79;6233:21:28;:::i;:::-;;216:714:79;;-1:-1:-1;216:714:79;-1:-1:-1;1829:53:32;216:714:79;;-1:-1:-1;216:714:79;;;;;;;;-1:-1:-1;7083:25:28;1829:53:32;216:714:79;;;;;7083:25:28;216:714:79;;;;;1829:53:32;216:714:79;;;11168:41:30;10385:831::o;11283:915::-;-1:-1:-1;;;;;216:714:79;;;;11283:915:30;;216:714:79;;;;11283:915:30;;;;;11460:15;;;11456:84;;11283:915;8054:21:28;;;;;8050:89;;216:714:79;8073:1:28;216:714:79;8073:1:28;216:714:79;;;8073:1:28;216:714:79;;6340:19:28;;;6336:115;;216:714:79;;;;12142:49:30;216:714:79;;8073:1:28;216:714:79;8073:1:28;216:714:79;;;;8073:1:28;216:714:79;;;6810:21:28;216:714:79;;6810:21:28;216:714:79;8073:1:28;216:714:79;7083:25:28;216:714:79;;;;;;7083:25:28;216:714:79;;-1:-1:-1;;;216:714:79;1412:43:32;;;-1:-1:-1;;;;;216:714:79;;;1412:43:32;;;216:714:79;;;;;;;;;;1412:43:32;;216:714:79;1412:43:32;;;;216:714:79;1412:43:32;:::i;:::-;216:714:79;;;;;;;;;12142:49:30;11283:915::o;6336:115:28:-;6386:50;;;;8073:1;6386:50;;216:714:79;;;;;;8073:1:28;6386:50;11456:84:30;11522:6;;;:::i;:::-;11456:84;;;;;8641:238:38;;;8768:25;;;;;:::i;:::-;216:714:79;;;;;;;26935:1:38;216:714:79;;;26912:24:38;8812:59;;;;8641:238;34906:55:39;;8768:104:38;34906:55:39;;;;8768:104:38;;:::i;8812:59::-;8842:25;;;;;;;8768:104;8842:25;;:29;;8812:59;;;;8842:25;216:714:79;;;-1:-1:-1;216:714:79;;;;;-1:-1:-1;216:714:79;;;;;-1:-1:-1;216:714:79;;;;;-1:-1:-1;216:714:79;4289:4223:38;;216:714:79;;;;-1:-1:-1;;216:714:79;4289:4223:38;4881:131;;;;;;;;;;;;5093:10;;5089:368;;5567:20;;;;5563:136;;5985:300;;;;216:714:79;;;6504:31:38;;6549:375;;;7384:1;216:714:79;7365:1:38;216:714:79;7364:21:38;216:714:79;;;7384:1:38;216:714:79;;;;;7384:1:38;216:714:79;;;;;7384:1:38;216:714:79;;;;;7384:1:38;216:714:79;;;;;7384:1:38;216:714:79;;;;;7384:1:38;216:714:79;;6549:375:38;;;;216:714:79;6549:375:38;;;5985:300;;;;;;216:714:79;5985:300:38;;6549:375;6990:21;216:714:79;4289:4223:38;:::o;5563:136::-;5619:16;;;939:4:36;5619:64:38;1776:119:36;216:714:79;1776:119:36;;;;;;5619:64:38;844:4:36;5619:64:38;;5089:368;216:714:79;;;;;;;;;5416:26:38;:::o;6468:629:32:-;3256:31:33;;-1:-1:-1;;;;;216:714:79;;;;2626:1:33;;;;3256:31;;2626:1;216:714:79;3256:31:33;;216:714:79;;;;;;;;;;3304:55:33;216:714:79;;;;;3256:31:33;216:714:79;;;;;;;;;:::i;:::-;;;;2626:1:33;3256:31;216:714:79;;;;3304:55:33;;:::i;:::-;216:714:79;;6960:22:32;;;;:57;;;;216:714:79;6956:135:32;;;;6468:629;:::o;6956:135::-;7040:40;;;2626:1:33;7040:40:32;;216:714:79;;2626:1:33;7040:40:32;6960:57;6987:30;;;;3256:31:33;6987:30:32;;;216:714:79;;;;3256:31:33;6987:30:32;216:714:79;;;;;;;;;6960:57:32;;;;216:714:79;3304:55:33;216:714:79;;;;;4421:582:33;;4593:8;;-1:-1:-1;216:714:79;;5674:21:33;:17;;5846:142;;;;;;5670:385;6025:19;;;5694:1;6025:19;;5694:1;6025:19;4589:408;216:714:79;;4841:22:33;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:33;4917:24;;;-1:-1:-1;;;;;216:714:79;;;;4917:24:33;216:714:79;;;4917:24:33;4841:49;4867:18;;;:23;4841:49;","linkReferences":{},"immutableReferences":{"47616":[{"start":1259,"length":32},{"start":2184,"length":32},{"start":2945,"length":32}],"47618":[{"start":1326,"length":32}]}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","asset()":"38d52e0f","balanceOf(address)":"70a08231","convertToAssets(uint256)":"07a2d13a","convertToShares(uint256)":"c6e6f592","decimals()":"313ce567","deposit(uint256,address)":"6e553f65","isBufferInitialized()":"dc0a9929","maxDeposit(address)":"402d267d","maxMint(address)":"c63d75b6","maxRedeem(address)":"d905777e","maxWithdraw(address)":"ce96cb77","mint(uint256,address)":"94bf804d","name()":"06fdde03","previewDeposit(uint256)":"ef8b30f7","previewMint(uint256)":"b3d7f6b9","previewRedeem(uint256)":"4cdad506","previewWithdraw(uint256)":"0a28a477","redeem(uint256,address,address)":"ba087652","symbol()":"95d89b41","totalAssets()":"01e1d114","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256,address,address)":"b460af94"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"_asset\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxDeposit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxMint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxRedeem\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxWithdraw\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"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\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"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\":[],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"convertToAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"convertToShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isBufferInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"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.\"}}],\"ERC4626ExceededMaxDeposit(address,uint256,uint256)\":[{\"details\":\"Attempted to deposit more assets than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxMint(address,uint256,uint256)\":[{\"details\":\"Attempted to mint more shares than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxRedeem(address,uint256,uint256)\":[{\"details\":\"Attempted to redeem more shares than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxWithdraw(address,uint256,uint256)\":[{\"details\":\"Attempted to withdraw more assets than the max amount for `receiver`.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"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\":\"See {IERC20-allowance}.\"},\"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.\"},\"asset()\":{\"details\":\"See {IERC4626-asset}. \"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"convertToAssets(uint256)\":{\"details\":\"See {IERC4626-convertToAssets}. \"},\"convertToShares(uint256)\":{\"details\":\"See {IERC4626-convertToShares}. \"},\"decimals()\":{\"details\":\"Decimals are computed by adding the decimal offset on top of the underlying asset's decimals. This \\\"original\\\" value is cached during construction of the vault contract. If this read operation fails (e.g., the asset has not been created yet), a default of 18 is used to represent the underlying asset's decimals. See {IERC20Metadata-decimals}.\"},\"deposit(uint256,address)\":{\"details\":\"See {IERC4626-deposit}. \"},\"maxDeposit(address)\":{\"details\":\"See {IERC4626-maxDeposit}. \"},\"maxMint(address)\":{\"details\":\"See {IERC4626-maxMint}. \"},\"maxRedeem(address)\":{\"details\":\"See {IERC4626-maxRedeem}. \"},\"maxWithdraw(address)\":{\"details\":\"See {IERC4626-maxWithdraw}. \"},\"mint(uint256,address)\":{\"details\":\"See {IERC4626-mint}. \"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"previewDeposit(uint256)\":{\"details\":\"See {IERC4626-previewDeposit}. \"},\"previewMint(uint256)\":{\"details\":\"See {IERC4626-previewMint}. \"},\"previewRedeem(uint256)\":{\"details\":\"See {IERC4626-previewRedeem}. \"},\"previewWithdraw(uint256)\":{\"details\":\"See {IERC4626-previewWithdraw}. \"},\"redeem(uint256,address,address)\":{\"details\":\"See {IERC4626-redeem}. \"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalAssets()\":{\"details\":\"See {IERC4626-totalAssets}. \"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"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`.\"},\"withdraw(uint256,address,address)\":{\"details\":\"See {IERC4626-withdraw}. \"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/mocks/MockSETHx.sol\":\"MockSETHx\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf\",\"dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12\",\"dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC4626.sol\":{\"keccak256\":\"0xf171181c69e4560fbe3c575b8b0457ee4077cf22514c29c1b2cfcd3d9ad515cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66ff4f5325f725be9dd654b2e31c94a621261ff93295cdae03e85f8bd6bee4f2\",\"dweb:/ipfs/QmefUEsDJvdCeX6mehjE645tM9j9PHxfQzoGwZE3mArsZh\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0x29074fe5a74bb024c57b3570abf6c74d8bceed3438694d470fd0166a3ecd196a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f4f8435ccbc56e384f4cc9ac9ff491cf30a82f2beac00e33ccc2cf8af3f77cc3\",\"dweb:/ipfs/QmUKJXxTe6nn1qfgnX8xbnboNNAPUuEmJyGqMZCKNiFBgn\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x6fe40ce2addf1fe91a86c334b51ef5abe9c3b831d5d4d74ecae1d9c7d06cdccb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5027588e408027935ac78e32d9e813fda6bf33349b8a5be5c6c936273743369f\",\"dweb:/ipfs/QmZwSzs94V9u7VSdhw2bhbrogWZ37wvrQFBz6QNJTmKokE\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x8cd59334ed58b8884cd1f775afc9400db702e674e5d6a7a438c655b9de788d7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99e62c7de7318f413b6352e3f2704ca23e7725ff144e43c8bd574d12dbf29047\",\"dweb:/ipfs/QmSEXG2rBx1VxU2uFTWdiChjDvA4osEY2mesjmoVeVhHko\"]},\"test/mocks/MockSETHx.sol\":{\"keccak256\":\"0xa15614c841ac362274d6674d24a8771cb8c9a207a196d583285e079b854b9c61\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://04074f2c48c42ea5cf601c59fc0546a9ae4c526e48925119d8ab881a0a3a099f\",\"dweb:/ipfs/QmZGBhVDhMfuF9FNMMc5aGmc6ZLQjKWavvuMqiURbi4RTL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"_asset","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"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":"receiver","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"ERC4626ExceededMaxDeposit"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"ERC4626ExceededMaxMint"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"ERC4626ExceededMaxRedeem"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"ERC4626ExceededMaxWithdraw"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"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":"sender","type":"address","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"uint256","name":"assets","type":"uint256","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"Deposit","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":"sender","type":"address","indexed":true},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"uint256","name":"assets","type":"uint256","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"Withdraw","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":[],"stateMutability":"view","type":"function","name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function","name":"convertToAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function","name":"convertToShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isBufferInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"maxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"maxMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"maxRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function","name":"previewDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function","name":"previewMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function","name":"previewRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function","name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"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"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"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."},"asset()":{"details":"See {IERC4626-asset}. "},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"convertToAssets(uint256)":{"details":"See {IERC4626-convertToAssets}. "},"convertToShares(uint256)":{"details":"See {IERC4626-convertToShares}. "},"decimals()":{"details":"Decimals are computed by adding the decimal offset on top of the underlying asset's decimals. This \"original\" value is cached during construction of the vault contract. If this read operation fails (e.g., the asset has not been created yet), a default of 18 is used to represent the underlying asset's decimals. See {IERC20Metadata-decimals}."},"deposit(uint256,address)":{"details":"See {IERC4626-deposit}. "},"maxDeposit(address)":{"details":"See {IERC4626-maxDeposit}. "},"maxMint(address)":{"details":"See {IERC4626-maxMint}. "},"maxRedeem(address)":{"details":"See {IERC4626-maxRedeem}. "},"maxWithdraw(address)":{"details":"See {IERC4626-maxWithdraw}. "},"mint(uint256,address)":{"details":"See {IERC4626-mint}. "},"name()":{"details":"Returns the name of the token."},"previewDeposit(uint256)":{"details":"See {IERC4626-previewDeposit}. "},"previewMint(uint256)":{"details":"See {IERC4626-previewMint}. "},"previewRedeem(uint256)":{"details":"See {IERC4626-previewRedeem}. "},"previewWithdraw(uint256)":{"details":"See {IERC4626-previewWithdraw}. "},"redeem(uint256,address,address)":{"details":"See {IERC4626-redeem}. "},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalAssets()":{"details":"See {IERC4626-totalAssets}. "},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"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`."},"withdraw(uint256,address,address)":{"details":"See {IERC4626-withdraw}. "}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/mocks/MockSETHx.sol":"MockSETHx"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol":{"keccak256":"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06","urls":["bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf","dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb","urls":["bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12","dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC4626.sol":{"keccak256":"0xf171181c69e4560fbe3c575b8b0457ee4077cf22514c29c1b2cfcd3d9ad515cf","urls":["bzz-raw://66ff4f5325f725be9dd654b2e31c94a621261ff93295cdae03e85f8bd6bee4f2","dweb:/ipfs/QmefUEsDJvdCeX6mehjE645tM9j9PHxfQzoGwZE3mArsZh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0x29074fe5a74bb024c57b3570abf6c74d8bceed3438694d470fd0166a3ecd196a","urls":["bzz-raw://f4f8435ccbc56e384f4cc9ac9ff491cf30a82f2beac00e33ccc2cf8af3f77cc3","dweb:/ipfs/QmUKJXxTe6nn1qfgnX8xbnboNNAPUuEmJyGqMZCKNiFBgn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x6fe40ce2addf1fe91a86c334b51ef5abe9c3b831d5d4d74ecae1d9c7d06cdccb","urls":["bzz-raw://5027588e408027935ac78e32d9e813fda6bf33349b8a5be5c6c936273743369f","dweb:/ipfs/QmZwSzs94V9u7VSdhw2bhbrogWZ37wvrQFBz6QNJTmKokE"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x8cd59334ed58b8884cd1f775afc9400db702e674e5d6a7a438c655b9de788d7e","urls":["bzz-raw://99e62c7de7318f413b6352e3f2704ca23e7725ff144e43c8bd574d12dbf29047","dweb:/ipfs/QmSEXG2rBx1VxU2uFTWdiChjDvA4osEY2mesjmoVeVhHko"],"license":"MIT"},"test/mocks/MockSETHx.sol":{"keccak256":"0xa15614c841ac362274d6674d24a8771cb8c9a207a196d583285e079b854b9c61","urls":["bzz-raw://04074f2c48c42ea5cf601c59fc0546a9ae4c526e48925119d8ab881a0a3a099f","dweb:/ipfs/QmZGBhVDhMfuF9FNMMc5aGmc6ZLQjKWavvuMqiURbi4RTL"],"license":"AGPL-3.0-or-later"}},"version":1},"id":79} \ No newline at end of file diff --git a/evm/out/MockSGOETH.sol/MockSGOETH.json b/evm/out/MockSGOETH.sol/MockSGOETH.json deleted file mode 100644 index 4e3c8e5..0000000 --- a/evm/out/MockSGOETH.sol/MockSGOETH.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_asset","type":"address","internalType":"contract IERC20"}],"stateMutability":"nonpayable"},{"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":"asset","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"convertToAssets","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"convertToShares","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"isBufferInitialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"maxDeposit","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxMint","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxRedeem","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxWithdraw","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"previewDeposit","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"previewMint","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"previewRedeem","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"previewWithdraw","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"redeem","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalAssets","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"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":"function","name":"withdraw","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"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":"Deposit","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"assets","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"shares","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":"event","name":"Withdraw","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"assets","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"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"}]},{"type":"error","name":"ERC4626ExceededMaxDeposit","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"assets","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC4626ExceededMaxMint","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC4626ExceededMaxRedeem","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC4626ExceededMaxWithdraw","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"assets","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60c08060405234610371576020816113ed803803809161001f8285610375565b83398101031261037157516001600160a01b03811681036103715760409081519161004a8184610375565b600c83526b0a6e8c2d6cac8408e9e8aa8960a31b60208401528051916100708284610375565b60068352650e68e9e8aa8960d31b602084015283516001600160401b03811161028257600354600181811c91168015610367575b602082101461026457601f8111610304575b50602094601f82116001146102a1579481929394955f92610296575b50508160011b915f199060031b1c1916176003555b82516001600160401b03811161028257600454600181811c91168015610278575b602082101461026457601f8111610201575b506020601f821160011461019e57819293945f92610193575b50508160011b915f199060031b1c1916176004555b61015181610398565b901561018b575b60a05260805251610fa2908161044b82396080518181816104eb015281816108880152610b81015260a0518161052e0152f35b506012610158565b015190505f80610133565b601f1982169060045f52805f20915f5b8181106101e9575095836001959697106101d1575b505050811b01600455610148565b01515f1960f88460031b161c191690555f80806101c3565b9192602060018192868b0151815501940192016101ae565b60045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c8101916020841061025a575b601f0160051c01905b81811061024f575061011a565b5f8155600101610242565b9091508190610239565b634e487b7160e01b5f52602260045260245ffd5b90607f1690610108565b634e487b7160e01b5f52604160045260245ffd5b015190505f806100d2565b601f1982169560035f52805f20915f5b8881106102ec575083600195969798106102d4575b505050811b016003556100e7565b01515f1960f88460031b161c191690555f80806102c6565b919260206001819286850151815501940192016102b1565b60035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c8101916020841061035d575b601f0160051c01905b81811061035257506100b6565b5f8155600101610345565b909150819061033c565b90607f16906100a4565b5f80fd5b601f909101601f19168101906001600160401b0382119082101761028257604052565b5f8091604051602081019063313ce56760e01b8252600481526103bc602482610375565b51916001600160a01b03165afa3d15610442573d906001600160401b03821161028257604051916103f7601f8201601f191660200184610375565b82523d5f602084013e5b80610436575b610413575b505f905f90565b602081805181010312610371576020015160ff811161040c579060ff6001921690565b50602081511015610407565b60609061040156fe60806040526004361015610011575f80fd5b5f3560e01c806301e1d1141461074b57806306fdde031461069057806307a2d13a1461022e578063095ea7b3146105e85780630a28a477146105ca57806318160ddd146105ad57806323b872dd14610575578063313ce5671461051a57806338d52e0f146104d6578063402d267d146102335780634cdad506146104b85780636e553f651461048557806370a08231146101d357806394bf804d1461045257806395d89b411461034e578063a9059cbb1461031d578063b3d7f6b9146102ff578063b460af94146102a4578063ba08765214610238578063c63d75b614610233578063c6e6f5921461022e578063ce96cb771461020b578063d905777e146101d3578063dc0a9929146101b1578063dd62ed3e146101615763ef8b30f714610137575f80fd5b3461015d57602036600319011261015d576020610155600435610956565b604051908152f35b5f80fd5b3461015d57604036600319011261015d5761017a6107ac565b6101826107c2565b6001600160a01b039182165f908152600160209081526040808320949093168252928352819020549051908152f35b3461015d575f36600319011261015d57602060ff600554166040519015158152f35b3461015d57602036600319011261015d5760206101556101f16107ac565b6001600160a01b03165f9081526020819052604090205490565b3461015d57602036600319011261015d5760206101556102296107ac565b6108fd565b61078f565b6107d8565b3461015d57610246366107fd565b90916102628260018060a01b03165f525f60205260405f205490565b80821161028357508060209361027a61015593610ae0565b93849133610c31565b91632e52afbb60e21b5f5260018060a01b031660045260245260445260645ffd5b3461015d576102b2366107fd565b90916102bd826108fd565b8082116102de5750602092816102d561015593610928565b93849233610c31565b91633fa733bb60e21b5f5260018060a01b031660045260245260445260645ffd5b3461015d57602036600319011261015d576020610155600435610b0d565b3461015d57604036600319011261015d576103436103396107ac565b6024359033610a23565b602060405160018152f35b3461015d575f36600319011261015d576040515f6004548060011c90600181168015610448575b6020831081146104345782855290811561041057506001146103b2575b6103ae836103a281850382610837565b60405191829182610765565b0390f35b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b8082106103f6575090915081016020016103a2610392565b9192600181602092548385880101520191019092916103de565b60ff191660208086019190915291151560051b840190910191506103a29050610392565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610375565b3461015d57604036600319011261015d5760206004356101556104736107c2565b9161047d81610b0d565b809333610b3b565b3461015d57604036600319011261015d5760206004356101556104a66107c2565b6104af83610956565b92839133610b3b565b3461015d57602036600319011261015d576020610155600435610ae0565b3461015d575f36600319011261015d576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461015d575f36600319011261015d5760ff7f00000000000000000000000000000000000000000000000000000000000000001660ff811161056157602090604051908152f35b634e487b7160e01b5f52601160045260245ffd5b3461015d57606036600319011261015d576103436105916107ac565b6105996107c2565b604435916105a8833383610983565b610a23565b3461015d575f36600319011261015d576020600254604051908152f35b3461015d57602036600319011261015d576020610155600435610928565b3461015d57604036600319011261015d576106016107ac565b60243590331561067d576001600160a01b031690811561066a57335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b3461015d575f36600319011261015d576040515f6003548060011c90600181168015610741575b6020831081146104345782855290811561041057506001146106e3576103ae836103a281850382610837565b91905060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f905b808210610727575090915081016020016103a2610392565b91926001816020925483858801015201910190929161070f565b91607f16916106b7565b3461015d575f36600319011261015d57602061015561086d565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b3461015d57602036600319011261015d5760206040516004358152f35b600435906001600160a01b038216820361015d57565b602435906001600160a01b038216820361015d57565b3461015d57602036600319011261015d576107f16107ac565b5060206040515f198152f35b606090600319011261015d57600435906024356001600160a01b038116810361015d57906044356001600160a01b038116810361015d5790565b90601f8019910116810190811067ffffffffffffffff82111761085957604052565b634e487b7160e01b5f52604160045260245ffd5b6040516370a0823160e01b81523060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108f2575f916108c3575090565b90506020813d6020116108ea575b816108de60209383610837565b8101031261015d575190565b3d91506108d1565b6040513d5f823e3d90fd5b60018060a01b03165f525f60205261091860405f2054610ae0565b90565b9190820180921161056157565b60025490600182018092116105615761093f61086d565b600181018091116105615761091892600192610d44565b60025490600182018092116105615761096d61086d565b6001810180911161056157610918925f92610d44565b6001600160a01b039081165f81815260016020818152604080842095871684529490529290205493929184016109ba575b50505050565b828410610a0057801561067d576001600160a01b0382161561066a575f52600160205260405f209060018060a01b03165f5260205260405f20910390555f8080806109b4565b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b0316908115610acd576001600160a01b0316918215610aba57815f525f60205260405f2054818110610aa157817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b63ec442f0560e01b5f525f60045260245ffd5b634b637e8f60e11b5f525f60045260245ffd5b610ae861086d565b9060018201809211610561576002546001810180911161056157610918925f92610d44565b610b1561086d565b906001820180921161056157600254600181018091116105615761091892600192610d44565b6040516323b872dd60e01b60208201526001600160a01b039091166024820181905230604483015260648083018590528252929190610ba590610b7f608482610837565b7f0000000000000000000000000000000000000000000000000000000000000000610e5b565b6001600160a01b0316928315610aba577fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d79181610be660409360025461091b565b600255855f525f602052825f20818154019055855f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60208651858152a382519182526020820152a3565b6001600160a01b03808416959294908216939092918290878603610d33575b5050508415610acd57845f525f60205260405f2054818110610d1a5791816040927ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db94885f525f60205203835f205580600254036002555f877fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60208651858152a3825163a9059cbb60e01b60208201526001600160a01b03909616602487018190526044808801849052875295610d0d90610b7f606482610837565b82519182526020820152a4565b8563391434e360e21b5f5260045260245260445260645ffd5b610d3c92610983565b5f8181610c50565b9291610d51818386610db6565b926004811015610da2576001809116149182610d77575b5050610918925015159061091b565b9080925015610d8e57610918930915155f80610d68565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b91818302915f1981850993838086109503948086039514610e4d5784831115610e2e5790829109815f0382168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b82610e465760125b634e487b715f526020526024601cfd5b6011610e36565b505080925015610d8e570490565b81516001600160a01b03909116915f91829160200182855af13d15610f02573d67ffffffffffffffff811161085957610eb69160405191610ea66020601f19601f8401160184610837565b82523d5f602084013e5b83610f0e565b8051908115159182610ede575b5050610ecc5750565b635274afe760e01b5f5260045260245ffd5b819250906020918101031261015d576020015180159081150361015d575f80610ec3565b610eb690606090610eb0565b90610f325750805115610f2357805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580610f63575b610f43575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15610f3b56fea2646970667358221220f270e5db4714581ca643030a27a939347bb30d1896f3ece686528fa2decf041d64736f6c634300081b0033","sourceMap":"216:737:80:-:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;216:737:80;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;216:737:80;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;216:737:80;;;;;;-1:-1:-1;;;;;216:737:80;;;;1667:13:28;216:737:80;;;;;;;;;;;-1:-1:-1;216:737:80;;;;;;;;;;;-1:-1:-1;216:737:80;;;;;;;;;;;;;;;;-1:-1:-1;216:737:80;;;;;;;;;;;;;1667:13:28;216:737:80;;;;;1667:13:28;216:737:80;;;;-1:-1:-1;;;;;216:737:80;;;;1690:17:28;216:737:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;216:737:80;;;;;;;;;;;;;1667:13:28;216:737:80;;;;;1690:17:28;216:737:80;;4353:28:30;;;:::i;:::-;4413;;;;;4391:50;;4451:15;;216:737:80;;;;;;;4451:15:30;216:737:80;;;;;;;;;;;;;;;4391:50:30;216:737:80;;;;;;4413:28:30;;4439:2;4413:28;;216:737:80;;;;-1:-1:-1;216:737:80;;;;;;;;;;1690:17:28;-1:-1:-1;216:737:80;;-1:-1:-1;216:737:80;;-1:-1:-1;216:737:80;;;;;;;;;;;;;;;;;;;;;;;1690:17:28;216:737:80;;;;;;;;;;1667:13:28;216:737:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1690:17:28;-1:-1:-1;216:737:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;216:737:80;;;;;;;;;-1:-1:-1;216:737:80;;;;;;;;-1:-1:-1;216:737:80;;1690:17:28;216:737:80;;-1:-1:-1;216:737:80;;;;;;;;;;;;-1:-1:-1;216:737:80;;1690:17:28;216:737:80;;-1:-1:-1;216:737:80;;;;;-1:-1:-1;216:737:80;;;;;;;;;;1667:13:28;-1:-1:-1;216:737:80;;-1:-1:-1;216:737:80;;-1:-1:-1;216:737:80;;;;;;;;;;;;;;;;;;;;;;;1667:13:28;216:737:80;;;;;;;;;;1667:13:28;216:737:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1667:13:28;-1:-1:-1;216:737:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;216:737:80;;;;;;;;;-1:-1:-1;216:737:80;;;;;;;;;;;;-1:-1:-1;216:737:80;;;;;;;-1:-1:-1;;216:737:80;;;;-1:-1:-1;;;;;216:737:80;;;;;;;;;;:::o;4616:533:30:-;4753:93;4616:533;;216:737:80;;4793:43:30;;;;;;;;;;;;;;;;:::i;:::-;4753:93;;-1:-1:-1;;;;;216:737:80;4753:93:30;;216:737:80;;;;;;-1:-1:-1;;;;;216:737:80;;;;;;;;;;;-1:-1:-1;;216:737:80;4793:43:30;216:737:80;;;:::i;:::-;;;;4753:93:30;4793:43;216:737:80;;;;4860:39:30;;;216:737:80;4856:260:30;;216:737:80;5125:17:30;4753:93;5125:17;4753:93;4616:533;:::o;4856:260::-;4793:43;216:737:80;;;4942:38:30;;216:737:80;;;;4793:43:30;4942:38;216:737:80;;4998:35:30;;4856:260;4994:112;5053:38;216:737:80;;;;5053:38:30;:::o;4860:39::-;216:737:80;4793:43:30;216:737:80;;4871:28:30;;4860:39;;216:737:80;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806301e1d1141461074b57806306fdde031461069057806307a2d13a1461022e578063095ea7b3146105e85780630a28a477146105ca57806318160ddd146105ad57806323b872dd14610575578063313ce5671461051a57806338d52e0f146104d6578063402d267d146102335780634cdad506146104b85780636e553f651461048557806370a08231146101d357806394bf804d1461045257806395d89b411461034e578063a9059cbb1461031d578063b3d7f6b9146102ff578063b460af94146102a4578063ba08765214610238578063c63d75b614610233578063c6e6f5921461022e578063ce96cb771461020b578063d905777e146101d3578063dc0a9929146101b1578063dd62ed3e146101615763ef8b30f714610137575f80fd5b3461015d57602036600319011261015d576020610155600435610956565b604051908152f35b5f80fd5b3461015d57604036600319011261015d5761017a6107ac565b6101826107c2565b6001600160a01b039182165f908152600160209081526040808320949093168252928352819020549051908152f35b3461015d575f36600319011261015d57602060ff600554166040519015158152f35b3461015d57602036600319011261015d5760206101556101f16107ac565b6001600160a01b03165f9081526020819052604090205490565b3461015d57602036600319011261015d5760206101556102296107ac565b6108fd565b61078f565b6107d8565b3461015d57610246366107fd565b90916102628260018060a01b03165f525f60205260405f205490565b80821161028357508060209361027a61015593610ae0565b93849133610c31565b91632e52afbb60e21b5f5260018060a01b031660045260245260445260645ffd5b3461015d576102b2366107fd565b90916102bd826108fd565b8082116102de5750602092816102d561015593610928565b93849233610c31565b91633fa733bb60e21b5f5260018060a01b031660045260245260445260645ffd5b3461015d57602036600319011261015d576020610155600435610b0d565b3461015d57604036600319011261015d576103436103396107ac565b6024359033610a23565b602060405160018152f35b3461015d575f36600319011261015d576040515f6004548060011c90600181168015610448575b6020831081146104345782855290811561041057506001146103b2575b6103ae836103a281850382610837565b60405191829182610765565b0390f35b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b8082106103f6575090915081016020016103a2610392565b9192600181602092548385880101520191019092916103de565b60ff191660208086019190915291151560051b840190910191506103a29050610392565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610375565b3461015d57604036600319011261015d5760206004356101556104736107c2565b9161047d81610b0d565b809333610b3b565b3461015d57604036600319011261015d5760206004356101556104a66107c2565b6104af83610956565b92839133610b3b565b3461015d57602036600319011261015d576020610155600435610ae0565b3461015d575f36600319011261015d576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461015d575f36600319011261015d5760ff7f00000000000000000000000000000000000000000000000000000000000000001660ff811161056157602090604051908152f35b634e487b7160e01b5f52601160045260245ffd5b3461015d57606036600319011261015d576103436105916107ac565b6105996107c2565b604435916105a8833383610983565b610a23565b3461015d575f36600319011261015d576020600254604051908152f35b3461015d57602036600319011261015d576020610155600435610928565b3461015d57604036600319011261015d576106016107ac565b60243590331561067d576001600160a01b031690811561066a57335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b3461015d575f36600319011261015d576040515f6003548060011c90600181168015610741575b6020831081146104345782855290811561041057506001146106e3576103ae836103a281850382610837565b91905060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f905b808210610727575090915081016020016103a2610392565b91926001816020925483858801015201910190929161070f565b91607f16916106b7565b3461015d575f36600319011261015d57602061015561086d565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b3461015d57602036600319011261015d5760206040516004358152f35b600435906001600160a01b038216820361015d57565b602435906001600160a01b038216820361015d57565b3461015d57602036600319011261015d576107f16107ac565b5060206040515f198152f35b606090600319011261015d57600435906024356001600160a01b038116810361015d57906044356001600160a01b038116810361015d5790565b90601f8019910116810190811067ffffffffffffffff82111761085957604052565b634e487b7160e01b5f52604160045260245ffd5b6040516370a0823160e01b81523060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108f2575f916108c3575090565b90506020813d6020116108ea575b816108de60209383610837565b8101031261015d575190565b3d91506108d1565b6040513d5f823e3d90fd5b60018060a01b03165f525f60205261091860405f2054610ae0565b90565b9190820180921161056157565b60025490600182018092116105615761093f61086d565b600181018091116105615761091892600192610d44565b60025490600182018092116105615761096d61086d565b6001810180911161056157610918925f92610d44565b6001600160a01b039081165f81815260016020818152604080842095871684529490529290205493929184016109ba575b50505050565b828410610a0057801561067d576001600160a01b0382161561066a575f52600160205260405f209060018060a01b03165f5260205260405f20910390555f8080806109b4565b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b0316908115610acd576001600160a01b0316918215610aba57815f525f60205260405f2054818110610aa157817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b63ec442f0560e01b5f525f60045260245ffd5b634b637e8f60e11b5f525f60045260245ffd5b610ae861086d565b9060018201809211610561576002546001810180911161056157610918925f92610d44565b610b1561086d565b906001820180921161056157600254600181018091116105615761091892600192610d44565b6040516323b872dd60e01b60208201526001600160a01b039091166024820181905230604483015260648083018590528252929190610ba590610b7f608482610837565b7f0000000000000000000000000000000000000000000000000000000000000000610e5b565b6001600160a01b0316928315610aba577fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d79181610be660409360025461091b565b600255855f525f602052825f20818154019055855f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60208651858152a382519182526020820152a3565b6001600160a01b03808416959294908216939092918290878603610d33575b5050508415610acd57845f525f60205260405f2054818110610d1a5791816040927ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db94885f525f60205203835f205580600254036002555f877fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60208651858152a3825163a9059cbb60e01b60208201526001600160a01b03909616602487018190526044808801849052875295610d0d90610b7f606482610837565b82519182526020820152a4565b8563391434e360e21b5f5260045260245260445260645ffd5b610d3c92610983565b5f8181610c50565b9291610d51818386610db6565b926004811015610da2576001809116149182610d77575b5050610918925015159061091b565b9080925015610d8e57610918930915155f80610d68565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b91818302915f1981850993838086109503948086039514610e4d5784831115610e2e5790829109815f0382168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b82610e465760125b634e487b715f526020526024601cfd5b6011610e36565b505080925015610d8e570490565b81516001600160a01b03909116915f91829160200182855af13d15610f02573d67ffffffffffffffff811161085957610eb69160405191610ea66020601f19601f8401160184610837565b82523d5f602084013e5b83610f0e565b8051908115159182610ede575b5050610ecc5750565b635274afe760e01b5f5260045260245ffd5b819250906020918101031261015d576020015180159081150361015d575f80610ec3565b610eb690606090610eb0565b90610f325750805115610f2357805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580610f63575b610f43575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15610f3b56fea2646970667358221220f270e5db4714581ca643030a27a939347bb30d1896f3ece686528fa2decf041d64736f6c634300081b0033","sourceMap":"216:737:80:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;216:737:80;;;;;7232:45:30;216:737:80;;7232:45:30;:::i;:::-;216:737:80;;;;;;;;;;;;;;;;-1:-1:-1;;216:737:80;;;;;;:::i;:::-;;;:::i;:::-;-1:-1:-1;;;;;216:737:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;216:737:80;;;;;;253:31;216:737;;;;;;;;;;;;;;;;-1:-1:-1;;216:737:80;;;;;;;;:::i;:::-;-1:-1:-1;;;;;216:737:80;3095:9:28;216:737:80;;;;;;;;;;;;3004:116:28;216:737:80;;;;;;-1:-1:-1;;216:737:80;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;7061:16:30;;;;216:737:80;;;;;;3095:9:28;216:737:80;3095:9:28;216:737:80;;;3095:9:28;216:737:80;;3004:116:28;;7061:16:30;9400:18;;;9396:106;;7824:45;;216:737:80;7824:45:30;;9609:6;7824:45;;:::i;:::-;735:10:34;;;;9609:6:30;:::i;9396:106::-;9441:50;;;;216:737:80;9441:50:30;216:737:80;;;;;;;;;;;;;;9441:50:30;216:737:80;;;;;;;:::i;:::-;8914:18:30;;;;;:::i;:::-;8946;;;8942:108;;7627:44;216:737:80;7627:44:30;;;9159:6;7627:44;;:::i;:::-;735:10:34;;;;9159:6:30;:::i;8942:108::-;8987:52;;;;216:737:80;8987:52:30;216:737:80;;;;;;;;;;;;;;8987:52:30;216:737:80;;;;;;-1:-1:-1;;216:737:80;;;;;7426:44:30;216:737:80;;7426:44:30;:::i;216:737:80:-;;;;;;-1:-1:-1;;216:737:80;;;;3459:5:28;216:737:80;;:::i;:::-;;;735:10:34;;3459:5:28;:::i;:::-;216:737:80;;;;;;;;;;;;;-1:-1:-1;;216:737:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;216:737:80;;-1:-1:-1;216:737:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;216:737:80;;;;;;;;;;;;;;;;;;;;-1:-1:-1;216:737:80;;-1:-1:-1;216:737:80;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;216:737:80;;;;;;;8699:6:30;216:737:80;;:::i;:::-;7426:44:30;;;;:::i;:::-;735:10:34;;;8699:6:30;:::i;216:737:80:-;;;;;;-1:-1:-1;;216:737:80;;;;;;;8276:6:30;216:737:80;;:::i;:::-;7232:45:30;;;:::i;:::-;735:10:34;;;;8276:6:30;:::i;216:737:80:-;;;;;;-1:-1:-1;;216:737:80;;;;;7824:45:30;216:737:80;;7824:45:30;:::i;216:737:80:-;;;;;;-1:-1:-1;;216:737:80;;;;;;5829:6:30;-1:-1:-1;;;;;216:737:80;;;;;;;;;;;;-1:-1:-1;;216:737:80;;;;;5659:19:30;216:737:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;216:737:80;;;;4986:5:28;216:737:80;;:::i;:::-;;;:::i;:::-;;;735:10:34;4950:5:28;735:10:34;;4950:5:28;;:::i;:::-;4986;:::i;216:737:80:-;;;;;;-1:-1:-1;;216:737:80;;;;;2927:12:28;216:737:80;;;;;;;;;;;;;-1:-1:-1;;216:737:80;;;;;7627:44:30;216:737:80;;7627:44:30;:::i;216:737:80:-;;;;;;-1:-1:-1;;216:737:80;;;;;;:::i;:::-;;;735:10:34;;9813:19:28;9809:89;;-1:-1:-1;;;;;216:737:80;;9911:21:28;;9907:90;;735:10:34;216:737:80;;;;;;;;;-1:-1:-1;216:737:80;;;;;-1:-1:-1;216:737:80;;;;;;;10085:31:28;216:737:80;735:10:34;10085:31:28;;216:737:80;;;;;;;9907:90:28;9955:31;;;216:737:80;9955:31:28;216:737:80;;;;;9955:31:28;9809:89;9855:32;;;216:737:80;9855:32:28;216:737:80;;;;;9855:32:28;216:737:80;;;;;;-1:-1:-1;;216:737:80;;;;;;;1856:5:28;216:737:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;1856:5:28;216:737:80;;;;;;;;;;;;-1:-1:-1;216:737:80;;-1:-1:-1;216:737:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;216:737:80;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;216:737:80;;;;:::o;:::-;;;;;;-1:-1:-1;;216:737:80;;;;;;;;;;;;;;;;-1:-1:-1;;;;;216:737:80;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;216:737:80;;;;;;:::o;:::-;;;;;;-1:-1:-1;;216:737:80;;;;;;:::i;:::-;;;;;6546:17:30;;216:737:80;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;216:737:80;;;;;;;;;-1:-1:-1;;;;;216:737:80;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;216:737:80;;;;;-1:-1:-1;216:737:80;5893:116:30;216:737:80;;-1:-1:-1;;;5971:31:30;;5996:4;5971:31;;;216:737:80;;;5971:31:30;216:737:80;5971:6:30;-1:-1:-1;;;;;216:737:80;5971:31:30;;;;;;;-1:-1:-1;5971:31:30;;;5964:38;5893:116;:::o;5971:31::-;;;216:737:80;5971:31:30;;216:737:80;5971:31:30;;;;;;216:737:80;5971:31:30;;;:::i;:::-;;;216:737:80;;;;;5893:116:30;:::o;5971:31::-;;;-1:-1:-1;5971:31:30;;;216:737:80;;;-1:-1:-1;216:737:80;;;;;6771:153:30;216:737:80;;;;;;3095:9:28;216:737:80;3095:9:28;216:737:80;;6862:55:30;216:737:80;3095:9:28;216:737:80;;6862:55:30;:::i;:::-;6771:153;:::o;216:737:80:-;;;;;;;;;;:::o;9771:213:30:-;2927:12:28;216:737:80;9924:23:30;7652:18;216:737:80;;;;;;;9949:13:30;;:::i;:::-;7652:18;216:737:80;;;;;;;9894:83:30;;7652:18;9894:83;;:::i;9771:213::-;2927:12:28;216:737:80;9924:23:30;216:737:80;;;;;;;;9949:13:30;;:::i;:::-;216:737:80;;;;;;;;9894:83:30;;216:737:80;9894:83:30;;:::i;10415:477:28:-;-1:-1:-1;;;;;216:737:80;;;-1:-1:-1;216:737:80;;;;;;;;;;;;;;;;;;;;;;;;;10415:477:28;;10580:37;;10576:310;;10415:477;;;;;:::o;10576:310::-;10637:24;;;10633:130;;9813:19;;9809:89;;-1:-1:-1;;;;;216:737:80;;9911:21:28;9907:90;;-1:-1:-1;216:737:80;3657:11:28;216:737:80;;;-1:-1:-1;216:737:80;10006:27:28;216:737:80;;;;;;-1:-1:-1;216:737:80;;;;-1:-1:-1;216:737:80;;;;;10576:310:28;;;;;;10633:130;10688:60;;;;;;-1:-1:-1;10688:60:28;216:737:80;;;;;;10688:60:28;216:737:80;;;;;;-1:-1:-1;10688:60:28;5393:300;-1:-1:-1;;;;;216:737:80;;5476:18:28;;5472:86;;-1:-1:-1;;;;;216:737:80;;5571:16:28;;5567:86;;216:737:80;5492:1:28;216:737:80;5492:1:28;216:737:80;;;5492:1:28;216:737:80;;6340:19:28;;;6336:115;;216:737:80;7083:25:28;216:737:80;;;;5492:1:28;216:737:80;5492:1:28;216:737:80;;;;5492:1:28;216:737:80;;;5492:1:28;216:737:80;5492:1:28;216:737:80;;;5492:1:28;216:737:80;;;;;;;;;;;;7083:25:28;5393:300::o;6336:115::-;6386:50;;;;5492:1;6386:50;;216:737:80;;;;;;5492:1:28;6386:50;5567:86;5610:32;;;5492:1;5610:32;5492:1;5610:32;216:737:80;;5492:1:28;5610:32;5472:86;5517:30;;;5492:1;5517:30;5492:1;5517:30;216:737:80;;5492:1:28;5517:30;10108:213:30;10245:13;;:::i;:::-;216:737:80;10261:1:30;216:737:80;;;;;;;2927:12:28;216:737:80;10261:1:30;216:737:80;;;;;;;10231:83:30;;216:737:80;10231:83:30;;:::i;10108:213::-;10245:13;;:::i;:::-;216:737:80;7451:18:30;216:737:80;;;;;;;2927:12:28;216:737:80;7451:18:30;216:737:80;;;;;;;10231:83:30;;7451:18;10231:83;;:::i;10385:831::-;216:737:80;;-1:-1:-1;;;1829:53:32;;;;-1:-1:-1;;;;;216:737:80;;;1829:53:32;;;216:737:80;;;11105:4:30;216:737:80;;;;;;;;;;;1829:53:32;;216:737:80;10385:831:30;;1829:53:32;;;;216:737:80;1829:53:32;:::i;:::-;11081:6:30;1829:53:32;:::i;:::-;-1:-1:-1;;;;;216:737:80;;7528:21:28;;7524:91;;11168:41:30;216:737:80;;6233:21:28;216:737:80;;6233:21:28;216:737:80;6233:21:28;:::i;:::-;;216:737:80;;-1:-1:-1;216:737:80;-1:-1:-1;1829:53:32;216:737:80;;-1:-1:-1;216:737:80;;;;;;;;-1:-1:-1;7083:25:28;1829:53:32;216:737:80;;;;;7083:25:28;216:737:80;;;;;1829:53:32;216:737:80;;;11168:41:30;10385:831::o;11283:915::-;-1:-1:-1;;;;;216:737:80;;;;11283:915:30;;216:737:80;;;;11283:915:30;;;;;11460:15;;;11456:84;;11283:915;8054:21:28;;;;;8050:89;;216:737:80;8073:1:28;216:737:80;8073:1:28;216:737:80;;;8073:1:28;216:737:80;;6340:19:28;;;6336:115;;216:737:80;;;;12142:49:30;216:737:80;;8073:1:28;216:737:80;8073:1:28;216:737:80;;;;8073:1:28;216:737:80;;;6810:21:28;216:737:80;;6810:21:28;216:737:80;8073:1:28;216:737:80;7083:25:28;216:737:80;;;;;;7083:25:28;216:737:80;;-1:-1:-1;;;216:737:80;1412:43:32;;;-1:-1:-1;;;;;216:737:80;;;1412:43:32;;;216:737:80;;;;;;;;;;1412:43:32;;216:737:80;1412:43:32;;;;216:737:80;1412:43:32;:::i;:::-;216:737:80;;;;;;;;;12142:49:30;11283:915::o;6336:115:28:-;6386:50;;;;8073:1;6386:50;;216:737:80;;;;;;8073:1:28;6386:50;11456:84:30;11522:6;;;:::i;:::-;11456:84;;;;;8641:238:38;;;8768:25;;;;;:::i;:::-;216:737:80;;;;;;;26935:1:38;216:737:80;;;26912:24:38;8812:59;;;;8641:238;34906:55:39;;8768:104:38;34906:55:39;;;;8768:104:38;;:::i;8812:59::-;8842:25;;;;;;;8768:104;8842:25;;:29;;8812:59;;;;8842:25;216:737:80;;;-1:-1:-1;216:737:80;;;;;-1:-1:-1;216:737:80;;;;;-1:-1:-1;216:737:80;;;;;-1:-1:-1;216:737:80;4289:4223:38;;216:737:80;;;;-1:-1:-1;;216:737:80;4289:4223:38;4881:131;;;;;;;;;;;;5093:10;;5089:368;;5567:20;;;;5563:136;;5985:300;;;;216:737:80;;;6504:31:38;;6549:375;;;7384:1;216:737:80;7365:1:38;216:737:80;7364:21:38;216:737:80;;;7384:1:38;216:737:80;;;;;7384:1:38;216:737:80;;;;;7384:1:38;216:737:80;;;;;7384:1:38;216:737:80;;;;;7384:1:38;216:737:80;;;;;7384:1:38;216:737:80;;6549:375:38;;;;216:737:80;6549:375:38;;;5985:300;;;;;;216:737:80;5985:300:38;;6549:375;6990:21;216:737:80;4289:4223:38;:::o;5563:136::-;5619:16;;;939:4:36;5619:64:38;1776:119:36;216:737:80;1776:119:36;;;;;;5619:64:38;844:4:36;5619:64:38;;5089:368;216:737:80;;;;;;;;;5416:26:38;:::o;6468:629:32:-;3256:31:33;;-1:-1:-1;;;;;216:737:80;;;;2626:1:33;;;;3256:31;;2626:1;216:737:80;3256:31:33;;216:737:80;;;;;;;;;;3304:55:33;216:737:80;;;;;3256:31:33;216:737:80;;;;;;;;;:::i;:::-;;;;2626:1:33;3256:31;216:737:80;;;;3304:55:33;;:::i;:::-;216:737:80;;6960:22:32;;;;:57;;;;216:737:80;6956:135:32;;;;6468:629;:::o;6956:135::-;7040:40;;;2626:1:33;7040:40:32;;216:737:80;;2626:1:33;7040:40:32;6960:57;6987:30;;;;3256:31:33;6987:30:32;;;216:737:80;;;;3256:31:33;6987:30:32;216:737:80;;;;;;;;;6960:57:32;;;;216:737:80;3304:55:33;216:737:80;;;;;4421:582:33;;4593:8;;-1:-1:-1;216:737:80;;5674:21:33;:17;;5846:142;;;;;;5670:385;6025:19;;;5694:1;6025:19;;5694:1;6025:19;4589:408;216:737:80;;4841:22:33;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:33;4917:24;;;-1:-1:-1;;;;;216:737:80;;;;4917:24:33;216:737:80;;;4917:24:33;4841:49;4867:18;;;:23;4841:49;","linkReferences":{},"immutableReferences":{"47616":[{"start":1259,"length":32},{"start":2184,"length":32},{"start":2945,"length":32}],"47618":[{"start":1326,"length":32}]}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","asset()":"38d52e0f","balanceOf(address)":"70a08231","convertToAssets(uint256)":"07a2d13a","convertToShares(uint256)":"c6e6f592","decimals()":"313ce567","deposit(uint256,address)":"6e553f65","isBufferInitialized()":"dc0a9929","maxDeposit(address)":"402d267d","maxMint(address)":"c63d75b6","maxRedeem(address)":"d905777e","maxWithdraw(address)":"ce96cb77","mint(uint256,address)":"94bf804d","name()":"06fdde03","previewDeposit(uint256)":"ef8b30f7","previewMint(uint256)":"b3d7f6b9","previewRedeem(uint256)":"4cdad506","previewWithdraw(uint256)":"0a28a477","redeem(uint256,address,address)":"ba087652","symbol()":"95d89b41","totalAssets()":"01e1d114","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256,address,address)":"b460af94"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"_asset\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxDeposit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxMint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxRedeem\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxWithdraw\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"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\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"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\":[],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"convertToAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"convertToShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isBufferInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"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.\"}}],\"ERC4626ExceededMaxDeposit(address,uint256,uint256)\":[{\"details\":\"Attempted to deposit more assets than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxMint(address,uint256,uint256)\":[{\"details\":\"Attempted to mint more shares than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxRedeem(address,uint256,uint256)\":[{\"details\":\"Attempted to redeem more shares than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxWithdraw(address,uint256,uint256)\":[{\"details\":\"Attempted to withdraw more assets than the max amount for `receiver`.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"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\":\"See {IERC20-allowance}.\"},\"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.\"},\"asset()\":{\"details\":\"See {IERC4626-asset}. \"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"convertToAssets(uint256)\":{\"details\":\"See {IERC4626-convertToAssets}. \"},\"convertToShares(uint256)\":{\"details\":\"See {IERC4626-convertToShares}. \"},\"decimals()\":{\"details\":\"Decimals are computed by adding the decimal offset on top of the underlying asset's decimals. This \\\"original\\\" value is cached during construction of the vault contract. If this read operation fails (e.g., the asset has not been created yet), a default of 18 is used to represent the underlying asset's decimals. See {IERC20Metadata-decimals}.\"},\"deposit(uint256,address)\":{\"details\":\"See {IERC4626-deposit}. \"},\"maxDeposit(address)\":{\"details\":\"See {IERC4626-maxDeposit}. \"},\"maxMint(address)\":{\"details\":\"See {IERC4626-maxMint}. \"},\"maxRedeem(address)\":{\"details\":\"See {IERC4626-maxRedeem}. \"},\"maxWithdraw(address)\":{\"details\":\"See {IERC4626-maxWithdraw}. \"},\"mint(uint256,address)\":{\"details\":\"See {IERC4626-mint}. \"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"previewDeposit(uint256)\":{\"details\":\"See {IERC4626-previewDeposit}. \"},\"previewMint(uint256)\":{\"details\":\"See {IERC4626-previewMint}. \"},\"previewRedeem(uint256)\":{\"details\":\"See {IERC4626-previewRedeem}. \"},\"previewWithdraw(uint256)\":{\"details\":\"See {IERC4626-previewWithdraw}. \"},\"redeem(uint256,address,address)\":{\"details\":\"See {IERC4626-redeem}. \"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalAssets()\":{\"details\":\"See {IERC4626-totalAssets}. \"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"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`.\"},\"withdraw(uint256,address,address)\":{\"details\":\"See {IERC4626-withdraw}. \"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/mocks/MockSGOETH.sol\":\"MockSGOETH\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf\",\"dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12\",\"dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC4626.sol\":{\"keccak256\":\"0xf171181c69e4560fbe3c575b8b0457ee4077cf22514c29c1b2cfcd3d9ad515cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66ff4f5325f725be9dd654b2e31c94a621261ff93295cdae03e85f8bd6bee4f2\",\"dweb:/ipfs/QmefUEsDJvdCeX6mehjE645tM9j9PHxfQzoGwZE3mArsZh\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0x29074fe5a74bb024c57b3570abf6c74d8bceed3438694d470fd0166a3ecd196a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f4f8435ccbc56e384f4cc9ac9ff491cf30a82f2beac00e33ccc2cf8af3f77cc3\",\"dweb:/ipfs/QmUKJXxTe6nn1qfgnX8xbnboNNAPUuEmJyGqMZCKNiFBgn\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x6fe40ce2addf1fe91a86c334b51ef5abe9c3b831d5d4d74ecae1d9c7d06cdccb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5027588e408027935ac78e32d9e813fda6bf33349b8a5be5c6c936273743369f\",\"dweb:/ipfs/QmZwSzs94V9u7VSdhw2bhbrogWZ37wvrQFBz6QNJTmKokE\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x8cd59334ed58b8884cd1f775afc9400db702e674e5d6a7a438c655b9de788d7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99e62c7de7318f413b6352e3f2704ca23e7725ff144e43c8bd574d12dbf29047\",\"dweb:/ipfs/QmSEXG2rBx1VxU2uFTWdiChjDvA4osEY2mesjmoVeVhHko\"]},\"test/mocks/MockSGOETH.sol\":{\"keccak256\":\"0x0f5804798309e3db0909d573c0bde00dbf85badfc4c4e60db74b6966edbf048d\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://980ac9b7957e018491a1835246c74d6b82e13553171ce6c77c1fce9ba043ccb8\",\"dweb:/ipfs/Qme2RJ854Dg66TMkX2bbdMHq67G2FioLM8prpztnYU2SLQ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"_asset","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"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":"receiver","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"ERC4626ExceededMaxDeposit"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"ERC4626ExceededMaxMint"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"ERC4626ExceededMaxRedeem"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"ERC4626ExceededMaxWithdraw"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"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":"sender","type":"address","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"uint256","name":"assets","type":"uint256","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"Deposit","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":"sender","type":"address","indexed":true},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"uint256","name":"assets","type":"uint256","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"Withdraw","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":[],"stateMutability":"view","type":"function","name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function","name":"convertToAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function","name":"convertToShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isBufferInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"maxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"maxMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"maxRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function","name":"previewDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function","name":"previewMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function","name":"previewRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function","name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"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"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"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."},"asset()":{"details":"See {IERC4626-asset}. "},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"convertToAssets(uint256)":{"details":"See {IERC4626-convertToAssets}. "},"convertToShares(uint256)":{"details":"See {IERC4626-convertToShares}. "},"decimals()":{"details":"Decimals are computed by adding the decimal offset on top of the underlying asset's decimals. This \"original\" value is cached during construction of the vault contract. If this read operation fails (e.g., the asset has not been created yet), a default of 18 is used to represent the underlying asset's decimals. See {IERC20Metadata-decimals}."},"deposit(uint256,address)":{"details":"See {IERC4626-deposit}. "},"maxDeposit(address)":{"details":"See {IERC4626-maxDeposit}. "},"maxMint(address)":{"details":"See {IERC4626-maxMint}. "},"maxRedeem(address)":{"details":"See {IERC4626-maxRedeem}. "},"maxWithdraw(address)":{"details":"See {IERC4626-maxWithdraw}. "},"mint(uint256,address)":{"details":"See {IERC4626-mint}. "},"name()":{"details":"Returns the name of the token."},"previewDeposit(uint256)":{"details":"See {IERC4626-previewDeposit}. "},"previewMint(uint256)":{"details":"See {IERC4626-previewMint}. "},"previewRedeem(uint256)":{"details":"See {IERC4626-previewRedeem}. "},"previewWithdraw(uint256)":{"details":"See {IERC4626-previewWithdraw}. "},"redeem(uint256,address,address)":{"details":"See {IERC4626-redeem}. "},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalAssets()":{"details":"See {IERC4626-totalAssets}. "},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"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`."},"withdraw(uint256,address,address)":{"details":"See {IERC4626-withdraw}. "}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/mocks/MockSGOETH.sol":"MockSGOETH"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol":{"keccak256":"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06","urls":["bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf","dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb","urls":["bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12","dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC4626.sol":{"keccak256":"0xf171181c69e4560fbe3c575b8b0457ee4077cf22514c29c1b2cfcd3d9ad515cf","urls":["bzz-raw://66ff4f5325f725be9dd654b2e31c94a621261ff93295cdae03e85f8bd6bee4f2","dweb:/ipfs/QmefUEsDJvdCeX6mehjE645tM9j9PHxfQzoGwZE3mArsZh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0x29074fe5a74bb024c57b3570abf6c74d8bceed3438694d470fd0166a3ecd196a","urls":["bzz-raw://f4f8435ccbc56e384f4cc9ac9ff491cf30a82f2beac00e33ccc2cf8af3f77cc3","dweb:/ipfs/QmUKJXxTe6nn1qfgnX8xbnboNNAPUuEmJyGqMZCKNiFBgn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x6fe40ce2addf1fe91a86c334b51ef5abe9c3b831d5d4d74ecae1d9c7d06cdccb","urls":["bzz-raw://5027588e408027935ac78e32d9e813fda6bf33349b8a5be5c6c936273743369f","dweb:/ipfs/QmZwSzs94V9u7VSdhw2bhbrogWZ37wvrQFBz6QNJTmKokE"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x8cd59334ed58b8884cd1f775afc9400db702e674e5d6a7a438c655b9de788d7e","urls":["bzz-raw://99e62c7de7318f413b6352e3f2704ca23e7725ff144e43c8bd574d12dbf29047","dweb:/ipfs/QmSEXG2rBx1VxU2uFTWdiChjDvA4osEY2mesjmoVeVhHko"],"license":"MIT"},"test/mocks/MockSGOETH.sol":{"keccak256":"0x0f5804798309e3db0909d573c0bde00dbf85badfc4c4e60db74b6966edbf048d","urls":["bzz-raw://980ac9b7957e018491a1835246c74d6b82e13553171ce6c77c1fce9ba043ccb8","dweb:/ipfs/Qme2RJ854Dg66TMkX2bbdMHq67G2FioLM8prpztnYU2SLQ"],"license":"AGPL-3.0-or-later"}},"version":1},"id":80} \ No newline at end of file diff --git a/evm/out/MockSUSDC.sol/MockSUSDC.json b/evm/out/MockSUSDC.sol/MockSUSDC.json deleted file mode 100644 index 05b72db..0000000 --- a/evm/out/MockSUSDC.sol/MockSUSDC.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_asset","type":"address","internalType":"contract IERC20"}],"stateMutability":"nonpayable"},{"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":"asset","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"convertToAssets","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"convertToShares","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"isBufferInitialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"maxDeposit","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxMint","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxRedeem","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxWithdraw","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"previewDeposit","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"previewMint","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"previewRedeem","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"previewWithdraw","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"redeem","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalAssets","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"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":"function","name":"withdraw","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"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":"Deposit","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"assets","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"shares","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":"event","name":"Withdraw","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"assets","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"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"}]},{"type":"error","name":"ERC4626ExceededMaxDeposit","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"assets","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC4626ExceededMaxMint","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC4626ExceededMaxRedeem","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC4626ExceededMaxWithdraw","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"assets","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60c0806040523461036f576020816113eb803803809161001f8285610373565b83398101031261036f57516001600160a01b038116810361036f5760409081519161004a8184610373565b600b83526a5374616b6564205553444360a81b602084015280519161006f8284610373565b6005835264735553444360d81b602084015283516001600160401b03811161028057600354600181811c91168015610365575b602082101461026257601f8111610302575b50602094601f821160011461029f579481929394955f92610294575b50508160011b915f199060031b1c1916176003555b82516001600160401b03811161028057600454600181811c91168015610276575b602082101461026257601f81116101ff575b506020601f821160011461019c57819293945f92610191575b50508160011b915f199060031b1c1916176004555b61014f81610396565b9015610189575b60a05260805251610fa2908161044982396080518181816104eb015281816108880152610b81015260a0518161052e0152f35b506012610156565b015190505f80610131565b601f1982169060045f52805f20915f5b8181106101e7575095836001959697106101cf575b505050811b01600455610146565b01515f1960f88460031b161c191690555f80806101c1565b9192602060018192868b0151815501940192016101ac565b60045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c81019160208410610258575b601f0160051c01905b81811061024d5750610118565b5f8155600101610240565b9091508190610237565b634e487b7160e01b5f52602260045260245ffd5b90607f1690610106565b634e487b7160e01b5f52604160045260245ffd5b015190505f806100d0565b601f1982169560035f52805f20915f5b8881106102ea575083600195969798106102d2575b505050811b016003556100e5565b01515f1960f88460031b161c191690555f80806102c4565b919260206001819286850151815501940192016102af565b60035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c8101916020841061035b575b601f0160051c01905b81811061035057506100b4565b5f8155600101610343565b909150819061033a565b90607f16906100a2565b5f80fd5b601f909101601f19168101906001600160401b0382119082101761028057604052565b5f8091604051602081019063313ce56760e01b8252600481526103ba602482610373565b51916001600160a01b03165afa3d15610440573d906001600160401b03821161028057604051916103f5601f8201601f191660200184610373565b82523d5f602084013e5b80610434575b610411575b505f905f90565b60208180518101031261036f576020015160ff811161040a579060ff6001921690565b50602081511015610405565b6060906103ff56fe60806040526004361015610011575f80fd5b5f3560e01c806301e1d1141461074b57806306fdde031461069057806307a2d13a1461022e578063095ea7b3146105e85780630a28a477146105ca57806318160ddd146105ad57806323b872dd14610575578063313ce5671461051a57806338d52e0f146104d6578063402d267d146102335780634cdad506146104b85780636e553f651461048557806370a08231146101d357806394bf804d1461045257806395d89b411461034e578063a9059cbb1461031d578063b3d7f6b9146102ff578063b460af94146102a4578063ba08765214610238578063c63d75b614610233578063c6e6f5921461022e578063ce96cb771461020b578063d905777e146101d3578063dc0a9929146101b1578063dd62ed3e146101615763ef8b30f714610137575f80fd5b3461015d57602036600319011261015d576020610155600435610956565b604051908152f35b5f80fd5b3461015d57604036600319011261015d5761017a6107ac565b6101826107c2565b6001600160a01b039182165f908152600160209081526040808320949093168252928352819020549051908152f35b3461015d575f36600319011261015d57602060ff600554166040519015158152f35b3461015d57602036600319011261015d5760206101556101f16107ac565b6001600160a01b03165f9081526020819052604090205490565b3461015d57602036600319011261015d5760206101556102296107ac565b6108fd565b61078f565b6107d8565b3461015d57610246366107fd565b90916102628260018060a01b03165f525f60205260405f205490565b80821161028357508060209361027a61015593610ae0565b93849133610c31565b91632e52afbb60e21b5f5260018060a01b031660045260245260445260645ffd5b3461015d576102b2366107fd565b90916102bd826108fd565b8082116102de5750602092816102d561015593610928565b93849233610c31565b91633fa733bb60e21b5f5260018060a01b031660045260245260445260645ffd5b3461015d57602036600319011261015d576020610155600435610b0d565b3461015d57604036600319011261015d576103436103396107ac565b6024359033610a23565b602060405160018152f35b3461015d575f36600319011261015d576040515f6004548060011c90600181168015610448575b6020831081146104345782855290811561041057506001146103b2575b6103ae836103a281850382610837565b60405191829182610765565b0390f35b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b8082106103f6575090915081016020016103a2610392565b9192600181602092548385880101520191019092916103de565b60ff191660208086019190915291151560051b840190910191506103a29050610392565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610375565b3461015d57604036600319011261015d5760206004356101556104736107c2565b9161047d81610b0d565b809333610b3b565b3461015d57604036600319011261015d5760206004356101556104a66107c2565b6104af83610956565b92839133610b3b565b3461015d57602036600319011261015d576020610155600435610ae0565b3461015d575f36600319011261015d576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461015d575f36600319011261015d5760ff7f00000000000000000000000000000000000000000000000000000000000000001660ff811161056157602090604051908152f35b634e487b7160e01b5f52601160045260245ffd5b3461015d57606036600319011261015d576103436105916107ac565b6105996107c2565b604435916105a8833383610983565b610a23565b3461015d575f36600319011261015d576020600254604051908152f35b3461015d57602036600319011261015d576020610155600435610928565b3461015d57604036600319011261015d576106016107ac565b60243590331561067d576001600160a01b031690811561066a57335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b3461015d575f36600319011261015d576040515f6003548060011c90600181168015610741575b6020831081146104345782855290811561041057506001146106e3576103ae836103a281850382610837565b91905060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f905b808210610727575090915081016020016103a2610392565b91926001816020925483858801015201910190929161070f565b91607f16916106b7565b3461015d575f36600319011261015d57602061015561086d565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b3461015d57602036600319011261015d5760206040516004358152f35b600435906001600160a01b038216820361015d57565b602435906001600160a01b038216820361015d57565b3461015d57602036600319011261015d576107f16107ac565b5060206040515f198152f35b606090600319011261015d57600435906024356001600160a01b038116810361015d57906044356001600160a01b038116810361015d5790565b90601f8019910116810190811067ffffffffffffffff82111761085957604052565b634e487b7160e01b5f52604160045260245ffd5b6040516370a0823160e01b81523060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108f2575f916108c3575090565b90506020813d6020116108ea575b816108de60209383610837565b8101031261015d575190565b3d91506108d1565b6040513d5f823e3d90fd5b60018060a01b03165f525f60205261091860405f2054610ae0565b90565b9190820180921161056157565b60025490600182018092116105615761093f61086d565b600181018091116105615761091892600192610d44565b60025490600182018092116105615761096d61086d565b6001810180911161056157610918925f92610d44565b6001600160a01b039081165f81815260016020818152604080842095871684529490529290205493929184016109ba575b50505050565b828410610a0057801561067d576001600160a01b0382161561066a575f52600160205260405f209060018060a01b03165f5260205260405f20910390555f8080806109b4565b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b0316908115610acd576001600160a01b0316918215610aba57815f525f60205260405f2054818110610aa157817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b63ec442f0560e01b5f525f60045260245ffd5b634b637e8f60e11b5f525f60045260245ffd5b610ae861086d565b9060018201809211610561576002546001810180911161056157610918925f92610d44565b610b1561086d565b906001820180921161056157600254600181018091116105615761091892600192610d44565b6040516323b872dd60e01b60208201526001600160a01b039091166024820181905230604483015260648083018590528252929190610ba590610b7f608482610837565b7f0000000000000000000000000000000000000000000000000000000000000000610e5b565b6001600160a01b0316928315610aba577fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d79181610be660409360025461091b565b600255855f525f602052825f20818154019055855f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60208651858152a382519182526020820152a3565b6001600160a01b03808416959294908216939092918290878603610d33575b5050508415610acd57845f525f60205260405f2054818110610d1a5791816040927ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db94885f525f60205203835f205580600254036002555f877fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60208651858152a3825163a9059cbb60e01b60208201526001600160a01b03909616602487018190526044808801849052875295610d0d90610b7f606482610837565b82519182526020820152a4565b8563391434e360e21b5f5260045260245260445260645ffd5b610d3c92610983565b5f8181610c50565b9291610d51818386610db6565b926004811015610da2576001809116149182610d77575b5050610918925015159061091b565b9080925015610d8e57610918930915155f80610d68565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b91818302915f1981850993838086109503948086039514610e4d5784831115610e2e5790829109815f0382168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b82610e465760125b634e487b715f526020526024601cfd5b6011610e36565b505080925015610d8e570490565b81516001600160a01b03909116915f91829160200182855af13d15610f02573d67ffffffffffffffff811161085957610eb69160405191610ea66020601f19601f8401160184610837565b82523d5f602084013e5b83610f0e565b8051908115159182610ede575b5050610ecc5750565b635274afe760e01b5f5260045260245ffd5b819250906020918101031261015d576020015180159081150361015d575f80610ec3565b610eb690606090610eb0565b90610f325750805115610f2357805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580610f63575b610f43575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15610f3b56fea264697066735822122030e578a6ab691e6efcf0de3f1efc050cfdb95d2181c5a43a9ea8a724a0678a6f64736f6c634300081b0033","sourceMap":"216:729:81:-:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;216:729:81;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;216:729:81;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;216:729:81;;;;;;-1:-1:-1;;;;;216:729:81;;;;1667:13:28;216:729:81;;;;;;;;;;;-1:-1:-1;216:729:81;;;;;;;;;;;-1:-1:-1;216:729:81;;;;;;;;;;;;;;;;-1:-1:-1;216:729:81;;;;;;;;;;;;;1667:13:28;216:729:81;;;;;1667:13:28;216:729:81;;;;-1:-1:-1;;;;;216:729:81;;;;1690:17:28;216:729:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;216:729:81;;;;;;;;;;;;;1667:13:28;216:729:81;;;;;1690:17:28;216:729:81;;4353:28:30;;;:::i;:::-;4413;;;;;4391:50;;4451:15;;216:729:81;;;;;;;4451:15:30;216:729:81;;;;;;;;;;;;;;;4391:50:30;216:729:81;;;;;;4413:28:30;;4439:2;4413:28;;216:729:81;;;;-1:-1:-1;216:729:81;;;;;;;;;;1690:17:28;-1:-1:-1;216:729:81;;-1:-1:-1;216:729:81;;-1:-1:-1;216:729:81;;;;;;;;;;;;;;;;;;;;;;;1690:17:28;216:729:81;;;;;;;;;;1667:13:28;216:729:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1690:17:28;-1:-1:-1;216:729:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;216:729:81;;;;;;;;;-1:-1:-1;216:729:81;;;;;;;;-1:-1:-1;216:729:81;;1690:17:28;216:729:81;;-1:-1:-1;216:729:81;;;;;;;;;;;;-1:-1:-1;216:729:81;;1690:17:28;216:729:81;;-1:-1:-1;216:729:81;;;;;-1:-1:-1;216:729:81;;;;;;;;;;1667:13:28;-1:-1:-1;216:729:81;;-1:-1:-1;216:729:81;;-1:-1:-1;216:729:81;;;;;;;;;;;;;;;;;;;;;;;1667:13:28;216:729:81;;;;;;;;;;1667:13:28;216:729:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1667:13:28;-1:-1:-1;216:729:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;216:729:81;;;;;;;;;-1:-1:-1;216:729:81;;;;;;;;;;;;-1:-1:-1;216:729:81;;;;;;;-1:-1:-1;;216:729:81;;;;-1:-1:-1;;;;;216:729:81;;;;;;;;;;:::o;4616:533:30:-;4753:93;4616:533;;216:729:81;;4793:43:30;;;;;;;;;;;;;;;;:::i;:::-;4753:93;;-1:-1:-1;;;;;216:729:81;4753:93:30;;216:729:81;;;;;;-1:-1:-1;;;;;216:729:81;;;;;;;;;;;-1:-1:-1;;216:729:81;4793:43:30;216:729:81;;;:::i;:::-;;;;4753:93:30;4793:43;216:729:81;;;;4860:39:30;;;216:729:81;4856:260:30;;216:729:81;5125:17:30;4753:93;5125:17;4753:93;4616:533;:::o;4856:260::-;4793:43;216:729:81;;;4942:38:30;;216:729:81;;;;4793:43:30;4942:38;216:729:81;;4998:35:30;;4856:260;4994:112;5053:38;216:729:81;;;;5053:38:30;:::o;4860:39::-;216:729:81;4793:43:30;216:729:81;;4871:28:30;;4860:39;;216:729:81;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806301e1d1141461074b57806306fdde031461069057806307a2d13a1461022e578063095ea7b3146105e85780630a28a477146105ca57806318160ddd146105ad57806323b872dd14610575578063313ce5671461051a57806338d52e0f146104d6578063402d267d146102335780634cdad506146104b85780636e553f651461048557806370a08231146101d357806394bf804d1461045257806395d89b411461034e578063a9059cbb1461031d578063b3d7f6b9146102ff578063b460af94146102a4578063ba08765214610238578063c63d75b614610233578063c6e6f5921461022e578063ce96cb771461020b578063d905777e146101d3578063dc0a9929146101b1578063dd62ed3e146101615763ef8b30f714610137575f80fd5b3461015d57602036600319011261015d576020610155600435610956565b604051908152f35b5f80fd5b3461015d57604036600319011261015d5761017a6107ac565b6101826107c2565b6001600160a01b039182165f908152600160209081526040808320949093168252928352819020549051908152f35b3461015d575f36600319011261015d57602060ff600554166040519015158152f35b3461015d57602036600319011261015d5760206101556101f16107ac565b6001600160a01b03165f9081526020819052604090205490565b3461015d57602036600319011261015d5760206101556102296107ac565b6108fd565b61078f565b6107d8565b3461015d57610246366107fd565b90916102628260018060a01b03165f525f60205260405f205490565b80821161028357508060209361027a61015593610ae0565b93849133610c31565b91632e52afbb60e21b5f5260018060a01b031660045260245260445260645ffd5b3461015d576102b2366107fd565b90916102bd826108fd565b8082116102de5750602092816102d561015593610928565b93849233610c31565b91633fa733bb60e21b5f5260018060a01b031660045260245260445260645ffd5b3461015d57602036600319011261015d576020610155600435610b0d565b3461015d57604036600319011261015d576103436103396107ac565b6024359033610a23565b602060405160018152f35b3461015d575f36600319011261015d576040515f6004548060011c90600181168015610448575b6020831081146104345782855290811561041057506001146103b2575b6103ae836103a281850382610837565b60405191829182610765565b0390f35b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b8082106103f6575090915081016020016103a2610392565b9192600181602092548385880101520191019092916103de565b60ff191660208086019190915291151560051b840190910191506103a29050610392565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610375565b3461015d57604036600319011261015d5760206004356101556104736107c2565b9161047d81610b0d565b809333610b3b565b3461015d57604036600319011261015d5760206004356101556104a66107c2565b6104af83610956565b92839133610b3b565b3461015d57602036600319011261015d576020610155600435610ae0565b3461015d575f36600319011261015d576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461015d575f36600319011261015d5760ff7f00000000000000000000000000000000000000000000000000000000000000001660ff811161056157602090604051908152f35b634e487b7160e01b5f52601160045260245ffd5b3461015d57606036600319011261015d576103436105916107ac565b6105996107c2565b604435916105a8833383610983565b610a23565b3461015d575f36600319011261015d576020600254604051908152f35b3461015d57602036600319011261015d576020610155600435610928565b3461015d57604036600319011261015d576106016107ac565b60243590331561067d576001600160a01b031690811561066a57335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b3461015d575f36600319011261015d576040515f6003548060011c90600181168015610741575b6020831081146104345782855290811561041057506001146106e3576103ae836103a281850382610837565b91905060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f905b808210610727575090915081016020016103a2610392565b91926001816020925483858801015201910190929161070f565b91607f16916106b7565b3461015d575f36600319011261015d57602061015561086d565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b3461015d57602036600319011261015d5760206040516004358152f35b600435906001600160a01b038216820361015d57565b602435906001600160a01b038216820361015d57565b3461015d57602036600319011261015d576107f16107ac565b5060206040515f198152f35b606090600319011261015d57600435906024356001600160a01b038116810361015d57906044356001600160a01b038116810361015d5790565b90601f8019910116810190811067ffffffffffffffff82111761085957604052565b634e487b7160e01b5f52604160045260245ffd5b6040516370a0823160e01b81523060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108f2575f916108c3575090565b90506020813d6020116108ea575b816108de60209383610837565b8101031261015d575190565b3d91506108d1565b6040513d5f823e3d90fd5b60018060a01b03165f525f60205261091860405f2054610ae0565b90565b9190820180921161056157565b60025490600182018092116105615761093f61086d565b600181018091116105615761091892600192610d44565b60025490600182018092116105615761096d61086d565b6001810180911161056157610918925f92610d44565b6001600160a01b039081165f81815260016020818152604080842095871684529490529290205493929184016109ba575b50505050565b828410610a0057801561067d576001600160a01b0382161561066a575f52600160205260405f209060018060a01b03165f5260205260405f20910390555f8080806109b4565b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b0316908115610acd576001600160a01b0316918215610aba57815f525f60205260405f2054818110610aa157817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b63ec442f0560e01b5f525f60045260245ffd5b634b637e8f60e11b5f525f60045260245ffd5b610ae861086d565b9060018201809211610561576002546001810180911161056157610918925f92610d44565b610b1561086d565b906001820180921161056157600254600181018091116105615761091892600192610d44565b6040516323b872dd60e01b60208201526001600160a01b039091166024820181905230604483015260648083018590528252929190610ba590610b7f608482610837565b7f0000000000000000000000000000000000000000000000000000000000000000610e5b565b6001600160a01b0316928315610aba577fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d79181610be660409360025461091b565b600255855f525f602052825f20818154019055855f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60208651858152a382519182526020820152a3565b6001600160a01b03808416959294908216939092918290878603610d33575b5050508415610acd57845f525f60205260405f2054818110610d1a5791816040927ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db94885f525f60205203835f205580600254036002555f877fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60208651858152a3825163a9059cbb60e01b60208201526001600160a01b03909616602487018190526044808801849052875295610d0d90610b7f606482610837565b82519182526020820152a4565b8563391434e360e21b5f5260045260245260445260645ffd5b610d3c92610983565b5f8181610c50565b9291610d51818386610db6565b926004811015610da2576001809116149182610d77575b5050610918925015159061091b565b9080925015610d8e57610918930915155f80610d68565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b91818302915f1981850993838086109503948086039514610e4d5784831115610e2e5790829109815f0382168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b82610e465760125b634e487b715f526020526024601cfd5b6011610e36565b505080925015610d8e570490565b81516001600160a01b03909116915f91829160200182855af13d15610f02573d67ffffffffffffffff811161085957610eb69160405191610ea66020601f19601f8401160184610837565b82523d5f602084013e5b83610f0e565b8051908115159182610ede575b5050610ecc5750565b635274afe760e01b5f5260045260245ffd5b819250906020918101031261015d576020015180159081150361015d575f80610ec3565b610eb690606090610eb0565b90610f325750805115610f2357805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580610f63575b610f43575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15610f3b56fea264697066735822122030e578a6ab691e6efcf0de3f1efc050cfdb95d2181c5a43a9ea8a724a0678a6f64736f6c634300081b0033","sourceMap":"216:729:81:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;216:729:81;;;;;7232:45:30;216:729:81;;7232:45:30;:::i;:::-;216:729:81;;;;;;;;;;;;;;;;-1:-1:-1;;216:729:81;;;;;;:::i;:::-;;;:::i;:::-;-1:-1:-1;;;;;216:729:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;216:729:81;;;;;;252:31;216:729;;;;;;;;;;;;;;;;-1:-1:-1;;216:729:81;;;;;;;;:::i;:::-;-1:-1:-1;;;;;216:729:81;3095:9:28;216:729:81;;;;;;;;;;;;3004:116:28;216:729:81;;;;;;-1:-1:-1;;216:729:81;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;7061:16:30;;;;216:729:81;;;;;;3095:9:28;216:729:81;3095:9:28;216:729:81;;;3095:9:28;216:729:81;;3004:116:28;;7061:16:30;9400:18;;;9396:106;;7824:45;;216:729:81;7824:45:30;;9609:6;7824:45;;:::i;:::-;735:10:34;;;;9609:6:30;:::i;9396:106::-;9441:50;;;;216:729:81;9441:50:30;216:729:81;;;;;;;;;;;;;;9441:50:30;216:729:81;;;;;;;:::i;:::-;8914:18:30;;;;;:::i;:::-;8946;;;8942:108;;7627:44;216:729:81;7627:44:30;;;9159:6;7627:44;;:::i;:::-;735:10:34;;;;9159:6:30;:::i;8942:108::-;8987:52;;;;216:729:81;8987:52:30;216:729:81;;;;;;;;;;;;;;8987:52:30;216:729:81;;;;;;-1:-1:-1;;216:729:81;;;;;7426:44:30;216:729:81;;7426:44:30;:::i;216:729:81:-;;;;;;-1:-1:-1;;216:729:81;;;;3459:5:28;216:729:81;;:::i;:::-;;;735:10:34;;3459:5:28;:::i;:::-;216:729:81;;;;;;;;;;;;;-1:-1:-1;;216:729:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;216:729:81;;-1:-1:-1;216:729:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;216:729:81;;;;;;;;;;;;;;;;;;;;-1:-1:-1;216:729:81;;-1:-1:-1;216:729:81;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;216:729:81;;;;;;;8699:6:30;216:729:81;;:::i;:::-;7426:44:30;;;;:::i;:::-;735:10:34;;;8699:6:30;:::i;216:729:81:-;;;;;;-1:-1:-1;;216:729:81;;;;;;;8276:6:30;216:729:81;;:::i;:::-;7232:45:30;;;:::i;:::-;735:10:34;;;;8276:6:30;:::i;216:729:81:-;;;;;;-1:-1:-1;;216:729:81;;;;;7824:45:30;216:729:81;;7824:45:30;:::i;216:729:81:-;;;;;;-1:-1:-1;;216:729:81;;;;;;5829:6:30;-1:-1:-1;;;;;216:729:81;;;;;;;;;;;;-1:-1:-1;;216:729:81;;;;;5659:19:30;216:729:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;216:729:81;;;;4986:5:28;216:729:81;;:::i;:::-;;;:::i;:::-;;;735:10:34;4950:5:28;735:10:34;;4950:5:28;;:::i;:::-;4986;:::i;216:729:81:-;;;;;;-1:-1:-1;;216:729:81;;;;;2927:12:28;216:729:81;;;;;;;;;;;;;-1:-1:-1;;216:729:81;;;;;7627:44:30;216:729:81;;7627:44:30;:::i;216:729:81:-;;;;;;-1:-1:-1;;216:729:81;;;;;;:::i;:::-;;;735:10:34;;9813:19:28;9809:89;;-1:-1:-1;;;;;216:729:81;;9911:21:28;;9907:90;;735:10:34;216:729:81;;;;;;;;;-1:-1:-1;216:729:81;;;;;-1:-1:-1;216:729:81;;;;;;;10085:31:28;216:729:81;735:10:34;10085:31:28;;216:729:81;;;;;;;9907:90:28;9955:31;;;216:729:81;9955:31:28;216:729:81;;;;;9955:31:28;9809:89;9855:32;;;216:729:81;9855:32:28;216:729:81;;;;;9855:32:28;216:729:81;;;;;;-1:-1:-1;;216:729:81;;;;;;;1856:5:28;216:729:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;1856:5:28;216:729:81;;;;;;;;;;;;-1:-1:-1;216:729:81;;-1:-1:-1;216:729:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;216:729:81;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;216:729:81;;;;:::o;:::-;;;;;;-1:-1:-1;;216:729:81;;;;;;;;;;;;;;;;-1:-1:-1;;;;;216:729:81;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;216:729:81;;;;;;:::o;:::-;;;;;;-1:-1:-1;;216:729:81;;;;;;:::i;:::-;;;;;6546:17:30;;216:729:81;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;216:729:81;;;;;;;;;-1:-1:-1;;;;;216:729:81;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;216:729:81;;;;;-1:-1:-1;216:729:81;5893:116:30;216:729:81;;-1:-1:-1;;;5971:31:30;;5996:4;5971:31;;;216:729:81;;;5971:31:30;216:729:81;5971:6:30;-1:-1:-1;;;;;216:729:81;5971:31:30;;;;;;;-1:-1:-1;5971:31:30;;;5964:38;5893:116;:::o;5971:31::-;;;216:729:81;5971:31:30;;216:729:81;5971:31:30;;;;;;216:729:81;5971:31:30;;;:::i;:::-;;;216:729:81;;;;;5893:116:30;:::o;5971:31::-;;;-1:-1:-1;5971:31:30;;;216:729:81;;;-1:-1:-1;216:729:81;;;;;6771:153:30;216:729:81;;;;;;3095:9:28;216:729:81;3095:9:28;216:729:81;;6862:55:30;216:729:81;3095:9:28;216:729:81;;6862:55:30;:::i;:::-;6771:153;:::o;216:729:81:-;;;;;;;;;;:::o;9771:213:30:-;2927:12:28;216:729:81;9924:23:30;7652:18;216:729:81;;;;;;;9949:13:30;;:::i;:::-;7652:18;216:729:81;;;;;;;9894:83:30;;7652:18;9894:83;;:::i;9771:213::-;2927:12:28;216:729:81;9924:23:30;216:729:81;;;;;;;;9949:13:30;;:::i;:::-;216:729:81;;;;;;;;9894:83:30;;216:729:81;9894:83:30;;:::i;10415:477:28:-;-1:-1:-1;;;;;216:729:81;;;-1:-1:-1;216:729:81;;;;;;;;;;;;;;;;;;;;;;;;;10415:477:28;;10580:37;;10576:310;;10415:477;;;;;:::o;10576:310::-;10637:24;;;10633:130;;9813:19;;9809:89;;-1:-1:-1;;;;;216:729:81;;9911:21:28;9907:90;;-1:-1:-1;216:729:81;3657:11:28;216:729:81;;;-1:-1:-1;216:729:81;10006:27:28;216:729:81;;;;;;-1:-1:-1;216:729:81;;;;-1:-1:-1;216:729:81;;;;;10576:310:28;;;;;;10633:130;10688:60;;;;;;-1:-1:-1;10688:60:28;216:729:81;;;;;;10688:60:28;216:729:81;;;;;;-1:-1:-1;10688:60:28;5393:300;-1:-1:-1;;;;;216:729:81;;5476:18:28;;5472:86;;-1:-1:-1;;;;;216:729:81;;5571:16:28;;5567:86;;216:729:81;5492:1:28;216:729:81;5492:1:28;216:729:81;;;5492:1:28;216:729:81;;6340:19:28;;;6336:115;;216:729:81;7083:25:28;216:729:81;;;;5492:1:28;216:729:81;5492:1:28;216:729:81;;;;5492:1:28;216:729:81;;;5492:1:28;216:729:81;5492:1:28;216:729:81;;;5492:1:28;216:729:81;;;;;;;;;;;;7083:25:28;5393:300::o;6336:115::-;6386:50;;;;5492:1;6386:50;;216:729:81;;;;;;5492:1:28;6386:50;5567:86;5610:32;;;5492:1;5610:32;5492:1;5610:32;216:729:81;;5492:1:28;5610:32;5472:86;5517:30;;;5492:1;5517:30;5492:1;5517:30;216:729:81;;5492:1:28;5517:30;10108:213:30;10245:13;;:::i;:::-;216:729:81;10261:1:30;216:729:81;;;;;;;2927:12:28;216:729:81;10261:1:30;216:729:81;;;;;;;10231:83:30;;216:729:81;10231:83:30;;:::i;10108:213::-;10245:13;;:::i;:::-;216:729:81;7451:18:30;216:729:81;;;;;;;2927:12:28;216:729:81;7451:18:30;216:729:81;;;;;;;10231:83:30;;7451:18;10231:83;;:::i;10385:831::-;216:729:81;;-1:-1:-1;;;1829:53:32;;;;-1:-1:-1;;;;;216:729:81;;;1829:53:32;;;216:729:81;;;11105:4:30;216:729:81;;;;;;;;;;;1829:53:32;;216:729:81;10385:831:30;;1829:53:32;;;;216:729:81;1829:53:32;:::i;:::-;11081:6:30;1829:53:32;:::i;:::-;-1:-1:-1;;;;;216:729:81;;7528:21:28;;7524:91;;11168:41:30;216:729:81;;6233:21:28;216:729:81;;6233:21:28;216:729:81;6233:21:28;:::i;:::-;;216:729:81;;-1:-1:-1;216:729:81;-1:-1:-1;1829:53:32;216:729:81;;-1:-1:-1;216:729:81;;;;;;;;-1:-1:-1;7083:25:28;1829:53:32;216:729:81;;;;;7083:25:28;216:729:81;;;;;1829:53:32;216:729:81;;;11168:41:30;10385:831::o;11283:915::-;-1:-1:-1;;;;;216:729:81;;;;11283:915:30;;216:729:81;;;;11283:915:30;;;;;11460:15;;;11456:84;;11283:915;8054:21:28;;;;;8050:89;;216:729:81;8073:1:28;216:729:81;8073:1:28;216:729:81;;;8073:1:28;216:729:81;;6340:19:28;;;6336:115;;216:729:81;;;;12142:49:30;216:729:81;;8073:1:28;216:729:81;8073:1:28;216:729:81;;;;8073:1:28;216:729:81;;;6810:21:28;216:729:81;;6810:21:28;216:729:81;8073:1:28;216:729:81;7083:25:28;216:729:81;;;;;;7083:25:28;216:729:81;;-1:-1:-1;;;216:729:81;1412:43:32;;;-1:-1:-1;;;;;216:729:81;;;1412:43:32;;;216:729:81;;;;;;;;;;1412:43:32;;216:729:81;1412:43:32;;;;216:729:81;1412:43:32;:::i;:::-;216:729:81;;;;;;;;;12142:49:30;11283:915::o;6336:115:28:-;6386:50;;;;8073:1;6386:50;;216:729:81;;;;;;8073:1:28;6386:50;11456:84:30;11522:6;;;:::i;:::-;11456:84;;;;;8641:238:38;;;8768:25;;;;;:::i;:::-;216:729:81;;;;;;;26935:1:38;216:729:81;;;26912:24:38;8812:59;;;;8641:238;34906:55:39;;8768:104:38;34906:55:39;;;;8768:104:38;;:::i;8812:59::-;8842:25;;;;;;;8768:104;8842:25;;:29;;8812:59;;;;8842:25;216:729:81;;;-1:-1:-1;216:729:81;;;;;-1:-1:-1;216:729:81;;;;;-1:-1:-1;216:729:81;;;;;-1:-1:-1;216:729:81;4289:4223:38;;216:729:81;;;;-1:-1:-1;;216:729:81;4289:4223:38;4881:131;;;;;;;;;;;;5093:10;;5089:368;;5567:20;;;;5563:136;;5985:300;;;;216:729:81;;;6504:31:38;;6549:375;;;7384:1;216:729:81;7365:1:38;216:729:81;7364:21:38;216:729:81;;;7384:1:38;216:729:81;;;;;7384:1:38;216:729:81;;;;;7384:1:38;216:729:81;;;;;7384:1:38;216:729:81;;;;;7384:1:38;216:729:81;;;;;7384:1:38;216:729:81;;6549:375:38;;;;216:729:81;6549:375:38;;;5985:300;;;;;;216:729:81;5985:300:38;;6549:375;6990:21;216:729:81;4289:4223:38;:::o;5563:136::-;5619:16;;;939:4:36;5619:64:38;1776:119:36;216:729:81;1776:119:36;;;;;;5619:64:38;844:4:36;5619:64:38;;5089:368;216:729:81;;;;;;;;;5416:26:38;:::o;6468:629:32:-;3256:31:33;;-1:-1:-1;;;;;216:729:81;;;;2626:1:33;;;;3256:31;;2626:1;216:729:81;3256:31:33;;216:729:81;;;;;;;;;;3304:55:33;216:729:81;;;;;3256:31:33;216:729:81;;;;;;;;;:::i;:::-;;;;2626:1:33;3256:31;216:729:81;;;;3304:55:33;;:::i;:::-;216:729:81;;6960:22:32;;;;:57;;;;216:729:81;6956:135:32;;;;6468:629;:::o;6956:135::-;7040:40;;;2626:1:33;7040:40:32;;216:729:81;;2626:1:33;7040:40:32;6960:57;6987:30;;;;3256:31:33;6987:30:32;;;216:729:81;;;;3256:31:33;6987:30:32;216:729:81;;;;;;;;;6960:57:32;;;;216:729:81;3304:55:33;216:729:81;;;;;4421:582:33;;4593:8;;-1:-1:-1;216:729:81;;5674:21:33;:17;;5846:142;;;;;;5670:385;6025:19;;;5694:1;6025:19;;5694:1;6025:19;4589:408;216:729:81;;4841:22:33;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:33;4917:24;;;-1:-1:-1;;;;;216:729:81;;;;4917:24:33;216:729:81;;;4917:24:33;4841:49;4867:18;;;:23;4841:49;","linkReferences":{},"immutableReferences":{"47616":[{"start":1259,"length":32},{"start":2184,"length":32},{"start":2945,"length":32}],"47618":[{"start":1326,"length":32}]}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","asset()":"38d52e0f","balanceOf(address)":"70a08231","convertToAssets(uint256)":"07a2d13a","convertToShares(uint256)":"c6e6f592","decimals()":"313ce567","deposit(uint256,address)":"6e553f65","isBufferInitialized()":"dc0a9929","maxDeposit(address)":"402d267d","maxMint(address)":"c63d75b6","maxRedeem(address)":"d905777e","maxWithdraw(address)":"ce96cb77","mint(uint256,address)":"94bf804d","name()":"06fdde03","previewDeposit(uint256)":"ef8b30f7","previewMint(uint256)":"b3d7f6b9","previewRedeem(uint256)":"4cdad506","previewWithdraw(uint256)":"0a28a477","redeem(uint256,address,address)":"ba087652","symbol()":"95d89b41","totalAssets()":"01e1d114","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256,address,address)":"b460af94"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"_asset\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxDeposit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxMint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxRedeem\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxWithdraw\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"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\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"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\":[],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"convertToAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"convertToShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isBufferInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"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.\"}}],\"ERC4626ExceededMaxDeposit(address,uint256,uint256)\":[{\"details\":\"Attempted to deposit more assets than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxMint(address,uint256,uint256)\":[{\"details\":\"Attempted to mint more shares than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxRedeem(address,uint256,uint256)\":[{\"details\":\"Attempted to redeem more shares than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxWithdraw(address,uint256,uint256)\":[{\"details\":\"Attempted to withdraw more assets than the max amount for `receiver`.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"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\":\"See {IERC20-allowance}.\"},\"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.\"},\"asset()\":{\"details\":\"See {IERC4626-asset}. \"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"convertToAssets(uint256)\":{\"details\":\"See {IERC4626-convertToAssets}. \"},\"convertToShares(uint256)\":{\"details\":\"See {IERC4626-convertToShares}. \"},\"decimals()\":{\"details\":\"Decimals are computed by adding the decimal offset on top of the underlying asset's decimals. This \\\"original\\\" value is cached during construction of the vault contract. If this read operation fails (e.g., the asset has not been created yet), a default of 18 is used to represent the underlying asset's decimals. See {IERC20Metadata-decimals}.\"},\"deposit(uint256,address)\":{\"details\":\"See {IERC4626-deposit}. \"},\"maxDeposit(address)\":{\"details\":\"See {IERC4626-maxDeposit}. \"},\"maxMint(address)\":{\"details\":\"See {IERC4626-maxMint}. \"},\"maxRedeem(address)\":{\"details\":\"See {IERC4626-maxRedeem}. \"},\"maxWithdraw(address)\":{\"details\":\"See {IERC4626-maxWithdraw}. \"},\"mint(uint256,address)\":{\"details\":\"See {IERC4626-mint}. \"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"previewDeposit(uint256)\":{\"details\":\"See {IERC4626-previewDeposit}. \"},\"previewMint(uint256)\":{\"details\":\"See {IERC4626-previewMint}. \"},\"previewRedeem(uint256)\":{\"details\":\"See {IERC4626-previewRedeem}. \"},\"previewWithdraw(uint256)\":{\"details\":\"See {IERC4626-previewWithdraw}. \"},\"redeem(uint256,address,address)\":{\"details\":\"See {IERC4626-redeem}. \"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalAssets()\":{\"details\":\"See {IERC4626-totalAssets}. \"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"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`.\"},\"withdraw(uint256,address,address)\":{\"details\":\"See {IERC4626-withdraw}. \"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/mocks/MockSUSDC.sol\":\"MockSUSDC\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf\",\"dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12\",\"dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC4626.sol\":{\"keccak256\":\"0xf171181c69e4560fbe3c575b8b0457ee4077cf22514c29c1b2cfcd3d9ad515cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66ff4f5325f725be9dd654b2e31c94a621261ff93295cdae03e85f8bd6bee4f2\",\"dweb:/ipfs/QmefUEsDJvdCeX6mehjE645tM9j9PHxfQzoGwZE3mArsZh\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0x29074fe5a74bb024c57b3570abf6c74d8bceed3438694d470fd0166a3ecd196a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f4f8435ccbc56e384f4cc9ac9ff491cf30a82f2beac00e33ccc2cf8af3f77cc3\",\"dweb:/ipfs/QmUKJXxTe6nn1qfgnX8xbnboNNAPUuEmJyGqMZCKNiFBgn\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x6fe40ce2addf1fe91a86c334b51ef5abe9c3b831d5d4d74ecae1d9c7d06cdccb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5027588e408027935ac78e32d9e813fda6bf33349b8a5be5c6c936273743369f\",\"dweb:/ipfs/QmZwSzs94V9u7VSdhw2bhbrogWZ37wvrQFBz6QNJTmKokE\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x8cd59334ed58b8884cd1f775afc9400db702e674e5d6a7a438c655b9de788d7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99e62c7de7318f413b6352e3f2704ca23e7725ff144e43c8bd574d12dbf29047\",\"dweb:/ipfs/QmSEXG2rBx1VxU2uFTWdiChjDvA4osEY2mesjmoVeVhHko\"]},\"test/mocks/MockSUSDC.sol\":{\"keccak256\":\"0x9ecd1e464af8b8f0d23bb44953eca1944f67cf4bc8c6800d02a7bd5e6f58b17c\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://464b50a2acd53195e88e6e900a181b532670de703d596366d348a49856d6e7c1\",\"dweb:/ipfs/QmVutpEvdTXy4jC7kJkE54QUYgfk6ngkEwsVoVtPU4j72b\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"_asset","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"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":"receiver","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"ERC4626ExceededMaxDeposit"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"ERC4626ExceededMaxMint"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"ERC4626ExceededMaxRedeem"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"ERC4626ExceededMaxWithdraw"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"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":"sender","type":"address","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"uint256","name":"assets","type":"uint256","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"Deposit","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":"sender","type":"address","indexed":true},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"uint256","name":"assets","type":"uint256","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"Withdraw","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":[],"stateMutability":"view","type":"function","name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function","name":"convertToAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function","name":"convertToShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isBufferInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"maxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"maxMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"maxRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function","name":"previewDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function","name":"previewMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function","name":"previewRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function","name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"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"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"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."},"asset()":{"details":"See {IERC4626-asset}. "},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"convertToAssets(uint256)":{"details":"See {IERC4626-convertToAssets}. "},"convertToShares(uint256)":{"details":"See {IERC4626-convertToShares}. "},"decimals()":{"details":"Decimals are computed by adding the decimal offset on top of the underlying asset's decimals. This \"original\" value is cached during construction of the vault contract. If this read operation fails (e.g., the asset has not been created yet), a default of 18 is used to represent the underlying asset's decimals. See {IERC20Metadata-decimals}."},"deposit(uint256,address)":{"details":"See {IERC4626-deposit}. "},"maxDeposit(address)":{"details":"See {IERC4626-maxDeposit}. "},"maxMint(address)":{"details":"See {IERC4626-maxMint}. "},"maxRedeem(address)":{"details":"See {IERC4626-maxRedeem}. "},"maxWithdraw(address)":{"details":"See {IERC4626-maxWithdraw}. "},"mint(uint256,address)":{"details":"See {IERC4626-mint}. "},"name()":{"details":"Returns the name of the token."},"previewDeposit(uint256)":{"details":"See {IERC4626-previewDeposit}. "},"previewMint(uint256)":{"details":"See {IERC4626-previewMint}. "},"previewRedeem(uint256)":{"details":"See {IERC4626-previewRedeem}. "},"previewWithdraw(uint256)":{"details":"See {IERC4626-previewWithdraw}. "},"redeem(uint256,address,address)":{"details":"See {IERC4626-redeem}. "},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalAssets()":{"details":"See {IERC4626-totalAssets}. "},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"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`."},"withdraw(uint256,address,address)":{"details":"See {IERC4626-withdraw}. "}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/mocks/MockSUSDC.sol":"MockSUSDC"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol":{"keccak256":"0x6423475004ac1c4db6e9f16908cbfb82e630f7868051869c6f89c7452facbc06","urls":["bzz-raw://bd31766a3235519db9207c02652e124746eef3e451271e82830090f9864ff4cf","dweb:/ipfs/QmNjjADM3vFELnFtiZJYuRRXEjQb8KP7cq6b8YqKww6Sdb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb","urls":["bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12","dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC4626.sol":{"keccak256":"0xf171181c69e4560fbe3c575b8b0457ee4077cf22514c29c1b2cfcd3d9ad515cf","urls":["bzz-raw://66ff4f5325f725be9dd654b2e31c94a621261ff93295cdae03e85f8bd6bee4f2","dweb:/ipfs/QmefUEsDJvdCeX6mehjE645tM9j9PHxfQzoGwZE3mArsZh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0x29074fe5a74bb024c57b3570abf6c74d8bceed3438694d470fd0166a3ecd196a","urls":["bzz-raw://f4f8435ccbc56e384f4cc9ac9ff491cf30a82f2beac00e33ccc2cf8af3f77cc3","dweb:/ipfs/QmUKJXxTe6nn1qfgnX8xbnboNNAPUuEmJyGqMZCKNiFBgn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x6fe40ce2addf1fe91a86c334b51ef5abe9c3b831d5d4d74ecae1d9c7d06cdccb","urls":["bzz-raw://5027588e408027935ac78e32d9e813fda6bf33349b8a5be5c6c936273743369f","dweb:/ipfs/QmZwSzs94V9u7VSdhw2bhbrogWZ37wvrQFBz6QNJTmKokE"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x8cd59334ed58b8884cd1f775afc9400db702e674e5d6a7a438c655b9de788d7e","urls":["bzz-raw://99e62c7de7318f413b6352e3f2704ca23e7725ff144e43c8bd574d12dbf29047","dweb:/ipfs/QmSEXG2rBx1VxU2uFTWdiChjDvA4osEY2mesjmoVeVhHko"],"license":"MIT"},"test/mocks/MockSUSDC.sol":{"keccak256":"0x9ecd1e464af8b8f0d23bb44953eca1944f67cf4bc8c6800d02a7bd5e6f58b17c","urls":["bzz-raw://464b50a2acd53195e88e6e900a181b532670de703d596366d348a49856d6e7c1","dweb:/ipfs/QmVutpEvdTXy4jC7kJkE54QUYgfk6ngkEwsVoVtPU4j72b"],"license":"AGPL-3.0-or-later"}},"version":1},"id":81} \ No newline at end of file diff --git a/evm/out/Panic.sol/Panic.json b/evm/out/Panic.sol/Panic.json deleted file mode 100644 index 73f8647..0000000 --- a/evm/out/Panic.sol/Panic.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea264697066735822122075d2ca092cb5d79eea418093adfdc72a93205acac200816f6d622a3e51c2387364736f6c634300081b0033","sourceMap":"561:1342:36:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea264697066735822122075d2ca092cb5d79eea418093adfdc72a93205acac200816f6d622a3e51c2387364736f6c634300081b0033","sourceMap":"561:1342:36:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Helper library for emitting standardized panic codes. ```solidity contract Example { using Panic for uint256; // Use any of the declared internal constants function foo() { Panic.GENERIC.panic(); } // Alternatively function foo() { Panic.panic(Panic.GENERIC); } } ``` Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ARRAY_OUT_OF_BOUNDS\":{\"details\":\"array out of bounds access\"},\"ASSERT\":{\"details\":\"used by the assert() builtin\"},\"DIVISION_BY_ZERO\":{\"details\":\"division or modulo by zero\"},\"EMPTY_ARRAY_POP\":{\"details\":\"empty array pop\"},\"ENUM_CONVERSION_ERROR\":{\"details\":\"enum conversion error\"},\"GENERIC\":{\"details\":\"generic / unspecified error\"},\"INVALID_INTERNAL_FUNCTION\":{\"details\":\"calling invalid internal function\"},\"RESOURCE_ERROR\":{\"details\":\"resource error (too large allocation or too large array)\"},\"STORAGE_ENCODING_ERROR\":{\"details\":\"invalid encoding in storage\"},\"UNDER_OVERFLOW\":{\"details\":\"arithmetic underflow or overflow\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":\"Panic\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0x29074fe5a74bb024c57b3570abf6c74d8bceed3438694d470fd0166a3ecd196a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f4f8435ccbc56e384f4cc9ac9ff491cf30a82f2beac00e33ccc2cf8af3f77cc3\",\"dweb:/ipfs/QmUKJXxTe6nn1qfgnX8xbnboNNAPUuEmJyGqMZCKNiFBgn\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/Panic.sol":"Panic"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0x29074fe5a74bb024c57b3570abf6c74d8bceed3438694d470fd0166a3ecd196a","urls":["bzz-raw://f4f8435ccbc56e384f4cc9ac9ff491cf30a82f2beac00e33ccc2cf8af3f77cc3","dweb:/ipfs/QmUKJXxTe6nn1qfgnX8xbnboNNAPUuEmJyGqMZCKNiFBgn"],"license":"MIT"}},"version":1},"id":36} \ No newline at end of file diff --git a/evm/out/SafeCast.sol/SafeCast.json b/evm/out/SafeCast.sol/SafeCast.json deleted file mode 100644 index 97f22e1..0000000 --- a/evm/out/SafeCast.sol/SafeCast.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"SafeCastOverflowedIntDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"int256","internalType":"int256"}]},{"type":"error","name":"SafeCastOverflowedIntToUint","inputs":[{"name":"value","type":"int256","internalType":"int256"}]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SafeCastOverflowedUintToInt","inputs":[{"name":"value","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220efcefca7f895551e50b8823f3c65f2bd33d3ce7aaa9d944f2a634001595f90ea64736f6c634300081b0033","sourceMap":"769:34200:39:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea2646970667358221220efcefca7f895551e50b8823f3c65f2bd33d3ce7aaa9d944f2a634001595f90ea64736f6c634300081b0033","sourceMap":"769:34200:39:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"SafeCastOverflowedIntDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"SafeCastOverflowedIntToUint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintToInt\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow checks. Downcasting from uint256/int256 in Solidity does not revert on overflow. This can easily result in undesired exploitation or bugs, since developers usually assume that overflows raise errors. `SafeCast` restores this intuition by reverting the transaction when such an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.\",\"errors\":{\"SafeCastOverflowedIntDowncast(uint8,int256)\":[{\"details\":\"Value doesn't fit in an int of `bits` size.\"}],\"SafeCastOverflowedIntToUint(int256)\":[{\"details\":\"An int value doesn't fit in an uint of `bits` size.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeCastOverflowedUintToInt(uint256)\":[{\"details\":\"An uint value doesn't fit in an int of `bits` size.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":\"SafeCast\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x8cd59334ed58b8884cd1f775afc9400db702e674e5d6a7a438c655b9de788d7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99e62c7de7318f413b6352e3f2704ca23e7725ff144e43c8bd574d12dbf29047\",\"dweb:/ipfs/QmSEXG2rBx1VxU2uFTWdiChjDvA4osEY2mesjmoVeVhHko\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"int256","name":"value","type":"int256"}],"type":"error","name":"SafeCastOverflowedIntDowncast"},{"inputs":[{"internalType":"int256","name":"value","type":"int256"}],"type":"error","name":"SafeCastOverflowedIntToUint"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintToInt"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":"SafeCast"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x8cd59334ed58b8884cd1f775afc9400db702e674e5d6a7a438c655b9de788d7e","urls":["bzz-raw://99e62c7de7318f413b6352e3f2704ca23e7725ff144e43c8bd574d12dbf29047","dweb:/ipfs/QmSEXG2rBx1VxU2uFTWdiChjDvA4osEY2mesjmoVeVhHko"],"license":"MIT"}},"version":1},"id":39} \ No newline at end of file diff --git a/evm/out/SafeERC20.sol/SafeERC20.json b/evm/out/SafeERC20.sol/SafeERC20.json deleted file mode 100644 index 01b093a..0000000 --- a/evm/out/SafeERC20.sol/SafeERC20.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"SafeERC20FailedDecreaseAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"currentAllowance","type":"uint256","internalType":"uint256"},{"name":"requestedDecrease","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea264697066735822122020e7ff512bfd332971d42eec3f6a086d94edc27797df465714c311c2dc4b4aee64736f6c634300081b0033","sourceMap":"750:7428:32:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea264697066735822122020e7ff512bfd332971d42eec3f6a086d94edc27797df465714c311c2dc4b4aee64736f6c634300081b0033","sourceMap":"750:7428:32:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentAllowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requestedDecrease\",\"type\":\"uint256\"}],\"name\":\"SafeERC20FailedDecreaseAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Wrappers around ERC-20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"errors\":{\"SafeERC20FailedDecreaseAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failed `decreaseAllowance` request.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"currentAllowance","type":"uint256"},{"internalType":"uint256","name":"requestedDecrease","type":"uint256"}],"type":"error","name":"SafeERC20FailedDecreaseAllowance"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":"SafeERC20"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"}},"version":1},"id":32} \ No newline at end of file diff --git a/evm/out/StdAssertions.sol/StdAssertions.json b/evm/out/StdAssertions.sol/StdAssertions.json deleted file mode 100644 index c511df6..0000000 --- a/evm/out/StdAssertions.sol/StdAssertions.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"failed()":"ba414fa6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdAssertions.sol\":\"StdAssertions\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a\",\"dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdAssertions.sol":"StdAssertions"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456","urls":["bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a","dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK"],"license":"MIT OR Apache-2.0"}},"version":1},"id":1} \ No newline at end of file diff --git a/evm/out/StdChains.sol/StdChains.json b/evm/out/StdChains.sol/StdChains.json deleted file mode 100644 index b91ed71..0000000 --- a/evm/out/StdChains.sol/StdChains.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"StdChains provides information about EVM compatible chains that can be used in scripts/tests. For each chain, the chain's name, chain ID, and a default RPC URL are provided. Chains are identified by their alias, which is the same as the alias in the `[rpc_endpoints]` section of the `foundry.toml` file. For best UX, ensure the alias in the `foundry.toml` file match the alias used in this contract, which can be found as the first argument to the `setChainWithDefaultRpcUrl` call in the `initializeStdChains` function. There are two main ways to use this contract: 1. Set a chain with `setChain(string memory chainAlias, ChainData memory chain)` or `setChain(string memory chainAlias, Chain memory chain)` 2. Get a chain with `getChain(string memory chainAlias)` or `getChain(uint256 chainId)`. The first time either of those are used, chains are initialized with the default set of RPC URLs. This is done in `initializeStdChains`, which uses `setChainWithDefaultRpcUrl`. Defaults are recorded in `defaultRpcUrls`. The `setChain` function is straightforward, and it simply saves off the given chain data. The `getChain` methods use `getChainWithUpdatedRpcUrl` to return a chain. For example, let's say we want to retrieve the RPC URL for `mainnet`: - If you have specified data with `setChain`, it will return that. - If you have configured a mainnet RPC URL in `foundry.toml`, it will return the URL, provided it is valid (e.g. a URL is specified, or an environment variable is given and exists). - If neither of the above conditions is met, the default data is returned. Summarizing the above, the prioritization hierarchy is `setChain` -> `foundry.toml` -> environment variable -> defaults.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdChains.sol\":\"StdChains\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b\",\"dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a\",\"dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdChains.sol":"StdChains"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/StdChains.sol":{"keccak256":"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef","urls":["bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b","dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456","urls":["bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a","dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK"],"license":"MIT OR Apache-2.0"}},"version":1},"id":2} \ No newline at end of file diff --git a/evm/out/StdCheats.sol/StdCheats.json b/evm/out/StdCheats.sol/StdCheats.json deleted file mode 100644 index d5d3567..0000000 --- a/evm/out/StdCheats.sol/StdCheats.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdCheats.sol\":\"StdCheats\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678\",\"dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a\",\"dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdCheats.sol":"StdCheats"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3","urls":["bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678","dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456","urls":["bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a","dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"}},"version":1},"id":3} \ No newline at end of file diff --git a/evm/out/StdCheats.sol/StdCheatsSafe.json b/evm/out/StdCheats.sol/StdCheatsSafe.json deleted file mode 100644 index bd2a5db..0000000 --- a/evm/out/StdCheats.sol/StdCheatsSafe.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdCheats.sol\":\"StdCheatsSafe\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678\",\"dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a\",\"dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdCheats.sol":"StdCheatsSafe"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3","urls":["bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678","dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456","urls":["bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a","dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"}},"version":1},"id":3} \ No newline at end of file diff --git a/evm/out/StdError.sol/stdError.json b/evm/out/StdError.sol/stdError.json deleted file mode 100644 index 719eebb..0000000 --- a/evm/out/StdError.sol/stdError.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"arithmeticError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"assertionError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"divisionError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"encodeStorageError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"enumConversionError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"indexOOBError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"memOverflowError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"popError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"zeroVarError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"}],"bytecode":{"object":"0x608080604052346019576102f7908161001e823930815050f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816305ee8612146102335750806310332977146101ff5780631de45560146101cb5780638995290f14610197578063986c5f6814610163578063b22dc54d1461012f578063b67689da146100fb578063d160e4de146100c75763fa784a441461007f575f80fd5b5f3660031901126100c3576100bf604051634e487b7160e01b602082015260126024820152602481526100b3604482610261565b60405191829182610297565b0390f35b5f80fd5b5f3660031901126100c3576100bf604051634e487b7160e01b602082015260226024820152602481526100b3604482610261565b5f3660031901126100c3576100bf604051634e487b7160e01b602082015260516024820152602481526100b3604482610261565b5f3660031901126100c3576100bf604051634e487b7160e01b602082015260316024820152602481526100b3604482610261565b5f3660031901126100c3576100bf604051634e487b7160e01b602082015260416024820152602481526100b3604482610261565b5f3660031901126100c3576100bf604051634e487b7160e01b602082015260116024820152602481526100b3604482610261565b5f3660031901126100c3576100bf604051634e487b7160e01b602082015260216024820152602481526100b3604482610261565b5f3660031901126100c3576100bf604051634e487b7160e01b602082015260016024820152602481526100b3604482610261565b5f3660031901126100c3576100bf90634e487b7160e01b602082015260326024820152602481526100b36044825b90601f8019910116810190811067ffffffffffffffff82111761028357604052565b634e487b7160e01b5f52604160045260245ffd5b602060409281835280519182918282860152018484015e5f828201840152601f01601f191601019056fea26469706673582212209254750f764e044c91f7b9d3c06e72a1a0bcfc383088cc84232ce683bd10784964736f6c634300081b0033","sourceMap":"162:850:4:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f3560e01c90816305ee8612146102335750806310332977146101ff5780631de45560146101cb5780638995290f14610197578063986c5f6814610163578063b22dc54d1461012f578063b67689da146100fb578063d160e4de146100c75763fa784a441461007f575f80fd5b5f3660031901126100c3576100bf604051634e487b7160e01b602082015260126024820152602481526100b3604482610261565b60405191829182610297565b0390f35b5f80fd5b5f3660031901126100c3576100bf604051634e487b7160e01b602082015260226024820152602481526100b3604482610261565b5f3660031901126100c3576100bf604051634e487b7160e01b602082015260516024820152602481526100b3604482610261565b5f3660031901126100c3576100bf604051634e487b7160e01b602082015260316024820152602481526100b3604482610261565b5f3660031901126100c3576100bf604051634e487b7160e01b602082015260416024820152602481526100b3604482610261565b5f3660031901126100c3576100bf604051634e487b7160e01b602082015260116024820152602481526100b3604482610261565b5f3660031901126100c3576100bf604051634e487b7160e01b602082015260216024820152602481526100b3604482610261565b5f3660031901126100c3576100bf604051634e487b7160e01b602082015260016024820152602481526100b3604482610261565b5f3660031901126100c3576100bf90634e487b7160e01b602082015260326024820152602481526100b36044825b90601f8019910116810190811067ffffffffffffffff82111761028357604052565b634e487b7160e01b5f52604160045260245ffd5b602060409281835280519182918282860152018484015e5f828201840152601f01601f191601019056fea26469706673582212209254750f764e044c91f7b9d3c06e72a1a0bcfc383088cc84232ce683bd10784964736f6c634300081b0033","sourceMap":"162:850:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;162:850:4;;;;;;;778:47;;;408;;;;450:4;408:47;;;162:850;408:47;;;;;;;:::i;:::-;162:850;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;162:850:4;;;;;;;778:47;;;601;;;;643:4;601:47;;;162:850;601:47;;;;;;;:::i;162:850::-;;;-1:-1:-1;;162:850:4;;;;;;;778:47;;;962;;;;1004:4;962:47;;;162:850;962:47;;;;;;;:::i;162:850::-;;;-1:-1:-1;;162:850:4;;;;;;;778:47;;;687;;;;729:4;687:47;;;162:850;687:47;;;;;;;:::i;162:850::-;;;-1:-1:-1;;162:850:4;;;;;;;778:47;;;872;;;;914:4;872:47;;;162:850;872:47;;;;;;;:::i;162:850::-;;;-1:-1:-1;;162:850:4;;;;;;;778:47;;;317;;;;359:4;317:47;;;162:850;317:47;;;;;;;:::i;162:850::-;;;-1:-1:-1;;162:850:4;;;;;;;778:47;;;505;;;;547:4;505:47;;;162:850;505:47;;;;;;;:::i;162:850::-;;;-1:-1:-1;;162:850:4;;;;;;;778:47;;;224;;;;266:4;224:47;;;162:850;224:47;;;;;;;:::i;162:850::-;;;-1:-1:-1;;162:850:4;;;;;778:47;;;;;;;;820:4;778:47;;;162:850;778:47;;;;;;162:850;;;;;;;;;;;;;;;;;;;;;:::o;:::-;778:47;;;-1:-1:-1;162:850:4;;;;;-1:-1:-1;162:850:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;162:850:4;;;;:::o","linkReferences":{}},"methodIdentifiers":{"arithmeticError()":"8995290f","assertionError()":"10332977","divisionError()":"fa784a44","encodeStorageError()":"d160e4de","enumConversionError()":"1de45560","indexOOBError()":"05ee8612","memOverflowError()":"986c5f68","popError()":"b22dc54d","zeroVarError()":"b67689da"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"arithmeticError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"assertionError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"divisionError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"encodeStorageError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enumConversionError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"indexOOBError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"memOverflowError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"popError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zeroVarError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdError.sol\":\"stdError\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"arithmeticError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"assertionError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"divisionError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"encodeStorageError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"enumConversionError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"indexOOBError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"memOverflowError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"popError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"zeroVarError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdError.sol":"stdError"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"}},"version":1},"id":4} \ No newline at end of file diff --git a/evm/out/StdInvariant.sol/StdInvariant.json b/evm/out/StdInvariant.sol/StdInvariant.json deleted file mode 100644 index 0dadf25..0000000 --- a/evm/out/StdInvariant.sol/StdInvariant.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdInvariant.sol\":\"StdInvariant\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdInvariant.sol":"StdInvariant"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"}},"version":1},"id":5} \ No newline at end of file diff --git a/evm/out/StdJson.sol/stdJson.json b/evm/out/StdJson.sol/stdJson.json deleted file mode 100644 index a065c27..0000000 --- a/evm/out/StdJson.sol/stdJson.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220ef2f821a2d1337da65e3a8428db8b5ba71c53ecc57157976101eaf7eae69da4d64736f6c634300081b0033","sourceMap":"610:5612:6:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea2646970667358221220ef2f821a2d1337da65e3a8428db8b5ba71c53ecc57157976101eaf7eae69da4d64736f6c634300081b0033","sourceMap":"610:5612:6:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdJson.sol\":\"stdJson\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54\",\"dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a\",\"dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdJson.sol":"stdJson"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/StdJson.sol":{"keccak256":"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d","urls":["bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54","dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456","urls":["bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a","dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK"],"license":"MIT OR Apache-2.0"}},"version":1},"id":6} \ No newline at end of file diff --git a/evm/out/StdMath.sol/stdMath.json b/evm/out/StdMath.sol/stdMath.json deleted file mode 100644 index 579683f..0000000 --- a/evm/out/StdMath.sol/stdMath.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220f353a3cfe56af56d81605f7c66601c92ebea0e58fdacf5eb2f4f9e70cadcfad364736f6c634300081b0033","sourceMap":"65:1294:7:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea2646970667358221220f353a3cfe56af56d81605f7c66601c92ebea0e58fdacf5eb2f4f9e70cadcfad364736f6c634300081b0033","sourceMap":"65:1294:7:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdMath.sol\":\"stdMath\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdMath.sol":"stdMath"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"}},"version":1},"id":7} \ No newline at end of file diff --git a/evm/out/StdStorage.sol/stdStorage.json b/evm/out/StdStorage.sol/stdStorage.json deleted file mode 100644 index df9adee..0000000 --- a/evm/out/StdStorage.sol/stdStorage.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea26469706673582212205ede095044a93b1e899ed03e4d98bffd1df99c8e6fb0c71a9985e940ad68035464736f6c634300081b0033","sourceMap":"12760:5081:8:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea26469706673582212205ede095044a93b1e899ed03e4d98bffd1df99c8e6fb0c71a9985e940ad68035464736f6c634300081b0033","sourceMap":"12760:5081:8:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdStorage.sol\":\"stdStorage\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678\",\"dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a\",\"dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdStorage.sol":"stdStorage"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3","urls":["bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678","dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456","urls":["bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a","dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK"],"license":"MIT OR Apache-2.0"}},"version":1},"id":8} \ No newline at end of file diff --git a/evm/out/StdStorage.sol/stdStorageSafe.json b/evm/out/StdStorage.sol/stdStorageSafe.json deleted file mode 100644 index 4121e93..0000000 --- a/evm/out/StdStorage.sol/stdStorageSafe.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea264697066735822122095b46f6efaf74242a326e5017d20fb1effa14fa92106d5e333fece8ac5983e7d64736f6c634300081b0033","sourceMap":"450:12308:8:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea264697066735822122095b46f6efaf74242a326e5017d20fb1effa14fa92106d5e333fece8ac5983e7d64736f6c634300081b0033","sourceMap":"450:12308:8:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"fsig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keysHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"SlotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"WARNING_UninitedSlot\",\"type\":\"event\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdStorage.sol\":\"stdStorageSafe\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678\",\"dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a\",\"dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"bytes4","name":"fsig","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"keysHash","type":"bytes32","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"SlotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"WARNING_UninitedSlot","anonymous":false}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdStorage.sol":"stdStorageSafe"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3","urls":["bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678","dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456","urls":["bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a","dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK"],"license":"MIT OR Apache-2.0"}},"version":1},"id":8} \ No newline at end of file diff --git a/evm/out/StdStyle.sol/StdStyle.json b/evm/out/StdStyle.sol/StdStyle.json deleted file mode 100644 index c5000e0..0000000 --- a/evm/out/StdStyle.sol/StdStyle.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea264697066735822122017d7980f6f172b9f9a96804b16d0a7da1ce17ce6b505628afd778c8ff27dd66064736f6c634300081b0033","sourceMap":"100:10361:9:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea264697066735822122017d7980f6f172b9f9a96804b16d0a7da1ce17ce6b505628afd778c8ff27dd66064736f6c634300081b0033","sourceMap":"100:10361:9:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdStyle.sol\":\"StdStyle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a\",\"dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdStyle.sol":"StdStyle"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456","urls":["bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a","dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK"],"license":"MIT OR Apache-2.0"}},"version":1},"id":9} \ No newline at end of file diff --git a/evm/out/StdToml.sol/stdToml.json b/evm/out/StdToml.sol/stdToml.json deleted file mode 100644 index e26fe4c..0000000 --- a/evm/out/StdToml.sol/stdToml.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220f0dc1b69802a8c8d43dc4e837bfd54b2b4e35b5d2db2e12f90dbd9c38b5f964e64736f6c634300081b0033","sourceMap":"610:5612:10:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea2646970667358221220f0dc1b69802a8c8d43dc4e837bfd54b2b4e35b5d2db2e12f90dbd9c38b5f964e64736f6c634300081b0033","sourceMap":"610:5612:10:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdToml.sol\":\"stdToml\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/StdToml.sol\":{\"keccak256\":\"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d\",\"dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a\",\"dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdToml.sol":"stdToml"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/StdToml.sol":{"keccak256":"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab","urls":["bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d","dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456","urls":["bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a","dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK"],"license":"MIT OR Apache-2.0"}},"version":1},"id":10} \ No newline at end of file diff --git a/evm/out/StdUtils.sol/StdUtils.json b/evm/out/StdUtils.sol/StdUtils.json deleted file mode 100644 index cccafc7..0000000 --- a/evm/out/StdUtils.sol/StdUtils.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdUtils.sol\":\"StdUtils\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a\",\"dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdUtils.sol":"StdUtils"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456","urls":["bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a","dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"}},"version":1},"id":11} \ No newline at end of file diff --git a/evm/out/TemplateSwapAdapter.sol/TemplateSwapAdapter.json b/evm/out/TemplateSwapAdapter.sol/TemplateSwapAdapter.json deleted file mode 100644 index 95da402..0000000 --- a/evm/out/TemplateSwapAdapter.sol/TemplateSwapAdapter.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"getCapabilities","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"}],"outputs":[{"name":"capabilities","type":"uint8[]","internalType":"enum ISwapAdapterTypes.Capability[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"getLimits","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"}],"outputs":[{"name":"limits","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"getPoolIds","inputs":[{"name":"offset","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"ids","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"getTokens","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"price","inputs":[{"name":"_poolId","type":"bytes32","internalType":"bytes32"},{"name":"_sellToken","type":"address","internalType":"address"},{"name":"_buyToken","type":"address","internalType":"address"},{"name":"_specifiedAmounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"_prices","type":"tuple[]","internalType":"struct ISwapAdapterTypes.Fraction[]","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"swap","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"},{"name":"side","type":"uint8","internalType":"enum ISwapAdapterTypes.OrderSide"},{"name":"specifiedAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"trade","type":"tuple","internalType":"struct ISwapAdapterTypes.Trade","components":[{"name":"calculatedAmount","type":"uint256","internalType":"uint256"},{"name":"gasUsed","type":"uint256","internalType":"uint256"},{"name":"price","type":"tuple","internalType":"struct ISwapAdapterTypes.Fraction","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"nonpayable"},{"type":"error","name":"LimitExceeded","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotImplemented","inputs":[{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"Unavailable","inputs":[{"name":"reason","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x60808060405234601557610431908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816323eeca01146103415750806348bd7dfd146102de5780638307c65514610219578063a9270fbe146101c2578063aad6e488146100b95763ecbbc0331461005e575f80fd5b346100b55760203660031901126100b557604051631d04569d60e21b815260206004820152601d60248201527f54656d706c61746553776170416461707465722e676574546f6b656e730000006044820152606490fd5b5f80fd5b346100b55760803660031901126100b5576100d2610395565b506100db6103ab565b5060643567ffffffffffffffff81116100b557366023820112156100b55780600401359067ffffffffffffffff82116101ae578160051b91604051601f19603f85011681019080821067ffffffffffffffff8311176101ae5760249260209260405281520192820101903682116100b557602401915b81831061019e57604051631d04569d60e21b815260206004820152601960248201527f54656d706c61746553776170416461707465722e7072696365000000000000006044820152606490fd5b8235815260209283019201610151565b634e487b7160e01b5f52604160045260245ffd5b346100b5576101d0366103c1565b5050604051631d04569d60e21b815260206004820152601d60248201527f54656d706c61746553776170416461707465722e6765744c696d697473000000604482015260649150fd5b346100b55760a03660031901126100b557610232610395565b5061023b6103ab565b50600260643510156100b5576040516060810181811067ffffffffffffffff8211176101ae576040525f81525f602082015260405190604082019082821067ffffffffffffffff8311176101ae5760409182525f83525f602084015201526064604051631d04569d60e21b815260206004820152601860248201527f54656d706c61746553776170416461707465722e7377617000000000000000006044820152fd5b346100b5576102ec366103c1565b5050604051631d04569d60e21b815260206004820152602360248201527f54656d706c61746553776170416461707465722e6765744361706162696c697460448201526269657360e81b606482015260849150fd5b346100b55760403660031901126100b557631d04569d60e21b815260206004820152601e60248201527f54656d706c61746553776170416461707465722e676574506f6f6c49647300006044820152606490fd5b602435906001600160a01b03821682036100b557565b604435906001600160a01b03821682036100b557565b60609060031901126100b557600435906024356001600160a01b03811681036100b557906044356001600160a01b03811681036100b5579056fea26469706673582212206492349fa976084ab1406cd4e54307415f37767e6ab8298dd7f59cbce6fd7c3c64736f6c634300081b0033","sourceMap":"309:1407:63:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f3560e01c90816323eeca01146103415750806348bd7dfd146102de5780638307c65514610219578063a9270fbe146101c2578063aad6e488146100b95763ecbbc0331461005e575f80fd5b346100b55760203660031901126100b557604051631d04569d60e21b815260206004820152601d60248201527f54656d706c61746553776170416461707465722e676574546f6b656e730000006044820152606490fd5b5f80fd5b346100b55760803660031901126100b5576100d2610395565b506100db6103ab565b5060643567ffffffffffffffff81116100b557366023820112156100b55780600401359067ffffffffffffffff82116101ae578160051b91604051601f19603f85011681019080821067ffffffffffffffff8311176101ae5760249260209260405281520192820101903682116100b557602401915b81831061019e57604051631d04569d60e21b815260206004820152601960248201527f54656d706c61746553776170416461707465722e7072696365000000000000006044820152606490fd5b8235815260209283019201610151565b634e487b7160e01b5f52604160045260245ffd5b346100b5576101d0366103c1565b5050604051631d04569d60e21b815260206004820152601d60248201527f54656d706c61746553776170416461707465722e6765744c696d697473000000604482015260649150fd5b346100b55760a03660031901126100b557610232610395565b5061023b6103ab565b50600260643510156100b5576040516060810181811067ffffffffffffffff8211176101ae576040525f81525f602082015260405190604082019082821067ffffffffffffffff8311176101ae5760409182525f83525f602084015201526064604051631d04569d60e21b815260206004820152601860248201527f54656d706c61746553776170416461707465722e7377617000000000000000006044820152fd5b346100b5576102ec366103c1565b5050604051631d04569d60e21b815260206004820152602360248201527f54656d706c61746553776170416461707465722e6765744361706162696c697460448201526269657360e81b606482015260849150fd5b346100b55760403660031901126100b557631d04569d60e21b815260206004820152601e60248201527f54656d706c61746553776170416461707465722e676574506f6f6c49647300006044820152606490fd5b602435906001600160a01b03821682036100b557565b604435906001600160a01b03821682036100b557565b60609060031901126100b557600435906024356001600160a01b03811681036100b557906044356001600160a01b03811681036100b5579056fea26469706673582212206492349fa976084ab1406cd4e54307415f37767e6ab8298dd7f59cbce6fd7c3c64736f6c634300081b0033","sourceMap":"309:1407:63:-:0;;;;;;;;;;;;;;;;;;;;;;;;1659:48;;309:1407;1659:48;;;1290:53;309:1407;1290:53;;;309:1407;;;;;1053:47;309:1407;1053:47;;;309:1407;;;;;;;;;;;;;-1:-1:-1;;309:1407:63;;;;;;-1:-1:-1;;;1471:47:63;;309:1407;;1471:47;;309:1407;;;;;;;;;;;1471:47;;;309:1407;;;;;;;;;;-1:-1:-1;;309:1407:63;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;581:43:63;;309:1407;;581:43;;309:1407;;;;;;;;;;;;;581:43;309:1407;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;309:1407:63;;-1:-1:-1;;;1053:47:63;;309:1407;;1053:47;;309:1407;;;;;;;;;;;1053:47;;-1:-1:-1;1053:47:63;309:1407;;;;;;-1:-1:-1;;309:1407:63;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1659:48;;;846:42;;309:1407;;846:42;;309:1407;;;;;;;;;;;846:42;309:1407;;;;;;;:::i;:::-;-1:-1:-1;;309:1407:63;;-1:-1:-1;;;1290:53:63;;309:1407;;1290:53;;309:1407;;;;;;;;;;;-1:-1:-1;;;309:1407:63;;;;1290:53;;-1:-1:-1;1290:53:63;309:1407;;;;;;-1:-1:-1;;309:1407:63;;;;-1:-1:-1;;;1659:48:63;;309:1407;;1659:48;;309:1407;;;;;;;;;;;1659:48;;;309:1407;;;;-1:-1:-1;;;;;309:1407:63;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;309:1407:63;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;309:1407:63;;;;;;;;;-1:-1:-1;;;;;309:1407:63;;;;;;;:::o","linkReferences":{}},"methodIdentifiers":{"getCapabilities(bytes32,address,address)":"48bd7dfd","getLimits(bytes32,address,address)":"a9270fbe","getPoolIds(uint256,uint256)":"23eeca01","getTokens(bytes32)":"ecbbc033","price(bytes32,address,address,uint256[])":"aad6e488","swap(bytes32,address,address,uint8,uint256)":"8307c655"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"LimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"Unavailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"}],\"name\":\"getCapabilities\",\"outputs\":[{\"internalType\":\"enum ISwapAdapterTypes.Capability[]\",\"name\":\"capabilities\",\"type\":\"uint8[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"}],\"name\":\"getLimits\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"limits\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"getPoolIds\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"ids\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"getTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyToken\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_specifiedAmounts\",\"type\":\"uint256[]\"}],\"name\":\"price\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction[]\",\"name\":\"_prices\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"enum ISwapAdapterTypes.OrderSide\",\"name\":\"side\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"calculatedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction\",\"name\":\"price\",\"type\":\"tuple\"}],\"internalType\":\"struct ISwapAdapterTypes.Trade\",\"name\":\"trade\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is a template for a swap adapter. Rename it to your own protocol's name and implement it according to the specification.\",\"errors\":{\"LimitExceeded(uint256)\":[{\"details\":\"The LimitExceeded error is thrown when a limit has been exceeded. E.g. the specified amount can't be traded safely.\"}],\"NotImplemented(string)\":[{\"details\":\"The NotImplemented error is thrown when a function is not implemented.\"}],\"Unavailable(string)\":[{\"details\":\"The Unavailable error is thrown when a pool or swap is not available for unexpected reason. E.g. it was paused due to a bug.\"}]},\"kind\":\"dev\",\"methods\":{\"getCapabilities(bytes32,address,address)\":{\"params\":{\"poolId\":\"The ID of the trading pool.\"},\"returns\":{\"capabilities\":\"An array of Capability.\"}},\"getLimits(bytes32,address,address)\":{\"details\":\"Retrieve the maximum limits of a token that can be traded. The limit is reached when the change in the received amounts is zero or close to zero or when the swap fails because of the pools restrictions. Overestimate if in doubt rather than underestimate. The swap function should not error with `LimitExceeded` if called with amounts below the limit.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\"},\"returns\":{\"limits\":\"An array of size two indicating the limit amount for the sell token (maximum the pool is willing to buy in sell token) as well as the limit amount of the buy token (maximum the pool is willing to sell in buy token).\"}},\"getPoolIds(uint256,uint256)\":{\"details\":\"Mainly used for testing. It is alright to not return all available pools here. Nevertheless, this is useful to test against the substreams implementation. If implemented, it saves time writing custom tests.\",\"params\":{\"limit\":\"The maximum number of pool IDs to retrieve.\",\"offset\":\"The starting index from which to retrieve pool IDs.\"},\"returns\":{\"ids\":\"An array of pool IDs.\"}},\"getTokens(bytes32)\":{\"details\":\"Mainly used for testing as this is redundant with the required substreams implementation.\",\"params\":{\"poolId\":\"The ID of the trading pool.\"},\"returns\":{\"tokens\":\"An array of address contracts.\"}},\"swap(bytes32,address,address,uint8,uint256)\":{\"details\":\"This function should be state modifying, meaning it should actually execute the swap and change the state of the EVM accordingly. Please include a gas usage estimate for each amount. This can be achieved e.g. by using the `gasleft()` function. The return type `Trade` has an attribute called price which should contain the value of `price(specifiedAmount)`. As this is optional, defined via `Capability.PriceFunction`, it is valid to return a Fraction(0, 0) value for this price. In that case the price will be estimated numerically.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\",\"side\":\"The side of the trade (Sell or Buy).\",\"specifiedAmount\":\"The amount to be traded.\"},\"returns\":{\"trade\":\"Trade struct representing the executed trade.\"}}},\"title\":\"TemplateSwapAdapter\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCapabilities(bytes32,address,address)\":{\"notice\":\"Retrieves the capabilities of the selected pool.\"},\"getLimits(bytes32,address,address)\":{\"notice\":\"Retrieves the limits for each token.\"},\"getPoolIds(uint256,uint256)\":{\"notice\":\"Retrieves a range of pool IDs.\"},\"getTokens(bytes32)\":{\"notice\":\"Retrieves the tokens in the selected pool.\"},\"swap(bytes32,address,address,uint8,uint256)\":{\"notice\":\"Simulates swapping tokens on a given pool.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/template/TemplateSwapAdapter.sol\":\"TemplateSwapAdapter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/template/TemplateSwapAdapter.sol\":{\"keccak256\":\"0x5699a22a67f35bad1c6a5267c7f0a356581777003e4032c77e313e8f9c668cf8\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://0342fe5c738b51e8516b2286eebbea352cfee22f63bbabdbaad1ee04364c8a42\",\"dweb:/ipfs/QmcT9LDyeuf1XxP5g6ebZCQzqMYCdhhquoGzKxMvKFyeFz\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"type":"error","name":"LimitExceeded"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"NotImplemented"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"Unavailable"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"getCapabilities","outputs":[{"internalType":"enum ISwapAdapterTypes.Capability[]","name":"capabilities","type":"uint8[]"}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"getLimits","outputs":[{"internalType":"uint256[]","name":"limits","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"getPoolIds","outputs":[{"internalType":"bytes32[]","name":"ids","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"getTokens","outputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}]},{"inputs":[{"internalType":"bytes32","name":"_poolId","type":"bytes32"},{"internalType":"address","name":"_sellToken","type":"address"},{"internalType":"address","name":"_buyToken","type":"address"},{"internalType":"uint256[]","name":"_specifiedAmounts","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"price","outputs":[{"internalType":"struct ISwapAdapterTypes.Fraction[]","name":"_prices","type":"tuple[]","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"},{"internalType":"enum ISwapAdapterTypes.OrderSide","name":"side","type":"uint8"},{"internalType":"uint256","name":"specifiedAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swap","outputs":[{"internalType":"struct ISwapAdapterTypes.Trade","name":"trade","type":"tuple","components":[{"internalType":"uint256","name":"calculatedAmount","type":"uint256"},{"internalType":"uint256","name":"gasUsed","type":"uint256"},{"internalType":"struct ISwapAdapterTypes.Fraction","name":"price","type":"tuple","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]}]}],"devdoc":{"kind":"dev","methods":{"getCapabilities(bytes32,address,address)":{"params":{"poolId":"The ID of the trading pool."},"returns":{"capabilities":"An array of Capability."}},"getLimits(bytes32,address,address)":{"details":"Retrieve the maximum limits of a token that can be traded. The limit is reached when the change in the received amounts is zero or close to zero or when the swap fails because of the pools restrictions. Overestimate if in doubt rather than underestimate. The swap function should not error with `LimitExceeded` if called with amounts below the limit.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold."},"returns":{"limits":"An array of size two indicating the limit amount for the sell token (maximum the pool is willing to buy in sell token) as well as the limit amount of the buy token (maximum the pool is willing to sell in buy token)."}},"getPoolIds(uint256,uint256)":{"details":"Mainly used for testing. It is alright to not return all available pools here. Nevertheless, this is useful to test against the substreams implementation. If implemented, it saves time writing custom tests.","params":{"limit":"The maximum number of pool IDs to retrieve.","offset":"The starting index from which to retrieve pool IDs."},"returns":{"ids":"An array of pool IDs."}},"getTokens(bytes32)":{"details":"Mainly used for testing as this is redundant with the required substreams implementation.","params":{"poolId":"The ID of the trading pool."},"returns":{"tokens":"An array of address contracts."}},"swap(bytes32,address,address,uint8,uint256)":{"details":"This function should be state modifying, meaning it should actually execute the swap and change the state of the EVM accordingly. Please include a gas usage estimate for each amount. This can be achieved e.g. by using the `gasleft()` function. The return type `Trade` has an attribute called price which should contain the value of `price(specifiedAmount)`. As this is optional, defined via `Capability.PriceFunction`, it is valid to return a Fraction(0, 0) value for this price. In that case the price will be estimated numerically.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold.","side":"The side of the trade (Sell or Buy).","specifiedAmount":"The amount to be traded."},"returns":{"trade":"Trade struct representing the executed trade."}}},"version":1},"userdoc":{"kind":"user","methods":{"getCapabilities(bytes32,address,address)":{"notice":"Retrieves the capabilities of the selected pool."},"getLimits(bytes32,address,address)":{"notice":"Retrieves the limits for each token."},"getPoolIds(uint256,uint256)":{"notice":"Retrieves a range of pool IDs."},"getTokens(bytes32)":{"notice":"Retrieves the tokens in the selected pool."},"swap(bytes32,address,address,uint8,uint256)":{"notice":"Simulates swapping tokens on a given pool."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/template/TemplateSwapAdapter.sol":"TemplateSwapAdapter"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/template/TemplateSwapAdapter.sol":{"keccak256":"0x5699a22a67f35bad1c6a5267c7f0a356581777003e4032c77e313e8f9c668cf8","urls":["bzz-raw://0342fe5c738b51e8516b2286eebbea352cfee22f63bbabdbaad1ee04364c8a42","dweb:/ipfs/QmcT9LDyeuf1XxP5g6ebZCQzqMYCdhhquoGzKxMvKFyeFz"],"license":"AGPL-3.0-or-later"}},"version":1},"id":63} \ No newline at end of file diff --git a/evm/out/TemplateSwapAdapter.t.sol/TemplateSwapAdapterTest.json b/evm/out/TemplateSwapAdapter.t.sol/TemplateSwapAdapterTest.json deleted file mode 100644 index 597cc15..0000000 --- a/evm/out/TemplateSwapAdapter.t.sol/TemplateSwapAdapterTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testPriceFuzz","inputs":[{"name":"amount0","type":"uint256","internalType":"uint256"},{"name":"amount1","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapFuzz","inputs":[{"name":"specifiedAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"LimitExceeded","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotImplemented","inputs":[{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"Unavailable","inputs":[{"name":"reason","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x60808060405234602f57600160ff19600c541617600c55600160ff19601e541617601e55610ee690816100348239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c9081631ed7831c14610bb1575080632ade3880146109445780633e5e3c23146108c75780633f7286f41461084a57806366d9a9a01461069a57806385226c811461057257806388e54b881461055f578063916a17c6146102d1578063a502846b146102be578063b5508aa914610182578063ba414fa61461015e578063e20c9f71146100d15763fa7626d4146100ab575f80fd5b346100cd575f3660031901126100cd57602060ff601e54166040519015158152f35b5f80fd5b346100cd575f3660031901126100cd5760405180602060155491828152019060155f527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475905f5b81811061013f5761013b8561012f81870382610dc2565b60405191829182610c2a565b0390f35b82546001600160a01b0316845260209093019260019283019201610118565b346100cd575f3660031901126100cd576020610178610dfc565b6040519015158152f35b346100cd575f3660031901126100cd5760195461019e81610de4565b6101ab6040519182610dc2565b81815260195f9081527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c96959290602083015b8282106101f1576040518061013b8682610d1b565b6040515f86548060011c906001811680156102b4575b6020831081146102a05782855290811561027d5750600114610246575b506001928261023885946020940382610dc2565b8152019501910190936101dc565b5f888152602081209092505b81831061026757505081016020016001610224565b6001816020925483868801015201920191610252565b60ff191660208581019190915291151560051b8401909101915060019050610224565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610207565b346100cd5760403660031901126100cd57005b346100cd575f3660031901126100cd57601c546102ed81610de4565b6102fa6040519182610dc2565b8181526020810191601c5f527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211925f905b828210610340576040518061013b8682610c6c565b60405161034c81610d92565b85546001600160a01b031681526040516001870180548083525f91825260208083209084019291905b8160078401106104c057846001979460029794602097946103d89454918181106104a4575b818110610488575b81811061046c575b818110610450575b818110610434575b818110610418575b8181106103fe575b106103ea575b500382610dc2565b8382015281520195019101909361032b565b6001600160e01b031916815286018d6103d0565b828a1b6001600160e01b0319168452928901928b016103ca565b604083901b6001600160e01b0319168452928901928b016103c2565b606083901b6001600160e01b0319168452928901928b016103ba565b608083901b6001600160e01b0319168452928901928b016103b2565b60a083901b6001600160e01b0319168452928901928b016103aa565b60c083901b6001600160e01b0319168452928901928b016103a2565b60e083901b6001600160e01b0319168452928901928b0161039a565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e0820152019401920191610375565b346100cd5760203660031901126100cd57005b346100cd575f3660031901126100cd57601a5461058e81610de4565b61059b6040519182610dc2565b818152601a5f9081527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e9290602083015b8282106105e1576040518061013b8682610d1b565b6040515f86548060011c90600181168015610690575b6020831081146102a05782855290811561066d5750600114610636575b506001928261062885946020940382610dc2565b8152019501910190936105cc565b5f888152602081209092505b81831061065757505081016020016001610614565b6001816020925483868801015201920191610642565b60ff191660208581019190915291151560051b8401909101915060019050610614565b91607f16916105f7565b346100cd575f3660031901126100cd57601b546106b681610de4565b6106c36040519182610dc2565b8181526020810191601b5f527f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1925f905b828210610709576040518061013b8682610c6c565b60405161071581610d92565b85546001600160a01b031681526040516001870180548083525f91825260208083209084019291905b8160078401106107ab57846001979460029794602097946107999454918181106104a4578181106104885781811061046c578181106104505781811061043457818110610418578181106103fe57106103ea57500382610dc2565b838201528152019501910190936106f4565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e082015201940192019161073e565b346100cd575f3660031901126100cd5760405180602060175491828152019060175f527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15905f5b8181106108a85761013b8561012f81870382610dc2565b82546001600160a01b0316845260209093019260019283019201610891565b346100cd575f3660031901126100cd5760405180602060185491828152019060185f527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e905f5b8181106109255761013b8561012f81870382610dc2565b82546001600160a01b031684526020909301926001928301920161090e565b346100cd575f3660031901126100cd57601d5461096081610de4565b9061096e6040519283610dc2565b808252602082018091601d5f527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f5f925b828410610a8a57848660405191829160208301906020845251809152604083019060408160051b85010192915f905b8282106109dd57505050500390f35b919390929450603f198682030182528451906020604082019260018060a01b0381511683520151916040602083015282518091526060820190602060608260051b8501019401925f5b828110610a4857505050505060208060019296019201920185949391926109ce565b909192939460208080600193605f19878203018952818a518051918291828552018484015e5f828201840152601f01601f191601019701950193929101610a26565b604051610a9681610d92565b82546001600160a01b0316815260018301805490610ab382610de4565b91610ac16040519384610dc2565b80835260208301915f5260205f205f925b828410610af857505050506001928260209283600295015281520192019301929061099f565b6040515f83548060011c90600181168015610ba7575b6020831081146102a057828552908115610b845750600114610b4d575b5060019282610b3f85946020940382610dc2565b815201920193019290610ad2565b5f858152602081209092505b818310610b6e57505081016020016001610b2b565b6001816020925483868801015201920191610b59565b60ff191660208581019190915291151560051b8401909101915060019050610b2b565b91607f1691610b0e565b346100cd575f3660031901126100cd57601654808252602082019060165f527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289905f5b818110610c0b5761013b8561012f81870382610dc2565b82546001600160a01b0316845260209093019260019283019201610bf4565b60206040818301928281528451809452019201905f5b818110610c4d5750505090565b82516001600160a01b0316845260209384019390920191600101610c40565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310610c9e57505050505090565b9091929394603f1982820301835285516020606081604085019360018060a01b0381511686520151936040838201528451809452019201905f905b808210610cf85750505060208060019297019301930191939290610c8f565b82516001600160e01b031916845260209384019390920191600190910190610cd9565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310610d4d57505050505090565b909192939460208080600193603f19868203018752818a518051918291828552018484015e5f828201840152601f01601f191601019701959491909101920190610d3e565b6040810190811067ffffffffffffffff821117610dae57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff821117610dae57604052565b67ffffffffffffffff8111610dae5760051b60200190565b60085460ff168015610e0b5790565b50604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d60048201526519985a5b195960d21b6024820152602081604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa908115610ea5575f91610e73575b50151590565b90506020813d602011610e9d575b81610e8e60209383610dc2565b810103126100cd57515f610e6d565b3d9150610e81565b6040513d5f823e3d90fdfea2646970667358221220405aace49e27afe98eb19c3630872a82ef9a4ab7fd589950f6a3f85cf4d2b49f64736f6c634300081b0033","sourceMap":"492:234:76:-:0;;;;;;;3166:4:2;492:234:76;;3166:4:2;492:234:76;;;3166:4:2;492:234:76;3166:4:2;492:234:76;;1038:4:12;492:234:76;;;1038:4:12;492:234:76;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f3560e01c9081631ed7831c14610bb1575080632ade3880146109445780633e5e3c23146108c75780633f7286f41461084a57806366d9a9a01461069a57806385226c811461057257806388e54b881461055f578063916a17c6146102d1578063a502846b146102be578063b5508aa914610182578063ba414fa61461015e578063e20c9f71146100d15763fa7626d4146100ab575f80fd5b346100cd575f3660031901126100cd57602060ff601e54166040519015158152f35b5f80fd5b346100cd575f3660031901126100cd5760405180602060155491828152019060155f527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475905f5b81811061013f5761013b8561012f81870382610dc2565b60405191829182610c2a565b0390f35b82546001600160a01b0316845260209093019260019283019201610118565b346100cd575f3660031901126100cd576020610178610dfc565b6040519015158152f35b346100cd575f3660031901126100cd5760195461019e81610de4565b6101ab6040519182610dc2565b81815260195f9081527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c96959290602083015b8282106101f1576040518061013b8682610d1b565b6040515f86548060011c906001811680156102b4575b6020831081146102a05782855290811561027d5750600114610246575b506001928261023885946020940382610dc2565b8152019501910190936101dc565b5f888152602081209092505b81831061026757505081016020016001610224565b6001816020925483868801015201920191610252565b60ff191660208581019190915291151560051b8401909101915060019050610224565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610207565b346100cd5760403660031901126100cd57005b346100cd575f3660031901126100cd57601c546102ed81610de4565b6102fa6040519182610dc2565b8181526020810191601c5f527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211925f905b828210610340576040518061013b8682610c6c565b60405161034c81610d92565b85546001600160a01b031681526040516001870180548083525f91825260208083209084019291905b8160078401106104c057846001979460029794602097946103d89454918181106104a4575b818110610488575b81811061046c575b818110610450575b818110610434575b818110610418575b8181106103fe575b106103ea575b500382610dc2565b8382015281520195019101909361032b565b6001600160e01b031916815286018d6103d0565b828a1b6001600160e01b0319168452928901928b016103ca565b604083901b6001600160e01b0319168452928901928b016103c2565b606083901b6001600160e01b0319168452928901928b016103ba565b608083901b6001600160e01b0319168452928901928b016103b2565b60a083901b6001600160e01b0319168452928901928b016103aa565b60c083901b6001600160e01b0319168452928901928b016103a2565b60e083901b6001600160e01b0319168452928901928b0161039a565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e0820152019401920191610375565b346100cd5760203660031901126100cd57005b346100cd575f3660031901126100cd57601a5461058e81610de4565b61059b6040519182610dc2565b818152601a5f9081527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e9290602083015b8282106105e1576040518061013b8682610d1b565b6040515f86548060011c90600181168015610690575b6020831081146102a05782855290811561066d5750600114610636575b506001928261062885946020940382610dc2565b8152019501910190936105cc565b5f888152602081209092505b81831061065757505081016020016001610614565b6001816020925483868801015201920191610642565b60ff191660208581019190915291151560051b8401909101915060019050610614565b91607f16916105f7565b346100cd575f3660031901126100cd57601b546106b681610de4565b6106c36040519182610dc2565b8181526020810191601b5f527f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1925f905b828210610709576040518061013b8682610c6c565b60405161071581610d92565b85546001600160a01b031681526040516001870180548083525f91825260208083209084019291905b8160078401106107ab57846001979460029794602097946107999454918181106104a4578181106104885781811061046c578181106104505781811061043457818110610418578181106103fe57106103ea57500382610dc2565b838201528152019501910190936106f4565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e082015201940192019161073e565b346100cd575f3660031901126100cd5760405180602060175491828152019060175f527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15905f5b8181106108a85761013b8561012f81870382610dc2565b82546001600160a01b0316845260209093019260019283019201610891565b346100cd575f3660031901126100cd5760405180602060185491828152019060185f527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e905f5b8181106109255761013b8561012f81870382610dc2565b82546001600160a01b031684526020909301926001928301920161090e565b346100cd575f3660031901126100cd57601d5461096081610de4565b9061096e6040519283610dc2565b808252602082018091601d5f527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f5f925b828410610a8a57848660405191829160208301906020845251809152604083019060408160051b85010192915f905b8282106109dd57505050500390f35b919390929450603f198682030182528451906020604082019260018060a01b0381511683520151916040602083015282518091526060820190602060608260051b8501019401925f5b828110610a4857505050505060208060019296019201920185949391926109ce565b909192939460208080600193605f19878203018952818a518051918291828552018484015e5f828201840152601f01601f191601019701950193929101610a26565b604051610a9681610d92565b82546001600160a01b0316815260018301805490610ab382610de4565b91610ac16040519384610dc2565b80835260208301915f5260205f205f925b828410610af857505050506001928260209283600295015281520192019301929061099f565b6040515f83548060011c90600181168015610ba7575b6020831081146102a057828552908115610b845750600114610b4d575b5060019282610b3f85946020940382610dc2565b815201920193019290610ad2565b5f858152602081209092505b818310610b6e57505081016020016001610b2b565b6001816020925483868801015201920191610b59565b60ff191660208581019190915291151560051b8401909101915060019050610b2b565b91607f1691610b0e565b346100cd575f3660031901126100cd57601654808252602082019060165f527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289905f5b818110610c0b5761013b8561012f81870382610dc2565b82546001600160a01b0316845260209093019260019283019201610bf4565b60206040818301928281528451809452019201905f5b818110610c4d5750505090565b82516001600160a01b0316845260209384019390920191600101610c40565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310610c9e57505050505090565b9091929394603f1982820301835285516020606081604085019360018060a01b0381511686520151936040838201528451809452019201905f905b808210610cf85750505060208060019297019301930191939290610c8f565b82516001600160e01b031916845260209384019390920191600190910190610cd9565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310610d4d57505050505090565b909192939460208080600193603f19868203018752818a518051918291828552018484015e5f828201840152601f01601f191601019701959491909101920190610d3e565b6040810190811067ffffffffffffffff821117610dae57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff821117610dae57604052565b67ffffffffffffffff8111610dae5760051b60200190565b60085460ff168015610e0b5790565b50604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d60048201526519985a5b195960d21b6024820152602081604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa908115610ea5575f91610e73575b50151590565b90506020813d602011610e9d575b81610e8e60209383610dc2565b810103126100cd57515f610e6d565b3d9150610e81565b6040513d5f823e3d90fdfea2646970667358221220405aace49e27afe98eb19c3630872a82ef9a4ab7fd589950f6a3f85cf4d2b49f64736f6c634300081b0033","sourceMap":"492:234:76:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;492:234:76;;;;;;1016:26:12;492:234:76;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;492:234:76;;;;;;;;2421:18:5;492:234:76;;;;;;;2421:18:5;492:234:76;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;492:234:76;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;492:234:76;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;492:234:76;;;;2273:18:5;492:234:76;;;;:::i;:::-;;;;;;;:::i;:::-;;;;2273:18:5;492:234:76;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;492:234:76;;;;;;-1:-1:-1;;492:234:76;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;492:234:76;;;;;;;;;;;;;;;;;;;;-1:-1:-1;492:234:76;;-1:-1:-1;492:234:76;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;492:234:76;;;;;;;;;;;-1:-1:-1;;492:234:76;;;;3190:18:5;492:234:76;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3190:18:5;492:234:76;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;-1:-1:-1;;;;;492:234:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;492:234:76;;;;;;;;;;;;-1:-1:-1;;;;;;492:234:76;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;492:234:76;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;492:234:76;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;492:234:76;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;492:234:76;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;492:234:76;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;492:234:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;492:234:76;;;;;;;;;;;-1:-1:-1;;492:234:76;;;;2707:18:5;492:234:76;;;;:::i;:::-;;;;;;;:::i;:::-;;;;2707:18:5;492:234:76;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;492:234:76;;;;;;-1:-1:-1;;492:234:76;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;492:234:76;;;;;;;;;;;;;;;;;;;;-1:-1:-1;492:234:76;;-1:-1:-1;492:234:76;;;;;;;;;;;;;;;-1:-1:-1;;492:234:76;;;;2883:26:5;492:234:76;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2883:26:5;492:234:76;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;-1:-1:-1;;;;;492:234:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;492:234:76;;;;;;;;3038:18:5;492:234:76;;;;;;;3038:18:5;492:234:76;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;492:234:76;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;492:234:76;;;;;;;;3331:16:5;492:234:76;;;;;;;3331:16:5;492:234:76;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;492:234:76;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;492:234:76;;;;3485:19:5;492:234:76;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;3485:19:5;492:234:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;492:234:76;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;492:234:76;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;492:234:76;;;;;;-1:-1:-1;;492:234:76;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;492:234:76;;;;;;;;;;;;;;;;;;;;-1:-1:-1;492:234:76;;-1:-1:-1;492:234:76;;;;;;;;;;;;;;;-1:-1:-1;;492:234:76;;;;2563:16:5;492:234:76;;;;;;;;2563:16:5;492:234:76;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;492:234:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;492:234:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;492:234:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;492:234:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;492:234:76;;;;;-1:-1:-1;492:234:76;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;1243:204:1:-;1302:7;492:234:76;;;;;;;1325:14:1;:::o;1298:143::-;492:234:76;;;;;;1377:39:1;;492:234:76;1377:39:1;;;492:234:76;192:59:1;;;;;;;;1377:39;;;492:234:76;1377:39:1;;;;;;;492:234:76;1377:39:1;;;1298:143;1377:53;;;1370:60;:::o;1377:39::-;;;192:59;1377:39;;192:59;1377:39;;;;;;192:59;1377:39;;;:::i;:::-;;;192:59;;;;;1377:39;;;;;;-1:-1:-1;1377:39:1;;;492:234:76;;192:59:1;492:234:76;192:59:1;;;;","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testPriceFuzz(uint256,uint256)":"a502846b","testSwapFuzz(uint256)":"88e54b88"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"LimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"Unavailable\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"testPriceFuzz\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"}],\"name\":\"testSwapFuzz\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is a template for a swap adapter test. Test all functions that are implemented in your swap adapter, the two test included here are just an example. Feel free to use UniswapV2SwapAdapterTest and BalancerV2SwapAdapterTest as a reference.\",\"errors\":{\"LimitExceeded(uint256)\":[{\"details\":\"The LimitExceeded error is thrown when a limit has been exceeded. E.g. the specified amount can't be traded safely.\"}],\"NotImplemented(string)\":[{\"details\":\"The NotImplemented error is thrown when a function is not implemented.\"}],\"Unavailable(string)\":[{\"details\":\"The Unavailable error is thrown when a pool or swap is not available for unexpected reason. E.g. it was paused due to a bug.\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"TemplateSwapAdapterTest\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/TemplateSwapAdapter.t.sol\":\"TemplateSwapAdapterTest\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b\",\"dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54\",\"dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678\",\"dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdToml.sol\":{\"keccak256\":\"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d\",\"dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e\",\"dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a\",\"dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/libraries/FractionMath.sol\":{\"keccak256\":\"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c\",\"dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr\"]},\"test/TemplateSwapAdapter.t.sol\":{\"keccak256\":\"0x5b09f18c00a8a56e7eeb6d522151beca7e0e555442d4b65eae7cd186d66eb96f\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://c7e8f0432a45e4a8afdb56cde16b9ce0bedc95c3cc5ab855d5d39981405b1e2b\",\"dweb:/ipfs/QmSXmVd7yv6nTgyGR24KQz8KwaAxFQdQPG3GcL6cUKH7ND\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"type":"error","name":"LimitExceeded"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"NotImplemented"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"Unavailable"},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testPriceFuzz"},{"inputs":[{"internalType":"uint256","name":"specifiedAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testSwapFuzz"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/TemplateSwapAdapter.t.sol":"TemplateSwapAdapterTest"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef","urls":["bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b","dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d","urls":["bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54","dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3","urls":["bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678","dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdToml.sol":{"keccak256":"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab","urls":["bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d","dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe","urls":["bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e","dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456","urls":["bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a","dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/libraries/FractionMath.sol":{"keccak256":"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735","urls":["bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c","dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr"],"license":"AGPL-3.0-or-later"},"test/TemplateSwapAdapter.t.sol":{"keccak256":"0x5b09f18c00a8a56e7eeb6d522151beca7e0e555442d4b65eae7cd186d66eb96f","urls":["bzz-raw://c7e8f0432a45e4a8afdb56cde16b9ce0bedc95c3cc5ab855d5d39981405b1e2b","dweb:/ipfs/QmSXmVd7yv6nTgyGR24KQz8KwaAxFQdQPG3GcL6cUKH7ND"],"license":"AGPL-3.0-or-later"}},"version":1},"id":76} \ No newline at end of file diff --git a/evm/out/Test.sol/Test.json b/evm/out/Test.sol/Test.json deleted file mode 100644 index 5b0cd0f..0000000 --- a/evm/out/Test.sol/Test.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Test.sol\":\"Test\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b\",\"dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54\",\"dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678\",\"dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdToml.sol\":{\"keccak256\":\"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d\",\"dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e\",\"dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a\",\"dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Test.sol":"Test"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef","urls":["bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b","dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d","urls":["bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54","dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3","urls":["bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678","dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdToml.sol":{"keccak256":"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab","urls":["bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d","dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe","urls":["bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e","dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456","urls":["bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a","dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"}},"version":1},"id":12} \ No newline at end of file diff --git a/evm/out/UniswapV2SwapAdapter.sol/IUniswapV2Factory.json b/evm/out/UniswapV2SwapAdapter.sol/IUniswapV2Factory.json deleted file mode 100644 index c082231..0000000 --- a/evm/out/UniswapV2SwapAdapter.sol/IUniswapV2Factory.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"allPairs","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"pair","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"allPairsLength","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"createPair","inputs":[{"name":"tokenA","type":"address","internalType":"address"},{"name":"tokenB","type":"address","internalType":"address"}],"outputs":[{"name":"pair","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"feeTo","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"feeToSetter","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getPair","inputs":[{"name":"tokenA","type":"address","internalType":"address"},{"name":"tokenB","type":"address","internalType":"address"}],"outputs":[{"name":"pair","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setFeeTo","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setFeeToSetter","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"PairCreated","inputs":[{"name":"token0","type":"address","indexed":true,"internalType":"address"},{"name":"token1","type":"address","indexed":true,"internalType":"address"},{"name":"pair","type":"address","indexed":false,"internalType":"address"},{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allPairs(uint256)":"1e3dd18b","allPairsLength()":"574f2ba3","createPair(address,address)":"c9c65396","feeTo()":"017e7e58","feeToSetter()":"094b7415","getPair(address,address)":"e6a43905","setFeeTo(address)":"f46901ed","setFeeToSetter(address)":"a2e74af6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"PairCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allPairs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allPairsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"createPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeToSetter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"getPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setFeeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setFeeToSetter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/uniswap-v2/UniswapV2SwapAdapter.sol\":\"IUniswapV2Factory\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/uniswap-v2/UniswapV2SwapAdapter.sol\":{\"keccak256\":\"0xd4da168460c3a8859504bed2fa8ebb8de95eb8ff684f9c691ac47b4028a461d5\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://8a2428d5fcc612432c8bc1ab71d1b8f65a13fea67b6a9a64d0eb73f3fb53b853\",\"dweb:/ipfs/QmW5ggqCo9iThkw5ufDZkKJMcC14xrFeb516pQknsToubs\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"token0","type":"address","indexed":true},{"internalType":"address","name":"token1","type":"address","indexed":true},{"internalType":"address","name":"pair","type":"address","indexed":false},{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"PairCreated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"allPairs","outputs":[{"internalType":"address","name":"pair","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"allPairsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"createPair","outputs":[{"internalType":"address","name":"pair","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"feeTo","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"feeToSetter","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"stateMutability":"view","type":"function","name":"getPair","outputs":[{"internalType":"address","name":"pair","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setFeeTo"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setFeeToSetter"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/uniswap-v2/UniswapV2SwapAdapter.sol":"IUniswapV2Factory"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/uniswap-v2/UniswapV2SwapAdapter.sol":{"keccak256":"0xd4da168460c3a8859504bed2fa8ebb8de95eb8ff684f9c691ac47b4028a461d5","urls":["bzz-raw://8a2428d5fcc612432c8bc1ab71d1b8f65a13fea67b6a9a64d0eb73f3fb53b853","dweb:/ipfs/QmW5ggqCo9iThkw5ufDZkKJMcC14xrFeb516pQknsToubs"],"license":"AGPL-3.0-or-later"}},"version":1},"id":64} \ No newline at end of file diff --git a/evm/out/UniswapV2SwapAdapter.sol/IUniswapV2Pair.json b/evm/out/UniswapV2SwapAdapter.sol/IUniswapV2Pair.json deleted file mode 100644 index 75cfac4..0000000 --- a/evm/out/UniswapV2SwapAdapter.sol/IUniswapV2Pair.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MINIMUM_LIQUIDITY","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"PERMIT_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"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":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"to","type":"address","internalType":"address"}],"outputs":[{"name":"amount0","type":"uint256","internalType":"uint256"},{"name":"amount1","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"pure"},{"type":"function","name":"factory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getReserves","inputs":[],"outputs":[{"name":"reserve0","type":"uint112","internalType":"uint112"},{"name":"reserve1","type":"uint112","internalType":"uint112"},{"name":"blockTimestampLast","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"kLast","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"to","type":"address","internalType":"address"}],"outputs":[{"name":"liquidity","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"nonces","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"permit","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"price0CumulativeLast","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"price1CumulativeLast","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"skim","inputs":[{"name":"to","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swap","inputs":[{"name":"amount0Out","type":"uint256","internalType":"uint256"},{"name":"amount1Out","type":"uint256","internalType":"uint256"},{"name":"to","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"sync","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"token0","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"token1","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"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":"Burn","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"amount0","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount1","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Mint","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"amount0","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount1","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Swap","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"amount0In","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount1In","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount0Out","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount1Out","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Sync","inputs":[{"name":"reserve0","type":"uint112","indexed":false,"internalType":"uint112"},{"name":"reserve1","type":"uint112","indexed":false,"internalType":"uint112"}],"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}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","MINIMUM_LIQUIDITY()":"ba9a7a56","PERMIT_TYPEHASH()":"30adf81f","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(address)":"89afcb44","decimals()":"313ce567","factory()":"c45a0155","getReserves()":"0902f1ac","initialize(address,address)":"485cc955","kLast()":"7464fc3d","mint(address)":"6a627842","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","price0CumulativeLast()":"5909c0d5","price1CumulativeLast()":"5a3d5493","skim(address)":"bc25cf77","swap(uint256,uint256,address,bytes)":"022c0d9f","symbol()":"95d89b41","sync()":"fff6cae9","token0()":"0dfe1681","token1()":"d21220a7","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"}],\"name\":\"Sync\",\"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\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINIMUM_LIQUIDITY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"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\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"blockTimestampLast\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price0CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price1CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"skim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sync\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/uniswap-v2/UniswapV2SwapAdapter.sol\":\"IUniswapV2Pair\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/uniswap-v2/UniswapV2SwapAdapter.sol\":{\"keccak256\":\"0xd4da168460c3a8859504bed2fa8ebb8de95eb8ff684f9c691ac47b4028a461d5\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://8a2428d5fcc612432c8bc1ab71d1b8f65a13fea67b6a9a64d0eb73f3fb53b853\",\"dweb:/ipfs/QmW5ggqCo9iThkw5ufDZkKJMcC14xrFeb516pQknsToubs\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"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":"sender","type":"address","indexed":true},{"internalType":"uint256","name":"amount0","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount1","type":"uint256","indexed":false},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"Burn","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint256","name":"amount0","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount1","type":"uint256","indexed":false}],"type":"event","name":"Mint","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint256","name":"amount0In","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount1In","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount0Out","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount1Out","type":"uint256","indexed":false},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"Swap","anonymous":false},{"inputs":[{"internalType":"uint112","name":"reserve0","type":"uint112","indexed":false},{"internalType":"uint112","name":"reserve1","type":"uint112","indexed":false}],"type":"event","name":"Sync","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":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"MINIMUM_LIQUIDITY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"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":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getReserves","outputs":[{"internalType":"uint112","name":"reserve0","type":"uint112"},{"internalType":"uint112","name":"reserve1","type":"uint112"},{"internalType":"uint32","name":"blockTimestampLast","type":"uint32"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"kLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"mint","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"permit"},{"inputs":[],"stateMutability":"view","type":"function","name":"price0CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"price1CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"skim"},{"inputs":[{"internalType":"uint256","name":"amount0Out","type":"uint256"},{"internalType":"uint256","name":"amount1Out","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"swap"},{"inputs":[],"stateMutability":"pure","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"sync"},{"inputs":[],"stateMutability":"view","type":"function","name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}]},{"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":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/uniswap-v2/UniswapV2SwapAdapter.sol":"IUniswapV2Pair"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/uniswap-v2/UniswapV2SwapAdapter.sol":{"keccak256":"0xd4da168460c3a8859504bed2fa8ebb8de95eb8ff684f9c691ac47b4028a461d5","urls":["bzz-raw://8a2428d5fcc612432c8bc1ab71d1b8f65a13fea67b6a9a64d0eb73f3fb53b853","dweb:/ipfs/QmW5ggqCo9iThkw5ufDZkKJMcC14xrFeb516pQknsToubs"],"license":"AGPL-3.0-or-later"}},"version":1},"id":64} \ No newline at end of file diff --git a/evm/out/UniswapV2SwapAdapter.sol/UniswapV2SwapAdapter.json b/evm/out/UniswapV2SwapAdapter.sol/UniswapV2SwapAdapter.json deleted file mode 100644 index b35c747..0000000 --- a/evm/out/UniswapV2SwapAdapter.sol/UniswapV2SwapAdapter.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"factory_","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"getCapabilities","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"capabilities","type":"uint8[]","internalType":"enum ISwapAdapterTypes.Capability[]"}],"stateMutability":"pure"},{"type":"function","name":"getLimits","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"}],"outputs":[{"name":"limits","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getPoolIds","inputs":[{"name":"offset","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"ids","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"getTokens","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"price","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"},{"name":"specifiedAmounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"prices","type":"tuple[]","internalType":"struct ISwapAdapterTypes.Fraction[]","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"swap","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"},{"name":"side","type":"uint8","internalType":"enum ISwapAdapterTypes.OrderSide"},{"name":"specifiedAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"trade","type":"tuple","internalType":"struct ISwapAdapterTypes.Trade","components":[{"name":"calculatedAmount","type":"uint256","internalType":"uint256"},{"name":"gasUsed","type":"uint256","internalType":"uint256"},{"name":"price","type":"tuple","internalType":"struct ISwapAdapterTypes.Fraction","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"nonpayable"},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LimitExceeded","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotImplemented","inputs":[{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"Unavailable","inputs":[{"name":"reason","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x60a034606857601f61124a38819003918201601f19168301916001600160401b03831184841017606c57808492602094604052833981010312606857516001600160a01b038116908190036068576080526040516111c990816100818239608051816106930152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c806323eeca011461066457806348bd7dfd1461058d5780638307c65514610527578063a9270fbe146103fe578063aad6e488146101ae5763ecbbc0331461005b575f80fd5b346101aa5760203660031901126101aa5760405161007a60608261090d565b6002815260208101604036823760043560601c604051630dfe168160e01b8152602081600481855afa918215610182576004926020925f9161018d575b506100c186610994565b6001600160a01b03909116905260405163d21220a760e01b815292839182905afa908115610182575f91610153575b506100fc8392936109a1565b6001600160a01b0390911690526040805160208082529251928101839052928392918301915f5b818110610131575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610123565b610175915060203d60201161017b575b61016d818361090d565b810190610975565b5f6100f0565b503d610163565b6040513d5f823e3d90fd5b6101a49150833d851161017b5761016d818361090d565b5f6100b7565b5f80fd5b346101aa5760803660031901126101aa576101c7610877565b6101cf61088d565b6064359067ffffffffffffffff82116101aa57366023830112156101aa578160040135916101fc8361092f565b9261020a604051948561090d565b8084526024602085019160051b830101913683116101aa57602401905b8282106103ee5750505081519261023d8461092f565b9361024b604051958661090d565b80855261025a601f199161092f565b015f5b8181106103cb57506004926060928435841c92506001600160a01b039182169116101561037f57604051630240bc6b60e21b815292839182905afa8015610182575f915f9161034d575b505b5f5b83518110156102fc57806102e06102c4600193876109b1565b516001600160701b038516906001600160701b03871690610e3b565b6102ea82886109b1565b526102f581876109b1565b50016102ab565b846040518091602082016020835281518091526020604084019201905f5b818110610328575050500390f35b825180518552602090810151818601528695506040909401939092019160010161031a565b9050610371915060603d606011610378575b610369818361090d565b8101906109f1565b50846102a7565b503d61035f565b604051630240bc6b60e21b815292839182905afa8015610182575f915f916103a9575b50906102a9565b90506103c4915060603d60601161037857610369818361090d565b50846103a2565b6020906040516103da816108dd565b5f81525f838201528282890101520161025d565b8135815260209182019101610227565b346101aa57600461040e366108a3565b6040519391606090610420828761090d565b60028652816020870195601f198201368837604051630240bc6b60e21b81529586918290841c5afa91821561018257600a945f915f946104fa575b50506001600160701b03928316939216916001600160a01b03908116911610156104db5782900461048b85610994565b5204610496836109a1565b52905b604051918291602083019060208452518091526040830191905f5b8181106104c2575050500390f35b82518452859450602093840193909201916001016104b4565b908290046104e885610994565b52046104f3836109a1565b5290610499565b6001600160701b039450849250908161051e92903d1061037857610369818361090d565b5093909161045b565b346101aa5760a03660031901126101aa57610540610877565b61054861088d565b6064359160028310156101aa576080926105689260843592600435610a27565b6020604080519280518452828101518385015201518051604084015201516060820152f35b346101aa5761059b366108a3565b5050506040516105ac60a08261090d565b6004815260208101608036823760016105c483610994565b5260026105d0836109a1565b5281516002101561065057600360608301528151600310156106505760096080830152604051906020820192602083525180935260408201905f935b8085106106195783830384f35b9091825190600a82101561063c576020816001938293520193019401939061060c565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b346101aa5760403660031901126101aa5760043561068460243582610947565b60405163574f2ba360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316929190602081600481875afa80156101825783915f91610842575b5082116107de575b6106e791610968565b6107096106f38261092f565b91610701604051938461090d565b80835261092f565b602082019290601f19013684375f5b825181101561079a5761072b8183610947565b9060405191631e3dd18b60e01b83526004830152602082602481895afa8015610182576001925f9161077c575b5060601b6bffffffffffffffffffffffff191661077582866109b1565b5201610718565b610794915060203d811161017b5761016d818361090d565b87610758565b8383604051918291602083019060208452518091526040830191905f5b8181106107c5575050500390f35b82518452859450602093840193909201916001016107b7565b505060405163574f2ba360e01b8152602081600481865afa80156101825782905f9061080c575b91506106de565b50506020813d60201161083a575b816108276020938361090d565b810103126101aa57816106e79151610805565b3d915061081a565b9150506020813d60201161086f575b8161085e6020938361090d565b810103126101aa57829051856106d6565b3d9150610851565b602435906001600160a01b03821682036101aa57565b604435906001600160a01b03821682036101aa57565b60609060031901126101aa57600435906024356001600160a01b03811681036101aa57906044356001600160a01b03811681036101aa5790565b6040810190811067ffffffffffffffff8211176108f957604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176108f957604052565b67ffffffffffffffff81116108f95760051b60200190565b9190820180921161095457565b634e487b7160e01b5f52601160045260245ffd5b9190820391821161095457565b908160209103126101aa57516001600160a01b03811681036101aa5790565b8051156106505760200190565b8051600110156106505760400190565b80518210156106505760209160051b010190565b604051906109d2826108dd565b5f6020838281520152565b51906001600160701b03821682036101aa57565b908160609103126101aa57610a05816109dd565b916040610a14602084016109dd565b92015163ffffffff811681036101aa5790565b9493905f604051966060880188811067ffffffffffffffff8211176108f9576040525f88525f6020890152604051610a5e816108dd565b5f81525f60208201526040890152878415610cda575060601c946001600160a01b03948516948316948510948515610c8557604051630240bc6b60e21b815296606088600481845afa8015610182575f985f91610c5f575b5097965b5a93600281101561063c57898989921598895f14610c445750509083610af66001600160701b03610afe94166001600160701b038d16846110d6565b953390610fe6565b15610bd057803b15610bcc5760405163022c0d9f60e01b81525f6004820181905260248201849052336044830152608060648301526084820152908490829060a490829084905af18015610bc157908491610ba8575b505090610b66915b89525b5a90610968565b60208801525015610b8e576001600160701b0380610b879416921690610e3b565b6040830152565b50610b87916001600160701b038086519216921690610e3b565b81610bb29161090d565b610bbd57825f610b54565b8280fd5b6040513d86823e3d90fd5b8380fd5b80939291933b156101aa5760405163022c0d9f60e01b8152600481018590525f6024820181905233604483015260806064830152608482018190529091829060a490829084905af1801561018257610c2e575b50610b669192610b5c565b610b6692505f610c3d9161090d565b5f91610c23565b610b66979650610c58959491929394610d02565b8952610b5f565b9050610c7b91985060603d60601161037857610369818361090d565b509790975f610ab6565b604051630240bc6b60e21b81529596606087600481845afa8015610182575f975f91610cb4575b509697610aba565b9050610cd091975060603d60601161037857610369818361090d565b509690965f610cac565b9750505050505050565b8115610cee570490565b634e487b7160e01b5f52601260045260245ffd5b94919092610d1e906001600160701b03805f9716911684610f01565b948515610e1e576001600160a01b0390811693610d419187918691339116610fe6565b15610dbd57813b15610bbd5760405163022c0d9f60e01b81525f600482018190526024820192909252336044820152608060648201526084810191909152908290829060a490829084905af18015610db257610d9c57505090565b610da782809261090d565b610daf575090565b80fd5b6040513d84823e3d90fd5b9150803b156101aa5760405163022c0d9f60e01b815260048101929092525f60248301819052336044840152608060648401526084830181905290829060a490829084905af1801561018257610e11575090565b5f610e1b9161090d565b90565b5050505050505f90565b8181029291811591840414171561095457565b919091610e466109c5565b5082158015610ef9575b610eb357610e6c82610e66610e729486856110d6565b90610968565b92610947565b6103e58202918083046103e51490151715610954576103e88102908082046103e814901517156109545760405191610ea9836108dd565b8252602082015290565b60405163643c60f360e01b815260206004820152601d60248201527f4174206c65617374206f6e652072657365727665206973207a65726f210000006044820152606490fd5b508115610e50565b91908215610fdf578015610fa5578115610f6a5782610f1f91610e28565b916103e88302928084046103e8149015171561095457610f3e91610968565b6103e58102908082046103e5149015171561095457610f5c91610ce4565b600181018091116109545790565b60405163643c60f360e01b8152602060048201526012602482015271726573657276654f7574206973207a65726f60701b6044820152606490fd5b60405163643c60f360e01b815260206004820152601160248201527072657365727665496e206973207a65726f60781b6044820152606490fd5b5050505f90565b6040516323b872dd60e01b602082019081526001600160a01b039384166024830152939092166044830152606480830194909452928152915f91829161102d60848661090d565b60018060a01b031693519082855af13d156110ca573d67ffffffffffffffff81116108f95761107e916040519161106e6020601f19601f840116018461090d565b82523d5f602084013e5b83611135565b80519081151591826110a6575b50506110945750565b635274afe760e01b5f5260045260245ffd5b81925090602091810103126101aa57602001518015908115036101aa575f8061108b565b61107e90606090611078565b91908215610fdf5780159182801561112d575b610eb3576103e584029384046103e503610954576111079084610e28565b916103e882029182046103e814171561095457610e1b9261112791610947565b90610ce4565b5080156110e9565b90611159575080511561114a57805190602001fd5b63d6bda27560e01b5f5260045ffd5b8151158061118a575b61116a575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561116256fea2646970667358221220b2e7f8fbccc13285e349f8b239b13d9153a3383fc98985279c83c306cd63f78464736f6c634300081b0033","sourceMap":"371:8928:64:-:0;;;;;;;;;;;;;-1:-1:-1;;371:8928:64;;;;-1:-1:-1;;;;;371:8928:64;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;371:8928:64;;;;;;;;538:37;;371:8928;;;;;;;;538:37;371:8928;;;;;;;-1:-1:-1;371:8928:64;;;;;;-1:-1:-1;371:8928:64;;;;;-1:-1:-1;371:8928:64","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806323eeca011461066457806348bd7dfd1461058d5780638307c65514610527578063a9270fbe146103fe578063aad6e488146101ae5763ecbbc0331461005b575f80fd5b346101aa5760203660031901126101aa5760405161007a60608261090d565b6002815260208101604036823760043560601c604051630dfe168160e01b8152602081600481855afa918215610182576004926020925f9161018d575b506100c186610994565b6001600160a01b03909116905260405163d21220a760e01b815292839182905afa908115610182575f91610153575b506100fc8392936109a1565b6001600160a01b0390911690526040805160208082529251928101839052928392918301915f5b818110610131575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610123565b610175915060203d60201161017b575b61016d818361090d565b810190610975565b5f6100f0565b503d610163565b6040513d5f823e3d90fd5b6101a49150833d851161017b5761016d818361090d565b5f6100b7565b5f80fd5b346101aa5760803660031901126101aa576101c7610877565b6101cf61088d565b6064359067ffffffffffffffff82116101aa57366023830112156101aa578160040135916101fc8361092f565b9261020a604051948561090d565b8084526024602085019160051b830101913683116101aa57602401905b8282106103ee5750505081519261023d8461092f565b9361024b604051958661090d565b80855261025a601f199161092f565b015f5b8181106103cb57506004926060928435841c92506001600160a01b039182169116101561037f57604051630240bc6b60e21b815292839182905afa8015610182575f915f9161034d575b505b5f5b83518110156102fc57806102e06102c4600193876109b1565b516001600160701b038516906001600160701b03871690610e3b565b6102ea82886109b1565b526102f581876109b1565b50016102ab565b846040518091602082016020835281518091526020604084019201905f5b818110610328575050500390f35b825180518552602090810151818601528695506040909401939092019160010161031a565b9050610371915060603d606011610378575b610369818361090d565b8101906109f1565b50846102a7565b503d61035f565b604051630240bc6b60e21b815292839182905afa8015610182575f915f916103a9575b50906102a9565b90506103c4915060603d60601161037857610369818361090d565b50846103a2565b6020906040516103da816108dd565b5f81525f838201528282890101520161025d565b8135815260209182019101610227565b346101aa57600461040e366108a3565b6040519391606090610420828761090d565b60028652816020870195601f198201368837604051630240bc6b60e21b81529586918290841c5afa91821561018257600a945f915f946104fa575b50506001600160701b03928316939216916001600160a01b03908116911610156104db5782900461048b85610994565b5204610496836109a1565b52905b604051918291602083019060208452518091526040830191905f5b8181106104c2575050500390f35b82518452859450602093840193909201916001016104b4565b908290046104e885610994565b52046104f3836109a1565b5290610499565b6001600160701b039450849250908161051e92903d1061037857610369818361090d565b5093909161045b565b346101aa5760a03660031901126101aa57610540610877565b61054861088d565b6064359160028310156101aa576080926105689260843592600435610a27565b6020604080519280518452828101518385015201518051604084015201516060820152f35b346101aa5761059b366108a3565b5050506040516105ac60a08261090d565b6004815260208101608036823760016105c483610994565b5260026105d0836109a1565b5281516002101561065057600360608301528151600310156106505760096080830152604051906020820192602083525180935260408201905f935b8085106106195783830384f35b9091825190600a82101561063c576020816001938293520193019401939061060c565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b346101aa5760403660031901126101aa5760043561068460243582610947565b60405163574f2ba360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316929190602081600481875afa80156101825783915f91610842575b5082116107de575b6106e791610968565b6107096106f38261092f565b91610701604051938461090d565b80835261092f565b602082019290601f19013684375f5b825181101561079a5761072b8183610947565b9060405191631e3dd18b60e01b83526004830152602082602481895afa8015610182576001925f9161077c575b5060601b6bffffffffffffffffffffffff191661077582866109b1565b5201610718565b610794915060203d811161017b5761016d818361090d565b87610758565b8383604051918291602083019060208452518091526040830191905f5b8181106107c5575050500390f35b82518452859450602093840193909201916001016107b7565b505060405163574f2ba360e01b8152602081600481865afa80156101825782905f9061080c575b91506106de565b50506020813d60201161083a575b816108276020938361090d565b810103126101aa57816106e79151610805565b3d915061081a565b9150506020813d60201161086f575b8161085e6020938361090d565b810103126101aa57829051856106d6565b3d9150610851565b602435906001600160a01b03821682036101aa57565b604435906001600160a01b03821682036101aa57565b60609060031901126101aa57600435906024356001600160a01b03811681036101aa57906044356001600160a01b03811681036101aa5790565b6040810190811067ffffffffffffffff8211176108f957604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176108f957604052565b67ffffffffffffffff81116108f95760051b60200190565b9190820180921161095457565b634e487b7160e01b5f52601160045260245ffd5b9190820391821161095457565b908160209103126101aa57516001600160a01b03811681036101aa5790565b8051156106505760200190565b8051600110156106505760400190565b80518210156106505760209160051b010190565b604051906109d2826108dd565b5f6020838281520152565b51906001600160701b03821682036101aa57565b908160609103126101aa57610a05816109dd565b916040610a14602084016109dd565b92015163ffffffff811681036101aa5790565b9493905f604051966060880188811067ffffffffffffffff8211176108f9576040525f88525f6020890152604051610a5e816108dd565b5f81525f60208201526040890152878415610cda575060601c946001600160a01b03948516948316948510948515610c8557604051630240bc6b60e21b815296606088600481845afa8015610182575f985f91610c5f575b5097965b5a93600281101561063c57898989921598895f14610c445750509083610af66001600160701b03610afe94166001600160701b038d16846110d6565b953390610fe6565b15610bd057803b15610bcc5760405163022c0d9f60e01b81525f6004820181905260248201849052336044830152608060648301526084820152908490829060a490829084905af18015610bc157908491610ba8575b505090610b66915b89525b5a90610968565b60208801525015610b8e576001600160701b0380610b879416921690610e3b565b6040830152565b50610b87916001600160701b038086519216921690610e3b565b81610bb29161090d565b610bbd57825f610b54565b8280fd5b6040513d86823e3d90fd5b8380fd5b80939291933b156101aa5760405163022c0d9f60e01b8152600481018590525f6024820181905233604483015260806064830152608482018190529091829060a490829084905af1801561018257610c2e575b50610b669192610b5c565b610b6692505f610c3d9161090d565b5f91610c23565b610b66979650610c58959491929394610d02565b8952610b5f565b9050610c7b91985060603d60601161037857610369818361090d565b509790975f610ab6565b604051630240bc6b60e21b81529596606087600481845afa8015610182575f975f91610cb4575b509697610aba565b9050610cd091975060603d60601161037857610369818361090d565b509690965f610cac565b9750505050505050565b8115610cee570490565b634e487b7160e01b5f52601260045260245ffd5b94919092610d1e906001600160701b03805f9716911684610f01565b948515610e1e576001600160a01b0390811693610d419187918691339116610fe6565b15610dbd57813b15610bbd5760405163022c0d9f60e01b81525f600482018190526024820192909252336044820152608060648201526084810191909152908290829060a490829084905af18015610db257610d9c57505090565b610da782809261090d565b610daf575090565b80fd5b6040513d84823e3d90fd5b9150803b156101aa5760405163022c0d9f60e01b815260048101929092525f60248301819052336044840152608060648401526084830181905290829060a490829084905af1801561018257610e11575090565b5f610e1b9161090d565b90565b5050505050505f90565b8181029291811591840414171561095457565b919091610e466109c5565b5082158015610ef9575b610eb357610e6c82610e66610e729486856110d6565b90610968565b92610947565b6103e58202918083046103e51490151715610954576103e88102908082046103e814901517156109545760405191610ea9836108dd565b8252602082015290565b60405163643c60f360e01b815260206004820152601d60248201527f4174206c65617374206f6e652072657365727665206973207a65726f210000006044820152606490fd5b508115610e50565b91908215610fdf578015610fa5578115610f6a5782610f1f91610e28565b916103e88302928084046103e8149015171561095457610f3e91610968565b6103e58102908082046103e5149015171561095457610f5c91610ce4565b600181018091116109545790565b60405163643c60f360e01b8152602060048201526012602482015271726573657276654f7574206973207a65726f60701b6044820152606490fd5b60405163643c60f360e01b815260206004820152601160248201527072657365727665496e206973207a65726f60781b6044820152606490fd5b5050505f90565b6040516323b872dd60e01b602082019081526001600160a01b039384166024830152939092166044830152606480830194909452928152915f91829161102d60848661090d565b60018060a01b031693519082855af13d156110ca573d67ffffffffffffffff81116108f95761107e916040519161106e6020601f19601f840116018461090d565b82523d5f602084013e5b83611135565b80519081151591826110a6575b50506110945750565b635274afe760e01b5f5260045260245ffd5b81925090602091810103126101aa57602001518015908115036101aa575f8061108b565b61107e90606090611078565b91908215610fdf5780159182801561112d575b610eb3576103e584029384046103e503610954576111079084610e28565b916103e882029182046103e814171561095457610e1b9261112791610947565b90610ce4565b5080156110e9565b90611159575080511561114a57805190602001fd5b63d6bda27560e01b5f5260045ffd5b8151158061118a575b61116a575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561116256fea2646970667358221220b2e7f8fbccc13285e349f8b239b13d9153a3383fc98985279c83c306cd63f78464736f6c634300081b0033","sourceMap":"371:8928:64:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;371:8928:64;;;;;;;;;;:::i;:::-;8627:1;371:8928;;;;;;;;;;;;;;;;;;8731:13;;371:8928;8731:13;371:8928;8731:13;;;;;;;;;371:8928;8731:13;371:8928;8731:13;371:8928;8731:13;;;371:8928;8711:34;;;;:::i;:::-;-1:-1:-1;;;;;371:8928:64;;;;;;;-1:-1:-1;;;8775:13:64;;371:8928;;;;;8775:13;;;;;;;371:8928;8775:13;;;371:8928;8755:34;;;;;;:::i;:::-;-1:-1:-1;;;;;371:8928:64;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;371:8928:64;;;;;;;;;;;;;;;-1:-1:-1;;;;;371:8928:64;;;;;-1:-1:-1;371:8928:64;;;;;;;;;;;;;8775:13;;;;371:8928;8775:13;371:8928;8775:13;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;371:8928;;;;;;;;;8731:13;;;;;;;;;;;;;;:::i;:::-;;;;371:8928;;;;;;;;;;-1:-1:-1;;371:8928:64;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;371:8928:64;;;;;;;;;-1:-1:-1;;;;;;371:8928:64;;;;;1004:20;371:8928;;;;;-1:-1:-1;;;1052:18:64;;371:8928;;;;;1052:18;;;;;;371:8928;;;1052:18;;;1000:142;1040:30;1000:142;371:8928;1201:3;371:8928;;1172:27;;;;;1243:19;1232:39;1243:19;371:8928;1243:19;;;:::i;:::-;371:8928;-1:-1:-1;;;;;371:8928:64;;;-1:-1:-1;;;;;371:8928:64;;1232:39;;:::i;:::-;1220:51;;;;:::i;:::-;;;;;;:::i;:::-;;371:8928;1157:13;;1172:27;;371:8928;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;371:8928:64;;;;;;;;;;;;;1052:18;;;;;;371:8928;1052:18;371:8928;1052:18;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1000:142;371:8928;;-1:-1:-1;;;1113:18:64;;371:8928;;;;;1113:18;;;;;;371:8928;;;1113:18;;;1000:142;1101:30;;1000:142;;1113:18;;;;;;371:8928;1113:18;371:8928;1113:18;;;;;;;:::i;:::-;;;;;371:8928;;;;;;;;:::i;:::-;-1:-1:-1;371:8928:64;;-1:-1:-1;371:8928:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;7652:1;371:8928;;;;;;;;;;;;;;;;-1:-1:-1;;;7692:18:64;;371:8928;;;;;;;7692:18;;;;;;;366:2;7692:18;371:8928;;;7692:18;;;371:8928;-1:-1:-1;;;;;;;371:8928:64;;;;;;;-1:-1:-1;;;;;371:8928:64;;;;;7724:20;371:8928;;;366:2;;;7760:37;;;:::i;:::-;371:8928;366:2;7811:37;;;:::i;:::-;371:8928;7720:258;;371:8928;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;371:8928:64;;;;;;;;;;;;;7720:258;366:2;;;;7879:37;;;:::i;:::-;371:8928;366:2;7930:37;;;:::i;:::-;371:8928;7720:258;;;7692:18;-1:-1:-1;;;;;7692:18:64;;;;;;;;;;;-1:-1:-1;7692:18:64;;;;;;:::i;:::-;;;;;;;371:8928;;;;;;-1:-1:-1;;371:8928:64;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;8249:20;8231:38;;;:::i;:::-;371:8928;8297:19;8279:37;;;:::i;:::-;371:8928;;;8297:19;371:8928;;;;8344:24;371:8928;;;;;;8344:24;371:8928;;;;8396:24;371:8928;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8249:20;371:8928;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;371:8928:64;;;;;;9003:14;371:8928;;9003:14;;:::i;:::-;371:8928;;-1:-1:-1;;;9040:24:64;;:7;-1:-1:-1;;;;;371:8928:64;;;;;;;;;9040:24;;;;;;;;371:8928;9040:24;;;371:8928;9031:33;;;9027:97;;371:8928;9153:15;;;:::i;:::-;371:8928;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;-1:-1:-1;;371:8928:64;;;;;9215:3;371:8928;;9199:14;;;;;9268:10;;;;:::i;:::-;371:8928;;;;;;;9251:28;;371:8928;9251:28;;371:8928;;9251:28;371:8928;9251:28;;;;;;;;371:8928;9251:28;371:8928;9251:28;;;9215:3;-1:-1:-1;371:8928:64;;-1:-1:-1;;371:8928:64;9234:46;;;;:::i;:::-;371:8928;;9184:13;;9251:28;;;;371:8928;9251:28;;;;;;;;;:::i;:::-;;;;9199:14;;;371:8928;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;371:8928:64;;;;;;;;;;;;;9027:97;-1:-1:-1;;371:8928:64;;-1:-1:-1;;;9089:24:64;;371:8928;;;;9089:24;;;;;;;;;371:8928;9089:24;;;9027:97;;-1:-1:-1;9027:97:64;;9089:24;;;371:8928;9089:24;;371:8928;9089:24;;;;;;371:8928;9089:24;;;:::i;:::-;;;371:8928;;;;;9153:15;371:8928;;9089:24;;;;;-1:-1:-1;9089:24:64;;9040;;;;371:8928;9040:24;;371:8928;9040:24;;;;;;371:8928;9040:24;;;:::i;:::-;;;371:8928;;;;;;;9040:24;;;;;;-1:-1:-1;9040:24:64;;371:8928;;;;-1:-1:-1;;;;;371:8928:64;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;371:8928:64;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;371:8928:64;;;;;;;;;-1:-1:-1;;;;;371:8928:64;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;371:8928:64;;;;;-1:-1:-1;371:8928:64;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;371:8928:64;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;8249:20;371:8928;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;371:8928:64;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;371:8928:64;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;2186:1148::-;;;;-1:-1:-1;371:8928:64;;;;;;;;;;;;;;;;;-1:-1:-1;371:8928:64;;-1:-1:-1;371:8928:64;;;;;;;;;:::i;:::-;-1:-1:-1;371:8928:64;;-1:-1:-1;371:8928:64;;;;;;;;2367:18;2401:20;;2397:63;;-1:-1:-1;371:8928:64;;;-1:-1:-1;;;;;371:8928:64;;;;;;2598:20;;;;2628:130;;;;371:8928;;-1:-1:-1;;;2668:18:64;;371:8928;;;2668:18;371:8928;;2668:18;;;;;;-1:-1:-1;;;2668:18:64;;;2628:130;2656:30;;2628:130;;2787:9;371:8928;;;;;;;2810:22;;;;;2806:277;;;2810:22;;;371:8928;;;;4080:43;-1:-1:-1;;;;;4193:6:64;371:8928;;-1:-1:-1;;;;;371:8928:64;;4080:43;;:::i;:::-;4040:10;;4193:6;;:::i;:::-;4210:142;;;4238:36;;;;;371:8928;;-1:-1:-1;;;4238:36:64;;371:8928;4238:36;;;371:8928;;;;;;;;;4040:10;371:8928;;;;;;;;;;;;;;;;;;;;;;;;4238:36;;;;;;;;;;;4210:142;;;;3108:21;4210:142;;371:8928;;2806:277;3120:9;3108:21;;:::i;:::-;371:8928;3092:13;;371:8928;-1:-1:-1;3143:22:64;;;-1:-1:-1;;;;;371:8928:64;3195:35;371:8928;;;;3195:35;;:::i;:::-;371:8928;3181:11;;:49;2186:1148::o;3139:189::-;371:8928;3275:42;371:8928;-1:-1:-1;;;;;371:8928:64;;;;;;;3275:42;;:::i;4238:36::-;;;;;:::i;:::-;371:8928;;4238:36;;;;371:8928;;;;4238:36;371:8928;;;;;;;;;4238:36;371:8928;;;4210:142;4305:36;;;;;;;;;371:8928;;-1:-1:-1;;;4305:36:64;;;;;371:8928;;;-1:-1:-1;371:8928:64;;;;;;4040:10;371:8928;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4305:36:64;;;;;;;;4210:142;;3108:21;4210:142;;;;4305:36;3108:21;4305:36;;-1:-1:-1;4305:36:64;;;:::i;:::-;-1:-1:-1;4305:36:64;;;2806:277;3108:21;3017:55;;;;;;;;;;;:::i;:::-;371:8928;;2806:277;;2668:18;;;;;;;371:8928;2668:18;371:8928;2668:18;;;;;;;:::i;:::-;;;;;;;;2628:130;371:8928;;-1:-1:-1;;;2729:18:64;;371:8928;;;;2729:18;371:8928;;2729:18;;;;;;-1:-1:-1;;;2729:18:64;;;2628:130;2717:30;;2628:130;;;2729:18;;;;;;;371:8928;2729:18;371:8928;2729:18;;;;;;;:::i;:::-;;;;;;;;2397:63;2437:12;-1:-1:-1;;;;;;;2437:12:64:o;366:2::-;;;;;;;:::o;:::-;371:8928;;;366:2;;;;;;;;5789:652;;;;;6078:45;5789:652;-1:-1:-1;;;;;5987:24:64;371:8928;5987:24;371:8928;;;6078:45;;:::i;:::-;6138:11;;;6134:50;;-1:-1:-1;;;;;371:8928:64;;;;6253:6;;371:8928;;;;6041:10;;371:8928;6253:6;:::i;:::-;6270:142;;;6298:36;;;;;371:8928;;-1:-1:-1;;;6298:36:64;;371:8928;6298:36;;;371:8928;;;;;;;;;;6041:10;371:8928;;;;;;;;;;;;;;;;;;;;;;;;;;;6298:36;;;;;;;;6270:142;;5789:652;:::o;6298:36::-;;;;;;:::i;:::-;371:8928;;6270:142;5789:652;:::o;371:8928::-;;;6298:36;371:8928;;;;;;;;;6270:142;6365:36;;;;;;;371:8928;;-1:-1:-1;;;6365:36:64;;;;;371:8928;;;;-1:-1:-1;371:8928:64;;;;;;6041:10;371:8928;;;;;;;;;;;;;;;-1:-1:-1;371:8928:64;;;;;;-1:-1:-1;;6365:36:64;;;;;;;;6270:142;5789:652;:::o;6365:36::-;371:8928;6365:36;;;:::i;:::-;5789:652;:::o;6134:50::-;6165:8;;;;;;371:8928;6165:8;:::o;371:8928::-;;;;;;;;;;;;;;;;:::o;1620:527::-;;;;371:8928;;:::i;:::-;;1779:14;;:33;;;;1620:527;1775:115;;1998:22;1919:45;;2053:20;1919:45;;;;:::i;:::-;1998:22;;:::i;:::-;2053:20;;:::i;:::-;2115:3;371:8928;;;;;;2115:3;371:8928;;;;;;;2135:4;371:8928;;;;;;2135:4;371:8928;;;;;;;;;;;;;:::i;:::-;;;2090:50;;;371:8928;1620:527;:::o;1775:115::-;371:8928;;-1:-1:-1;;;1835:44:64;;371:8928;1835:44;;;371:8928;;;;;;;;;;;;;1835:44;1779:33;1797:15;;;1779:33;;6766:577;;;6930:14;;6926:53;;6992:14;;6988:84;;7085:15;;7081:86;;7196:21;;;;:::i;:::-;371:8928;7220:4;371:8928;;;;;;7220:4;371:8928;;;;;;;7257:22;;;:::i;:::-;7283:3;371:8928;;;;;;7283:3;371:8928;;;;;;;7308:23;;;:::i;:::-;7335:1;371:8928;;;;;;;6766:577;:::o;7081:86::-;371:8928;;-1:-1:-1;;;7123:33:64;;371:8928;7123:33;;;371:8928;;;;;;-1:-1:-1;;;371:8928:64;;;;7123:33;;;6988:84;371:8928;;-1:-1:-1;;;7029:32:64;;371:8928;7029:32;;;371:8928;;;;;;-1:-1:-1;;;371:8928:64;;;;7029:32;;;6926:53;6960:8;;;371:8928;6960:8;:::o;1702:188:32:-;371:8928:64;;-1:-1:-1;;;1829:53:32;;;;;;-1:-1:-1;;;;;371:8928:64;;;1829:53:32;;;371:8928:64;;;;;;;;;;;;;;;;;1829:53:32;;;371:8928:64;-1:-1:-1;;;;1829:53:32;;371:8928:64;1829:53:32;:::i;:::-;371:8928:64;;;;;;3256:31:33;;;;;;;371:8928:64;;;;;;;;;;3304:55:33;371:8928:64;;;;;1829:53:32;371:8928:64;;;;;;;;;:::i;:::-;;;;-1:-1:-1;1829:53:32;371:8928:64;;;;3304:55:33;;:::i;:::-;371:8928:64;;6960:22:32;;;;:57;;;;371:8928:64;6956:135:32;;;;1702:188;:::o;6956:135::-;7040:40;;;-1:-1:-1;7040:40:32;;371:8928:64;1829:53:32;-1:-1:-1;7040:40:32;6960:57;6987:30;;;;1829:53;6987:30;;;371:8928:64;;;;1829:53:32;6987:30;371:8928:64;;;;;;;;;6960:57:32;;;;371:8928:64;3304:55:33;371:8928:64;;;;;4764:562;;;4929:13;;4925:52;;4990:14;;;;:33;;;;4764:562;4986:115;;5147:3;371:8928;;;;;5147:3;371:8928;;;5180:28;;;;:::i;:::-;371:8928;5252:4;371:8928;;;;;5252:4;371:8928;;;;;5296:23;5240:34;;;;:::i;:::-;5296:23;;:::i;4990:33::-;5008:15;;;4990:33;;4421:582:33;;4593:8;;-1:-1:-1;371:8928:64;;5674:21:33;:17;;5846:142;;;;;;5670:385;6025:19;;;5694:1;6025:19;;5694:1;6025:19;4589:408;371:8928:64;;4841:22:33;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:33;4917:24;;;-1:-1:-1;;;;;371:8928:64;;;;4917:24:33;371:8928:64;;;4917:24:33;4841:49;4867:18;;;:23;4841:49;","linkReferences":{},"immutableReferences":{"68957":[{"start":1683,"length":32}]}},"methodIdentifiers":{"getCapabilities(bytes32,address,address)":"48bd7dfd","getLimits(bytes32,address,address)":"a9270fbe","getPoolIds(uint256,uint256)":"23eeca01","getTokens(bytes32)":"ecbbc033","price(bytes32,address,address,uint256[])":"aad6e488","swap(bytes32,address,address,uint8,uint256)":"8307c655"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factory_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"LimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"Unavailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getCapabilities\",\"outputs\":[{\"internalType\":\"enum ISwapAdapterTypes.Capability[]\",\"name\":\"capabilities\",\"type\":\"uint8[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"}],\"name\":\"getLimits\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"limits\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"getPoolIds\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"ids\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"getTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"specifiedAmounts\",\"type\":\"uint256[]\"}],\"name\":\"price\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction[]\",\"name\":\"prices\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"enum ISwapAdapterTypes.OrderSide\",\"name\":\"side\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"calculatedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction\",\"name\":\"price\",\"type\":\"tuple\"}],\"internalType\":\"struct ISwapAdapterTypes.Trade\",\"name\":\"trade\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"LimitExceeded(uint256)\":[{\"details\":\"The LimitExceeded error is thrown when a limit has been exceeded. E.g. the specified amount can't be traded safely.\"}],\"NotImplemented(string)\":[{\"details\":\"The NotImplemented error is thrown when a function is not implemented.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}],\"Unavailable(string)\":[{\"details\":\"The Unavailable error is thrown when a pool or swap is not available for unexpected reason. E.g. it was paused due to a bug.\"}]},\"kind\":\"dev\",\"methods\":{\"getCapabilities(bytes32,address,address)\":{\"params\":{\"poolId\":\"The ID of the trading pool.\"},\"returns\":{\"capabilities\":\"An array of Capability.\"}},\"getLimits(bytes32,address,address)\":{\"details\":\"Retrieve the maximum limits of a token that can be traded. The limit is reached when the change in the received amounts is zero or close to zero or when the swap fails because of the pools restrictions. Overestimate if in doubt rather than underestimate. The swap function should not error with `LimitExceeded` if called with amounts below the limit.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\"},\"returns\":{\"limits\":\"An array of size two indicating the limit amount for the sell token (maximum the pool is willing to buy in sell token) as well as the limit amount of the buy token (maximum the pool is willing to sell in buy token).\"}},\"getPoolIds(uint256,uint256)\":{\"details\":\"Mainly used for testing. It is alright to not return all available pools here. Nevertheless, this is useful to test against the substreams implementation. If implemented, it saves time writing custom tests.\",\"params\":{\"limit\":\"The maximum number of pool IDs to retrieve.\",\"offset\":\"The starting index from which to retrieve pool IDs.\"},\"returns\":{\"ids\":\"An array of pool IDs.\"}},\"getTokens(bytes32)\":{\"details\":\"Mainly used for testing as this is redundant with the required substreams implementation.\",\"params\":{\"poolId\":\"The ID of the trading pool.\"},\"returns\":{\"tokens\":\"An array of address contracts.\"}},\"price(bytes32,address,address,uint256[])\":{\"details\":\"The returned prices should include all dex fees. In case the fee is dynamic on the amount traded, the returned price is expected to include the minimum fee. Note that the returned price should be the marginal price which is distinct from the executed price `swap(amount_in) / amount_in`! The marginal price is defined as the price to trade an arbitrarily small (almost zero) amount after the trade of (amount). E.g. the marginal price of a uniswap v2 pool at amount=0 is `reserve0/reserve1`. Ideally this method should be implemented, although it is optional as the price function can be numerically derived from the swap function. In case it is not available, it should be flagged via capabilities and calling it should revert using the `NotImplemented` error. The method needs to be implemented as view as this is usually more efficient and can be run in parallel.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\",\"specifiedAmounts\":\"Amounts to calculate marginal prices at.\"},\"returns\":{\"prices\":\"array of prices as fractions corresponding to the provided amounts.\"}},\"swap(bytes32,address,address,uint8,uint256)\":{\"details\":\"This function should be state modifying, meaning it should actually execute the swap and change the state of the EVM accordingly. Please include a gas usage estimate for each amount. This can be achieved e.g. by using the `gasleft()` function. The return type `Trade` has an attribute called price which should contain the value of `price(specifiedAmount)`. As this is optional, defined via `Capability.PriceFunction`, it is valid to return a Fraction(0, 0) value for this price. In that case the price will be estimated numerically.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\",\"side\":\"The side of the trade (Sell or Buy).\",\"specifiedAmount\":\"The amount to be traded.\"},\"returns\":{\"trade\":\"Trade struct representing the executed trade.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCapabilities(bytes32,address,address)\":{\"notice\":\"Retrieves the capabilities of the selected pool.\"},\"getLimits(bytes32,address,address)\":{\"notice\":\"Retrieves the limits for each token.\"},\"getPoolIds(uint256,uint256)\":{\"notice\":\"Retrieves a range of pool IDs.\"},\"getTokens(bytes32)\":{\"notice\":\"Retrieves the tokens in the selected pool.\"},\"price(bytes32,address,address,uint256[])\":{\"notice\":\"Calculates marginal prices for specified amounts (optional).\"},\"swap(bytes32,address,address,uint8,uint256)\":{\"notice\":\"Simulates swapping tokens on a given pool.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/uniswap-v2/UniswapV2SwapAdapter.sol\":\"UniswapV2SwapAdapter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/uniswap-v2/UniswapV2SwapAdapter.sol\":{\"keccak256\":\"0xd4da168460c3a8859504bed2fa8ebb8de95eb8ff684f9c691ac47b4028a461d5\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://8a2428d5fcc612432c8bc1ab71d1b8f65a13fea67b6a9a64d0eb73f3fb53b853\",\"dweb:/ipfs/QmW5ggqCo9iThkw5ufDZkKJMcC14xrFeb516pQknsToubs\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"factory_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"type":"error","name":"LimitExceeded"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"NotImplemented"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"Unavailable"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function","name":"getCapabilities","outputs":[{"internalType":"enum ISwapAdapterTypes.Capability[]","name":"capabilities","type":"uint8[]"}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"}],"stateMutability":"view","type":"function","name":"getLimits","outputs":[{"internalType":"uint256[]","name":"limits","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPoolIds","outputs":[{"internalType":"bytes32[]","name":"ids","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getTokens","outputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"},{"internalType":"uint256[]","name":"specifiedAmounts","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"price","outputs":[{"internalType":"struct ISwapAdapterTypes.Fraction[]","name":"prices","type":"tuple[]","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"},{"internalType":"enum ISwapAdapterTypes.OrderSide","name":"side","type":"uint8"},{"internalType":"uint256","name":"specifiedAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swap","outputs":[{"internalType":"struct ISwapAdapterTypes.Trade","name":"trade","type":"tuple","components":[{"internalType":"uint256","name":"calculatedAmount","type":"uint256"},{"internalType":"uint256","name":"gasUsed","type":"uint256"},{"internalType":"struct ISwapAdapterTypes.Fraction","name":"price","type":"tuple","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]}]}],"devdoc":{"kind":"dev","methods":{"getCapabilities(bytes32,address,address)":{"params":{"poolId":"The ID of the trading pool."},"returns":{"capabilities":"An array of Capability."}},"getLimits(bytes32,address,address)":{"details":"Retrieve the maximum limits of a token that can be traded. The limit is reached when the change in the received amounts is zero or close to zero or when the swap fails because of the pools restrictions. Overestimate if in doubt rather than underestimate. The swap function should not error with `LimitExceeded` if called with amounts below the limit.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold."},"returns":{"limits":"An array of size two indicating the limit amount for the sell token (maximum the pool is willing to buy in sell token) as well as the limit amount of the buy token (maximum the pool is willing to sell in buy token)."}},"getPoolIds(uint256,uint256)":{"details":"Mainly used for testing. It is alright to not return all available pools here. Nevertheless, this is useful to test against the substreams implementation. If implemented, it saves time writing custom tests.","params":{"limit":"The maximum number of pool IDs to retrieve.","offset":"The starting index from which to retrieve pool IDs."},"returns":{"ids":"An array of pool IDs."}},"getTokens(bytes32)":{"details":"Mainly used for testing as this is redundant with the required substreams implementation.","params":{"poolId":"The ID of the trading pool."},"returns":{"tokens":"An array of address contracts."}},"price(bytes32,address,address,uint256[])":{"details":"The returned prices should include all dex fees. In case the fee is dynamic on the amount traded, the returned price is expected to include the minimum fee. Note that the returned price should be the marginal price which is distinct from the executed price `swap(amount_in) / amount_in`! The marginal price is defined as the price to trade an arbitrarily small (almost zero) amount after the trade of (amount). E.g. the marginal price of a uniswap v2 pool at amount=0 is `reserve0/reserve1`. Ideally this method should be implemented, although it is optional as the price function can be numerically derived from the swap function. In case it is not available, it should be flagged via capabilities and calling it should revert using the `NotImplemented` error. The method needs to be implemented as view as this is usually more efficient and can be run in parallel.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold.","specifiedAmounts":"Amounts to calculate marginal prices at."},"returns":{"prices":"array of prices as fractions corresponding to the provided amounts."}},"swap(bytes32,address,address,uint8,uint256)":{"details":"This function should be state modifying, meaning it should actually execute the swap and change the state of the EVM accordingly. Please include a gas usage estimate for each amount. This can be achieved e.g. by using the `gasleft()` function. The return type `Trade` has an attribute called price which should contain the value of `price(specifiedAmount)`. As this is optional, defined via `Capability.PriceFunction`, it is valid to return a Fraction(0, 0) value for this price. In that case the price will be estimated numerically.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold.","side":"The side of the trade (Sell or Buy).","specifiedAmount":"The amount to be traded."},"returns":{"trade":"Trade struct representing the executed trade."}}},"version":1},"userdoc":{"kind":"user","methods":{"getCapabilities(bytes32,address,address)":{"notice":"Retrieves the capabilities of the selected pool."},"getLimits(bytes32,address,address)":{"notice":"Retrieves the limits for each token."},"getPoolIds(uint256,uint256)":{"notice":"Retrieves a range of pool IDs."},"getTokens(bytes32)":{"notice":"Retrieves the tokens in the selected pool."},"price(bytes32,address,address,uint256[])":{"notice":"Calculates marginal prices for specified amounts (optional)."},"swap(bytes32,address,address,uint8,uint256)":{"notice":"Simulates swapping tokens on a given pool."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/uniswap-v2/UniswapV2SwapAdapter.sol":"UniswapV2SwapAdapter"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/uniswap-v2/UniswapV2SwapAdapter.sol":{"keccak256":"0xd4da168460c3a8859504bed2fa8ebb8de95eb8ff684f9c691ac47b4028a461d5","urls":["bzz-raw://8a2428d5fcc612432c8bc1ab71d1b8f65a13fea67b6a9a64d0eb73f3fb53b853","dweb:/ipfs/QmW5ggqCo9iThkw5ufDZkKJMcC14xrFeb516pQknsToubs"],"license":"AGPL-3.0-or-later"}},"version":1},"id":64} \ No newline at end of file diff --git a/evm/out/UniswapV2SwapAdapter.t.sol/UniswapV2PairFunctionTest.json b/evm/out/UniswapV2SwapAdapter.t.sol/UniswapV2PairFunctionTest.json deleted file mode 100644 index bec1aa6..0000000 --- a/evm/out/UniswapV2SwapAdapter.t.sol/UniswapV2PairFunctionTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"fractionToInt","inputs":[{"name":"price","type":"tuple","internalType":"struct ISwapAdapterTypes.Fraction","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"runPoolBehaviourTest","inputs":[{"name":"adapter","type":"address","internalType":"contract ISwapAdapter"},{"name":"poolIds","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stringPctgs","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testGetCapabilities","inputs":[{"name":"pair","type":"bytes32","internalType":"bytes32"},{"name":"t0","type":"address","internalType":"address"},{"name":"t1","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testGetLimits","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPriceDecreasing","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPriceFuzz","inputs":[{"name":"amount0","type":"uint256","internalType":"uint256"},{"name":"amount1","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapBuyIncreasing","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapFuzz","inputs":[{"name":"specifiedAmount","type":"uint256","internalType":"uint256"},{"name":"isBuy","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSwapSellIncreasing","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testUsv2PoolBehaviour","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LimitExceeded","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotImplemented","inputs":[{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"Unavailable","inputs":[{"name":"reason","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x6080604052346102be57600160ff19600c541617600c55600160ff19601e541617601e556040516080810181811060018060401b0382111761020c5760405261004860406102c2565b6002815261302560f01b6020820152815261006360406102c2565b6004815263302e312560e01b6020820152602082015261008360406102c2565b600381526235302560e81b602082015260408201526100a260406102c2565b60048152633130302560e01b60208201526060820152601f546004601f5580600410610220575b50601f5f9081525f51602061816a5f395f51905f52915b600482106100f757604051617e3490816103368239f35b80518051906001600160401b03821161020c5761011485546102e7565b601f81116101d1575b50602090601f83116001146101685792826001949360209386955f9261015d575b50505f19600383901b1c191690841b1786555b019301910190916100e0565b015190505f8061013e565b90601f19831691865f52815f20925f5b8181106101b957509360209360019693879693838895106101a1575b505050811b018655610151565b01515f1960f88460031b161c191690555f8080610194565b82840151855560019094019360209384019301610178565b6101fc90865f5260205f20601f850160051c81019160208610610202575b601f0160051c019061031f565b5f61011d565b90915081906101ef565b634e487b7160e01b5f52604160045260245ffd5b601f5f525f51602061816a5f395f51905f52017fa03837a25210ee280c2113ff4b77ca23440b19d4866cca721c801278fd08d80b5b81811061026257506100c9565b8061026f600192546102e7565b8061027c575b5001610255565b601f8111831461029157505f81555b5f610275565b6102ad90825f5283601f60205f20920160051c8201910161031f565b805f525f602081208183555561028b565b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761020c57604052565b90600182811c92168015610315575b602083101461030157565b634e487b7160e01b5f52602260045260245ffd5b91607f16916102f6565b81811061032a575050565b5f815560010161031f56fe610200806040526004361015610013575f80fd5b5f905f3560e01c90816308c4174514613230575080630a9254e414612e8d578063111f33921461285057806311ca2bc8146127f05780631ed7831c146127725780632ade3880146125b35780633e5e3c23146125355780633f7286f4146124b75780634a36e3721461236257806366d9a9a0146121b45780637f55213e1461140b57806385226c8114611379578063916a17c6146110ed578063a00872f114611081578063a502846b14610e28578063b5508aa914610d8f578063ba414fa614610d6a578063d170c3cc14610cc1578063d3479a0114610bbe578063e20c9f7114610b30578063f6c25e8214610a20578063fa7626d4146109fd5763fe3ee58b1461011c575f80fd5b34610776578060031936011261077657610ca060405161013c828261329f565b60648152601f19820180366020840137835b606481106109ac5750610164604051938461329f565b60648352835b818110610995575050825b6064811061023157505060015b6063811061018e578280f35b6101988183613691565b5151600182019081831161021d57610210826101c6610217936101be6001979689613691565b515190615801565b6101ed60206101d58689613691565b51015160206101e4848a613691565b51015190615801565b6040610207816101fd878a613691565b5101519288613691565b51015190613ced565b850b613d2b565b01610182565b634e487b7160e01b85526011600452602485fd5b604051634b88b8ad60e11b815290602082600481885f516020617d9f5f395f51905f525af1918215610639578592610962575b5061026f8184613691565b51858060405160208101906370a0823160e01b82523060248201526024815261029960448261329f565b51905f516020617dbf5f395f51905f525afa506102c66102b7615850565b60208082518301019101613644565b506102cf613653565b6370a0823163ffffffff19600f541617600f55600e54600160401b81101561094e5761030481600161031d9301600e55613434565b919091309083549060031b91821b915f19901b19161790565b9055601154600f5460105488926001600160a01b03169160e01b61033f615b82565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b169081865260205260408520604051602081019061039181610383888886615b6b565b03601f19810183528261329f565b519020865260205260ff60036040872001541615610940575b6001600160a01b0384165f908152600d602052604090209085526020526103836103e36040862093604051928391602083019586615b6b565b5190208352602052604082206001810154936002820154610404818761383c565b6107f7575b8254604051630667f9d760e41b81526001600160a01b038616600482015260248101829052969091906020886044815f516020617d9f5f395f51905f525afa9788156107ec5787986107b0575b506001908201610100031b5f1901811b198716915f516020617d9f5f395f51905f523b156107ac576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528481606481835f516020617d9f5f395f51905f525af1908115610639578591610793575b50506104dd615d3b565b919015918215610788575b505061069957505050506104fa61687f565b6020805461054591906001600160a01b03166105168487613691565b5160405163095ea7b360e01b81526001600160a01b039092166004830152602482015291829081906044820190565b0381895f516020617dbf5f395f51905f525af180156106725761067d575b5060205485906080906105a2906001600160a01b03166105838588613691565b51604051948580948193638307c65560e01b8352600160048401613913565b03925af1908115610672578691610644575b506105bf8286613691565b526105ca8185613691565b5060405191631135fc2960e21b83526004830152602082602481885f516020617d9f5f395f51905f525af19182156106395760019261060b575b5001610175565b61062b9060203d8111610632575b610623818361329f565b8101906138c2565b505f610604565b503d610619565b6040513d87823e3d90fd5b610665915060803d811161066b575b61065d818361329f565b8101906138da565b5f6105b4565b503d610653565b6040513d88823e3d90fd5b6106949060203d811161063257610623818361329f565b610563565b82945054905f516020617d9f5f395f51905f523b15610784576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810191909152604481019290925281606481835f516020617d9f5f395f51905f525af1801561077957610761575b60405162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b61076c82809261329f565b6107765780610700565b80fd5b6040513d84823e3d90fd5b8280fd5b141590505f806104e8565b8161079d9161329f565b6107a857835f6104d3565b8380fd5b8680fd5b965096506020863d82116107e4575b816107cc6020938361329f565b810103126107e0579451958b959081610456565b5f80fd5b3d91506107bf565b6040513d89823e3d90fd5b9091929350610806818661383c565b61010003610100811161092c5760ff811161092c5760405163348051d760e11b8152600190911b600482018190528b80836024815f516020617d9f5f395f51905f525afa92831561091f5760209382606a926108c194926108fb575b506040519586925f516020617ddf5f395f51905f52828501525f516020617d7f5f395f51905f52604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f19810184528361329f565b8310156108d357509089939291610409565b60405162461bcd60e51b8152602060048201529081906108f7906024830190613302565b0390fd5b6109189192503d8084833e610910818361329f565b8101906135e2565b905f610862565b50604051903d90823e3d90fd5b634e487b7160e01b8b52601160045260248bfd5b610948615fb5565b506103aa565b634e487b7160e01b87526041600452602487fd5b9091506020813d821161098d575b8161097d6020938361329f565b810103126107e05751905f610264565b3d9150610970565b6020906109a0613cbb565b8282870101520161016a565b806103e8026103e8810482036109e957633b9aca00820290808204620f424014901517156109e957906001916109e28286613691565b520161014e565b634e487b7160e01b86526011600452602486fd5b5034610776578060031936011261077657602060ff601e54166040519015158152f35b503461077657606036600319011261077657806024356001600160a01b0381168103610b0757604435906001600160a01b0382168203610b2c576020546040516348bd7dfd60e01b815260048035908201526001600160a01b0392831660248201529282166044840152839183916064918391165afa908115610779578291610b0a575b50515f516020617d9f5f395f51905f523b15610b07576040519063260a5b1560e21b825260048201526004602482015281816044815f516020617d9f5f395f51905f525afa801561077957610af65750f35b81610b009161329f565b6107765780f35b50fd5b610b2691503d8084833e610b1e818361329f565b810190613a26565b5f610aa4565b5050fd5b503461077657806003193601126107765760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b818110610b9f57610b9b85610b8f8187038261329f565b604051918291826132c0565b0390f35b82546001600160a01b0316845260209093019260019283019201610b78565b503461077657806003193601126107765760205460405163549387df60e11b8152732d385b405a394b4d72b34b18616d10a07b0a327760621b60048201525f516020617dbf5f395f51905f52602482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2604482015282918290829060649082906001600160a01b03165afa908115610779578291610c9f575b50515f516020617d9f5f395f51905f523b15610b07576040519063260a5b1560e21b825260048201526002602482015281816044815f516020617d9f5f395f51905f525afa801561077957610af65750f35b610cbb91503d8084833e610cb3818361329f565b810190613849565b5f610c4d565b503461077657604036600319011261077657600435906001600160a01b0382168203610776576024356001600160401b038111610d665736602382011215610d6657806004013592610d1284613531565b91610d20604051938461329f565b8483526024602084019560051b82010190368211610d6257602401945b818610610d525784610d4f8585613aa9565b80f35b8535815260209586019501610d3d565b8480fd5b5080fd5b50346107765780600319360112610776576020610d8561398b565b6040519015158152f35b5034610776578060031936011261077657601954610dac81613531565b91610dba604051938461329f565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b838310610dfc5760405180610b9b87826133d5565b600160208192604051610e1a81610e1381896134b0565b038261329f565b815201920192019190610de7565b5034610776576040366003190112610776576004359060243560018060a01b03602054169060405163549387df60e11b8152732d385b405a394b4d72b34b18616d10a07b0a327760621b60048201525f516020617dbf5f395f51905f52602482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260448201528381606481865afa908115611047578491611067575b50610ec481613674565b5185105f516020617d9f5f395f51905f523b15610d625760405190632631f2b160e11b8252600482015284816024815f516020617d9f5f395f51905f525afa801561063957908591611052575b5050610f1c90613674565b5181105f516020617d9f5f395f51905f523b156107a85760405190632631f2b160e11b8252600482015283816024815f516020617d9f5f395f51905f525afa801561104757611032575b50928291610fb89460405192610f7d60608561329f565b600284526040366020860137610f9284613674565b52610f9c83613681565b52604051808096819463155adc9160e31b835260048301613751565b03915afa91821561091f57819261100e575b50805b825181101561100a5780610fed610fe660019386613691565b5151613d87565b6110046020610ffc8387613691565b510151613d87565b01610fcd565b5080f35b61102b9192503d8084833e611023818361329f565b8101906136cd565b905f610fca565b61103d84809261329f565b610784575f610f66565b6040513d86823e3d90fd5b8161105c9161329f565b6107a857835f610f11565b61107b91503d8086833e610cb3818361329f565b5f610eba565b503461077657602036600319011261077657600435601f54811015610d66576110a990613460565b9190916110d957604051610b9b906110c581610e1381876134b0565b604051918291602083526020830190613302565b634e487b7160e01b81526004819052602490fd5b5034610776578060031936011261077657601c5461110a81613531565b90611118604051928361329f565b808252601c8352827f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b83831061115b5760405180610b9b8782613326565b60405161116781613269565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b8160078401106112da57846001979460029794602097946111f29454918181106112be575b8181106112a2575b818110611286575b81811061126a575b81811061124e575b818110611232575b818110611218575b10611204575b50038261329f565b83820152815201920192019190611146565b6001600160e01b031916815286015f6111ea565b828a1b6001600160e01b0319168452928901928b016111e4565b604083901b6001600160e01b0319168452928901928b016111dc565b606083901b6001600160e01b0319168452928901928b016111d4565b608083901b6001600160e01b0319168452928901928b016111cc565b60a083901b6001600160e01b0319168452928901928b016111c4565b60c083901b6001600160e01b0319168452928901928b016111bc565b60e083901b6001600160e01b0319168452928901928b016111b4565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e082015201940192019161118f565b5034610776578060031936011261077657601a5461139681613531565b916113a4604051938461329f565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b8383106113e65760405180610b9b87826133d5565b6001602081926040516113fd81610e1381896134b0565b8152019201920191906113d1565b503461077657604036600319011261077657600435602435801515810361078457156121ae5760015b60205460405163549387df60e11b8152732d385b405a394b4d72b34b18616d10a07b0a327760621b60048201525f516020617dbf5f395f51905f52602482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26044820152908490829060649082906001600160a01b03165afa908115611047578491612194575b50600282101561218057836001831491825f14611cdf576114d190613681565b5184105f516020617d9f5f395f51905f523b15610d665760405190632631f2b160e11b8252600482015281816024815f516020617d9f5f395f51905f525afa801561077957611cca575b508060405160208101906370a0823160e01b82523060248201526024815261154460448261329f565b51905f516020617dbf5f395f51905f525afa506115626102b7615850565b5061156b613653565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015611cb6576103048160016115a09301600e55613434565b905560018060a01b0360115416600f5460e01b601054906115bf615b82565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b169081895260205260408820604051602081019061160381610383888886615b6b565b519020895260205260ff600360408a2001541615611ca8575b6001600160a01b0384165f908152600d602052604090209088526020526103836116556040892093604051928391602083019586615b6b565b51902086526020528460408120916001830154926002810154611678818661383c565b611b92578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f516020617d9f5f395f51905f525afa968715610672578697611b59575b506001908201610100031b5f1901811b1986165f516020617d9f5f395f51905f523b15611b55576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528381606481835f516020617d9f5f395f51905f525af1908115611047578491611b40575b505061174d615d3b565b9015908115611b34575b50610699575050505061176861687f565b6020805460405163095ea7b360e01b81526001600160a01b0390911660048201525f1960248201529081604481885f516020617dbf5f395f51905f525af1801561063957611b15575b505b6040516370a0823160e01b8152306004820152926020846024815f516020617dbf5f395f51905f525afa938415610639578594611ae1575b506040516370a0823160e01b81523060048201529160208360248173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25afa928315610672578693611aaa575b5060808261185c9560018060a01b03602054169089604051809981958294638307c65560e01b845260048401613913565b03925af1938415610672578694611a89575b508351611879578580f35b15611987576040516370a0823160e01b815230600482015260208160248173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25afa908115610672578691611953575b506118d0926118ca9161382f565b90613dd6565b516040516370a0823160e01b81523060048201526020816024815f516020617dbf5f395f51905f525afa90811561104757849161191f575b506118ca906119169361382f565b5f808080808580f35b90506020813d60201161194b575b8161193a6020938361329f565b810103126107e05751611916611908565b3d915061192d565b90506020813d60201161197f575b8161196e6020938361329f565b810103126107e057516118d06118bc565b3d9150611961565b6040516370a0823160e01b81523060048201529193916020816024815f516020617dbf5f395f51905f525afa908115610672578691611a55575b506118ca906119cf9361382f565b516040516370a0823160e01b815230600482015260208160248173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25afa908115611047578491611a21575b50611a1c926118ca9161382f565b611916565b90506020813d602011611a4d575b81611a3c6020938361329f565b810103126107e05751611a1c611a0e565b3d9150611a2f565b90506020813d602011611a81575b81611a706020938361329f565b810103126107e057516119cf6119c1565b3d9150611a63565b611aa391945060803d60801161066b5761065d818361329f565b925f61186e565b9392506020843d602011611ad9575b81611ac66020938361329f565b810103126107e05792519192608061182b565b3d9150611ab9565b9093506020813d602011611b0d575b81611afd6020938361329f565b810103126107e05751925f6117eb565b3d9150611af0565b611b2d9060203d60201161063257610623818361329f565b505f6117b1565b5f19141590505f611757565b81611b4a9161329f565b61078457825f611743565b8580fd5b955095506020853d602011611b8a575b81611b766020938361329f565b810103126107e057935194899490816116c9565b3d9150611b69565b611b9d84918661383c565b610100036101008111611c945760ff8111611c945760405163348051d760e11b8152600190911b600482015281816024815f516020617d9f5f395f51905f525afa90811561077957606a60209284611c58936108f79692611c78575b506040519485925f516020617ddf5f395f51905f52828501525f516020617d7f5f395f51905f52604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f19810183528261329f565b60405162461bcd60e51b8152602060048201529182916024830190613302565b611c8d9192503d8084833e610910818361329f565b9086611bf9565b634e487b7160e01b82526011600452602482fd5b611cb0615fb5565b5061161c565b634e487b7160e01b85526041600452602485fd5b81611cd49161329f565b6107a857835f61151b565b611ce890613674565b5184105f516020617d9f5f395f51905f523b15610d665760405190632631f2b160e11b8252600482015281816024815f516020617d9f5f395f51905f525afa80156107795761216b575b508060405160208101906370a0823160e01b825230602482015260248152611d5b60448261329f565b51905f516020617dbf5f395f51905f525afa50611d796102b7615850565b50611d82613653565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015611cb657610304816001611db79301600e55613434565b905560018060a01b0360115416600f5460e01b60105490611dd6615b82565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818952602052604088206040516020810190611e1a81610383888886615b6b565b519020895260205260ff600360408a200154161561215d575b6001600160a01b0384165f908152600d60205260409020908852602052610383611e6c6040892093604051928391602083019586615b6b565b51902086526020528460408120916001830154926002810154611e8f818661383c565b61204d575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f516020617d9f5f395f51905f525afa968715610672578697612014575b506001908201610100031b5f1901811b198616915f516020617d9f5f395f51905f523b15611b55576040516370ca10bb60e01b81526001600160a01b038616600482015260248101919091529089901b9190911760448201528381606481835f516020617d9f5f395f51905f525af1908115611047578491611fff575b505086611f69615d3b565b919015918215611ff4575b50506106995750505050611f8661687f565b6020805460405163095ea7b360e01b81526001600160a01b039091166004820152602481018590529081604481885f516020617dbf5f395f51905f525af1801561063957611fd5575b506117b3565b611fed9060203d60201161063257610623818361329f565b505f611fcf565b14159050875f611f74565b816120099161329f565b61078457825f611f5e565b955095506020853d602011612045575b816120316020938361329f565b810103126107e05793519489949081611ee1565b3d9150612024565b9091925061205b818561383c565b6101000361010081116121495760ff81116121495760405163348051d760e11b8152600190911b6004820181905289826024815f516020617d9f5f395f51905f525afa801561213e57606a612113916020948d91612124575b506040519485915f516020617ddf5f395f51905f52828401525f516020617d7f5f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018d838201520301601f19810184528361329f565b8810156108d3575090879291611e94565b61213891503d808f833e610910818361329f565b5f6120b4565b6040513d8c823e3d90fd5b634e487b7160e01b89526011600452602489fd5b612165615fb5565b50611e33565b816121759161329f565b6107a857835f611d32565b634e487b7160e01b84526021600452602484fd5b6121a891503d8086833e610cb3818361329f565b5f6114b1565b81611434565b5034610776578060031936011261077657601b546121d181613531565b906121df604051928361329f565b808252601b8352827f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1602084015b8383106122225760405180610b9b8782613326565b60405161222e81613269565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b8160078401106122c357846001979460029794602097946122b19454918181106112be578181106112a2578181106112865781811061126a5781811061124e578181106112325781811061121857106112045750038261329f565b8382015281520192019201919061220d565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e0820152019401920191612256565b5034610776578060031936011261077657604051610ca0612383818361329f565b60648252601f190136602083013781805b60648110612462575060205460405163155adc9160e31b81529283916001600160a01b031690829081906123cb9060048301613751565b03915afa908115610779578291612448575b50815b606381106123ec578280f35b6123f68183613691565b51600182019081831161021d576020610ffc8361242e61242761244295612420600199988b613691565b5190613ced565b890b613d2b565b61243c83610ffc878a613691565b86613691565b016123e0565b61245c91503d8084833e611023818361329f565b5f6123dd565b8091506103e8026103e8810482036124a357633b9aca00820290808204620f424014901517156124a3579060019161249a8285613691565b52018290612394565b634e487b7160e01b84526011600452602484fd5b503461077657806003193601126107765760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b81811061251657610b9b85610b8f8187038261329f565b82546001600160a01b03168452602090930192600192830192016124ff565b503461077657806003193601126107765760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b81811061259457610b9b85610b8f8187038261329f565b82546001600160a01b031684526020909301926001928301920161257d565b5034610776578060031936011261077657601d546125d081613531565b6125dd604051918261329f565b818152601d83526020810191837f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f845b8383106126e15786858760405192839260208401906020855251809152604084019160408260051b8601019392815b8383106126495786860387f35b919395509193603f198782030183528551906020604082019260018060a01b0381511683520151916040602083015282518091526060820190602060608260051b850101940192855b8281106126b65750505050506020806001929701930193019092869594929361263c565b90919293946020806126d4600193605f198782030189528951613302565b9701950193929101612692565b6040516126ed81613269565b82546001600160a01b0316815260018301805461270981613531565b91612717604051938461329f565b8183528a526020808b20908b9084015b83821061274d57505050506001928260209283600295015281520192019201919061260d565b60016020819260405161276481610e13818a6134b0565b815201930191019091612727565b503461077657806003193601126107765760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b8181106127d157610b9b85610b8f8187038261329f565b82546001600160a01b03168452602090930192600192830192016127ba565b5034610776578060031936011261077657610d4f60405161281260408261329f565b6001815260203681830137732d385b405a394b4d72b34b18616d10a07b0a327760621b61283e82613674565b526020546001600160a01b0316613aa9565b5034610776578060031936011261077657610ca0604051612871828261329f565b60648152601f19820180366020840137835b60648110612e505750612899604051938461329f565b60648352835b818110612e39575050825b606481106128f957505060015b606381106128c3578280f35b6128cd8183613691565b5151600182019081831161021d57610210826101c66128f3936101be6001979689613691565b016128b7565b604051634b88b8ad60e11b815290602082600481885f516020617d9f5f395f51905f525af1918215610639578592612e06575b506129378184613691565b51858060405160208101906370a0823160e01b82523060248201526024815261296160448261329f565b51905f516020617dbf5f395f51905f525afa5061297f6102b7615850565b50612988613653565b6370a0823163ffffffff19600f541617600f55600e54600160401b81101561094e576103048160016129bd9301600e55613434565b9055601154600f5460105488926001600160a01b03169160e01b6129df615b82565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818652602052604085206040516020810190612a2381610383888886615b6b565b519020865260205260ff60036040872001541615612df8575b6001600160a01b0384165f908152600d60205260409020908552602052610383612a756040862093604051928391602083019586615b6b565b5190208352602052604082206001810154936002820154612a96818761383c565b612d1d575b8254604051630667f9d760e41b81526001600160a01b038616600482015260248101829052969091906020886044815f516020617d9f5f395f51905f525afa9788156107ec578798612ce5575b506001908201610100031b5f1901811b198716915f516020617d9f5f395f51905f523b156107ac576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528481606481835f516020617d9f5f395f51905f525af1908115610639578591612cd0575b5050612b6f615d3b565b919015918215612cc5575b50506106995750505050612b8c61687f565b60208054612ba891906001600160a01b03166105168487613691565b0381895f516020617dbf5f395f51905f525af1801561067257612ca9575b506020548590608090612c04906001600160a01b0316612be68588613691565b51604051948580948193638307c65560e01b83528360048401613913565b03925af1908115610672578691612c8b575b50612c218286613691565b52612c2c8185613691565b5060405191631135fc2960e21b83526004830152602082602481885f516020617d9f5f395f51905f525af191821561063957600192612c6d575b50016128aa565b612c849060203d811161063257610623818361329f565b505f612c66565b612ca3915060803d811161066b5761065d818361329f565b5f612c16565b612cc09060203d811161063257610623818361329f565b612bc6565b141590505f80612b7a565b81612cda9161329f565b6107a857835f612b65565b965096506020863d8211612d15575b81612d016020938361329f565b810103126107e0579451958b959081612ae8565b3d9150612cf4565b9091929350612d2c818661383c565b61010003610100811161092c5760ff811161092c5760405163348051d760e11b8152600190911b600482018190528b80836024815f516020617d9f5f395f51905f525afa92831561091f5760209382606a92612de694926108fb57506040519586925f516020617ddf5f395f51905f52828501525f516020617d7f5f395f51905f52604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f19810184528361329f565b8310156108d357509089939291612a9b565b612e00615fb5565b50612a3c565b9091506020813d8211612e31575b81612e216020938361329f565b810103126107e05751905f61292c565b3d9150612e14565b602090612e44613cbb565b8282870101520161289f565b806103e8026103e8810482036109e957633b9aca00820290808204620f424014901517156109e95790600191612e868286613691565b5201612883565b50346107e0575f3660031901126107e05760405163975a6ce960e01b81526020600482015260076024820152661b585a5b9b995d60ca1b60448201525f816064815f516020617d9f5f395f51905f525afa9081156131c857612f16916020915f91613216575b50604051809381926371ee464d60e01b8352604060048401526044830190613302565b6301036640602483015203815f5f516020617d9f5f395f51905f525af180156131c8576131e7575b5060405161124a808201908282106001600160401b038311176131d3576020918391616b358339735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f81520301905ff080156131c857602080546001600160a01b0319166001600160a01b039290921691821790555f516020617d9f5f395f51905f523b156107e057604051906318caf8e360e31b825260048201526040602482015260146044820152732ab734b9bbb0b82b1929bbb0b820b230b83a32b960611b60648201525f81608481835f516020617d9f5f395f51905f525af180156131c8576131b5575b505f516020617d9f5f395f51905f523b1561077657806040516318caf8e360e31b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260048201526040602482015260046044820152630ae8aa8960e31b60648201528181608481835f516020617d9f5f395f51905f525af18015610779576131a0575b50505f516020617d9f5f395f51905f523b1561077657806040516318caf8e360e31b81525f516020617dbf5f395f51905f5260048201526040602482015260046044820152635553444360e01b60648201528181608481835f516020617d9f5f395f51905f525af180156107795761318b575b50505f516020617d9f5f395f51905f523b1561077657806040516318caf8e360e31b815273b4e16d0168e52d35cacd2c6185b44281ec28c9dc600482015260406024820152600e60448201526d2aa9a221afaba2aa242fa820a4a960911b60648201528181608481835f516020617d9f5f395f51905f525af1801561077957610af65750f35b816131959161329f565b61077657805f613105565b816131aa9161329f565b61077657805f613092565b6131c191505f9061329f565b5f5f613019565b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b6020813d60201161320e575b816132006020938361329f565b810103126107e05751612f3e565b3d91506131f3565b61322a91503d805f833e610910818361329f565b5f612ef3565b346107e05760403660031901126107e05761326160209161325081613269565b60043581526024358382015261358d565b604051908152f35b604081019081106001600160401b038211176131d357604052565b606081019081106001600160401b038211176131d357604052565b90601f801991011681019081106001600160401b038211176131d357604052565b60206040818301928281528451809452019201905f5b8181106132e35750505090565b82516001600160a01b03168452602093840193909201916001016132d6565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b602081016020825282518091526040820191602060408360051b8301019401925f915b83831061335857505050505090565b9091929394603f1982820301835285516020606081604085019360018060a01b0381511686520151936040838201528451809452019201905f905b8082106133b25750505060208060019297019301930191939290613349565b82516001600160e01b031916845260209384019390920191600190910190613393565b602081016020825282518091526040820191602060408360051b8301019401925f915b83831061340757505050505090565b9091929394602080613425600193603f198682030187528951613302565b970193019301919392906133f8565b600e5481101561344c57600e5f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b601f5481101561344c57601f5f5260205f2001905f90565b90600182811c921680156134a6575b602083101461349257565b634e487b7160e01b5f52602260045260245ffd5b91607f1691613487565b5f92918154916134bf83613478565b808352926001811690811561351457506001146134db57505050565b5f9081526020812093945091925b8383106134fa575060209250010190565b6001816020929493945483858701015201910191906134e9565b915050602093945060ff929192191683830152151560051b010190565b6001600160401b0381116131d35760051b60200190565b8181029291811591840414171561355b57565b634e487b7160e01b5f52601160045260245ffd5b8115613579570490565b634e487b7160e01b5f52601260045260245ffd5b80516a084595161401484a0000008102908082046a084595161401484a000000149015171561355b5760206135c49201519061356f565b90565b6001600160401b0381116131d357601f01601f191660200190565b6020818303126107e0578051906001600160401b0382116107e0570181601f820112156107e057805190613615826135c7565b92613623604051948561329f565b828452602083830101116107e057815f9260208093018386015e8301015290565b908160209103126107e0575190565b601180546001600160a01b0319165f516020617dbf5f395f51905f52179055565b80511561344c5760200190565b80516001101561344c5760400190565b805182101561344c5760209160051b010190565b91908260409103126107e0576040516136bd81613269565b6020808294805184520151910152565b6020818303126107e0578051906001600160401b0382116107e0570181601f820112156107e05780516136ff81613531565b9261370d604051948561329f565b81845260208085019260061b840101928184116107e057602001915b838310613737575050505090565b602060409161374684866136a5565b815201920191613729565b602060a06080830192732d385b405a394b4d72b34b18616d10a07b0a327760621b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2838201525f516020617dbf5f395f51905f526040820152608060608201528451809452019201905f5b8181106137bf5750505090565b82518452602093840193909201916001016137b2565b60a0919360209360808301958352600180851b031684830152600180841b03166040820152608060608201528451809452019201905f5b8181106138195750505090565b825184526020938401939092019160010161380c565b9190820391821161355b57565b9190820180921161355b57565b6020818303126107e0578051906001600160401b0382116107e057019080601f830112156107e057815161387c81613531565b9261388a604051948561329f565b81845260208085019260051b8201019283116107e057602001905b8282106138b25750505090565b81518152602091820191016138a5565b908160209103126107e0575180151581036107e05790565b906080828203126107e05761390b9060408051936138f785613284565b8051855260208101516020860152016136a5565b604082015290565b732d385b405a394b4d72b34b18616d10a07b0a327760621b81525f516020617dbf5f395f51905f52602082015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2604082015260a081019392919060028210156139775760809160608201520152565b634e487b7160e01b5f52602160045260245ffd5b60085460ff16801561399a5790565b50604051630667f9d760e41b81525f516020617d9f5f395f51905f5260048201526519985a5b195960d21b60248201526020816044815f516020617d9f5f395f51905f525afa9081156131c8575f916139f4575b50151590565b90506020813d602011613a1e575b81613a0f6020938361329f565b810103126107e057515f6139ee565b3d9150613a02565b6020818303126107e0578051906001600160401b0382116107e057019080601f830112156107e057815190613a5a82613531565b92613a68604051948561329f565b82845260208085019360051b8201019182116107e057602001915b818310613a905750505090565b8251600a8110156107e057815260209283019201613a83565b9091906001600160a01b038116613abf84613674565b51604051906348bd7dfd60e01b825260048201525f60248201525f60448201525f8160648183865af180156131c857613aff915f91613ca1575b50613e25565b15935f5b8151811015613c9957613b168183613691565b516040519063ecbbc03360e01b825260048201525f8160248183885af180156131c85787915f91613bee575b5060019291613be891613b67876001600160a01b03613b6084613674565b5116613ebc565b613b7a87868060a01b03613b6084613681565b613bb282613b888689613691565b51878060a01b03613b9885613674565b5116888060a01b03613ba986613681565b5116918c613ffe565b613bbc8487613691565b5190858060a01b03613bcd82613681565b511690613bdf878060a01b0391613674565b51169189613ffe565b01613b03565b9150503d805f833e613c00818361329f565b8101906020818303126107e0578051906001600160401b0382116107e057019080601f830112156107e0578151613c3681613531565b91613c44604051938461329f565b81835260208084019260051b8501019081116107e05760208a9401905b808210613c72575050506001613b42565b8151945090916001600160a01b03851685036107e0576020818c9682935201920190613c61565b505050509050565b613cb591503d805f833e610b1e818361329f565b5f613af9565b60405190613cc882613284565b815f81525f60208201526040805191613ce083613269565b5f83525f60208401520152565b613d0d906020613d0282518286015190613548565b935191015190613548565b90808203613d1b5750505f90565b1115613d2657600190565b5f1990565b5f516020617d9f5f395f51905f523b156107e0576040519063fe74f05b60e01b82526004820152600160248201525f816044815f516020617d9f5f395f51905f525afa80156131c857613d7b5750565b5f613d859161329f565b565b5f516020617d9f5f395f51905f523b156107e05760405190636d83fe6960e11b825260048201525f60248201525f816044815f516020617d9f5f395f51905f525afa80156131c857613d7b5750565b905f516020617d9f5f395f51905f523b156107e0576040519163260a5b1560e21b8352600483015260248201525f816044815f516020617d9f5f395f51905f525afa80156131c857613d7b5750565b5f5b8151811015613e5a57613e3a8183613691565b51600a81101561397757600514613e5357600101613e27565b5050600190565b50505f90565b5f5b8151811015613e5a57613e758183613691565b51600a81101561397757600914613e5357600101613e62565b5f5b8151811015613e5a57613ea38183613691565b51600a81101561397757600814613e5357600101613e90565b60405190602082019263095ea7b360e01b845260018060a01b0316928360248401525f19604484015260448352613ef460648461329f565b82516001600160a01b038316915f91829182855af190613f12615850565b82613f72575b5081613f67575b5015613f2a57505050565b613f62613d85936040519063095ea7b360e01b602083015260248201525f604482015260448152613f5c60648261329f565b8261587f565b61587f565b90503b15155f613f1f565b80519192508115918215613f8a575b5050905f613f18565b613f9d92506020809183010191016138c2565b5f80613f81565b60405190613fb360608361329f565b603682527536103a3790383934b1b29030b33a32b91039bbb0b81760511b6040837f45786563757465642070726963652073686f756c64206265206f72206571756160208201520152565b6101809182526101c09490945260405163549387df60e11b8152905160048201526001600160a01b038083166024830152831660448201529192915f8180606481016101608490520381836001600160a01b0388165af180156131c85761406c915f916157e7575b50613674565b516101405260606101a08190526040516140c99161408a908261329f565b602381527f53656c6c206c696d69742073686f756c6420626520677265617465722074686160208201526206e20360ec1b604082015261014051615942565b6101a051505f806141536141816040516140e66101a0518261329f565b603681527f544553543a2054657374696e672070726963657320666f722070616972202573602082015275080b4f88095ccb8814d95b1b081b1a5b5a5d0e88095960521b6040820152604051928391638ef3f39960e01b60208401526080602484015260a4830190613302565b6001600160a01b0387811660448401528916606483015261014051608483015203601f19810183528261329f565b6020815191016a636f6e736f6c652e6c6f675afa506040516348bd7dfd60e01b81526101805160048201526001600160a01b038083166024830152841660448201525f8180606481010381836001600160a01b0388165af180156131c8576141f0915f916157cd575b50613e60565b916040519261420060a08561329f565b600484526080366020860137156157c0575f5b61421c84613674565b526103e8610140510461422e84613681565b5282516002101561344c576101a05183016101405160011c905282516003101561344c576080830161014051905260405163155adc9160e31b81525f818061427f87898861018051600486016137d5565b0381836001600160a01b0387165af19081156131c8575f916157a6575b506142af6142a982613674565b5161358d565b81515f1981019190821161355b576142cd6142a96143289385613691565b6101a05160405192906142e0908461329f565b603083527f5072696365206174206c696d69742073686f756c6420626520736d616c6c657260208401526f0207468616e20707269636520617420360841b60408401526159a9565b6143346142a982613674565b81515f19810190811161355b576143d16143ea5f936143576142a9869588613691565b6101a05160405192919061436b908461329f565b602d83527f544553543a20507269636520617420303a2025642c207072696365206174207360208401526c195b1b081b1a5b5a5d0e880959609a1b604084015260405194859363ca47c4eb60e01b60208601526101a05160248601526084850190613302565b916044840152606483015203601f19810183528261329f565b6020815191016a636f6e736f6c652e6c6f675afa506101a05160405161445191614414908261329f565b602581527f544553543a2054657374696e67206265686176696f7220666f72207072696365602082015264020617420360dc1b60408201526159de565b6144a461445d82613674565b515160406101e081905280519190614475908361329f565b601882527f4e6f6d696e61746f722073686f756c646e2774206265203000000000000000006020830152615942565b6144f660206144b283613674565b5101516101e051805191906144c7908361329f565b601a82527f44656e6f6d696e61746f722073686f756c646e277420626520300000000000006020830152615942565b6145026142a982613674565b610120526101e05180516145459161451a908261329f565b6014815273151154d50e88141c9a58d948185d080c0e88095960621b60208201526101205190615a22565b61454d613cbb565b5083515f19810190811161355b576145659085613691565b51600581810204810361355b575f806101e0515160208101906370a0823160e01b82523060248201526024815261459d60448261329f565b5190875afa506145ae6102b7615850565b50601180546001600160a01b0319166001600160a01b038616179055600f805463ffffffff19166370a08231179055600e54600160401b8110156131d3576103048160016145ff9301600e55613434565b905560018060a01b0360115416600f5460e01b6010549061461e615b82565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690815f526020526101e0515f206101e05151602081019061466681610383888886615b6b565b5190205f5260205260ff60036101e0515f2001541615615798575b6001600160a01b0384165f908152600d60205260409020905f526020526103836146be6101e0515f20936101e05151928391602083019586615b6b565b5190205f526020526101e0515f2060018101549260028201546146e1818661383c565b61567d575b82546101e05151630667f9d760e41b81526001600160a01b038616600482015260248101829052959091906020876044815f516020617d9f5f395f51905f525afa96871561563c575f97615649575b506001908201610100031b5f1901811b1986165f516020617d9f5f395f51905f523b156107e0576101e051516370ca10bb60e01b81526001600160a01b038716600482015260248101939093526005840290911b1760448201525f81606481835f516020617d9f5f395f51905f525af1801561563c57615627575b50600f5460e01b602061480260246147c8600d615c5c565b6101e051519384918183019663ffffffff60e01b1687528051918291018484015e810161016051838201520301601f19810183528261329f565b60115461016051915191928392916001600160a01b03165afa60c052614826615850565b6010546001600160fb1b0381168103614e67576101605160a0819052825161010091909152602081111561561e57506020610100525b6101605160e0525b6101005160e051106155ac57505060c0511590811561559c575b506154aa5750505061488e61687f565b6101e05151634b88b8ad60e11b8152602081600481610160515f516020617d9f5f395f51905f525af18015614dcf5761016051608052615477575b5060015b8451811015614e9f575f8061498a6149b06148e785613460565b506148f2868b613691565b5161499c610e136149626101e051519461490f6101a0518761329f565b603086527f544553543a2054657374696e67206265686176696f7220666f7220707269636560208701526f1030ba1012b99037b3103634b6b4ba1760811b6101e0518701526101e05151928380926134b0565b6101e05151635821efa160e01b60208201526101a05160248201529586946084860190613302565b84810360231901604486015290613302565b90606483015203601f19810183528261329f565b6020815191016a636f6e736f6c652e6c6f675afa506149d26142a98284613691565b5f80614a4a614a6f6149e4868b613691565b516101e05151906149f86101e0518361329f565b601782527f544553543a205377617070696e67202564206f6620257300000000000000000060208301526101e0515193849263038fd88960e31b60208501526101a05160248501526084840190613302565b60448301919091526001600160a01b038b16606483015203601f19810183528261329f565b6020815191016a636f6e736f6c652e6c6f675afa50614add6080614a938489613691565b516101e05151638307c65560e01b81526101805160048201526001600160a01b03808a1660248301528b1660448201525f60648201526084810191909152918290819060a4820190565b03816101605160018060a01b038a165af1908115614dcf576101605191614e81575b508051806a084595161401484a0000008102046a084595161401484a0000001481151715614e6757614b4c614b58916a084595161401484a000000614b44878c613691565b51910261356f565b916101e051015161358d565b91614b9e826101e05151614b6f6101e0518261329f565b601d81527f544553543a20202d2045786563757465642070726963653a20202025640000006020820152615a22565b614be3816101e05151614bb46101e0518261329f565b601d81527f544553543a20202d20507269636520617420616d6f756e743a202025640000006020820152615a22565b614c28836101e05151614bf96101e0518261329f565b601d81527f544553543a20202d20507269636520616674657220737761703a2025640000006020820152615a22565b6101c05115614ddf576101a0516101e05151614d6994614d08939092614c9b929190614c54908361329f565b602c82527f50726963652073686f756c642062652067726561746564207468616e2065786560208301526b31baba32b210383934b1b29760a11b6101e05183015285615a65565b6101a0516101e051519190614cb0908361329f565b603782527f45786563757465642070726963652073686f756c64206265206772656174657260208301527f207468616e20707269636520616674657220737761702e0000000000000000006101e051830152836159a9565b6101a0516101e051519190614d1d908361329f565b602e82527f50726963652073686f756c642062652067726561746564207468616e2070726960208301526d31b29030b33a32b91039bbb0b81760911b6101e051830152610120516159a9565b6101e0515190631135fc2960e21b82526080516004830152602082602481610160515f516020617d9f5f395f51905f525af1918215614dcf57600192614db1575b50016148cd565b614dc89060203d811161063257610623818361329f565b505f614daa565b6101e051513d61016051823e3d90fd5b614e0490614dfc614e6294614df2613fa4565b9061012051615a65565b614df2613fa4565b6101e0515190614e176101a0518361329f565b602d82527f50726963652073686f756c64206265206f7220657175616c20746f207072696360208301526c329030b33a32b91039bbb0b81760991b6101e05183015261012051615a65565b614d69565b634e487b7160e01b61016051526011600452602461016051fd5b614e99915060803d811161066b5761065d818361329f565b5f614aff565b505091506069610140510261014051810460691461014051151715614e67576101e051516348bd7dfd60e01b815261016080516101805160048401526001600160a01b0385811660248501528781166044850152915160649485900496949192849291839187165af18015614dcf57614f2291610160519161545a575b50613e8e565b1561531157614f8d836101e05151614f3d6101a0518261329f565b603681527f544553543a2054657374696e6720726576657274206265686176696f722061626020820152751bdd99481d1a19481cd95b1b081b1a5b5a5d0e88095960521b6101e051820152615a22565b6101e05180519390614f9f908561329f565b600184526101e051601f1901366020860137614fba84613674565b526101e0515163155adc9160e31b8152610160518180614fe387898861018051600486016137d5565b03816101605160018060a01b0387165af190816152f6575b5061528957600161500a615a9a565b6308c379a0146151f8575b614dcf5761507593615028608094613674565b516101e05151638307c65560e01b81526101805160048201526001600160a01b0394851660248201529390911660448401525f6064840152608483015290928391908290819060a4820190565b61016051919003926001600160a01b03165af190816151db575b5061517857600161509e615a9a565b6308c379a0146150f2575b614dcf575b613d856101e051516150c36101e0518261329f565b601781527f544553543a20416c6c207465737473207061737365642e00000000000000000060208201526159de565b6150fa615ab5565b80615106575b506150a9565b610160516101a0516101e05151919350615172929190615126908261329f565b603281527f544553543a204578706563746564206572726f72207768656e207377617070696020820152716e672061626f7665206c696d69743a20257360701b6101e051820152615b27565b5f615100565b6101e0515162461bcd60e51b815260206004820152603360248201527f506f6f6c2073686f756c646e27742062652061626c6520746f20737761702061604482015272189bdd99481d1a19481cd95b1b081b1a5b5a5d606a1b6064820152608490fd5b6151f39060803d60801161066b5761065d818361329f565b61508f565b615200615ab5565b8061520c575b50615015565b610160516101a0516101e0515191935061528392919061522c908261329f565b603881527f544553543a204578706563746564206572726f72207768656e2066657463686960208201527f6e672070726963652061626f7665206c696d69743a20257300000000000000006101e051820152615b27565b5f615206565b6101e0515162461bcd60e51b815260206004820152603b60248201527f506f6f6c2073686f756c646e27742062652061626c6520746f2066657463682060448201527f7072696365732061626f7665207468652073656c6c206c696d697400000000006064820152608490fd5b61530c903d8061016051833e611023818361329f565b614ffb565b6101a0516101e051519394936153799186919061532e908261329f565b603181527f544553543a2054657374696e67206f7065726174696f6e732061626f766520746020820152701a19481cd95b1b081b1a5b5a5d0e880959607a1b6101e051820152615a22565b6101e0518051949061538b908661329f565b600185526101e051601f19013660208701376153a685613674565b526101e051519263155adc9160e31b84526101605184806153d088858861018051600486016137d5565b03816101605160018060a01b0387165af18015614dcf576153fc956080956150289261543f5750613674565b61016051919003926001600160a01b03165af18015614dcf57615420575b506150ae565b6154389060803d60801161066b5761065d818361329f565b505f61541a565b615455903d8061016051833e611023818361329f565b614066565b61547191503d8061016051833e610b1e818361329f565b5f614f1c565b6020813d6020116154a2575b816154906020938361329f565b810103126107e057516080525f6148c9565b3d9150615483565b54915f516020617d9f5f395f51905f523b15615595576101e051516370ca10bb60e01b8152610160516001600160a01b039093166004820152602481019390935260448301528180606481010381610160515f516020617d9f5f395f51905f525af18015614dcf5761557a575b6101e0515162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b610160516155879161329f565b610160516155955780615517565b6101605180fd5b905060050260a05114155f61487e565b6155bb60e0518260051b61383c565b825181101561560457602060ff60f81b91840101511660e05160e05160031b0460081460e051151715614e675760e05160031b1c60a0511760a052600160e0510160e052614864565b634e487b7160e01b61016051526032600452602461016051fd5b6101005261485c565b5f6156319161329f565b5f610160525f6147b0565b6101e051513d5f823e3d90fd5b9096506020813d602011615675575b816156656020938361329f565b810103126107e057519581614735565b3d9150615658565b615687818661383c565b61010003610100811161355b5760ff811161355b576101e0515163348051d760e11b81526001821b60048201525f816024815f516020617d9f5f395f51905f525afa91821561563c57615747606a6020946001945f9161577e575b506101e051519586915f516020617ddf5f395f51905f52828401525f516020617d7f5f395f51905f526101e05184015269030ba32b9103a3430b7160b51b6101a0518401528051918291018484015e81015f838201520301601f19810185528461329f565b1b83600502101561575857506146e6565b6101e0515162461bcd60e51b8152602060048201529081906108f7906024830190613302565b61579291503d805f833e610910818361329f565b5f6156e2565b6157a0615fb5565b50614681565b6157ba91503d805f833e611023818361329f565b5f61429c565b6127106101405104614213565b6157e191503d805f833e610b1e818361329f565b5f6141ea565b6157fb91503d805f833e610cb3818361329f565b5f614066565b905f516020617d9f5f395f51905f523b156107e05760405191638466f41560e01b8352600483015260248201525f816044815f516020617d9f5f395f51905f525afa80156131c857613d7b5750565b3d1561587a573d90615861826135c7565b9161586f604051938461329f565b82523d5f602084013e565b606090565b81516158aa926001600160a01b03909216915f91829160200182855af16158a4615850565b91615efa565b805190816158b6575050565b6020806158c79383010191016138c2565b156158ce57565b60405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b6135c49392606092825260208201528160408201520190613302565b5f516020617d9f5f395f51905f523b156107e05761598a915f916040519384928392636cd1e26960e11b84526004840152846024840152606060448401526064830190613302565b03815f516020617d9f5f395f51905f525afa80156131c857613d7b5750565b905f516020617d9f5f395f51905f523b156107e0575f9161598a6040519485938493636cd1e26960e11b855260048501615926565b5f610383615a0b829360405192839163104c13eb60e21b6020840152602060248401526044830190613302565b6020815191016a636f6e736f6c652e6c6f675afa50565b615a51615a0b5f93928493604051938492632d839cb360e21b6020850152604060248501526064840190613302565b90604483015203601f19810183528261329f565b905f516020617d9f5f395f51905f523b156107e0575f9161598a6040519485938493630389490b60e61b855260048501615926565b5f9060033d11615aa657565b905060045f803e5f5160e01c90565b5f60443d106135c4576040513d600319016004823e8051913d60248401116001600160401b03841117615b2157828201928351916001600160401b038311615b19573d84016003190185840160200111615b1957506135c49291016020019061329f565b949350505050565b92915050565b615b59615a0b5f93926103838594604051948593634b5c427760e01b6020860152604060248601526064850190613302565b83810360231901604485015290613302565b60209291908391805192839101825e019081520190565b615b8d601454613478565b615c4a576040519081826020600e549283815201600e5f5260205f20925f5b818110615c31575050615bc19250038361329f565b81518060051b908082046020149015171561355b57615bdf816135c7565b90615bed604051928361329f565b808252615bfc601f19916135c7565b013660208301375f5b8351811015615c2c5780615c1b60019286613691565b5160208260051b8501015201615c05565b509150565b8454835260019485019487945060209093019201615bac565b6040516135c481610e138160146134b0565b6007810190615c6b8254613478565b615d2757600191500190604051808360208295549384815201905f5260205f20925f5b818110615d0e575050615ca39250038361329f565b81518060051b908082046020149015171561355b57615cc1816135c7565b90615ccf604051928361329f565b808252615cde601f19916135c7565b013660208301375f5b8351811015615c2c5780615cfd60019286613691565b5160208260051b8501015201615ce7565b8454835260019485019487945060209093019201615c8e565b506135c4610e1391604051928380926134b0565b5f806020600f5460e01b615d896024615d54600d615c5c565b6040519485918183019563ffffffff60e01b1686528051918291018484015e810186838201520301601f19810184528361329f565b6011549151916001600160a01b03165afa90615da3615850565b601054909290600581901b906001600160fb1b0381160361355b575f938051602081115f14615e2e57506020905b5f925b828410615de357505050509190565b90919295615df1878361383c565b835181101561344c57830160200151600388901b91906001600160f81b031916881560088a850414171561355b576001921c179601929190615dd4565b90615dd1565b905f806020600285015460e01b615e4f6024615d5488615c5c565b60048601549151916001600160a01b03165afa6003615e6c615850565b930154600581901b906001600160fb1b0381160361355b575f938051602081115f14615ef457506020905b5f925b828410615ea957505050509190565b90919295615eb7878361383c565b835181101561344c57830160200151600388901b91906001600160f81b031916881560088a850414171561355b576001921c179601929190615e9a565b90615e97565b90615f1e5750805115615f0f57805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580615f4f575b615f2f575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15615f27565b9080601f830112156107e0578151615f6f81613531565b92615f7d604051948561329f565b81845260208085019260051b8201019283116107e057602001905b828210615fa55750505090565b8151815260209182019101615f98565b601154600f546010546001600160a01b03909216915f9160e01b615fd9600d615c5c565b90845f52600d60205260405f209063ffffffff60e01b1690815f5260205260405f20604051602081019061601281610383888886615b6b565b5190205f5260205260ff600360405f2001541661683e575f516020617d9f5f395f51905f523b156107e05760405163266cf10960e01b81525f81600481835f516020617d9f5f395f51905f525af180156131c857616829575b50616076600d615e34565b90506040516365bc948160e01b81528660048201528581602481835f516020617d9f5f395f51905f525af19081156106725786916167c1575b50805161612057608460405162461bcd60e51b815260206004820152604060248201527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152fd5b855b81518110156167b95781602061613b8361616c95613691565b51604051630667f9d760e41b81526001600160a01b038c166004820152602481019190915293849081906044820190565b03815f516020617d9f5f395f51905f525afa9283156167ae57889361677b575b508215616723575b61619e8282613691565b51601154604051630667f9d760e41b81526001600160a01b03909116600482018190526024820183905291906020816044815f516020617d9f5f395f51905f525afa908115616718578b916166e7575b506161f9600d615e34565b91909382155f146166e0575f19905b5f516020617d9f5f395f51905f523b156166c7576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810185905260448101919091528c81606481835f516020617d9f5f395f51905f525af1801561664c57908d916166cb575b5050616279600d615e34565b601154909491506001600160a01b03165f516020617d9f5f395f51905f523b156166c7576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528b81606481835f516020617d9f5f395f51905f525af180156166bc57908c916166a3575b505082616698575b50501561668e578793889360ff60135416616513575b6001868601610100031b5f1901851b16841c8103616505575090616393917f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed60808b896103836163688d604051928391602083019586615b6b565b5190206163758686613691565b51906040519283528a602084015260408301526060820152a1613691565b51906040519060808201928284106001600160401b038511176131d35760039360405282526020820193845260408201908152606082019360018552898952600d60205260408920868a526020526040892060405160208101906163fc816103838d8d86615b6b565b5190208a526020526040892092518355516001830155516002820155019051151560ff801983541691161790555b848452600d6020526040842081855260205260408420604051602081019061645781610383888886615b6b565b519020855260205260ff600360408620015416156164a8576040948452600d60205284842090845260205261038361649c858520938651928391602083019586615b6b565b51902082526020522090565b60405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201526e3a143994903737ba103337bab7321760891b6064820152608490fd5b935091506001905b01616122565b945061655e93506165248383613691565b51601154604051630667f9d760e41b81526001600160a01b0390911660048201526024810182905290959094602090869081906044820190565b03815f516020617d9f5f395f51905f525afa94851561213e578a9561665b575b5061658a86600d616998565b95909661659881600d616a71565b60115490939192906001600160a01b03165f516020617d9f5f395f51905f523b15616657576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528c81606481835f516020617d9f5f395f51905f525af1801561664c57908d91616633575b50508761662b575b50949561630d57509350915060019061650d565b96505f616617565b8161663d9161329f565b616648578b5f61660f565b8b80fd5b6040513d8f823e3d90fd5b8e80fd5b9094506020813d8211616686575b816166766020938361329f565b810103126107e05751935f61657e565b3d9150616669565b915060019061650d565b141590505f806162f7565b816166ad9161329f565b6166b8578a5f6162ef565b8a80fd5b6040513d8e823e3d90fd5b8d80fd5b816166d59161329f565b616648578b5f61626d565b8c90616208565b90506020813d8211616710575b816167016020938361329f565b810103126107e057515f6161ee565b3d91506166f4565b6040513d8d823e3d90fd5b7f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a56167736167518484613691565b51604080516001600160a01b038e168152602081019290925290918291820190565b0390a1616194565b9092506020813d82116167a6575b816167966020938361329f565b810103126107e05751915f61618c565b3d9150616789565b6040513d8a823e3d90fd5b50505061642a565b90503d8087833e6167d2818361329f565b81016040828203126107ac5781516001600160401b03811161682557816167fa918401615f58565b916020810151906001600160401b0382116168215761681a929101615f58565b505f6160af565b8880fd5b8780fd5b6168369194505f9061329f565b5f925f61606b565b91939092505f52600d60205260405f20905f5260205261038361687060405f2093604051928391602083019586615b6b565b5190205f5260205260405f2090565b6bffffffffffffffffffffffff60a01b6011541660115563ffffffff19600f5416600f55600e545f600e5580616956575b505f60105560ff19601354166013556168ca601454613478565b806168d25750565b601f81116001146168e457505f601455565b60145f52601f0160051c7fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec017fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ed5b81811061694b57505060145f525f602081208160145555565b5f8155600101616932565b600e5f527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd908101905b81811061698d57506168b0565b5f8155600101616980565b91905f5b61010081106169af57505090505f905f90565b8060ff0360ff811161355b576004850154600190911b906001600160a01b03165f516020617d9f5f395f51905f523b156107e0576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f516020617d9f5f395f51905f525af180156131c857616a61575b50616a3b84615e34565b81616a57575b50616a4e5760010161699c565b92505060019190565b905015155f616a41565b5f616a6b9161329f565b5f616a31565b91905f5b6101008110616a8857505090505f905f90565b60048401546001821b906001600160a01b03165f516020617d9f5f395f51905f523b156107e0576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f516020617d9f5f395f51905f525af180156131c857616b24575b50616b0784615e34565b81616b1a575b50616a4e57600101616a75565b905015155f616b0d565b5f616b2e9161329f565b5f616afd56fe60a034606857601f61124a38819003918201601f19168301916001600160401b03831184841017606c57808492602094604052833981010312606857516001600160a01b038116908190036068576080526040516111c990816100818239608051816106930152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c806323eeca011461066457806348bd7dfd1461058d5780638307c65514610527578063a9270fbe146103fe578063aad6e488146101ae5763ecbbc0331461005b575f80fd5b346101aa5760203660031901126101aa5760405161007a60608261090d565b6002815260208101604036823760043560601c604051630dfe168160e01b8152602081600481855afa918215610182576004926020925f9161018d575b506100c186610994565b6001600160a01b03909116905260405163d21220a760e01b815292839182905afa908115610182575f91610153575b506100fc8392936109a1565b6001600160a01b0390911690526040805160208082529251928101839052928392918301915f5b818110610131575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610123565b610175915060203d60201161017b575b61016d818361090d565b810190610975565b5f6100f0565b503d610163565b6040513d5f823e3d90fd5b6101a49150833d851161017b5761016d818361090d565b5f6100b7565b5f80fd5b346101aa5760803660031901126101aa576101c7610877565b6101cf61088d565b6064359067ffffffffffffffff82116101aa57366023830112156101aa578160040135916101fc8361092f565b9261020a604051948561090d565b8084526024602085019160051b830101913683116101aa57602401905b8282106103ee5750505081519261023d8461092f565b9361024b604051958661090d565b80855261025a601f199161092f565b015f5b8181106103cb57506004926060928435841c92506001600160a01b039182169116101561037f57604051630240bc6b60e21b815292839182905afa8015610182575f915f9161034d575b505b5f5b83518110156102fc57806102e06102c4600193876109b1565b516001600160701b038516906001600160701b03871690610e3b565b6102ea82886109b1565b526102f581876109b1565b50016102ab565b846040518091602082016020835281518091526020604084019201905f5b818110610328575050500390f35b825180518552602090810151818601528695506040909401939092019160010161031a565b9050610371915060603d606011610378575b610369818361090d565b8101906109f1565b50846102a7565b503d61035f565b604051630240bc6b60e21b815292839182905afa8015610182575f915f916103a9575b50906102a9565b90506103c4915060603d60601161037857610369818361090d565b50846103a2565b6020906040516103da816108dd565b5f81525f838201528282890101520161025d565b8135815260209182019101610227565b346101aa57600461040e366108a3565b6040519391606090610420828761090d565b60028652816020870195601f198201368837604051630240bc6b60e21b81529586918290841c5afa91821561018257600a945f915f946104fa575b50506001600160701b03928316939216916001600160a01b03908116911610156104db5782900461048b85610994565b5204610496836109a1565b52905b604051918291602083019060208452518091526040830191905f5b8181106104c2575050500390f35b82518452859450602093840193909201916001016104b4565b908290046104e885610994565b52046104f3836109a1565b5290610499565b6001600160701b039450849250908161051e92903d1061037857610369818361090d565b5093909161045b565b346101aa5760a03660031901126101aa57610540610877565b61054861088d565b6064359160028310156101aa576080926105689260843592600435610a27565b6020604080519280518452828101518385015201518051604084015201516060820152f35b346101aa5761059b366108a3565b5050506040516105ac60a08261090d565b6004815260208101608036823760016105c483610994565b5260026105d0836109a1565b5281516002101561065057600360608301528151600310156106505760096080830152604051906020820192602083525180935260408201905f935b8085106106195783830384f35b9091825190600a82101561063c576020816001938293520193019401939061060c565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b346101aa5760403660031901126101aa5760043561068460243582610947565b60405163574f2ba360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316929190602081600481875afa80156101825783915f91610842575b5082116107de575b6106e791610968565b6107096106f38261092f565b91610701604051938461090d565b80835261092f565b602082019290601f19013684375f5b825181101561079a5761072b8183610947565b9060405191631e3dd18b60e01b83526004830152602082602481895afa8015610182576001925f9161077c575b5060601b6bffffffffffffffffffffffff191661077582866109b1565b5201610718565b610794915060203d811161017b5761016d818361090d565b87610758565b8383604051918291602083019060208452518091526040830191905f5b8181106107c5575050500390f35b82518452859450602093840193909201916001016107b7565b505060405163574f2ba360e01b8152602081600481865afa80156101825782905f9061080c575b91506106de565b50506020813d60201161083a575b816108276020938361090d565b810103126101aa57816106e79151610805565b3d915061081a565b9150506020813d60201161086f575b8161085e6020938361090d565b810103126101aa57829051856106d6565b3d9150610851565b602435906001600160a01b03821682036101aa57565b604435906001600160a01b03821682036101aa57565b60609060031901126101aa57600435906024356001600160a01b03811681036101aa57906044356001600160a01b03811681036101aa5790565b6040810190811067ffffffffffffffff8211176108f957604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176108f957604052565b67ffffffffffffffff81116108f95760051b60200190565b9190820180921161095457565b634e487b7160e01b5f52601160045260245ffd5b9190820391821161095457565b908160209103126101aa57516001600160a01b03811681036101aa5790565b8051156106505760200190565b8051600110156106505760400190565b80518210156106505760209160051b010190565b604051906109d2826108dd565b5f6020838281520152565b51906001600160701b03821682036101aa57565b908160609103126101aa57610a05816109dd565b916040610a14602084016109dd565b92015163ffffffff811681036101aa5790565b9493905f604051966060880188811067ffffffffffffffff8211176108f9576040525f88525f6020890152604051610a5e816108dd565b5f81525f60208201526040890152878415610cda575060601c946001600160a01b03948516948316948510948515610c8557604051630240bc6b60e21b815296606088600481845afa8015610182575f985f91610c5f575b5097965b5a93600281101561063c57898989921598895f14610c445750509083610af66001600160701b03610afe94166001600160701b038d16846110d6565b953390610fe6565b15610bd057803b15610bcc5760405163022c0d9f60e01b81525f6004820181905260248201849052336044830152608060648301526084820152908490829060a490829084905af18015610bc157908491610ba8575b505090610b66915b89525b5a90610968565b60208801525015610b8e576001600160701b0380610b879416921690610e3b565b6040830152565b50610b87916001600160701b038086519216921690610e3b565b81610bb29161090d565b610bbd57825f610b54565b8280fd5b6040513d86823e3d90fd5b8380fd5b80939291933b156101aa5760405163022c0d9f60e01b8152600481018590525f6024820181905233604483015260806064830152608482018190529091829060a490829084905af1801561018257610c2e575b50610b669192610b5c565b610b6692505f610c3d9161090d565b5f91610c23565b610b66979650610c58959491929394610d02565b8952610b5f565b9050610c7b91985060603d60601161037857610369818361090d565b509790975f610ab6565b604051630240bc6b60e21b81529596606087600481845afa8015610182575f975f91610cb4575b509697610aba565b9050610cd091975060603d60601161037857610369818361090d565b509690965f610cac565b9750505050505050565b8115610cee570490565b634e487b7160e01b5f52601260045260245ffd5b94919092610d1e906001600160701b03805f9716911684610f01565b948515610e1e576001600160a01b0390811693610d419187918691339116610fe6565b15610dbd57813b15610bbd5760405163022c0d9f60e01b81525f600482018190526024820192909252336044820152608060648201526084810191909152908290829060a490829084905af18015610db257610d9c57505090565b610da782809261090d565b610daf575090565b80fd5b6040513d84823e3d90fd5b9150803b156101aa5760405163022c0d9f60e01b815260048101929092525f60248301819052336044840152608060648401526084830181905290829060a490829084905af1801561018257610e11575090565b5f610e1b9161090d565b90565b5050505050505f90565b8181029291811591840414171561095457565b919091610e466109c5565b5082158015610ef9575b610eb357610e6c82610e66610e729486856110d6565b90610968565b92610947565b6103e58202918083046103e51490151715610954576103e88102908082046103e814901517156109545760405191610ea9836108dd565b8252602082015290565b60405163643c60f360e01b815260206004820152601d60248201527f4174206c65617374206f6e652072657365727665206973207a65726f210000006044820152606490fd5b508115610e50565b91908215610fdf578015610fa5578115610f6a5782610f1f91610e28565b916103e88302928084046103e8149015171561095457610f3e91610968565b6103e58102908082046103e5149015171561095457610f5c91610ce4565b600181018091116109545790565b60405163643c60f360e01b8152602060048201526012602482015271726573657276654f7574206973207a65726f60701b6044820152606490fd5b60405163643c60f360e01b815260206004820152601160248201527072657365727665496e206973207a65726f60781b6044820152606490fd5b5050505f90565b6040516323b872dd60e01b602082019081526001600160a01b039384166024830152939092166044830152606480830194909452928152915f91829161102d60848661090d565b60018060a01b031693519082855af13d156110ca573d67ffffffffffffffff81116108f95761107e916040519161106e6020601f19601f840116018461090d565b82523d5f602084013e5b83611135565b80519081151591826110a6575b50506110945750565b635274afe760e01b5f5260045260245ffd5b81925090602091810103126101aa57602001518015908115036101aa575f8061108b565b61107e90606090611078565b91908215610fdf5780159182801561112d575b610eb3576103e584029384046103e503610954576111079084610e28565b916103e882029182046103e814171561095457610e1b9261112791610947565b90610ce4565b5080156110e9565b90611159575080511561114a57805190602001fd5b63d6bda27560e01b5f5260045ffd5b8151158061118a575b61116a575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561116256fea2646970667358221220b2e7f8fbccc13285e349f8b239b13d9153a3383fc98985279c83c306cd63f78464736f6c634300081b00336b656420736c6f742e2057652063616e2774206669742076616c7565206772650000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873746453746f726167652066696e642853746453746f72616765293a20506163a2646970667358221220e5e83294d6ade400fc2ee5c0515769ba39a8d091b5e40c9154838cf2c49a24d664736f6c634300081b0033a03837a25210ee280c2113ff4b77ca23440b19d4866cca721c801278fd08d807","sourceMap":"304:5711:77:-:0;;;;;;3166:4:2;304:5711:77;;3166:4:2;304:5711:77;;;3166:4:2;304:5711:77;3166:4:2;304:5711:77;;1038:4:12;304:5711:77;;;1038:4:12;304:5711:77;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;304:5711:77;;;;;;;;;:::i;:::-;564:29:65;304:5711:77;;-1:-1:-1;;;304:5711:77;;;;;564:29:65;;304:5711:77;;;;:::i;:::-;;;;-1:-1:-1;;;304:5711:77;;;;;564:29:65;;304:5711:77;;;;:::i;:::-;564:29:65;304:5711:77;;-1:-1:-1;;;304:5711:77;;;;564:29:65;;;304:5711:77;;;564:29:65;304:5711:77;;;564:29:65;304:5711:77;;;-1:-1:-1;;304:5711:77;;;;;-1:-1:-1;;;;;;;;;;;304:5711:77;;564:29:65;304:5711:77;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;304:5711:77;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3166:4:2;304:5711:77;;;;;;;;;;;-1:-1:-1;;;;304:5711:77;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;304:5711:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3166:4:2;304:5711:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3166:4:2;304:5711:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;304:5711:77;;;;;;;;;;;564:29:65;304:5711:77;;;;;;;;-1:-1:-1;;;;;;;;;;;304:5711:77;;;;;;;;;;;;;;3166:4:2;304:5711:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;304:5711:77;;;-1:-1:-1;;;;;304:5711:77;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x610200806040526004361015610013575f80fd5b5f905f3560e01c90816308c4174514613230575080630a9254e414612e8d578063111f33921461285057806311ca2bc8146127f05780631ed7831c146127725780632ade3880146125b35780633e5e3c23146125355780633f7286f4146124b75780634a36e3721461236257806366d9a9a0146121b45780637f55213e1461140b57806385226c8114611379578063916a17c6146110ed578063a00872f114611081578063a502846b14610e28578063b5508aa914610d8f578063ba414fa614610d6a578063d170c3cc14610cc1578063d3479a0114610bbe578063e20c9f7114610b30578063f6c25e8214610a20578063fa7626d4146109fd5763fe3ee58b1461011c575f80fd5b34610776578060031936011261077657610ca060405161013c828261329f565b60648152601f19820180366020840137835b606481106109ac5750610164604051938461329f565b60648352835b818110610995575050825b6064811061023157505060015b6063811061018e578280f35b6101988183613691565b5151600182019081831161021d57610210826101c6610217936101be6001979689613691565b515190615801565b6101ed60206101d58689613691565b51015160206101e4848a613691565b51015190615801565b6040610207816101fd878a613691565b5101519288613691565b51015190613ced565b850b613d2b565b01610182565b634e487b7160e01b85526011600452602485fd5b604051634b88b8ad60e11b815290602082600481885f516020617d9f5f395f51905f525af1918215610639578592610962575b5061026f8184613691565b51858060405160208101906370a0823160e01b82523060248201526024815261029960448261329f565b51905f516020617dbf5f395f51905f525afa506102c66102b7615850565b60208082518301019101613644565b506102cf613653565b6370a0823163ffffffff19600f541617600f55600e54600160401b81101561094e5761030481600161031d9301600e55613434565b919091309083549060031b91821b915f19901b19161790565b9055601154600f5460105488926001600160a01b03169160e01b61033f615b82565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b169081865260205260408520604051602081019061039181610383888886615b6b565b03601f19810183528261329f565b519020865260205260ff60036040872001541615610940575b6001600160a01b0384165f908152600d602052604090209085526020526103836103e36040862093604051928391602083019586615b6b565b5190208352602052604082206001810154936002820154610404818761383c565b6107f7575b8254604051630667f9d760e41b81526001600160a01b038616600482015260248101829052969091906020886044815f516020617d9f5f395f51905f525afa9788156107ec5787986107b0575b506001908201610100031b5f1901811b198716915f516020617d9f5f395f51905f523b156107ac576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528481606481835f516020617d9f5f395f51905f525af1908115610639578591610793575b50506104dd615d3b565b919015918215610788575b505061069957505050506104fa61687f565b6020805461054591906001600160a01b03166105168487613691565b5160405163095ea7b360e01b81526001600160a01b039092166004830152602482015291829081906044820190565b0381895f516020617dbf5f395f51905f525af180156106725761067d575b5060205485906080906105a2906001600160a01b03166105838588613691565b51604051948580948193638307c65560e01b8352600160048401613913565b03925af1908115610672578691610644575b506105bf8286613691565b526105ca8185613691565b5060405191631135fc2960e21b83526004830152602082602481885f516020617d9f5f395f51905f525af19182156106395760019261060b575b5001610175565b61062b9060203d8111610632575b610623818361329f565b8101906138c2565b505f610604565b503d610619565b6040513d87823e3d90fd5b610665915060803d811161066b575b61065d818361329f565b8101906138da565b5f6105b4565b503d610653565b6040513d88823e3d90fd5b6106949060203d811161063257610623818361329f565b610563565b82945054905f516020617d9f5f395f51905f523b15610784576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810191909152604481019290925281606481835f516020617d9f5f395f51905f525af1801561077957610761575b60405162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b61076c82809261329f565b6107765780610700565b80fd5b6040513d84823e3d90fd5b8280fd5b141590505f806104e8565b8161079d9161329f565b6107a857835f6104d3565b8380fd5b8680fd5b965096506020863d82116107e4575b816107cc6020938361329f565b810103126107e0579451958b959081610456565b5f80fd5b3d91506107bf565b6040513d89823e3d90fd5b9091929350610806818661383c565b61010003610100811161092c5760ff811161092c5760405163348051d760e11b8152600190911b600482018190528b80836024815f516020617d9f5f395f51905f525afa92831561091f5760209382606a926108c194926108fb575b506040519586925f516020617ddf5f395f51905f52828501525f516020617d7f5f395f51905f52604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f19810184528361329f565b8310156108d357509089939291610409565b60405162461bcd60e51b8152602060048201529081906108f7906024830190613302565b0390fd5b6109189192503d8084833e610910818361329f565b8101906135e2565b905f610862565b50604051903d90823e3d90fd5b634e487b7160e01b8b52601160045260248bfd5b610948615fb5565b506103aa565b634e487b7160e01b87526041600452602487fd5b9091506020813d821161098d575b8161097d6020938361329f565b810103126107e05751905f610264565b3d9150610970565b6020906109a0613cbb565b8282870101520161016a565b806103e8026103e8810482036109e957633b9aca00820290808204620f424014901517156109e957906001916109e28286613691565b520161014e565b634e487b7160e01b86526011600452602486fd5b5034610776578060031936011261077657602060ff601e54166040519015158152f35b503461077657606036600319011261077657806024356001600160a01b0381168103610b0757604435906001600160a01b0382168203610b2c576020546040516348bd7dfd60e01b815260048035908201526001600160a01b0392831660248201529282166044840152839183916064918391165afa908115610779578291610b0a575b50515f516020617d9f5f395f51905f523b15610b07576040519063260a5b1560e21b825260048201526004602482015281816044815f516020617d9f5f395f51905f525afa801561077957610af65750f35b81610b009161329f565b6107765780f35b50fd5b610b2691503d8084833e610b1e818361329f565b810190613a26565b5f610aa4565b5050fd5b503461077657806003193601126107765760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b818110610b9f57610b9b85610b8f8187038261329f565b604051918291826132c0565b0390f35b82546001600160a01b0316845260209093019260019283019201610b78565b503461077657806003193601126107765760205460405163549387df60e11b8152732d385b405a394b4d72b34b18616d10a07b0a327760621b60048201525f516020617dbf5f395f51905f52602482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2604482015282918290829060649082906001600160a01b03165afa908115610779578291610c9f575b50515f516020617d9f5f395f51905f523b15610b07576040519063260a5b1560e21b825260048201526002602482015281816044815f516020617d9f5f395f51905f525afa801561077957610af65750f35b610cbb91503d8084833e610cb3818361329f565b810190613849565b5f610c4d565b503461077657604036600319011261077657600435906001600160a01b0382168203610776576024356001600160401b038111610d665736602382011215610d6657806004013592610d1284613531565b91610d20604051938461329f565b8483526024602084019560051b82010190368211610d6257602401945b818610610d525784610d4f8585613aa9565b80f35b8535815260209586019501610d3d565b8480fd5b5080fd5b50346107765780600319360112610776576020610d8561398b565b6040519015158152f35b5034610776578060031936011261077657601954610dac81613531565b91610dba604051938461329f565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b838310610dfc5760405180610b9b87826133d5565b600160208192604051610e1a81610e1381896134b0565b038261329f565b815201920192019190610de7565b5034610776576040366003190112610776576004359060243560018060a01b03602054169060405163549387df60e11b8152732d385b405a394b4d72b34b18616d10a07b0a327760621b60048201525f516020617dbf5f395f51905f52602482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260448201528381606481865afa908115611047578491611067575b50610ec481613674565b5185105f516020617d9f5f395f51905f523b15610d625760405190632631f2b160e11b8252600482015284816024815f516020617d9f5f395f51905f525afa801561063957908591611052575b5050610f1c90613674565b5181105f516020617d9f5f395f51905f523b156107a85760405190632631f2b160e11b8252600482015283816024815f516020617d9f5f395f51905f525afa801561104757611032575b50928291610fb89460405192610f7d60608561329f565b600284526040366020860137610f9284613674565b52610f9c83613681565b52604051808096819463155adc9160e31b835260048301613751565b03915afa91821561091f57819261100e575b50805b825181101561100a5780610fed610fe660019386613691565b5151613d87565b6110046020610ffc8387613691565b510151613d87565b01610fcd565b5080f35b61102b9192503d8084833e611023818361329f565b8101906136cd565b905f610fca565b61103d84809261329f565b610784575f610f66565b6040513d86823e3d90fd5b8161105c9161329f565b6107a857835f610f11565b61107b91503d8086833e610cb3818361329f565b5f610eba565b503461077657602036600319011261077657600435601f54811015610d66576110a990613460565b9190916110d957604051610b9b906110c581610e1381876134b0565b604051918291602083526020830190613302565b634e487b7160e01b81526004819052602490fd5b5034610776578060031936011261077657601c5461110a81613531565b90611118604051928361329f565b808252601c8352827f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b83831061115b5760405180610b9b8782613326565b60405161116781613269565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b8160078401106112da57846001979460029794602097946111f29454918181106112be575b8181106112a2575b818110611286575b81811061126a575b81811061124e575b818110611232575b818110611218575b10611204575b50038261329f565b83820152815201920192019190611146565b6001600160e01b031916815286015f6111ea565b828a1b6001600160e01b0319168452928901928b016111e4565b604083901b6001600160e01b0319168452928901928b016111dc565b606083901b6001600160e01b0319168452928901928b016111d4565b608083901b6001600160e01b0319168452928901928b016111cc565b60a083901b6001600160e01b0319168452928901928b016111c4565b60c083901b6001600160e01b0319168452928901928b016111bc565b60e083901b6001600160e01b0319168452928901928b016111b4565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e082015201940192019161118f565b5034610776578060031936011261077657601a5461139681613531565b916113a4604051938461329f565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b8383106113e65760405180610b9b87826133d5565b6001602081926040516113fd81610e1381896134b0565b8152019201920191906113d1565b503461077657604036600319011261077657600435602435801515810361078457156121ae5760015b60205460405163549387df60e11b8152732d385b405a394b4d72b34b18616d10a07b0a327760621b60048201525f516020617dbf5f395f51905f52602482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26044820152908490829060649082906001600160a01b03165afa908115611047578491612194575b50600282101561218057836001831491825f14611cdf576114d190613681565b5184105f516020617d9f5f395f51905f523b15610d665760405190632631f2b160e11b8252600482015281816024815f516020617d9f5f395f51905f525afa801561077957611cca575b508060405160208101906370a0823160e01b82523060248201526024815261154460448261329f565b51905f516020617dbf5f395f51905f525afa506115626102b7615850565b5061156b613653565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015611cb6576103048160016115a09301600e55613434565b905560018060a01b0360115416600f5460e01b601054906115bf615b82565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b169081895260205260408820604051602081019061160381610383888886615b6b565b519020895260205260ff600360408a2001541615611ca8575b6001600160a01b0384165f908152600d602052604090209088526020526103836116556040892093604051928391602083019586615b6b565b51902086526020528460408120916001830154926002810154611678818661383c565b611b92578154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f516020617d9f5f395f51905f525afa968715610672578697611b59575b506001908201610100031b5f1901811b1986165f516020617d9f5f395f51905f523b15611b55576040516370ca10bb60e01b81526001600160a01b038616600482015260248101939093525f1990911b1760448201528381606481835f516020617d9f5f395f51905f525af1908115611047578491611b40575b505061174d615d3b565b9015908115611b34575b50610699575050505061176861687f565b6020805460405163095ea7b360e01b81526001600160a01b0390911660048201525f1960248201529081604481885f516020617dbf5f395f51905f525af1801561063957611b15575b505b6040516370a0823160e01b8152306004820152926020846024815f516020617dbf5f395f51905f525afa938415610639578594611ae1575b506040516370a0823160e01b81523060048201529160208360248173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25afa928315610672578693611aaa575b5060808261185c9560018060a01b03602054169089604051809981958294638307c65560e01b845260048401613913565b03925af1938415610672578694611a89575b508351611879578580f35b15611987576040516370a0823160e01b815230600482015260208160248173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25afa908115610672578691611953575b506118d0926118ca9161382f565b90613dd6565b516040516370a0823160e01b81523060048201526020816024815f516020617dbf5f395f51905f525afa90811561104757849161191f575b506118ca906119169361382f565b5f808080808580f35b90506020813d60201161194b575b8161193a6020938361329f565b810103126107e05751611916611908565b3d915061192d565b90506020813d60201161197f575b8161196e6020938361329f565b810103126107e057516118d06118bc565b3d9150611961565b6040516370a0823160e01b81523060048201529193916020816024815f516020617dbf5f395f51905f525afa908115610672578691611a55575b506118ca906119cf9361382f565b516040516370a0823160e01b815230600482015260208160248173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25afa908115611047578491611a21575b50611a1c926118ca9161382f565b611916565b90506020813d602011611a4d575b81611a3c6020938361329f565b810103126107e05751611a1c611a0e565b3d9150611a2f565b90506020813d602011611a81575b81611a706020938361329f565b810103126107e057516119cf6119c1565b3d9150611a63565b611aa391945060803d60801161066b5761065d818361329f565b925f61186e565b9392506020843d602011611ad9575b81611ac66020938361329f565b810103126107e05792519192608061182b565b3d9150611ab9565b9093506020813d602011611b0d575b81611afd6020938361329f565b810103126107e05751925f6117eb565b3d9150611af0565b611b2d9060203d60201161063257610623818361329f565b505f6117b1565b5f19141590505f611757565b81611b4a9161329f565b61078457825f611743565b8580fd5b955095506020853d602011611b8a575b81611b766020938361329f565b810103126107e057935194899490816116c9565b3d9150611b69565b611b9d84918661383c565b610100036101008111611c945760ff8111611c945760405163348051d760e11b8152600190911b600482015281816024815f516020617d9f5f395f51905f525afa90811561077957606a60209284611c58936108f79692611c78575b506040519485925f516020617ddf5f395f51905f52828501525f516020617d7f5f395f51905f52604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f19810183528261329f565b60405162461bcd60e51b8152602060048201529182916024830190613302565b611c8d9192503d8084833e610910818361329f565b9086611bf9565b634e487b7160e01b82526011600452602482fd5b611cb0615fb5565b5061161c565b634e487b7160e01b85526041600452602485fd5b81611cd49161329f565b6107a857835f61151b565b611ce890613674565b5184105f516020617d9f5f395f51905f523b15610d665760405190632631f2b160e11b8252600482015281816024815f516020617d9f5f395f51905f525afa80156107795761216b575b508060405160208101906370a0823160e01b825230602482015260248152611d5b60448261329f565b51905f516020617dbf5f395f51905f525afa50611d796102b7615850565b50611d82613653565b6370a0823163ffffffff19600f541617600f55600e54600160401b811015611cb657610304816001611db79301600e55613434565b905560018060a01b0360115416600f5460e01b60105490611dd6615b82565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818952602052604088206040516020810190611e1a81610383888886615b6b565b519020895260205260ff600360408a200154161561215d575b6001600160a01b0384165f908152600d60205260409020908852602052610383611e6c6040892093604051928391602083019586615b6b565b51902086526020528460408120916001830154926002810154611e8f818661383c565b61204d575b8154604051630667f9d760e41b81526001600160a01b038516600482015260248101829052959091906020876044815f516020617d9f5f395f51905f525afa968715610672578697612014575b506001908201610100031b5f1901811b198616915f516020617d9f5f395f51905f523b15611b55576040516370ca10bb60e01b81526001600160a01b038616600482015260248101919091529089901b9190911760448201528381606481835f516020617d9f5f395f51905f525af1908115611047578491611fff575b505086611f69615d3b565b919015918215611ff4575b50506106995750505050611f8661687f565b6020805460405163095ea7b360e01b81526001600160a01b039091166004820152602481018590529081604481885f516020617dbf5f395f51905f525af1801561063957611fd5575b506117b3565b611fed9060203d60201161063257610623818361329f565b505f611fcf565b14159050875f611f74565b816120099161329f565b61078457825f611f5e565b955095506020853d602011612045575b816120316020938361329f565b810103126107e05793519489949081611ee1565b3d9150612024565b9091925061205b818561383c565b6101000361010081116121495760ff81116121495760405163348051d760e11b8152600190911b6004820181905289826024815f516020617d9f5f395f51905f525afa801561213e57606a612113916020948d91612124575b506040519485915f516020617ddf5f395f51905f52828401525f516020617d7f5f395f51905f52604084015269030ba32b9103a3430b7160b51b60608401528051918291018484015e81018d838201520301601f19810184528361329f565b8810156108d3575090879291611e94565b61213891503d808f833e610910818361329f565b5f6120b4565b6040513d8c823e3d90fd5b634e487b7160e01b89526011600452602489fd5b612165615fb5565b50611e33565b816121759161329f565b6107a857835f611d32565b634e487b7160e01b84526021600452602484fd5b6121a891503d8086833e610cb3818361329f565b5f6114b1565b81611434565b5034610776578060031936011261077657601b546121d181613531565b906121df604051928361329f565b808252601b8352827f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1602084015b8383106122225760405180610b9b8782613326565b60405161222e81613269565b82546001600160a01b031681526040516001840180548083529089526020808a20908301918a915b8160078401106122c357846001979460029794602097946122b19454918181106112be578181106112a2578181106112865781811061126a5781811061124e578181106112325781811061121857106112045750038261329f565b8382015281520192019201919061220d565b926001610100600892865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e0820152019401920191612256565b5034610776578060031936011261077657604051610ca0612383818361329f565b60648252601f190136602083013781805b60648110612462575060205460405163155adc9160e31b81529283916001600160a01b031690829081906123cb9060048301613751565b03915afa908115610779578291612448575b50815b606381106123ec578280f35b6123f68183613691565b51600182019081831161021d576020610ffc8361242e61242761244295612420600199988b613691565b5190613ced565b890b613d2b565b61243c83610ffc878a613691565b86613691565b016123e0565b61245c91503d8084833e611023818361329f565b5f6123dd565b8091506103e8026103e8810482036124a357633b9aca00820290808204620f424014901517156124a3579060019161249a8285613691565b52018290612394565b634e487b7160e01b84526011600452602484fd5b503461077657806003193601126107765760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b81811061251657610b9b85610b8f8187038261329f565b82546001600160a01b03168452602090930192600192830192016124ff565b503461077657806003193601126107765760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b81811061259457610b9b85610b8f8187038261329f565b82546001600160a01b031684526020909301926001928301920161257d565b5034610776578060031936011261077657601d546125d081613531565b6125dd604051918261329f565b818152601d83526020810191837f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f845b8383106126e15786858760405192839260208401906020855251809152604084019160408260051b8601019392815b8383106126495786860387f35b919395509193603f198782030183528551906020604082019260018060a01b0381511683520151916040602083015282518091526060820190602060608260051b850101940192855b8281106126b65750505050506020806001929701930193019092869594929361263c565b90919293946020806126d4600193605f198782030189528951613302565b9701950193929101612692565b6040516126ed81613269565b82546001600160a01b0316815260018301805461270981613531565b91612717604051938461329f565b8183528a526020808b20908b9084015b83821061274d57505050506001928260209283600295015281520192019201919061260d565b60016020819260405161276481610e13818a6134b0565b815201930191019091612727565b503461077657806003193601126107765760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b8181106127d157610b9b85610b8f8187038261329f565b82546001600160a01b03168452602090930192600192830192016127ba565b5034610776578060031936011261077657610d4f60405161281260408261329f565b6001815260203681830137732d385b405a394b4d72b34b18616d10a07b0a327760621b61283e82613674565b526020546001600160a01b0316613aa9565b5034610776578060031936011261077657610ca0604051612871828261329f565b60648152601f19820180366020840137835b60648110612e505750612899604051938461329f565b60648352835b818110612e39575050825b606481106128f957505060015b606381106128c3578280f35b6128cd8183613691565b5151600182019081831161021d57610210826101c66128f3936101be6001979689613691565b016128b7565b604051634b88b8ad60e11b815290602082600481885f516020617d9f5f395f51905f525af1918215610639578592612e06575b506129378184613691565b51858060405160208101906370a0823160e01b82523060248201526024815261296160448261329f565b51905f516020617dbf5f395f51905f525afa5061297f6102b7615850565b50612988613653565b6370a0823163ffffffff19600f541617600f55600e54600160401b81101561094e576103048160016129bd9301600e55613434565b9055601154600f5460105488926001600160a01b03169160e01b6129df615b82565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690818652602052604085206040516020810190612a2381610383888886615b6b565b519020865260205260ff60036040872001541615612df8575b6001600160a01b0384165f908152600d60205260409020908552602052610383612a756040862093604051928391602083019586615b6b565b5190208352602052604082206001810154936002820154612a96818761383c565b612d1d575b8254604051630667f9d760e41b81526001600160a01b038616600482015260248101829052969091906020886044815f516020617d9f5f395f51905f525afa9788156107ec578798612ce5575b506001908201610100031b5f1901811b198716915f516020617d9f5f395f51905f523b156107ac576040516370ca10bb60e01b81526001600160a01b038716600482015260248101919091529083901b9190911760448201528481606481835f516020617d9f5f395f51905f525af1908115610639578591612cd0575b5050612b6f615d3b565b919015918215612cc5575b50506106995750505050612b8c61687f565b60208054612ba891906001600160a01b03166105168487613691565b0381895f516020617dbf5f395f51905f525af1801561067257612ca9575b506020548590608090612c04906001600160a01b0316612be68588613691565b51604051948580948193638307c65560e01b83528360048401613913565b03925af1908115610672578691612c8b575b50612c218286613691565b52612c2c8185613691565b5060405191631135fc2960e21b83526004830152602082602481885f516020617d9f5f395f51905f525af191821561063957600192612c6d575b50016128aa565b612c849060203d811161063257610623818361329f565b505f612c66565b612ca3915060803d811161066b5761065d818361329f565b5f612c16565b612cc09060203d811161063257610623818361329f565b612bc6565b141590505f80612b7a565b81612cda9161329f565b6107a857835f612b65565b965096506020863d8211612d15575b81612d016020938361329f565b810103126107e0579451958b959081612ae8565b3d9150612cf4565b9091929350612d2c818661383c565b61010003610100811161092c5760ff811161092c5760405163348051d760e11b8152600190911b600482018190528b80836024815f516020617d9f5f395f51905f525afa92831561091f5760209382606a92612de694926108fb57506040519586925f516020617ddf5f395f51905f52828501525f516020617d7f5f395f51905f52604085015269030ba32b9103a3430b7160b51b60608501528051918291018585015e820190838201520301601f19810184528361329f565b8310156108d357509089939291612a9b565b612e00615fb5565b50612a3c565b9091506020813d8211612e31575b81612e216020938361329f565b810103126107e05751905f61292c565b3d9150612e14565b602090612e44613cbb565b8282870101520161289f565b806103e8026103e8810482036109e957633b9aca00820290808204620f424014901517156109e95790600191612e868286613691565b5201612883565b50346107e0575f3660031901126107e05760405163975a6ce960e01b81526020600482015260076024820152661b585a5b9b995d60ca1b60448201525f816064815f516020617d9f5f395f51905f525afa9081156131c857612f16916020915f91613216575b50604051809381926371ee464d60e01b8352604060048401526044830190613302565b6301036640602483015203815f5f516020617d9f5f395f51905f525af180156131c8576131e7575b5060405161124a808201908282106001600160401b038311176131d3576020918391616b358339735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f81520301905ff080156131c857602080546001600160a01b0319166001600160a01b039290921691821790555f516020617d9f5f395f51905f523b156107e057604051906318caf8e360e31b825260048201526040602482015260146044820152732ab734b9bbb0b82b1929bbb0b820b230b83a32b960611b60648201525f81608481835f516020617d9f5f395f51905f525af180156131c8576131b5575b505f516020617d9f5f395f51905f523b1561077657806040516318caf8e360e31b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260048201526040602482015260046044820152630ae8aa8960e31b60648201528181608481835f516020617d9f5f395f51905f525af18015610779576131a0575b50505f516020617d9f5f395f51905f523b1561077657806040516318caf8e360e31b81525f516020617dbf5f395f51905f5260048201526040602482015260046044820152635553444360e01b60648201528181608481835f516020617d9f5f395f51905f525af180156107795761318b575b50505f516020617d9f5f395f51905f523b1561077657806040516318caf8e360e31b815273b4e16d0168e52d35cacd2c6185b44281ec28c9dc600482015260406024820152600e60448201526d2aa9a221afaba2aa242fa820a4a960911b60648201528181608481835f516020617d9f5f395f51905f525af1801561077957610af65750f35b816131959161329f565b61077657805f613105565b816131aa9161329f565b61077657805f613092565b6131c191505f9061329f565b5f5f613019565b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b6020813d60201161320e575b816132006020938361329f565b810103126107e05751612f3e565b3d91506131f3565b61322a91503d805f833e610910818361329f565b5f612ef3565b346107e05760403660031901126107e05761326160209161325081613269565b60043581526024358382015261358d565b604051908152f35b604081019081106001600160401b038211176131d357604052565b606081019081106001600160401b038211176131d357604052565b90601f801991011681019081106001600160401b038211176131d357604052565b60206040818301928281528451809452019201905f5b8181106132e35750505090565b82516001600160a01b03168452602093840193909201916001016132d6565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b602081016020825282518091526040820191602060408360051b8301019401925f915b83831061335857505050505090565b9091929394603f1982820301835285516020606081604085019360018060a01b0381511686520151936040838201528451809452019201905f905b8082106133b25750505060208060019297019301930191939290613349565b82516001600160e01b031916845260209384019390920191600190910190613393565b602081016020825282518091526040820191602060408360051b8301019401925f915b83831061340757505050505090565b9091929394602080613425600193603f198682030187528951613302565b970193019301919392906133f8565b600e5481101561344c57600e5f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b601f5481101561344c57601f5f5260205f2001905f90565b90600182811c921680156134a6575b602083101461349257565b634e487b7160e01b5f52602260045260245ffd5b91607f1691613487565b5f92918154916134bf83613478565b808352926001811690811561351457506001146134db57505050565b5f9081526020812093945091925b8383106134fa575060209250010190565b6001816020929493945483858701015201910191906134e9565b915050602093945060ff929192191683830152151560051b010190565b6001600160401b0381116131d35760051b60200190565b8181029291811591840414171561355b57565b634e487b7160e01b5f52601160045260245ffd5b8115613579570490565b634e487b7160e01b5f52601260045260245ffd5b80516a084595161401484a0000008102908082046a084595161401484a000000149015171561355b5760206135c49201519061356f565b90565b6001600160401b0381116131d357601f01601f191660200190565b6020818303126107e0578051906001600160401b0382116107e0570181601f820112156107e057805190613615826135c7565b92613623604051948561329f565b828452602083830101116107e057815f9260208093018386015e8301015290565b908160209103126107e0575190565b601180546001600160a01b0319165f516020617dbf5f395f51905f52179055565b80511561344c5760200190565b80516001101561344c5760400190565b805182101561344c5760209160051b010190565b91908260409103126107e0576040516136bd81613269565b6020808294805184520151910152565b6020818303126107e0578051906001600160401b0382116107e0570181601f820112156107e05780516136ff81613531565b9261370d604051948561329f565b81845260208085019260061b840101928184116107e057602001915b838310613737575050505090565b602060409161374684866136a5565b815201920191613729565b602060a06080830192732d385b405a394b4d72b34b18616d10a07b0a327760621b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2838201525f516020617dbf5f395f51905f526040820152608060608201528451809452019201905f5b8181106137bf5750505090565b82518452602093840193909201916001016137b2565b60a0919360209360808301958352600180851b031684830152600180841b03166040820152608060608201528451809452019201905f5b8181106138195750505090565b825184526020938401939092019160010161380c565b9190820391821161355b57565b9190820180921161355b57565b6020818303126107e0578051906001600160401b0382116107e057019080601f830112156107e057815161387c81613531565b9261388a604051948561329f565b81845260208085019260051b8201019283116107e057602001905b8282106138b25750505090565b81518152602091820191016138a5565b908160209103126107e0575180151581036107e05790565b906080828203126107e05761390b9060408051936138f785613284565b8051855260208101516020860152016136a5565b604082015290565b732d385b405a394b4d72b34b18616d10a07b0a327760621b81525f516020617dbf5f395f51905f52602082015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2604082015260a081019392919060028210156139775760809160608201520152565b634e487b7160e01b5f52602160045260245ffd5b60085460ff16801561399a5790565b50604051630667f9d760e41b81525f516020617d9f5f395f51905f5260048201526519985a5b195960d21b60248201526020816044815f516020617d9f5f395f51905f525afa9081156131c8575f916139f4575b50151590565b90506020813d602011613a1e575b81613a0f6020938361329f565b810103126107e057515f6139ee565b3d9150613a02565b6020818303126107e0578051906001600160401b0382116107e057019080601f830112156107e057815190613a5a82613531565b92613a68604051948561329f565b82845260208085019360051b8201019182116107e057602001915b818310613a905750505090565b8251600a8110156107e057815260209283019201613a83565b9091906001600160a01b038116613abf84613674565b51604051906348bd7dfd60e01b825260048201525f60248201525f60448201525f8160648183865af180156131c857613aff915f91613ca1575b50613e25565b15935f5b8151811015613c9957613b168183613691565b516040519063ecbbc03360e01b825260048201525f8160248183885af180156131c85787915f91613bee575b5060019291613be891613b67876001600160a01b03613b6084613674565b5116613ebc565b613b7a87868060a01b03613b6084613681565b613bb282613b888689613691565b51878060a01b03613b9885613674565b5116888060a01b03613ba986613681565b5116918c613ffe565b613bbc8487613691565b5190858060a01b03613bcd82613681565b511690613bdf878060a01b0391613674565b51169189613ffe565b01613b03565b9150503d805f833e613c00818361329f565b8101906020818303126107e0578051906001600160401b0382116107e057019080601f830112156107e0578151613c3681613531565b91613c44604051938461329f565b81835260208084019260051b8501019081116107e05760208a9401905b808210613c72575050506001613b42565b8151945090916001600160a01b03851685036107e0576020818c9682935201920190613c61565b505050509050565b613cb591503d805f833e610b1e818361329f565b5f613af9565b60405190613cc882613284565b815f81525f60208201526040805191613ce083613269565b5f83525f60208401520152565b613d0d906020613d0282518286015190613548565b935191015190613548565b90808203613d1b5750505f90565b1115613d2657600190565b5f1990565b5f516020617d9f5f395f51905f523b156107e0576040519063fe74f05b60e01b82526004820152600160248201525f816044815f516020617d9f5f395f51905f525afa80156131c857613d7b5750565b5f613d859161329f565b565b5f516020617d9f5f395f51905f523b156107e05760405190636d83fe6960e11b825260048201525f60248201525f816044815f516020617d9f5f395f51905f525afa80156131c857613d7b5750565b905f516020617d9f5f395f51905f523b156107e0576040519163260a5b1560e21b8352600483015260248201525f816044815f516020617d9f5f395f51905f525afa80156131c857613d7b5750565b5f5b8151811015613e5a57613e3a8183613691565b51600a81101561397757600514613e5357600101613e27565b5050600190565b50505f90565b5f5b8151811015613e5a57613e758183613691565b51600a81101561397757600914613e5357600101613e62565b5f5b8151811015613e5a57613ea38183613691565b51600a81101561397757600814613e5357600101613e90565b60405190602082019263095ea7b360e01b845260018060a01b0316928360248401525f19604484015260448352613ef460648461329f565b82516001600160a01b038316915f91829182855af190613f12615850565b82613f72575b5081613f67575b5015613f2a57505050565b613f62613d85936040519063095ea7b360e01b602083015260248201525f604482015260448152613f5c60648261329f565b8261587f565b61587f565b90503b15155f613f1f565b80519192508115918215613f8a575b5050905f613f18565b613f9d92506020809183010191016138c2565b5f80613f81565b60405190613fb360608361329f565b603682527536103a3790383934b1b29030b33a32b91039bbb0b81760511b6040837f45786563757465642070726963652073686f756c64206265206f72206571756160208201520152565b6101809182526101c09490945260405163549387df60e11b8152905160048201526001600160a01b038083166024830152831660448201529192915f8180606481016101608490520381836001600160a01b0388165af180156131c85761406c915f916157e7575b50613674565b516101405260606101a08190526040516140c99161408a908261329f565b602381527f53656c6c206c696d69742073686f756c6420626520677265617465722074686160208201526206e20360ec1b604082015261014051615942565b6101a051505f806141536141816040516140e66101a0518261329f565b603681527f544553543a2054657374696e672070726963657320666f722070616972202573602082015275080b4f88095ccb8814d95b1b081b1a5b5a5d0e88095960521b6040820152604051928391638ef3f39960e01b60208401526080602484015260a4830190613302565b6001600160a01b0387811660448401528916606483015261014051608483015203601f19810183528261329f565b6020815191016a636f6e736f6c652e6c6f675afa506040516348bd7dfd60e01b81526101805160048201526001600160a01b038083166024830152841660448201525f8180606481010381836001600160a01b0388165af180156131c8576141f0915f916157cd575b50613e60565b916040519261420060a08561329f565b600484526080366020860137156157c0575f5b61421c84613674565b526103e8610140510461422e84613681565b5282516002101561344c576101a05183016101405160011c905282516003101561344c576080830161014051905260405163155adc9160e31b81525f818061427f87898861018051600486016137d5565b0381836001600160a01b0387165af19081156131c8575f916157a6575b506142af6142a982613674565b5161358d565b81515f1981019190821161355b576142cd6142a96143289385613691565b6101a05160405192906142e0908461329f565b603083527f5072696365206174206c696d69742073686f756c6420626520736d616c6c657260208401526f0207468616e20707269636520617420360841b60408401526159a9565b6143346142a982613674565b81515f19810190811161355b576143d16143ea5f936143576142a9869588613691565b6101a05160405192919061436b908461329f565b602d83527f544553543a20507269636520617420303a2025642c207072696365206174207360208401526c195b1b081b1a5b5a5d0e880959609a1b604084015260405194859363ca47c4eb60e01b60208601526101a05160248601526084850190613302565b916044840152606483015203601f19810183528261329f565b6020815191016a636f6e736f6c652e6c6f675afa506101a05160405161445191614414908261329f565b602581527f544553543a2054657374696e67206265686176696f7220666f72207072696365602082015264020617420360dc1b60408201526159de565b6144a461445d82613674565b515160406101e081905280519190614475908361329f565b601882527f4e6f6d696e61746f722073686f756c646e2774206265203000000000000000006020830152615942565b6144f660206144b283613674565b5101516101e051805191906144c7908361329f565b601a82527f44656e6f6d696e61746f722073686f756c646e277420626520300000000000006020830152615942565b6145026142a982613674565b610120526101e05180516145459161451a908261329f565b6014815273151154d50e88141c9a58d948185d080c0e88095960621b60208201526101205190615a22565b61454d613cbb565b5083515f19810190811161355b576145659085613691565b51600581810204810361355b575f806101e0515160208101906370a0823160e01b82523060248201526024815261459d60448261329f565b5190875afa506145ae6102b7615850565b50601180546001600160a01b0319166001600160a01b038616179055600f805463ffffffff19166370a08231179055600e54600160401b8110156131d3576103048160016145ff9301600e55613434565b905560018060a01b0360115416600f5460e01b6010549061461e615b82565b6001600160a01b0384165f908152600d60205260409020909163ffffffff60e01b1690815f526020526101e0515f206101e05151602081019061466681610383888886615b6b565b5190205f5260205260ff60036101e0515f2001541615615798575b6001600160a01b0384165f908152600d60205260409020905f526020526103836146be6101e0515f20936101e05151928391602083019586615b6b565b5190205f526020526101e0515f2060018101549260028201546146e1818661383c565b61567d575b82546101e05151630667f9d760e41b81526001600160a01b038616600482015260248101829052959091906020876044815f516020617d9f5f395f51905f525afa96871561563c575f97615649575b506001908201610100031b5f1901811b1986165f516020617d9f5f395f51905f523b156107e0576101e051516370ca10bb60e01b81526001600160a01b038716600482015260248101939093526005840290911b1760448201525f81606481835f516020617d9f5f395f51905f525af1801561563c57615627575b50600f5460e01b602061480260246147c8600d615c5c565b6101e051519384918183019663ffffffff60e01b1687528051918291018484015e810161016051838201520301601f19810183528261329f565b60115461016051915191928392916001600160a01b03165afa60c052614826615850565b6010546001600160fb1b0381168103614e67576101605160a0819052825161010091909152602081111561561e57506020610100525b6101605160e0525b6101005160e051106155ac57505060c0511590811561559c575b506154aa5750505061488e61687f565b6101e05151634b88b8ad60e11b8152602081600481610160515f516020617d9f5f395f51905f525af18015614dcf5761016051608052615477575b5060015b8451811015614e9f575f8061498a6149b06148e785613460565b506148f2868b613691565b5161499c610e136149626101e051519461490f6101a0518761329f565b603086527f544553543a2054657374696e67206265686176696f7220666f7220707269636560208701526f1030ba1012b99037b3103634b6b4ba1760811b6101e0518701526101e05151928380926134b0565b6101e05151635821efa160e01b60208201526101a05160248201529586946084860190613302565b84810360231901604486015290613302565b90606483015203601f19810183528261329f565b6020815191016a636f6e736f6c652e6c6f675afa506149d26142a98284613691565b5f80614a4a614a6f6149e4868b613691565b516101e05151906149f86101e0518361329f565b601782527f544553543a205377617070696e67202564206f6620257300000000000000000060208301526101e0515193849263038fd88960e31b60208501526101a05160248501526084840190613302565b60448301919091526001600160a01b038b16606483015203601f19810183528261329f565b6020815191016a636f6e736f6c652e6c6f675afa50614add6080614a938489613691565b516101e05151638307c65560e01b81526101805160048201526001600160a01b03808a1660248301528b1660448201525f60648201526084810191909152918290819060a4820190565b03816101605160018060a01b038a165af1908115614dcf576101605191614e81575b508051806a084595161401484a0000008102046a084595161401484a0000001481151715614e6757614b4c614b58916a084595161401484a000000614b44878c613691565b51910261356f565b916101e051015161358d565b91614b9e826101e05151614b6f6101e0518261329f565b601d81527f544553543a20202d2045786563757465642070726963653a20202025640000006020820152615a22565b614be3816101e05151614bb46101e0518261329f565b601d81527f544553543a20202d20507269636520617420616d6f756e743a202025640000006020820152615a22565b614c28836101e05151614bf96101e0518261329f565b601d81527f544553543a20202d20507269636520616674657220737761703a2025640000006020820152615a22565b6101c05115614ddf576101a0516101e05151614d6994614d08939092614c9b929190614c54908361329f565b602c82527f50726963652073686f756c642062652067726561746564207468616e2065786560208301526b31baba32b210383934b1b29760a11b6101e05183015285615a65565b6101a0516101e051519190614cb0908361329f565b603782527f45786563757465642070726963652073686f756c64206265206772656174657260208301527f207468616e20707269636520616674657220737761702e0000000000000000006101e051830152836159a9565b6101a0516101e051519190614d1d908361329f565b602e82527f50726963652073686f756c642062652067726561746564207468616e2070726960208301526d31b29030b33a32b91039bbb0b81760911b6101e051830152610120516159a9565b6101e0515190631135fc2960e21b82526080516004830152602082602481610160515f516020617d9f5f395f51905f525af1918215614dcf57600192614db1575b50016148cd565b614dc89060203d811161063257610623818361329f565b505f614daa565b6101e051513d61016051823e3d90fd5b614e0490614dfc614e6294614df2613fa4565b9061012051615a65565b614df2613fa4565b6101e0515190614e176101a0518361329f565b602d82527f50726963652073686f756c64206265206f7220657175616c20746f207072696360208301526c329030b33a32b91039bbb0b81760991b6101e05183015261012051615a65565b614d69565b634e487b7160e01b61016051526011600452602461016051fd5b614e99915060803d811161066b5761065d818361329f565b5f614aff565b505091506069610140510261014051810460691461014051151715614e67576101e051516348bd7dfd60e01b815261016080516101805160048401526001600160a01b0385811660248501528781166044850152915160649485900496949192849291839187165af18015614dcf57614f2291610160519161545a575b50613e8e565b1561531157614f8d836101e05151614f3d6101a0518261329f565b603681527f544553543a2054657374696e6720726576657274206265686176696f722061626020820152751bdd99481d1a19481cd95b1b081b1a5b5a5d0e88095960521b6101e051820152615a22565b6101e05180519390614f9f908561329f565b600184526101e051601f1901366020860137614fba84613674565b526101e0515163155adc9160e31b8152610160518180614fe387898861018051600486016137d5565b03816101605160018060a01b0387165af190816152f6575b5061528957600161500a615a9a565b6308c379a0146151f8575b614dcf5761507593615028608094613674565b516101e05151638307c65560e01b81526101805160048201526001600160a01b0394851660248201529390911660448401525f6064840152608483015290928391908290819060a4820190565b61016051919003926001600160a01b03165af190816151db575b5061517857600161509e615a9a565b6308c379a0146150f2575b614dcf575b613d856101e051516150c36101e0518261329f565b601781527f544553543a20416c6c207465737473207061737365642e00000000000000000060208201526159de565b6150fa615ab5565b80615106575b506150a9565b610160516101a0516101e05151919350615172929190615126908261329f565b603281527f544553543a204578706563746564206572726f72207768656e207377617070696020820152716e672061626f7665206c696d69743a20257360701b6101e051820152615b27565b5f615100565b6101e0515162461bcd60e51b815260206004820152603360248201527f506f6f6c2073686f756c646e27742062652061626c6520746f20737761702061604482015272189bdd99481d1a19481cd95b1b081b1a5b5a5d606a1b6064820152608490fd5b6151f39060803d60801161066b5761065d818361329f565b61508f565b615200615ab5565b8061520c575b50615015565b610160516101a0516101e0515191935061528392919061522c908261329f565b603881527f544553543a204578706563746564206572726f72207768656e2066657463686960208201527f6e672070726963652061626f7665206c696d69743a20257300000000000000006101e051820152615b27565b5f615206565b6101e0515162461bcd60e51b815260206004820152603b60248201527f506f6f6c2073686f756c646e27742062652061626c6520746f2066657463682060448201527f7072696365732061626f7665207468652073656c6c206c696d697400000000006064820152608490fd5b61530c903d8061016051833e611023818361329f565b614ffb565b6101a0516101e051519394936153799186919061532e908261329f565b603181527f544553543a2054657374696e67206f7065726174696f6e732061626f766520746020820152701a19481cd95b1b081b1a5b5a5d0e880959607a1b6101e051820152615a22565b6101e0518051949061538b908661329f565b600185526101e051601f19013660208701376153a685613674565b526101e051519263155adc9160e31b84526101605184806153d088858861018051600486016137d5565b03816101605160018060a01b0387165af18015614dcf576153fc956080956150289261543f5750613674565b61016051919003926001600160a01b03165af18015614dcf57615420575b506150ae565b6154389060803d60801161066b5761065d818361329f565b505f61541a565b615455903d8061016051833e611023818361329f565b614066565b61547191503d8061016051833e610b1e818361329f565b5f614f1c565b6020813d6020116154a2575b816154906020938361329f565b810103126107e057516080525f6148c9565b3d9150615483565b54915f516020617d9f5f395f51905f523b15615595576101e051516370ca10bb60e01b8152610160516001600160a01b039093166004820152602481019390935260448301528180606481010381610160515f516020617d9f5f395f51905f525af18015614dcf5761557a575b6101e0515162461bcd60e51b815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a204661696044820152723632b2103a37903bb934ba32903b30b63ab29760691b6064820152608490fd5b610160516155879161329f565b610160516155955780615517565b6101605180fd5b905060050260a05114155f61487e565b6155bb60e0518260051b61383c565b825181101561560457602060ff60f81b91840101511660e05160e05160031b0460081460e051151715614e675760e05160031b1c60a0511760a052600160e0510160e052614864565b634e487b7160e01b61016051526032600452602461016051fd5b6101005261485c565b5f6156319161329f565b5f610160525f6147b0565b6101e051513d5f823e3d90fd5b9096506020813d602011615675575b816156656020938361329f565b810103126107e057519581614735565b3d9150615658565b615687818661383c565b61010003610100811161355b5760ff811161355b576101e0515163348051d760e11b81526001821b60048201525f816024815f516020617d9f5f395f51905f525afa91821561563c57615747606a6020946001945f9161577e575b506101e051519586915f516020617ddf5f395f51905f52828401525f516020617d7f5f395f51905f526101e05184015269030ba32b9103a3430b7160b51b6101a0518401528051918291018484015e81015f838201520301601f19810185528461329f565b1b83600502101561575857506146e6565b6101e0515162461bcd60e51b8152602060048201529081906108f7906024830190613302565b61579291503d805f833e610910818361329f565b5f6156e2565b6157a0615fb5565b50614681565b6157ba91503d805f833e611023818361329f565b5f61429c565b6127106101405104614213565b6157e191503d805f833e610b1e818361329f565b5f6141ea565b6157fb91503d805f833e610cb3818361329f565b5f614066565b905f516020617d9f5f395f51905f523b156107e05760405191638466f41560e01b8352600483015260248201525f816044815f516020617d9f5f395f51905f525afa80156131c857613d7b5750565b3d1561587a573d90615861826135c7565b9161586f604051938461329f565b82523d5f602084013e565b606090565b81516158aa926001600160a01b03909216915f91829160200182855af16158a4615850565b91615efa565b805190816158b6575050565b6020806158c79383010191016138c2565b156158ce57565b60405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b6135c49392606092825260208201528160408201520190613302565b5f516020617d9f5f395f51905f523b156107e05761598a915f916040519384928392636cd1e26960e11b84526004840152846024840152606060448401526064830190613302565b03815f516020617d9f5f395f51905f525afa80156131c857613d7b5750565b905f516020617d9f5f395f51905f523b156107e0575f9161598a6040519485938493636cd1e26960e11b855260048501615926565b5f610383615a0b829360405192839163104c13eb60e21b6020840152602060248401526044830190613302565b6020815191016a636f6e736f6c652e6c6f675afa50565b615a51615a0b5f93928493604051938492632d839cb360e21b6020850152604060248501526064840190613302565b90604483015203601f19810183528261329f565b905f516020617d9f5f395f51905f523b156107e0575f9161598a6040519485938493630389490b60e61b855260048501615926565b5f9060033d11615aa657565b905060045f803e5f5160e01c90565b5f60443d106135c4576040513d600319016004823e8051913d60248401116001600160401b03841117615b2157828201928351916001600160401b038311615b19573d84016003190185840160200111615b1957506135c49291016020019061329f565b949350505050565b92915050565b615b59615a0b5f93926103838594604051948593634b5c427760e01b6020860152604060248601526064850190613302565b83810360231901604485015290613302565b60209291908391805192839101825e019081520190565b615b8d601454613478565b615c4a576040519081826020600e549283815201600e5f5260205f20925f5b818110615c31575050615bc19250038361329f565b81518060051b908082046020149015171561355b57615bdf816135c7565b90615bed604051928361329f565b808252615bfc601f19916135c7565b013660208301375f5b8351811015615c2c5780615c1b60019286613691565b5160208260051b8501015201615c05565b509150565b8454835260019485019487945060209093019201615bac565b6040516135c481610e138160146134b0565b6007810190615c6b8254613478565b615d2757600191500190604051808360208295549384815201905f5260205f20925f5b818110615d0e575050615ca39250038361329f565b81518060051b908082046020149015171561355b57615cc1816135c7565b90615ccf604051928361329f565b808252615cde601f19916135c7565b013660208301375f5b8351811015615c2c5780615cfd60019286613691565b5160208260051b8501015201615ce7565b8454835260019485019487945060209093019201615c8e565b506135c4610e1391604051928380926134b0565b5f806020600f5460e01b615d896024615d54600d615c5c565b6040519485918183019563ffffffff60e01b1686528051918291018484015e810186838201520301601f19810184528361329f565b6011549151916001600160a01b03165afa90615da3615850565b601054909290600581901b906001600160fb1b0381160361355b575f938051602081115f14615e2e57506020905b5f925b828410615de357505050509190565b90919295615df1878361383c565b835181101561344c57830160200151600388901b91906001600160f81b031916881560088a850414171561355b576001921c179601929190615dd4565b90615dd1565b905f806020600285015460e01b615e4f6024615d5488615c5c565b60048601549151916001600160a01b03165afa6003615e6c615850565b930154600581901b906001600160fb1b0381160361355b575f938051602081115f14615ef457506020905b5f925b828410615ea957505050509190565b90919295615eb7878361383c565b835181101561344c57830160200151600388901b91906001600160f81b031916881560088a850414171561355b576001921c179601929190615e9a565b90615e97565b90615f1e5750805115615f0f57805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580615f4f575b615f2f575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15615f27565b9080601f830112156107e0578151615f6f81613531565b92615f7d604051948561329f565b81845260208085019260051b8201019283116107e057602001905b828210615fa55750505090565b8151815260209182019101615f98565b601154600f546010546001600160a01b03909216915f9160e01b615fd9600d615c5c565b90845f52600d60205260405f209063ffffffff60e01b1690815f5260205260405f20604051602081019061601281610383888886615b6b565b5190205f5260205260ff600360405f2001541661683e575f516020617d9f5f395f51905f523b156107e05760405163266cf10960e01b81525f81600481835f516020617d9f5f395f51905f525af180156131c857616829575b50616076600d615e34565b90506040516365bc948160e01b81528660048201528581602481835f516020617d9f5f395f51905f525af19081156106725786916167c1575b50805161612057608460405162461bcd60e51b815260206004820152604060248201527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152fd5b855b81518110156167b95781602061613b8361616c95613691565b51604051630667f9d760e41b81526001600160a01b038c166004820152602481019190915293849081906044820190565b03815f516020617d9f5f395f51905f525afa9283156167ae57889361677b575b508215616723575b61619e8282613691565b51601154604051630667f9d760e41b81526001600160a01b03909116600482018190526024820183905291906020816044815f516020617d9f5f395f51905f525afa908115616718578b916166e7575b506161f9600d615e34565b91909382155f146166e0575f19905b5f516020617d9f5f395f51905f523b156166c7576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810185905260448101919091528c81606481835f516020617d9f5f395f51905f525af1801561664c57908d916166cb575b5050616279600d615e34565b601154909491506001600160a01b03165f516020617d9f5f395f51905f523b156166c7576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528b81606481835f516020617d9f5f395f51905f525af180156166bc57908c916166a3575b505082616698575b50501561668e578793889360ff60135416616513575b6001868601610100031b5f1901851b16841c8103616505575090616393917f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed60808b896103836163688d604051928391602083019586615b6b565b5190206163758686613691565b51906040519283528a602084015260408301526060820152a1613691565b51906040519060808201928284106001600160401b038511176131d35760039360405282526020820193845260408201908152606082019360018552898952600d60205260408920868a526020526040892060405160208101906163fc816103838d8d86615b6b565b5190208a526020526040892092518355516001830155516002820155019051151560ff801983541691161790555b848452600d6020526040842081855260205260408420604051602081019061645781610383888886615b6b565b519020855260205260ff600360408620015416156164a8576040948452600d60205284842090845260205261038361649c858520938651928391602083019586615b6b565b51902082526020522090565b60405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201526e3a143994903737ba103337bab7321760891b6064820152608490fd5b935091506001905b01616122565b945061655e93506165248383613691565b51601154604051630667f9d760e41b81526001600160a01b0390911660048201526024810182905290959094602090869081906044820190565b03815f516020617d9f5f395f51905f525afa94851561213e578a9561665b575b5061658a86600d616998565b95909661659881600d616a71565b60115490939192906001600160a01b03165f516020617d9f5f395f51905f523b15616657576040516370ca10bb60e01b81526001600160a01b03919091166004820152602481019190915260448101919091528c81606481835f516020617d9f5f395f51905f525af1801561664c57908d91616633575b50508761662b575b50949561630d57509350915060019061650d565b96505f616617565b8161663d9161329f565b616648578b5f61660f565b8b80fd5b6040513d8f823e3d90fd5b8e80fd5b9094506020813d8211616686575b816166766020938361329f565b810103126107e05751935f61657e565b3d9150616669565b915060019061650d565b141590505f806162f7565b816166ad9161329f565b6166b8578a5f6162ef565b8a80fd5b6040513d8e823e3d90fd5b8d80fd5b816166d59161329f565b616648578b5f61626d565b8c90616208565b90506020813d8211616710575b816167016020938361329f565b810103126107e057515f6161ee565b3d91506166f4565b6040513d8d823e3d90fd5b7f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a56167736167518484613691565b51604080516001600160a01b038e168152602081019290925290918291820190565b0390a1616194565b9092506020813d82116167a6575b816167966020938361329f565b810103126107e05751915f61618c565b3d9150616789565b6040513d8a823e3d90fd5b50505061642a565b90503d8087833e6167d2818361329f565b81016040828203126107ac5781516001600160401b03811161682557816167fa918401615f58565b916020810151906001600160401b0382116168215761681a929101615f58565b505f6160af565b8880fd5b8780fd5b6168369194505f9061329f565b5f925f61606b565b91939092505f52600d60205260405f20905f5260205261038361687060405f2093604051928391602083019586615b6b565b5190205f5260205260405f2090565b6bffffffffffffffffffffffff60a01b6011541660115563ffffffff19600f5416600f55600e545f600e5580616956575b505f60105560ff19601354166013556168ca601454613478565b806168d25750565b601f81116001146168e457505f601455565b60145f52601f0160051c7fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec017fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ed5b81811061694b57505060145f525f602081208160145555565b5f8155600101616932565b600e5f527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd908101905b81811061698d57506168b0565b5f8155600101616980565b91905f5b61010081106169af57505090505f905f90565b8060ff0360ff811161355b576004850154600190911b906001600160a01b03165f516020617d9f5f395f51905f523b156107e0576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f516020617d9f5f395f51905f525af180156131c857616a61575b50616a3b84615e34565b81616a57575b50616a4e5760010161699c565b92505060019190565b905015155f616a41565b5f616a6b9161329f565b5f616a31565b91905f5b6101008110616a8857505090505f905f90565b60048401546001821b906001600160a01b03165f516020617d9f5f395f51905f523b156107e0576040516370ca10bb60e01b81526001600160a01b039190911660048201526024810184905260448101919091525f81606481835f516020617d9f5f395f51905f525af180156131c857616b24575b50616b0784615e34565b81616b1a575b50616a4e57600101616a75565b905015155f616b0d565b5f616b2e9161329f565b5f616afd56fe60a034606857601f61124a38819003918201601f19168301916001600160401b03831184841017606c57808492602094604052833981010312606857516001600160a01b038116908190036068576080526040516111c990816100818239608051816106930152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c806323eeca011461066457806348bd7dfd1461058d5780638307c65514610527578063a9270fbe146103fe578063aad6e488146101ae5763ecbbc0331461005b575f80fd5b346101aa5760203660031901126101aa5760405161007a60608261090d565b6002815260208101604036823760043560601c604051630dfe168160e01b8152602081600481855afa918215610182576004926020925f9161018d575b506100c186610994565b6001600160a01b03909116905260405163d21220a760e01b815292839182905afa908115610182575f91610153575b506100fc8392936109a1565b6001600160a01b0390911690526040805160208082529251928101839052928392918301915f5b818110610131575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610123565b610175915060203d60201161017b575b61016d818361090d565b810190610975565b5f6100f0565b503d610163565b6040513d5f823e3d90fd5b6101a49150833d851161017b5761016d818361090d565b5f6100b7565b5f80fd5b346101aa5760803660031901126101aa576101c7610877565b6101cf61088d565b6064359067ffffffffffffffff82116101aa57366023830112156101aa578160040135916101fc8361092f565b9261020a604051948561090d565b8084526024602085019160051b830101913683116101aa57602401905b8282106103ee5750505081519261023d8461092f565b9361024b604051958661090d565b80855261025a601f199161092f565b015f5b8181106103cb57506004926060928435841c92506001600160a01b039182169116101561037f57604051630240bc6b60e21b815292839182905afa8015610182575f915f9161034d575b505b5f5b83518110156102fc57806102e06102c4600193876109b1565b516001600160701b038516906001600160701b03871690610e3b565b6102ea82886109b1565b526102f581876109b1565b50016102ab565b846040518091602082016020835281518091526020604084019201905f5b818110610328575050500390f35b825180518552602090810151818601528695506040909401939092019160010161031a565b9050610371915060603d606011610378575b610369818361090d565b8101906109f1565b50846102a7565b503d61035f565b604051630240bc6b60e21b815292839182905afa8015610182575f915f916103a9575b50906102a9565b90506103c4915060603d60601161037857610369818361090d565b50846103a2565b6020906040516103da816108dd565b5f81525f838201528282890101520161025d565b8135815260209182019101610227565b346101aa57600461040e366108a3565b6040519391606090610420828761090d565b60028652816020870195601f198201368837604051630240bc6b60e21b81529586918290841c5afa91821561018257600a945f915f946104fa575b50506001600160701b03928316939216916001600160a01b03908116911610156104db5782900461048b85610994565b5204610496836109a1565b52905b604051918291602083019060208452518091526040830191905f5b8181106104c2575050500390f35b82518452859450602093840193909201916001016104b4565b908290046104e885610994565b52046104f3836109a1565b5290610499565b6001600160701b039450849250908161051e92903d1061037857610369818361090d565b5093909161045b565b346101aa5760a03660031901126101aa57610540610877565b61054861088d565b6064359160028310156101aa576080926105689260843592600435610a27565b6020604080519280518452828101518385015201518051604084015201516060820152f35b346101aa5761059b366108a3565b5050506040516105ac60a08261090d565b6004815260208101608036823760016105c483610994565b5260026105d0836109a1565b5281516002101561065057600360608301528151600310156106505760096080830152604051906020820192602083525180935260408201905f935b8085106106195783830384f35b9091825190600a82101561063c576020816001938293520193019401939061060c565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b346101aa5760403660031901126101aa5760043561068460243582610947565b60405163574f2ba360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316929190602081600481875afa80156101825783915f91610842575b5082116107de575b6106e791610968565b6107096106f38261092f565b91610701604051938461090d565b80835261092f565b602082019290601f19013684375f5b825181101561079a5761072b8183610947565b9060405191631e3dd18b60e01b83526004830152602082602481895afa8015610182576001925f9161077c575b5060601b6bffffffffffffffffffffffff191661077582866109b1565b5201610718565b610794915060203d811161017b5761016d818361090d565b87610758565b8383604051918291602083019060208452518091526040830191905f5b8181106107c5575050500390f35b82518452859450602093840193909201916001016107b7565b505060405163574f2ba360e01b8152602081600481865afa80156101825782905f9061080c575b91506106de565b50506020813d60201161083a575b816108276020938361090d565b810103126101aa57816106e79151610805565b3d915061081a565b9150506020813d60201161086f575b8161085e6020938361090d565b810103126101aa57829051856106d6565b3d9150610851565b602435906001600160a01b03821682036101aa57565b604435906001600160a01b03821682036101aa57565b60609060031901126101aa57600435906024356001600160a01b03811681036101aa57906044356001600160a01b03811681036101aa5790565b6040810190811067ffffffffffffffff8211176108f957604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176108f957604052565b67ffffffffffffffff81116108f95760051b60200190565b9190820180921161095457565b634e487b7160e01b5f52601160045260245ffd5b9190820391821161095457565b908160209103126101aa57516001600160a01b03811681036101aa5790565b8051156106505760200190565b8051600110156106505760400190565b80518210156106505760209160051b010190565b604051906109d2826108dd565b5f6020838281520152565b51906001600160701b03821682036101aa57565b908160609103126101aa57610a05816109dd565b916040610a14602084016109dd565b92015163ffffffff811681036101aa5790565b9493905f604051966060880188811067ffffffffffffffff8211176108f9576040525f88525f6020890152604051610a5e816108dd565b5f81525f60208201526040890152878415610cda575060601c946001600160a01b03948516948316948510948515610c8557604051630240bc6b60e21b815296606088600481845afa8015610182575f985f91610c5f575b5097965b5a93600281101561063c57898989921598895f14610c445750509083610af66001600160701b03610afe94166001600160701b038d16846110d6565b953390610fe6565b15610bd057803b15610bcc5760405163022c0d9f60e01b81525f6004820181905260248201849052336044830152608060648301526084820152908490829060a490829084905af18015610bc157908491610ba8575b505090610b66915b89525b5a90610968565b60208801525015610b8e576001600160701b0380610b879416921690610e3b565b6040830152565b50610b87916001600160701b038086519216921690610e3b565b81610bb29161090d565b610bbd57825f610b54565b8280fd5b6040513d86823e3d90fd5b8380fd5b80939291933b156101aa5760405163022c0d9f60e01b8152600481018590525f6024820181905233604483015260806064830152608482018190529091829060a490829084905af1801561018257610c2e575b50610b669192610b5c565b610b6692505f610c3d9161090d565b5f91610c23565b610b66979650610c58959491929394610d02565b8952610b5f565b9050610c7b91985060603d60601161037857610369818361090d565b509790975f610ab6565b604051630240bc6b60e21b81529596606087600481845afa8015610182575f975f91610cb4575b509697610aba565b9050610cd091975060603d60601161037857610369818361090d565b509690965f610cac565b9750505050505050565b8115610cee570490565b634e487b7160e01b5f52601260045260245ffd5b94919092610d1e906001600160701b03805f9716911684610f01565b948515610e1e576001600160a01b0390811693610d419187918691339116610fe6565b15610dbd57813b15610bbd5760405163022c0d9f60e01b81525f600482018190526024820192909252336044820152608060648201526084810191909152908290829060a490829084905af18015610db257610d9c57505090565b610da782809261090d565b610daf575090565b80fd5b6040513d84823e3d90fd5b9150803b156101aa5760405163022c0d9f60e01b815260048101929092525f60248301819052336044840152608060648401526084830181905290829060a490829084905af1801561018257610e11575090565b5f610e1b9161090d565b90565b5050505050505f90565b8181029291811591840414171561095457565b919091610e466109c5565b5082158015610ef9575b610eb357610e6c82610e66610e729486856110d6565b90610968565b92610947565b6103e58202918083046103e51490151715610954576103e88102908082046103e814901517156109545760405191610ea9836108dd565b8252602082015290565b60405163643c60f360e01b815260206004820152601d60248201527f4174206c65617374206f6e652072657365727665206973207a65726f210000006044820152606490fd5b508115610e50565b91908215610fdf578015610fa5578115610f6a5782610f1f91610e28565b916103e88302928084046103e8149015171561095457610f3e91610968565b6103e58102908082046103e5149015171561095457610f5c91610ce4565b600181018091116109545790565b60405163643c60f360e01b8152602060048201526012602482015271726573657276654f7574206973207a65726f60701b6044820152606490fd5b60405163643c60f360e01b815260206004820152601160248201527072657365727665496e206973207a65726f60781b6044820152606490fd5b5050505f90565b6040516323b872dd60e01b602082019081526001600160a01b039384166024830152939092166044830152606480830194909452928152915f91829161102d60848661090d565b60018060a01b031693519082855af13d156110ca573d67ffffffffffffffff81116108f95761107e916040519161106e6020601f19601f840116018461090d565b82523d5f602084013e5b83611135565b80519081151591826110a6575b50506110945750565b635274afe760e01b5f5260045260245ffd5b81925090602091810103126101aa57602001518015908115036101aa575f8061108b565b61107e90606090611078565b91908215610fdf5780159182801561112d575b610eb3576103e584029384046103e503610954576111079084610e28565b916103e882029182046103e814171561095457610e1b9261112791610947565b90610ce4565b5080156110e9565b90611159575080511561114a57805190602001fd5b63d6bda27560e01b5f5260045ffd5b8151158061118a575b61116a575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561116256fea2646970667358221220b2e7f8fbccc13285e349f8b239b13d9153a3383fc98985279c83c306cd63f78464736f6c634300081b00336b656420736c6f742e2057652063616e2774206669742076616c7565206772650000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873746453746f726167652066696e642853746453746f72616765293a20506163a2646970667358221220e5e83294d6ade400fc2ee5c0515769ba39a8d091b5e40c9154838cf2c49a24d664736f6c634300081b0033","sourceMap":"304:5711:77:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;694:3;304:5711;;-1:-1:-1;;694:3:77;;;304:5711;694:3;;;304:5711;4475:13;4490:19;694:3;4490:19;;;;304:5711;;;;;;;:::i;:::-;694:3;304:5711;;;;;;;;;4677:13;;;4692:19;694:3;4692:19;;;;5012:13;;5379;5027:23;694:3;5027:23;;;;304:5711;;;5052:3;5080:9;;;;:::i;:::-;;304:5711;5379:13;694:3;;;;;;;;5226:53;5108:13;:30;5217:66;5108:13;;5379;5108;;;;:::i;:::-;;304:5711;5108:30;;:::i;:::-;5181:21;694:3;5162:9;;;;:::i;:::-;;:17;304:5711;694:3;5181:13;;;;:::i;:::-;;:21;304:5711;5181:21;;:::i;:::-;304:5711;5259:13;5226:9;;;;;:::i;:::-;;:15;;694:3;5259:13;;:::i;:::-;;:19;;5226:53;;:::i;:::-;694:3;;5217:66;:::i;:::-;694:3;5012:13;;694:3;-1:-1:-1;;;523:5:65;;6854:12:8;304:5711:77;523:5:65;27501:38:3;304:5711:77;523:5:65;4713:3:77;304:5711;;-1:-1:-1;;;4745:13:77;;304:5711;694:3;304:5711;;;4745:13;-1:-1:-1;;;;;;;;;;;4745:13:77;;;;;;;;;;;4713:3;4799:10;;;;;:::i;:::-;304:5711;;;;;694:3;27501:38:3;;1590:14:0;;;;27501:38:3;;4792:4:77;27501:38:3;;;304:5711:77;27501:38:3;;;;;;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;:::-;694:3:77;304:5711;;;27568:30:3;;;;;;:::i;:::-;;6854:22:8;;:::i;:::-;27524:10:3;304:5711:77;;7009:9:8;304:5711:77;;;7009:9:8;304:5711:77;7505:10:8;304:5711:77;-1:-1:-1;;;304:5711:77;;;;;;;5379:13;304:5711;;;7505:10:8;304:5711:77;;:::i;:::-;4792:4;;;;304:5711;;;;;;;;;2868:17;;;304:5711;;;;;;;;;;6854:12:8;304:5711:77;7009:9:8;304:5711:77;15610:11:8;304:5711:77;;;-1:-1:-1;;;;;304:5711:77;;;1590:14:0;15653:34:8;;:::i;:::-;-1:-1:-1;;;;;304:5711:77;;;;;;27635:8:3;304:5711:77;;;;;15703:15:8;;304:5711:77;;;;;;;;694:3;304:5711;;;;;;694:3;15735:37:8;;;;;;;;;;:::i;:::-;;694:3:77;;15735:37:8;;;;;;:::i;:::-;304:5711:77;15725:48:8;;304:5711:77;;694:3;304:5711;;15610:11:8;304:5711:77;;;15703:77:8;304:5711:77;;15702:78:8;15698:126;;4713:3:77;-1:-1:-1;;;;;304:5711:77;;;;;;27635:8:3;304:5711:77;;;;;;;;694:3;304:5711;15889:37:8;;304:5711:77;;;;;;15889:37:8;;;694:3:77;15889:37:8;;;;;:::i;:::-;304:5711:77;15879:48:8;;304:5711:77;;694:3;304:5711;;;;5379:13;15943:15:8;;304:5711:77;15961:16:8;7009:9;15961:16;;304:5711:77;15943:34:8;;;;:::i;:::-;15938:460;;4713:3:77;304:5711;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;304:5711:77;;;16424:32:8;;304:5711:77;;;;;;;;;;;694:3;304:5711;;;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;4713:3:77;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;304:5711:77;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;304:5711:77;;;16587:43:8;;304:5711:77;12810:59:8;;;304:5711:77;;;;;;;;12656:92:8;;;;12810:59;;;304:5711:77;;;12810:59:8;304:5711:77;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;4713:3:77;16678:31:8;;;;:::i;:::-;16724:8;;;304:5711:77;;;16724:29:8;;4713:3:77;16720:176:8;;;;14785:4;;;;;;:::i;:::-;694:3:77;1590:14:0;;4824:50:77;;694:3;-1:-1:-1;;;;;304:5711:77;4863:10;;;;:::i;:::-;304:5711;;;-1:-1:-1;;;4824:50:77;;-1:-1:-1;;;;;304:5711:77;;;;4824:50;;304:5711;;;;;;;;;;;;;;;4824:50;;;;-1:-1:-1;;;;;;;;;;;4824:50:77;;;;;;;;4713:3;-1:-1:-1;694:3:77;1590:14:0;304:5711:77;;4901:48;;;;-1:-1:-1;;;;;304:5711:77;4938:10;;;;:::i;:::-;304:5711;;;1590:14:0;;;;;;;;;4901:48:77;;5379:13;304:5711;4901:48;;;:::i;:::-;;;;;;;;;;;;;;4713:3;4889:60;;;;;:::i;:::-;;;;;;:::i;:::-;;304:5711;;1590:14:0;;;;4963:23:77;;304:5711;4963:23;;304:5711;694:3;4963:23;27501:38:3;4963:23:77;;-1:-1:-1;;;;;;;;;;;4963:23:77;;;;;;;5379:13;4963:23;;;4713:3;;694;4677:13;;4963:23;;;694:3;4963:23;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;304:5711;;1590:14:0;304:5711:77;;1590:14:0;;;;4901:48:77;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;304:5711;;1590:14:0;304:5711:77;;1590:14:0;;;;4824:50:77;;;694:3;4824:50;;;;;;;;;:::i;:::-;;;16720:176:8;304:5711:77;;;;16769:41:8;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;304:5711:77;;-1:-1:-1;;;16769:41:8;;-1:-1:-1;;;;;304:5711:77;;;;;16769:41:8;;304:5711:77;12810:59:8;;;304:5711:77;;;;12810:59:8;;;304:5711:77;;;;;12810:59:8;304:5711:77;16769:41:8;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;;;;;16720:176;304:5711:77;;-1:-1:-1;;;16824:61:8;;694:3:77;304:5711;16824:61:8;;12810:59;;27501:38:3;12810:59:8;;304:5711:77;12810:59:8;27501:38:3;304:5711:77;;12810:59:8;-1:-1:-1;;;694:3:77;12810:59:8;;;16824:61;;;16769:41;;;;;;:::i;:::-;304:5711:77;;16769:41:8;;;304:5711:77;;;16769:41:8;304:5711:77;;1590:14:0;304:5711:77;;1590:14:0;;;;16769:41:8;304:5711:77;;;16724:29:8;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;304:5711:77;;16587:43:8;;;;304:5711:77;;;;16587:43:8;304:5711:77;;;16424:32:8;;;;;694:3:77;16424:32:8;;;;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;1590:14:0;-1:-1:-1;304:5711:77;;16424:32:8;;;-1:-1:-1;16424:32:8;;;304:5711:77;;1590:14:0;304:5711:77;;1590:14:0;;;;15938:460:8;16028:34;;;;;;;;;:::i;:::-;16021:3;694::77;16021::8;694::77;;;;304:5711;;;;;;;-1:-1:-1;;;16314:19:8;;5379:13:77;304:5711;;;;16314:19:8;;304:5711:77;;;16314:19:8;;304:5711:77;27501:38:3;304:5711:77;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;694:3:77;16314:19:8;;12810:59;16314:19;16170:185;16314:19;;;;15938:460;304:5711:77;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;304:5711:77;12810:59:8;;;-1:-1:-1;;;304:5711:77;12810:59:8;;;304:5711:77;;;;;;12810:59:8;;;304:5711:77;;;;;;;;16170:185:8;;694:3:77;;16170:185:8;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;;;;;;12810:59;304:5711:77;;-1:-1:-1;;;12810:59:8;;694:3:77;304:5711;12810:59:8;;304:5711:77;;;;;;27501:38:3;304:5711:77;;;;:::i;:::-;12810:59:8;;;16314:19;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;304:5711:77;;;1590:14:0;;;;;;;;304:5711:77;-1:-1:-1;;;523:5:65;;6854:12:8;304:5711:77;523:5:65;27501:38:3;304:5711:77;523:5:65;15698:126:8;13208:33;;:::i;:::-;;15698:126;;304:5711:77;-1:-1:-1;;;304:5711:77;;;;;27501:38:3;304:5711:77;;4745:13;;;;694:3;4745:13;;;;;;;;;1590:14:0;4745:13:77;;;:::i;:::-;;;1590:14:0;;;;;4745:13:77;;;;;;;-1:-1:-1;4745:13:77;;304:5711;694:3;304:5711;;;:::i;:::-;;;;;;;;;;4511:3;523:5:65;4543:4:77;523:5:65;4543:4:77;523:5:65;;;;;;;;;;;;;4554:7:77;523:5:65;;;;;;;4530:31:77;5379:13;4530:31;;;;;:::i;:::-;304:5711;694:3;4475:13;;523:5:65;-1:-1:-1;;;523:5:65;;;304:5711:77;523:5:65;;304:5711:77;523:5:65;304:5711:77;;;;;;;;;;;;;;;1016:26:12;304:5711:77;;;;;;;;;;;;;;;;;-1:-1:-1;;304:5711:77;;;;;;;-1:-1:-1;;;;;304:5711:77;;;;;;;;;-1:-1:-1;;;;;304:5711:77;;;;;;;1590:14:0;304:5711:77;;-1:-1:-1;;;5516:37:77;;304:5711;;;5516:37;;;304:5711;-1:-1:-1;;;;;304:5711:77;;;;;;;;;;;;;;;;;;;;;;;5516:37;;;;;;;;;;;304:5711;;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;304:5711:77;;1590:14:0;;;;2349:24:1;;304:5711:77;2349:24:1;;304:5711:77;;;;;;2349:24:1;;304:5711:77;2349:24:1;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;;;;;304:5711:77;;2349:24:1;;;;;:::i;:::-;304:5711:77;;2349:24:1;304:5711:77;2349:24:1;304:5711:77;;5516:37;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;304:5711;;;;;;;;;;;;;;;;;;;;;;2421:18:5;304:5711:77;;;;;;;2421:18:5;304:5711:77;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;304:5711:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5725:7;1590:14:0;304:5711:77;;-1:-1:-1;;;5725:35:77;;-1:-1:-1;;;304:5711:77;5725:35;;304:5711;-1:-1:-1;;;;;;;;;;;304:5711:77;;;;456:42;304:5711;;;;;;;;;;5725:35;;304:5711;;-1:-1:-1;;;;;304:5711:77;5725:35;;;;;;;;;;;304:5711;;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;304:5711:77;;1590:14:0;;;;2349:24:1;;304:5711:77;2349:24:1;;304:5711:77;5795:1;304:5711;;;;2349:24:1;;304:5711:77;2349:24:1;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;;;;;304:5711:77;;5725:35;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;304:5711;;;;;;;-1:-1:-1;;304:5711:77;;;;;;;-1:-1:-1;;;;;304:5711:77;;;;;;;;-1:-1:-1;;;;;304:5711:77;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;2273:18:5;304:5711:77;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;2273:18:5;304:5711:77;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;304:5711:77;;;;;;;;;860:68;304:5711;;;;;1590:14:0;304:5711:77;;;;1590:14:0;;;1275:35:77;;304:5711;;;;1275:35;;304:5711;-1:-1:-1;;;;;;;;;;;304:5711:77;;;;456:42;304:5711;;;;1275:35;;;;;;;;;;;;;;;;304:5711;1340:9;;;;:::i;:::-;304:5711;1330:19;;-1:-1:-1;;;;;;;;;;;1320:30:77;;;;304:5711;;1590:14:0;;;;1320:30:77;;304:5711;1320:30;;304:5711;1320:30;;304:5711;1320:30;-1:-1:-1;;;;;;;;;;;1320:30:77;;;;;;;;;;;304:5711;1380:9;;;;;:::i;:::-;304:5711;1370:19;;-1:-1:-1;;;;;;;;;;;1360:30:77;;;;304:5711;;1590:14:0;;;;1360:30:77;;304:5711;1360:30;;304:5711;1360:30;;304:5711;1360:30;-1:-1:-1;;;;;;;;;;;1360:30:77;;;;;;;;304:5711;;;;;1542:40;304:5711;;;;;;;;:::i;:::-;1442:1;304:5711;;694:3;304:5711;;694:3;;304:5711;1454:20;;;:::i;:::-;304:5711;1484:20;;;:::i;:::-;304:5711;;;1590:14:0;;;;;;;;1542:40:77;;304:5711;1542:40;;;:::i;:::-;;;;;;;;;;;;;;304:5711;1598:13;;1632:3;304:5711;;1613:17;;;;;1660:9;1651:32;1660:9;304:5711;1660:9;;;:::i;:::-;;304:5711;1651:32;:::i;:::-;1697:34;304:5711;1706:9;;;;:::i;:::-;;:21;304:5711;1697:34;:::i;:::-;694:3;1598:13;;1613:17;;304:5711;;1542:40;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;1360:30;;;;;;:::i;:::-;304:5711;;1360:30;;;;304:5711;;1590:14:0;304:5711:77;;1590:14:0;;;;1320:30:77;;;;;:::i;:::-;304:5711;;1320:30;;;;1275:35;;;;;;;;;;;;;:::i;:::-;;;;304:5711;;;;;;;-1:-1:-1;;304:5711:77;;;;;;534:59:65;304:5711:77;534:59:65;;;;;;;;:::i;:::-;304:5711:77;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;304:5711:77;;;;;;;;;;;;;;;;;;;;;;3190:18:5;304:5711:77;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;3190:18:5;304:5711:77;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;-1:-1:-1;;;;;304:5711:77;;;;;860:68;304:5711;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1590:14:0;304:5711:77;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;304:5711:77;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;304:5711:77;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;304:5711:77;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;304:5711:77;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;304:5711:77;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;304:5711:77;;;;;;;;;;;;1590:14:0;;;-1:-1:-1;;;;;;304:5711:77;;;;;;;;;;;;;;;;;;;;;;1590:14:0;304:5711:77;1590:14:0;304:5711:77;;;;;;1590:14:0;304:5711:77;1590:14:0;;304:5711:77;;;;;;;1590:14:0;304:5711:77;1590:14:0;;304:5711:77;;;;;;;1590:14:0;304:5711:77;1590:14:0;;304:5711:77;;;;;;;1590:14:0;304:5711:77;1590:14:0;;304:5711:77;;;;;;;1590:14:0;304:5711:77;1590:14:0;;304:5711:77;;;;;;;1590:14:0;304:5711:77;1590:14:0;;304:5711:77;;;;;;;1590:14:0;304:5711:77;;;;;;;;;;;;;;;;;;;;;;;;;2707:18:5;304:5711:77;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;2707:18:5;304:5711:77;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;304:5711:77;;;;;;;;;;;;;;;2451:38;;;304:5711;2451:38;304:5711;1590:14:0;304:5711:77;;-1:-1:-1;;;2583:35:77;;-1:-1:-1;;;304:5711:77;2583:35;;304:5711;-1:-1:-1;;;;;;;;;;;304:5711:77;;;;456:42;304:5711;;;;;;;;;2583:35;;304:5711;;-1:-1:-1;;;;;304:5711:77;2583:35;;;;;;;;;;;2451:38;304:5711;;;;;;;2633:21;304:5711;2633:21;;2629:534;;;2633:21;;;2698:9;;;:::i;:::-;304:5711;2680:27;;-1:-1:-1;;;;;;;;;;;2670:38:77;;;;304:5711;;1590:14:0;;;;2670:38:77;;304:5711;2670:38;;304:5711;2670:38;;304:5711;2670:38;-1:-1:-1;;;;;;;;;;;2670:38:77;;;;;;;;2629:534;304:5711;;;;;27501:38:3;;1590:14:0;;;;27501:38:3;;2861:4:77;304:5711;27501:38:3;;304:5711:77;;27501:38:3;;;304:5711:77;27501:38:3;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;;6854:22:8;;:::i;:::-;27524:10:3;304:5711:77;;7009:9:8;304:5711:77;;;7009:9:8;304:5711:77;7505:10:8;304:5711:77;-1:-1:-1;;;304:5711:77;;;;;;;;;;;7505:10:8;304:5711:77;;:::i;:::-;;;860:68;304:5711;;;;6854:12:8;304:5711:77;;7009:9:8;304:5711:77;;1590:14:0;15610:11:8;304:5711:77;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;304:5711:77;;;;;;27635:8:3;304:5711:77;;;;;15703:15:8;;304:5711:77;;;;;;;;;;;;;;;;15735:37:8;;;;;;;;;;:::i;:::-;304:5711:77;15725:48:8;;304:5711:77;;;;;15610:11:8;304:5711:77;;;15703:77:8;304:5711:77;;15702:78:8;15698:126;;2629:534:77;-1:-1:-1;;;;;304:5711:77;;;;;;27635:8:3;304:5711:77;;;;;;;;;;15889:37:8;;304:5711:77;;;;;;15889:37:8;;;304:5711:77;15889:37:8;;;;;:::i;:::-;304:5711:77;15879:48:8;;304:5711:77;;;;;;;;15943:15:8;304:5711:77;15943:15:8;;304:5711:77;15961:16:8;304:5711:77;15961:16:8;;304:5711:77;15943:34:8;;;;:::i;:::-;15938:460;;304:5711:77;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;304:5711:77;;;16424:32:8;;304:5711:77;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;2629:534:77;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;304:5711:77;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;304:5711:77;;;16587:43:8;;304:5711:77;12810:59:8;;;304:5711:77;;;;-1:-1:-1;;304:5711:77;;;12656:92:8;12810:59;;;304:5711:77;;;12810:59:8;304:5711:77;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;2629:534:77;16678:31:8;;;;:::i;:::-;16724:8;;304:5711:77;;;16724:29:8;;2629:534:77;16720:176:8;;;14785:4;;;;;;:::i;:::-;304:5711:77;1590:14:0;;304:5711:77;;-1:-1:-1;;;2900:57:77;;-1:-1:-1;;;;;304:5711:77;;;;2900:57;;304:5711;-1:-1:-1;;304:5711:77;;;;;;;;2900:57;-1:-1:-1;;;;;;;;;;;2900:57:77;;;;;;;;2629:534;;;304:5711;;-1:-1:-1;;;3196:37:77;;3227:4;304:5711;3196:37;;304:5711;;;;;;-1:-1:-1;;;;;;;;;;;3196:37:77;;;;;;;;;;;2629:534;-1:-1:-1;304:5711:77;;-1:-1:-1;;;3266:37:77;;3227:4;304:5711;3266:37;;304:5711;;;;;;456:42;3266:37;;;;;;;;;;;2629:534;304:5711;3347:53;304:5711;3347:53;304:5711;860:68;304:5711;;;;;1590:14:0;304:5711:77;;;;;1590:14:0;;;;;;;;;3347:53:77;;304:5711;3347:53;;;:::i;:::-;;;;;;;;;;;;;;2629:534;304:5711;;;3411:753;;304:5711;;;3411:753;3461:21;;;304:5711;;-1:-1:-1;;;3569:37:77;;3227:4;304:5711;3569:37;;304:5711;;;;;456:42;3569:37;;;;;;;;;;;3457:697;3569:52;;;;;;:::i;:::-;;;:::i;:::-;304:5711;;;-1:-1:-1;;;3746:37:77;;3227:4;304:5711;3746:37;;304:5711;;;;;-1:-1:-1;;;;;;;;;;;3746:37:77;;;;;;;;;;;3457:697;3731:52;;;;;;:::i;:::-;3411:753;;;;;304:5711;;;3746:37;;;304:5711;3746:37;;304:5711;3746:37;;;;;;1590:14:0;3746:37:77;;;:::i;:::-;;;1590:14:0;;;;;3731:52:77;3746:37;;;;;-1:-1:-1;3746:37:77;;3569;;;304:5711;3569:37;;304:5711;3569:37;;;;;;1590:14:0;3569:37:77;;;:::i;:::-;;;1590:14:0;;;;;3569:52:77;:37;;;;;-1:-1:-1;3569:37:77;;3457:697;304:5711;;-1:-1:-1;;;3922:37:77;;3227:4;304:5711;3922:37;;304:5711;;;;;;;;-1:-1:-1;;;;;;;;;;;3922:37:77;;;;;;;;;;;3457:697;3907:52;;;;;;:::i;:::-;304:5711;;;-1:-1:-1;;;4069:37:77;;3227:4;304:5711;4069:37;;304:5711;;;;;456:42;4069:37;;;;;;;;;;;3457:697;4069:52;;;;;;:::i;:::-;3457:697;;4069:37;;;304:5711;4069:37;;304:5711;4069:37;;;;;;1590:14:0;4069:37:77;;;:::i;:::-;;;1590:14:0;;;;;4069:52:77;:37;;;;;-1:-1:-1;4069:37:77;;3922;;;304:5711;3922:37;;304:5711;3922:37;;;;;;1590:14:0;3922:37:77;;;:::i;:::-;;;1590:14:0;;;;;3907:52:77;3922:37;;;;;-1:-1:-1;3922:37:77;;3347:53;;;;;;;;;;;;;;;:::i;:::-;;;;;3266:37;;;;304:5711;3266:37;;304:5711;3266:37;;;;;;1590:14:0;3266:37:77;;;:::i;:::-;;;1590:14:0;;;;;;3266:37:77;;3347:53;3266:37;;;;;-1:-1:-1;3266:37:77;;3196;;;;304:5711;3196:37;;304:5711;3196:37;;;;;;1590:14:0;3196:37:77;;;:::i;:::-;;;1590:14:0;;;;;3196:37:77;;;;;;;-1:-1:-1;3196:37:77;;2900:57;;;304:5711;2900:57;304:5711;2900:57;;;;;;;:::i;:::-;;;;;16724:29:8;-1:-1:-1;;16736:17:8;;;-1:-1:-1;2868:17:77;16724:29:8;;16587:43;;;;;:::i;:::-;304:5711:77;;16587:43:8;;;;;304:5711:77;;;16424:32:8;;;;;304:5711:77;16424:32:8;;304:5711:77;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;:::i;:::-;16021:3;694::77;16021::8;694::77;;;;304:5711;;;;;;;-1:-1:-1;;;16314:19:8;;304:5711:77;;;;;16314:19:8;;304:5711:77;16314:19:8;304:5711:77;;;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;12810:59;304:5711:77;16314:19:8;;16170:185;16314:19;304:5711:77;16314:19:8;;;;15938:460;304:5711:77;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;304:5711:77;12810:59:8;;;-1:-1:-1;;;304:5711:77;12810:59:8;;;304:5711:77;;;;;;12810:59:8;;;304:5711:77;;;;;;;;16170:185:8;;694:3:77;;16170:185:8;;;;;;:::i;:::-;304:5711:77;;-1:-1:-1;;;12810:59:8;;304:5711:77;;12810:59:8;;304:5711:77;;;;;;;;;:::i;16314:19:8:-;;;;;;;;;;;;;;:::i;:::-;;;;;304:5711:77;-1:-1:-1;;;523:5:65;;6854:12:8;304:5711:77;523:5:65;304:5711:77;;523:5:65;15698:126:8;13208:33;;:::i;:::-;;15698:126;;304:5711:77;-1:-1:-1;;;304:5711:77;;;;;;;;2670:38;;;;;:::i;:::-;304:5711;;2670:38;;;;2629:534;3016:9;;;:::i;:::-;304:5711;2998:27;;-1:-1:-1;;;;;;;;;;;2988:38:77;;;;304:5711;;1590:14:0;;;;2988:38:77;;304:5711;2988:38;;304:5711;2988:38;;304:5711;2988:38;-1:-1:-1;;;;;;;;;;;2988:38:77;;;;;;;;2629:534;304:5711;;;;;27501:38:3;;1590:14:0;;;;27501:38:3;;3060:4:77;304:5711;27501:38:3;;304:5711:77;;27501:38:3;;;304:5711:77;27501:38:3;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;;6854:22:8;;:::i;:::-;27524:10:3;304:5711:77;;7009:9:8;304:5711:77;;;7009:9:8;304:5711:77;7505:10:8;304:5711:77;-1:-1:-1;;;304:5711:77;;;;;;;;;;;7505:10:8;304:5711:77;;:::i;:::-;;;860:68;304:5711;;;;6854:12:8;304:5711:77;;7009:9:8;304:5711:77;;1590:14:0;15610:11:8;304:5711:77;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;304:5711:77;;;;;;27635:8:3;304:5711:77;;;;;15703:15:8;;304:5711:77;;;;;;;;;;;;;;;;15735:37:8;;;;;;;;;;:::i;:::-;304:5711:77;15725:48:8;;304:5711:77;;;;;15610:11:8;304:5711:77;;;15703:77:8;304:5711:77;;15702:78:8;15698:126;;2629:534:77;-1:-1:-1;;;;;304:5711:77;;;;;;27635:8:3;304:5711:77;;;;;;;;;;15889:37:8;;304:5711:77;;;;;;15889:37:8;;;304:5711:77;15889:37:8;;;;;:::i;:::-;304:5711:77;15879:48:8;;304:5711:77;;;;;;;;15943:15:8;304:5711:77;15943:15:8;;304:5711:77;15961:16:8;304:5711:77;15961:16:8;;304:5711:77;15943:34:8;;;;:::i;:::-;15938:460;;2629:534:77;304:5711;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;304:5711:77;;;16424:32:8;;304:5711:77;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;2629:534:77;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;304:5711:77;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;304:5711:77;;;16587:43:8;;304:5711:77;12810:59:8;;;304:5711:77;;;;;;;;12656:92:8;;;;12810:59;;;304:5711:77;;;12810:59:8;304:5711:77;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;2629:534:77;16678:31:8;;;;;:::i;:::-;16724:8;;;304:5711:77;;;16724:29:8;;2629:534:77;16720:176:8;;;;14785:4;;;;;;:::i;:::-;304:5711:77;1590:14:0;;304:5711:77;;-1:-1:-1;;;3097:55:77;;-1:-1:-1;;;;;304:5711:77;;;;3097:55;;304:5711;;;;;;;;;;;3097:55;-1:-1:-1;;;;;;;;;;;3097:55:77;;;;;;;;2629:534;;;;3097:55;;;304:5711;3097:55;304:5711;3097:55;;;;;;;:::i;:::-;;;;;16724:29:8;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;304:5711:77;;16587:43:8;;;;16424:32;;;;;304:5711:77;16424:32:8;;304:5711:77;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;;;;:::i;:::-;16021:3;694::77;16021::8;694::77;;;;304:5711;;;;;;;-1:-1:-1;;;16314:19:8;;304:5711:77;;;;;16314:19:8;;304:5711:77;;;16314:19:8;304:5711:77;;;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;12810:59;16170:185;16314:19;304:5711:77;16314:19:8;;;;;15938:460;304:5711:77;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;304:5711:77;12810:59:8;;;-1:-1:-1;;;304:5711:77;12810:59:8;;;304:5711:77;;;;;;12810:59:8;;;304:5711:77;;;;;;;;16170:185:8;;694:3:77;;16170:185:8;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;;;;;16314:19;;;-1:-1:-1;16314:19:8;;;;;;;;;:::i;:::-;;;;;304:5711:77;;1590:14:0;304:5711:77;;1590:14:0;;;;304:5711:77;-1:-1:-1;;;523:5:65;;6854:12:8;304:5711:77;523:5:65;304:5711:77;;523:5:65;15698:126:8;13208:33;;:::i;:::-;;15698:126;;2988:38:77;;;;;:::i;:::-;304:5711;;2988:38;;;;304:5711;-1:-1:-1;;;304:5711:77;;;;;;;;2583:35;;;;;;;;;;;;;:::i;:::-;;;;2451:38;;;;304:5711;;;;;;;;;;;;;2883:26:5;304:5711:77;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;2883:26:5;304:5711:77;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;-1:-1:-1;;;;;304:5711:77;;;;;860:68;304:5711;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;1590:14:0;304:5711:77;1590:14:0;304:5711:77;;;;;;1590:14:0;304:5711:77;1590:14:0;;304:5711:77;;;;;;;1590:14:0;304:5711:77;1590:14:0;;304:5711:77;;;;;;;1590:14:0;304:5711:77;1590:14:0;;304:5711:77;;;;;;;1590:14:0;304:5711:77;1590:14:0;;304:5711:77;;;;;;;1590:14:0;304:5711:77;1590:14:0;;304:5711:77;;;;;;;1590:14:0;304:5711:77;1590:14:0;;304:5711:77;;;;;;;1590:14:0;304:5711:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;694:3;304:5711;;-1:-1:-1;;694:3:77;304:5711;694:3;;;304:5711;1932:13;;1947:19;694:3;1947:19;;;;-1:-1:-1;694:3:77;1590:14:0;304:5711:77;;-1:-1:-1;;;2066:40:77;;304:5711;;;-1:-1:-1;;;;;304:5711:77;;;;;;2066:40;;304:5711;2066:40;;;:::i;:::-;;;;;;;;;;;;;;1927:102;2122:13;;2137:23;694:3;2137:23;;;;304:5711;;;2162:3;2190:9;;;;:::i;:::-;;694:3;;;;;;;;;;2306:13;2217;2181:54;2190:41;2297:38;2217:13;;694:3;2217:13;;;;:::i;:::-;;2190:41;;:::i;:::-;694:3;;2181:54;:::i;:::-;2249:34;2258:9;;;;;:::i;2249:34::-;2306:13;;:::i;2297:38::-;694:3;2122:13;;2066:40;;;;;;;;;;;;;:::i;:::-;;;;1968:3;523:5:65;;;2000:4:77;523:5:65;2000:4:77;523:5:65;;;;;;;;;;;;;2011:7:77;523:5:65;;;;;;;1987:31:77;694:3;1987:31;;;;;:::i;:::-;304:5711;694:3;1932:13;;;;523:5:65;-1:-1:-1;;;523:5:65;;;304:5711:77;523:5:65;;304:5711:77;523:5:65;304:5711:77;;;;;;;;;;;;;;;;;;3038:18:5;304:5711:77;;;;;;;3038:18:5;304:5711:77;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;304:5711:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3331:16:5;304:5711:77;;;;;;;3331:16:5;304:5711:77;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;304:5711:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3485:19:5;304:5711:77;;;;:::i;:::-;;;;;;;:::i;:::-;;;;3485:19:5;304:5711:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;860:68;304:5711;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;304:5711:77;;;860:68;304:5711;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2563:16:5;304:5711:77;;;;;;;2563:16:5;304:5711:77;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;304:5711:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5968:38;304:5711;;;;;;:::i;:::-;5901:1;304:5711;;;;;;;;-1:-1:-1;;;5913:45:77;;;:::i;:::-;304:5711;;1590:14:0;-1:-1:-1;;;;;304:5711:77;5968:38;:::i;304:5711::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;694:3;304:5711;;-1:-1:-1;;694:3:77;;;304:5711;694:3;;;304:5711;4475:13;4490:19;694:3;4490:19;;;;304:5711;;;;;;;:::i;:::-;694:3;304:5711;;;;;;;;;4677:13;;;4692:19;694:3;4692:19;;;;5012:13;;694:3;5027:23;694:3;5027:23;;;;304:5711;;;5052:3;5080:9;;;;:::i;:::-;;304:5711;694:3;;;;;;;;;5226:53;5108:13;:30;5217:66;5108:13;;694:3;5108:13;;;;:::i;5217:66::-;694:3;5012:13;;4713:3;304:5711;;-1:-1:-1;;;4745:13:77;;304:5711;694:3;304:5711;;;4745:13;-1:-1:-1;;;;;;;;;;;4745:13:77;;;;;;;;;;;4713:3;4799:10;;;;;:::i;:::-;304:5711;;;;;694:3;27501:38:3;;1590:14:0;;;;27501:38:3;;4792:4:77;27501:38:3;;;304:5711:77;27501:38:3;;;;;;;:::i;:::-;27484:56;;-1:-1:-1;;;;;;;;;;;27484:56:3;;;27568:30;27484:56;;:::i;27568:30::-;;6854:22:8;;:::i;:::-;27524:10:3;304:5711:77;;7009:9:8;304:5711:77;;;7009:9:8;304:5711:77;7505:10:8;304:5711:77;-1:-1:-1;;;304:5711:77;;;;;;;694:3;304:5711;;;7505:10:8;304:5711:77;;:::i;:::-;;;6854:12:8;304:5711:77;7009:9:8;304:5711:77;15610:11:8;304:5711:77;;;-1:-1:-1;;;;;304:5711:77;;;1590:14:0;15653:34:8;;:::i;:::-;-1:-1:-1;;;;;304:5711:77;;;;;;27635:8:3;304:5711:77;;;;;15703:15:8;;304:5711:77;;;;;;;;694:3;304:5711;;;;;;694:3;15735:37:8;;;;;;;;;;:::i;:::-;304:5711:77;15725:48:8;;304:5711:77;;694:3;304:5711;;15610:11:8;304:5711:77;;;15703:77:8;304:5711:77;;15702:78:8;15698:126;;4713:3:77;-1:-1:-1;;;;;304:5711:77;;;;;;27635:8:3;304:5711:77;;;;;;;;694:3;304:5711;15889:37:8;;304:5711:77;;;;;;15889:37:8;;;694:3:77;15889:37:8;;;;;:::i;:::-;304:5711:77;15879:48:8;;304:5711:77;;694:3;304:5711;;;;694:3;15943:15:8;;304:5711:77;15961:16:8;7009:9;15961:16;;304:5711:77;15943:34:8;;;;:::i;:::-;15938:460;;4713:3:77;304:5711;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;304:5711:77;;;16424:32:8;;304:5711:77;;;;;;;;;;;694:3;304:5711;;;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;;;;;4713:3:77;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;16587:43;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;304:5711:77;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;304:5711:77;;;16587:43:8;;304:5711:77;12810:59:8;;;304:5711:77;;;;;;;;12656:92:8;;;;12810:59;;;304:5711:77;;;12810:59:8;304:5711:77;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;;;;;;;;4713:3:77;16678:31:8;;;;:::i;:::-;16724:8;;;304:5711:77;;;16724:29:8;;4713:3:77;16720:176:8;;;;14785:4;;;;;;:::i;:::-;694:3:77;1590:14:0;;4824:50:77;;694:3;-1:-1:-1;;;;;304:5711:77;4863:10;;;;:::i;4824:50::-;;;;-1:-1:-1;;;;;;;;;;;4824:50:77;;;;;;;;4713:3;-1:-1:-1;694:3:77;1590:14:0;304:5711:77;;4901:48;;;;-1:-1:-1;;;;;304:5711:77;4938:10;;;;:::i;:::-;304:5711;;;1590:14:0;;;;;;;;;4901:48:77;;;304:5711;4901:48;;;:::i;:::-;;;;;;;;;;;;;;4713:3;4889:60;;;;;:::i;:::-;;;;;;:::i;:::-;;304:5711;;1590:14:0;;;;4963:23:77;;304:5711;4963:23;;304:5711;694:3;4963:23;27501:38:3;4963:23:77;;-1:-1:-1;;;;;;;;;;;4963:23:77;;;;;;;694:3;4963:23;;;4713:3;;694;4677:13;;4963:23;;;694:3;4963:23;;;;;;;;;:::i;:::-;;;;;4901:48;;;;;;;;;;;;;;:::i;:::-;;;;4824:50;;;694:3;4824:50;;;;;;;;;:::i;:::-;;;16724:29:8;16736:17;;;-1:-1:-1;16724:29:8;;;;16587:43;;;;;:::i;:::-;304:5711:77;;16587:43:8;;;;16424:32;;;;;694:3:77;16424:32:8;;;;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;;;;;;:::i;:::-;16021:3;694::77;16021::8;694::77;;;;304:5711;;;;;;;-1:-1:-1;;;16314:19:8;;694:3:77;304:5711;;;;16314:19:8;;304:5711:77;;;16314:19:8;;304:5711:77;27501:38:3;304:5711:77;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;694:3:77;16314:19:8;;12810:59;16314:19;16170:185;16314:19;;;;304:5711:77;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;304:5711:77;12810:59:8;;;-1:-1:-1;;;304:5711:77;12810:59:8;;;304:5711:77;;;;;;12810:59:8;;;304:5711:77;;;;;;;;16170:185:8;;694:3:77;;16170:185:8;;;;;;:::i;:::-;16103:21;;12810:59;;;15938:460;;;;;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;4745:13:77;;;;694:3;4745:13;;;;;;;;;1590:14:0;4745:13:77;;;:::i;:::-;;;1590:14:0;;;;;4745:13:77;;;;;;;-1:-1:-1;4745:13:77;;304:5711;694:3;304:5711;;;:::i;:::-;;;;;;;;;;4511:3;523:5:65;4543:4:77;523:5:65;4543:4:77;523:5:65;;;;;;;;;;;;;4554:7:77;523:5:65;;;;;;;4530:31:77;694:3;4530:31;;;;;:::i;:::-;304:5711;694:3;4475:13;;304:5711;;;;;;;-1:-1:-1;;304:5711:77;;;;;;-1:-1:-1;;;796:20:77;;1590:14:0;304:5711:77;796:20;;1590:14:0;;;;;304:5711:77;-1:-1:-1;;;304:5711:77;;;1590:14:0;-1:-1:-1;304:5711:77;796:20;304:5711;-1:-1:-1;;;;;;;;;;;796:20:77;;;;;;;1590:14:0;796:20:77;1590:14:0;796:20:77;304:5711;796:20;;;304:5711;;;;1590:14:0;;;;;;;776:52:77;;304:5711;;776:52;;1590:14:0;304:5711:77;1590:14:0;;;;:::i;:::-;758:8:77;1590:14:0;;;304:5711:77;776:52;;304:5711;-1:-1:-1;;;;;;;;;;;776:52:77;;;;;;;;304:5711;;;;860:68;;;;;;;;-1:-1:-1;;;;;860:68:77;;;;;1590:14:0;860:68:77;;;;;;885:42;304:5711;;860:68;;;304:5711;860:68;;;;;1590:14:0;;;-1:-1:-1;;;;;;1590:14:0;-1:-1:-1;;;;;304:5711:77;;;;1590:14:0;;;;;-1:-1:-1;;;;;;;;;;;939:50:77;;;;304:5711;;1590:14:0;;;;939:50:77;;304:5711;939:50;;304:5711;;1590:14:0;;;;;304:5711:77;1590:14:0;;304:5711:77;-1:-1:-1;;;796:20:77;304:5711;;1590:14:0;304:5711:77;939:50;;;;-1:-1:-1;;;;;;;;;;;939:50:77;;;;;;;;304:5711;999:22;-1:-1:-1;;;;;;;;;;;999:22:77;;;;304:5711;;;1590:14:0;;;999:22:77;;456:42;304:5711;999:22;;304:5711;;1590:14:0;456:42:77;;;304:5711;;456:42;;304:5711;-1:-1:-1;;;796:20:77;304:5711;;456:42;999:22;;939:50;999:22;;-1:-1:-1;;;;;;;;;;;999:22:77;;;;;;;;304:5711;1031:22;;-1:-1:-1;;;;;;;;;;;1031:22:77;;;;304:5711;;;1590:14:0;;;1031:22:77;;-1:-1:-1;;;;;;;;;;;304:5711:77;1031:22;;304:5711;;1590:14:0;528:42:77;;;304:5711;;528:42;;304:5711;-1:-1:-1;;;796:20:77;304:5711;;528:42;1031:22;;939:50;1031:22;;-1:-1:-1;;;;;;;;;;;1031:22:77;;;;;;;;304:5711;1063:42;;-1:-1:-1;;;;;;;;;;;1063:42:77;;;;304:5711;;;1590:14:0;;;1063:42:77;;610;304:5711;1063:42;;304:5711;;1590:14:0;610:42:77;;;;304:5711;610:42;;304:5711;-1:-1:-1;;;796:20:77;304:5711;;610:42;1063;;939:50;1063:42;;-1:-1:-1;;;;;;;;;;;1063:42:77;;;;;;;;304:5711;;1031:22;;;;;:::i;:::-;304:5711;;1031:22;;;;999;;;;;:::i;:::-;304:5711;;999:22;;;;939:50;;;;304:5711;939:50;;:::i;:::-;304:5711;939:50;;;;304:5711;;1590:14:0;304:5711:77;1590:14:0;;;;;860:68:77;304:5711;;;;;;;;1590:14:0;304:5711:77;;776:52;1590:14:0;776:52:77;;1590:14:0;776:52:77;;;;;;1590:14:0;776:52:77;;;:::i;:::-;;;1590:14:0;;;;;776:52:77;;;;;-1:-1:-1;776:52:77;;796:20;;;;;;304:5711;796:20;;;;;;:::i;:::-;;;;304:5711;;;;;;-1:-1:-1;;304:5711:77;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;304:5711:77;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;304:5711:77;;;;;;;:::o;:::-;;;694:3;;304:5711;;;;;;;;-1:-1:-1;;;;;304:5711:77;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;304:5711:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;304:5711:77;;;;;;;;-1:-1:-1;;304:5711:77;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;860:68;304:5711;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;304:5711:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;7505:10:8;304:5711:77;;;;;;7505:10:8;-1:-1:-1;304:5711:77;;-1:-1:-1;304:5711:77;;;-1:-1:-1;304:5711:77;:::o;:::-;;;;;;;;;;;;;534:59:65;304:5711:77;;;;;;534:59:65;-1:-1:-1;304:5711:77;;-1:-1:-1;304:5711:77;;;-1:-1:-1;304:5711:77;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;304:5711:77;;;;;;;;-1:-1:-1;304:5711:77;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;304:5711:77;;;;;;;;;:::o;523:5:65:-;;;;;;;;;;;;;;;;:::o;:::-;304:5711:77;;;523:5:65;;;;;;;;;;;;;;;:::o;:::-;304:5711:77;;;523:5:65;;;;;;;;8534:180;304:5711:77;;523:5:65;;;;;;;;;;;;;;;8690:17;8655:52;8690:17;;304:5711:77;8655:52:65;;:::i;:::-;8534:180;:::o;1590:14:0:-;-1:-1:-1;;;;;1590:14:0;;;;304:5711:77;;-1:-1:-1;;304:5711:77;1590:14:0;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;1590:14:0;;;;;;;;;;;;;;;;;;;:::i;:::-;304:5711:77;;;;;;;:::i;:::-;1590:14:0;;;;;;;;;;;;-1:-1:-1;1590:14:0;;;;;;;;304:5711:77;;;;;1590:14:0;:::o;:::-;;;;;;;;;;;:::o;:::-;6854:12:8;1590:14:0;;-1:-1:-1;;;;;;1590:14:0;-1:-1:-1;;;;;;;;;;;1590:14:0;;;:::o;304:5711:77:-;;;;;;;;;:::o;:::-;;;2641:13;304:5711;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;694:3::-;;;;;;;;;;;304:5711;;;;:::i;:::-;694:3;;;1590:14:0;;;694:3:77;;;1590:14:0;694:3:77;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;694:3:77;;;;;;;;;;;;;;;;;;:::i;:::-;304:5711;;;;;;;:::i;:::-;694:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;304:5711;694:3;;;;;:::i;:::-;;;;;;;;;;;304:5711;694:3;;;304:5711;;;;;;456:42;694:3;;;304:5711;-1:-1:-1;;;;;;;;;;;694:3:77;;;304:5711;694:3;;;;;304:5711;;;;;;;;694:3;;;;;;;;;;;;:::o;:::-;;;304:5711;;694:3;;;;;304:5711;;;;694:3;;;;;304:5711;694:3;;;;;;;304:5711;;;860:68;304:5711;;;;;694:3;;;304:5711;860:68;304:5711;;;;;694:3;;;304:5711;694:3;;;;;304:5711;;;;;;;;694:3;;;;;;;;;;;;:::o;:::-;;;304:5711;;694:3;;;;;304:5711;;;;694:3;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;304:5711::-;;;;;;;;;;;-1:-1:-1;;;;;304:5711:77;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;1590:14:0;;304:5711:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;1590:14:0;;304:5711:77;;;;;1590:14:0;304:5711:77;;;;;;:::i;:::-;;;;;;:::o;:::-;-1:-1:-1;;;304:5711:77;;-1:-1:-1;;;;;;;;;;;304:5711:77;;;;456:42;304:5711;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;304:5711:77;;;;;-1:-1:-1;304:5711:77;1243:204:1;1302:7;304:5711:77;;;;;;;1325:14:1;:::o;1298:143::-;304:5711:77;;;1590:14:0;;;1377:39:1;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;304:5711:77;192:59:1;;;;;;304:5711:77;192:59:1;1377:39;;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;;;;;304:5711:77;1377:39:1;;;1298:143;1377:53;;;1370:60;:::o;1377:39::-;;;192:59;1377:39;;192:59;1377:39;;;;;;1590:14:0;1377:39:1;;;:::i;:::-;;;1590:14:0;;;;;1377:39:1;;;;;;-1:-1:-1;1377:39:1;;304:5711:77;;;;;;;;;;;-1:-1:-1;;;;;304:5711:77;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;935:818:65;;;;-1:-1:-1;;;;;304:5711:77;;1126:10:65;935:818;1126:10;:::i;:::-;304:5711:77;;;1590:14:0;;;;1102:59:65;;;;;304:5711:77;1134:1:65;304:5711:77;;;;1134:1:65;304:5711:77;;;;1134:1:65;1102:59;;;;;;;;;;;1075:134;1102:59;1134:1;1102:59;;;935:818;1075:134;;:::i;:::-;1074:135;1224:13;1134:1;1259:3;304:5711:77;;1239:18:65;;;;;1322:10;;;;:::i;:::-;304:5711:77;;;1590:14:0;;;;1304:29:65;;1102:59;1304:29;;304:5711:77;1134:1:65;1304:29;;;;;;;;;;;;;1134:1;1304:29;;;1259:3;-1:-1:-1;1442:1:65;;304:5711:77;1708:14:65;;1396:17;304:5711:77;-1:-1:-1;;;;;1354:9:65;304:5711:77;1354:9:65;:::i;:::-;304:5711:77;;1396:17:65;:::i;:::-;1477;304:5711:77;;;;;;1435:9:65;;;:::i;1477:17::-;1588:14;1554:10;;;;;:::i;:::-;304:5711:77;;;;;;1566:9:65;;;:::i;:::-;304:5711:77;;;;;;;1577:9:65;;;:::i;:::-;304:5711:77;;1588:14:65;;;:::i;:::-;1674:10;;;;:::i;:::-;304:5711:77;;;;;;;1686:9:65;;;:::i;:::-;304:5711:77;;;1697:9:65;304:5711:77;;;;;1697:9:65;;:::i;:::-;304:5711:77;;1708:14:65;;;:::i;:::-;694:3:77;1224:13:65;;1304:29;;;;;;1134:1;1304:29;;;;;;:::i;:::-;;;304:5711:77;;;;;;;;;;;-1:-1:-1;;;;;304:5711:77;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;1175:24:65;304:5711:77;;;;;;;;;;;;;;;;;;;;1304:29:65;;;1442:1;1304:29;;304:5711:77;;;;-1:-1:-1;304:5711:77;;-1:-1:-1;;;;;304:5711:77;;;;;;;;;;;;;;;;;;;1239:18:65;;;;;;;935:818::o;1102:59::-;;;;;;1134:1;1102:59;;;;;;:::i;:::-;;;;304:5711:77;;;;;;;:::i;:::-;;-1:-1:-1;304:5711:77;;-1:-1:-1;304:5711:77;;;;;;;;;;;:::i;:::-;-1:-1:-1;304:5711:77;;-1:-1:-1;304:5711:77;;;;;;:::o;426:547:59:-;688:35;426:547;637:17;619:35;304:5711:77;;637:17:59;;;304:5711:77;619:35:59;;:::i;:::-;304:5711:77;;706:17:59;;304:5711:77;688:35:59;;:::i;:::-;769:30;;;;;;801:8;;304:5711:77;801:8:59;:::o;765:201::-;867:29;;;;905:1;898:8;:::o;863:103::-;-1:-1:-1;;2868:17:77;957:9:59:o;2866:108:1:-;-1:-1:-1;;;;;;;;;;;2943:24:1;;;;304:5711:77;;1590:14:0;;;;2943:24:1;;;;;304:5711:77;694:3;304:5711;;;;-1:-1:-1;2943:24:1;;;-1:-1:-1;;;;;;;;;;;2943:24:1;;;;;;;;2866:108;:::o;2943:24::-;-1:-1:-1;2943:24:1;;;:::i;:::-;2866:108::o;13112:110::-;-1:-1:-1;;;;;;;;;;;13191:24:1;;;;304:5711:77;;1590:14:0;;;;13191:24:1;;;;;304:5711:77;;;;;;;13191:24:1;;;-1:-1:-1;;;;;;;;;;;13191:24:1;;;;;;;;13112:110;:::o;2270:::-;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;304:5711:77;;1590:14:0;;;;2349:24:1;;;;;304:5711:77;;;;;-1:-1:-1;2349:24:1;;;-1:-1:-1;;;;;;;;;;;2349:24:1;;;;;;;;2270:110;:::o;8720:323:65:-;304:5711:77;8906:3:65;304:5711:77;;8881:23:65;;;;;8929:15;;;;:::i;:::-;304:5711:77;;;;;;;1175:24:65;8929:29;8925:79;;694:3:77;;8866:13:65;;8925:79;8978:11;;694:3:77;8978:11:65;:::o;8881:23::-;;;304:5711:77;8720:323:65;:::o;:::-;304:5711:77;8906:3:65;304:5711:77;;8881:23:65;;;;;8929:15;;;;:::i;:::-;304:5711:77;;;;;;;2531:24:65;8929:29;8925:79;;694:3:77;;8866:13:65;;8720:323;304:5711:77;8906:3:65;304:5711:77;;8881:23:65;;;;;8929:15;;;;:::i;:::-;304:5711:77;;;;;;;6005:21:65;8929:29;8925:79;;694:3:77;;8866:13:65;;5926:434:58;304:5711:77;;6065:47:58;;;;1590:14:0;;;;6065:47:58;;860:68:77;304:5711;;;;;6065:47:58;;;;;304:5711:77;2868:17;;304:5711;;;;6065:47:58;;;;;;;:::i;:::-;8511:25;;-1:-1:-1;;;;;304:5711:77;;;-1:-1:-1;;;;;304:5711:77;8511:25:58;;;;;:::i;:::-;8553:81;;;5926:434;8553:127;;;;5926:434;6127:45;;6123:231;;5926:434;;;:::o;6123:231::-;6232:43;6330:12;304:5711:77;;;1590:14:0;;;;6065:47:58;6232:43;;;6065:47;6232:43;;304:5711:77;-1:-1:-1;6065:47:58;304:5711:77;;;6065:47:58;6232:43;;;6065:47;6232:43;;:::i;:::-;;;:::i;:::-;6330:12;:::i;8553:127::-;8650:26;;;:30;;8553:127;;;:81;304:5711:77;;;;-1:-1:-1;8577:22:58;;;:56;;;;8553:81;;;;;;;8577:56;8603:30;;;6065:47;8603:30;;;;;;;;:::i;:::-;8577:56;;;;304:5711:77;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;304:5711:77;;;;;;;;;:::o;1911:4479:65:-;;;;;;;;;;304:5711:77;;-1:-1:-1;;;2117:44:65;;;;;;;304:5711:77;-1:-1:-1;;;;;304:5711:77;;;;;;;;;;;;;1911:4479:65;;;2117:44;304:5711:77;;;;;2117:44:65;;;;;304:5711:77;2117:44:65;-1:-1:-1;;;;;304:5711:77;;2117:44:65;;;;;;:47;:44;;;;;1911:4479;2117:47;;:::i;:::-;304:5711:77;;;1590:14:0;304:5711:77;1590:14:0;;;304:5711:77;;2174:61:65;;304:5711:77;;;;:::i;:::-;;;;;1590:14:0;304:5711:77;;;-1:-1:-1;;;304:5711:77;;;;2174:61:65;;;:::i;:::-;1590:14:0;;304:5711:77;2117:44:65;304:5711:77;;44640:78:15;304:5711:77;;;1590:14:0;;304:5711:77;;:::i;:::-;;;;;1590:14:0;304:5711:77;;;-1:-1:-1;;;304:5711:77;;;;;;44640:78:15;;;;;;1590:14:0;44640:78:15;;;304:5711:77;44640:78:15;;;304:5711:77;;;;;;:::i;:::-;-1:-1:-1;;;;;304:5711:77;;;;;;;;;;;;;;;;;;;44640:78:15;-1:-1:-1;;44640:78:15;;;;;;:::i;:::-;1222:159;304:5711:77;;1222:159:15;;591:42;1222:159;;-1:-1:-1;304:5711:77;;-1:-1:-1;;;2467:50:65;;;;2117:44;2467:50;;304:5711:77;-1:-1:-1;;;;;304:5711:77;;;;;;;;;;;;;2117:44:65;304:5711:77;;;;;2467:50:65;304:5711:77;;-1:-1:-1;;;;;304:5711:77;;2467:50:65;;;;;;2440:125;2467:50;2117:44;2467:50;;;1911:4479;2440:125;;:::i;:::-;304:5711:77;;;;;;;;:::i;:::-;2117:44:65;304:5711:77;;694:3;304:5711;1590:14:0;694:3:77;;304:5711;8365:37:65;;;2117:44;8365:37;8352:50;;;:::i;:::-;304:5711:77;8433:4:65;523:5;;;8412:25;;;:::i;:::-;304:5711:77;;;8468:1:65;304:5711:77;;;;1590:14:0;;304:5711:77;;523:5:65;;8420:1;523:5;304:5711:77;;;;8487:1:65;304:5711:77;;;;;;;;;;;;;1590:14:0;;;2822:49:65;;2117:44;2822:49;;;;;;;;2117:44;2822:49;;;:::i;:::-;;304:5711:77;;-1:-1:-1;;;;;304:5711:77;;2822:49:65;;;;;;;2117:44;2822:49;;;8365:37;2917:9;2903:24;2917:9;;;:::i;:::-;;2903:24;:::i;:::-;304:5711:77;;-1:-1:-1;;694:3:77;;;2868:17;694:3;;;;2941:40:65;2955:25;2881:174;2955:25;;;:::i;2941:40::-;1590:14:0;;304:5711:77;;;1590:14:0;304:5711:77;;;;:::i;:::-;;;;;1590:14:0;304:5711:77;;;-1:-1:-1;;;304:5711:77;;;;2881:174:65;:::i;:::-;3152:24;3166:9;;;:::i;3152:24::-;304:5711:77;;-1:-1:-1;;694:3:77;;;;;;;304:5711;12247:66:15;2117:44:65;3204:25;3190:40;3204:25;;;;;:::i;3190:40::-;1590:14:0;;304:5711:77;;;;;;;;;:::i;:::-;;;;;1590:14:0;304:5711:77;;;-1:-1:-1;;;304:5711:77;;;;;;12247:66:15;;;;;;1590:14:0;12247:66:15;;;1590:14:0;;44640:78:15;12247:66;;304:5711:77;;;;;;:::i;:::-;;;;;;;;;;12247:66:15;694:3:77;;12247:66:15;;;;;;:::i;:::-;1222:159;304:5711:77;;1222:159:15;;591:42;1222:159;;-1:-1:-1;1590:14:0;;304:5711:77;;3251:53:65;;304:5711:77;;;;:::i;:::-;;;;;1590:14:0;304:5711:77;;;-1:-1:-1;;;304:5711:77;;;;3251:53:65;:::i;:::-;3314:60;3323:9;;;:::i;:::-;;304:5711:77;;;1590:14:0;;;304:5711:77;;;;;;;;:::i;:::-;;;;;1590:14:0;304:5711:77;;;3314:60:65;:::i;:::-;3384:64;1590:14:0;3393:9:65;;;:::i;:::-;;:21;304:5711:77;;;;;;;;;;;:::i;:::-;;;;;1590:14:0;304:5711:77;;;3384:64:65;:::i;:::-;3480:24;3494:9;;;:::i;3480:24::-;;;304:5711:77;;;;3514:49:65;;304:5711:77;;;;:::i;:::-;;;;-1:-1:-1;;;1590:14:0;304:5711:77;;;3514:49:65;;;;:::i;:::-;304:5711:77;;:::i;:::-;-1:-1:-1;304:5711:77;;-1:-1:-1;;694:3:77;;;;;;;3635:27:65;;;;:::i;:::-;304:5711:77;;523:5:65;;;;;;;;2117:44;304:5711:77;;;;1590:14:0;27501:38:3;;1590:14:0;;;;27501:38:3;;3624:4:65;44640:78:15;27501:38:3;;304:5711:77;44640:78:15;27501:38:3;;;304:5711:77;27501:38:3;;:::i;:::-;27484:56;;;;;;27568:30;27484:56;;:::i;27568:30::-;-1:-1:-1;6854:12:8;1590:14:0;;-1:-1:-1;;;;;;1590:14:0;-1:-1:-1;;;;;304:5711:77;;1590:14:0;;;7009:9:8;304:5711:77;;-1:-1:-1;;304:5711:77;27524:10:3;304:5711:77;;;7505:10:8;304:5711:77;-1:-1:-1;;;304:5711:77;;;;;;;8420:1:65;304:5711:77;;;7505:10:8;304:5711:77;;:::i;:::-;;;860:68;304:5711;;;;6854:12:8;304:5711:77;;7009:9:8;304:5711:77;1590:14:0;;15610:11:8;304:5711:77;15653:34:8;;;:::i;:::-;-1:-1:-1;;;;;304:5711:77;;;;;;27635:8:3;304:5711:77;;;;;15703:15:8;;304:5711:77;;;;;;2117:44:65;304:5711:77;1590:14:0;304:5711:77;;;2117:44:65;304:5711:77;;;;1590:14:0;15735:37:8;;;;;;;;;;:::i;:::-;304:5711:77;15725:48:8;;2117:44:65;304:5711:77;1590:14:0;304:5711:77;;8487:1:65;304:5711:77;;2117:44:65;304:5711:77;15703:77:8;304:5711:77;;15702:78:8;15698:126;;8365:37:65;-1:-1:-1;;;;;304:5711:77;;;;;;27635:8:3;304:5711:77;;;;;;2117:44:65;304:5711:77;1590:14:0;304:5711:77;15889:37:8;;304:5711:77;;2117:44:65;304:5711:77;;;;;15889:37:8;;;1590:14:0;15889:37:8;;;;;:::i;:::-;304:5711:77;15879:48:8;;2117:44:65;304:5711:77;1590:14:0;304:5711:77;;;2117:44:65;304:5711:77;8420:1:65;15943:15:8;;304:5711:77;15961:16:8;8468:1:65;15961:16:8;;304:5711:77;15943:34:8;;;;:::i;:::-;15938:460;;8365:37:65;304:5711:77;;;;;-1:-1:-1;;;16424:32:8;;-1:-1:-1;;;;;304:5711:77;;2117:44:65;16424:32:8;;304:5711:77;;;;;;;;;;;1590:14:0;304:5711:77;;;-1:-1:-1;;;;;;;;;;;16424:32:8;;;;;;;2117:44:65;16424:32:8;;;8365:37:65;-1:-1:-1;12275:113:8;;;;;;;-1:-1:-1;;12275:113:8;;;12677:42;12657:62;;-1:-1:-1;;;;;;;;;;;16587:43:8;;;;304:5711:77;;;-1:-1:-1;;;16587:43:8;;-1:-1:-1;;;;;304:5711:77;;2117:44:65;16587:43:8;;304:5711:77;12810:59:8;;;304:5711:77;;;;;523:5:65;;304:5711:77;;;12656:92:8;12810:59;;;304:5711:77;-1:-1:-1;304:5711:77;12810:59:8;304:5711:77;-1:-1:-1;;;;;;;;;;;;16587:43:8;;;;;;;;8365:37:65;-1:-1:-1;7009:9:8;304:5711:77;1590:14:0;;;1364:48:8;44640:78:15;1392:19:8;27635:8:3;1392:19:8;:::i;:::-;304:5711:77;;;1364:48:8;;;;;;304:5711:77;;;;;;;;;;;;;;;;;;;-1:-1:-1;;304:5711:77;;;;1364:48:8;;694:3:77;;1364:48:8;;;;;;:::i;:::-;6854:12;304:5711:77;-1:-1:-1;;1458:29:8;;-1:-1:-1;;;;1458:29:8;-1:-1:-1;;;;;304:5711:77;1458:29:8;;;;;;:::i;:::-;15610:11;304:5711:77;-1:-1:-1;;;;;523:5:65;;;;;;-1:-1:-1;;10974:11:8;;;;304:5711:77;;11010:29:8;;;;;1590:14:0;11010:13:8;;1590:14:0;;;11010:29:8;1590:14:0;11010:29:8;;;-1:-1:-1;;11054:13:8;;11069:7;;;;;;;;-1:-1:-1;;1563:24:8;;16724:8;;304:5711:77;;16724:29:8;;11049:106;16720:176;;;14785:4;;;;;:::i;:::-;304:5711:77;;;1590:14:0;;;3697:13:65;;1590:14:0;2117:44:65;;;;;-1:-1:-1;;;;;;;;;;;3697:13:65;;;;;;2117:44;;3697:13;;;;11049:106:8;-1:-1:-1;8420:1:65;3761:3;304:5711:77;;3741:18:65;;;;;1222:159:15;3878:14:65;304:5711:77;12952:65:15;3878:14:65;;;:::i;:::-;3910:10;;;;;:::i;:::-;304:5711:77;;;;;;;1590:14:0;304:5711:77;1590:14:0;;304:5711:77;;:::i;:::-;;;;;1590:14:0;304:5711:77;;;-1:-1:-1;;;304:5711:77;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1590:14:0;12952:65:15;;;1590:14:0;;44640:78:15;12952:65;;304:5711:77;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;304:5711:77;;;;;;;:::i;:::-;;;;;;12952:65:15;694:3:77;;12952:65:15;;;;;;:::i;:::-;1222:159;304:5711:77;;1222:159:15;;591:42;1222:159;;;3972:24:65;3986:9;;;;:::i;3972:24::-;1222:159:15;4051:10:65;304:5711:77;12771:66:15;4051:10:65;;;;:::i;:::-;304:5711:77;;;;;;;;;;:::i;:::-;;;;;1590:14:0;304:5711:77;;;;;;12771:66:15;;;;;;1590:14:0;12771:66:15;;;1590:14:0;;44640:78:15;12771:66;;304:5711:77;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;304:5711:77;;;;;;12771:66:15;-1:-1:-1;;12771:66:15;;;;;;:::i;:::-;1222:159;304:5711:77;;1222:159:15;;591:42;1222:159;;;4093:97:65;304:5711:77;4166:10:65;;;;:::i;:::-;304:5711:77;;;;-1:-1:-1;;;4093:97:65;;;;2117:44;4093:97;;304:5711:77;-1:-1:-1;;;;;304:5711:77;;;;;;;;;;;;;-1:-1:-1;304:5711:77;;;;;;;;;;;;;;;;;;;;;4093:97:65;;2117:44;;;860:68:77;304:5711;;;;;;4093:97:65;;;;;;;2117:44;;4093:97;;;3761:3;304:5711:77;;;523:5:65;;;;;;;;;;;;;4244:52;4335:26;4286:10;523:5;4286:10;;;;:::i;:::-;304:5711:77;523:5:65;;4244:52;:::i;:::-;304:5711:77;;;4349:11:65;;4335:26;:::i;:::-;304:5711:77;4375:60:65;304:5711:77;;;;;;;;;:::i;:::-;;;;;1590:14:0;304:5711:77;;;4375:60:65;:::i;:::-;4449;304:5711:77;;;;;;;;;:::i;:::-;;;;;1590:14:0;304:5711:77;;;4449:60:65;:::i;:::-;4523:61;304:5711:77;;;;;;;;;:::i;:::-;;;;;1590:14:0;304:5711:77;;;4523:61:65;:::i;:::-;4599:1176;;;;;1590:14:0;;304:5711:77;;;5013:164:65;;4819:176;;-1:-1:-1;;4637:164:65;;304:5711:77;-1:-1:-1;304:5711:77;;;;:::i;:::-;;;;;1590:14:0;304:5711:77;;;-1:-1:-1;;;304:5711:77;;;;;4637:164:65;;:::i;:::-;1590:14:0;;304:5711:77;;;;1590:14:0;304:5711:77;;;;:::i;:::-;;;;;1590:14:0;304:5711:77;;;;;;;;;4819:176:65;;:::i;:::-;1590:14:0;;304:5711:77;;;;1590:14:0;304:5711:77;;;;:::i;:::-;;;;;1590:14:0;304:5711:77;;;-1:-1:-1;;;304:5711:77;;;;;5013:164:65;;;:::i;:::-;304:5711:77;;;1590:14:0;;;;5789:25:65;;304:5711:77;;2117:44:65;5789:25;;304:5711:77;1590:14:0;2117:44:65;44640:78:15;2117:44:65;;;-1:-1:-1;;;;;;;;;;;5789:25:65;;;;;;;8420:1;5789:25;;;4599:1176;3761:3;694::77;3726:13:65;;5789:25;;;1590:14:0;5789:25:65;;;;;;;;;:::i;:::-;;;;;;304:5711:77;;;1590:14:0;2117:44:65;;1590:14:0;;;;;4599:1176:65;5407:172;304:5711:77;5216:173:65;5597:163;304:5711:77;;;:::i;:::-;5216:173:65;;;;:::i;:::-;304:5711:77;;:::i;5407:172:65:-;304:5711:77;;;1590:14:0;304:5711:77;1590:14:0;;304:5711:77;;:::i;:::-;;;;;1590:14:0;304:5711:77;;;-1:-1:-1;;;304:5711:77;;;;;5597:163:65;;;:::i;:::-;4599:1176;;523:5;304:5711:77;;;2117:44:65;;523:5;6854:12:8;2117:44:65;523:5;44640:78:15;2117:44:65;;523:5;4093:97;;;;304:5711:77;4093:97:65;;;;;;;;;:::i;:::-;;;;3741:18;;;;;5873:3;523:5;;;;;;;5873:3;523:5;;;;;;;;304:5711:77;;;-1:-1:-1;;;5941:50:65;;2117:44;;;5941:50;;2117:44;5941:50;;304:5711:77;-1:-1:-1;;;;;304:5711:77;;;;;;;;;;;;;;2117:44:65;;304:5711:77;523:5:65;;;;;;2117:44;;304:5711:77;;;;;;;5941:50:65;;;;;;5914:122;2117:44;;;5941:50;;;3721:2104;5914:122;;:::i;:::-;;;;6590;304:5711:77;;;;;1590:14:0;;304:5711:77;;:::i;:::-;;;;;1590:14:0;304:5711:77;;;-1:-1:-1;;;304:5711:77;;;;;6590:122:65;:::i;:::-;304:5711:77;;;;;;;;;;:::i;:::-;8420:1:65;304:5711:77;;;;-1:-1:-1;;694:3:77;304:5711;1590:14:0;694:3:77;;304:5711;6783:37:65;;;:::i;:::-;304:5711:77;;;;1590:14:0;;;6835:57:65;;2117:44;;6835:57;;;;;;;;2117:44;6835:57;;;:::i;:::-;;2117:44;;;860:68:77;304:5711;;;;;;6835:57:65;;2117:44;;6835:57;;6047:287;-1:-1:-1;6831:346:65;;8420:1;6831:346;;:::i;:::-;;;;;;;;7190:97;6831:346;7259:18;304:5711:77;6831:346:65;7259:18;:::i;:::-;304:5711:77;;;;-1:-1:-1;;;7190:97:65;;;;2117:44;7190:97;;304:5711:77;-1:-1:-1;;;;;304:5711:77;;;;;;;;;;;;;;;-1:-1:-1;304:5711:77;;;;;;;;;;;;-1:-1:-1;304:5711:77;;;;;;;;;7190:97:65;2117:44;;7190:97;;;;-1:-1:-1;;;;;304:5711:77;7190:97:65;;2117:44;;7190:97;;6831:346;-1:-1:-1;7186:342:65;;8420:1;7186:342;;:::i;:::-;;;;;;;;6047:287;6344:39;304:5711:77;;;;;;;;:::i;:::-;;;;;1590:14:0;304:5711:77;;;6344:39:65;:::i;7186:342::-;7375:153;;:::i;:::-;;;;7186:342;;;;7375:153;2117:44;;1590:14:0;;304:5711:77;;;2117:44:65;;-1:-1:-1;7418:99:65;;2117:44;304:5711:77;;;;;:::i;:::-;;;;;1590:14:0;304:5711:77;;;-1:-1:-1;;;304:5711:77;;;;;7418:99:65;:::i;:::-;7375:153;;;7186:342;304:5711:77;;;-1:-1:-1;;;7302:61:65;;1590:14:0;2117:44:65;7302:61;;304:5711:77;;44640:78:15;304:5711:77;;;;;;;;-1:-1:-1;;;304:5711:77;;;;;;7302:61:65;7190:97;;;304:5711:77;7190:97:65;304:5711:77;7190:97:65;;;;;;;:::i;:::-;;;6831:346;7018:159;;:::i;:::-;;;;6831:346;;;;7018:159;2117:44;;1590:14:0;;304:5711:77;;;2117:44:65;;-1:-1:-1;7061:105:65;;2117:44;304:5711:77;;;;;:::i;:::-;;;;;1590:14:0;304:5711:77;;;;;;;;;7061:105:65;:::i;:::-;7018:159;;;6831:346;304:5711:77;;;-1:-1:-1;;;6907:99:65;;1590:14:0;2117:44:65;6907:99;;304:5711:77;;44640:78:15;304:5711:77;;;;;;;;;;;;;;;6907:99:65;6835:57;;;;2117:44;;;6835:57;;;;;;:::i;:::-;;;6047:287;1590:14:0;;304:5711:77;;;-1:-1:-1;;;7738:117:65;;-1:-1:-1;;304:5711:77;;;;;:::i;:::-;;;;;1590:14:0;304:5711:77;;;-1:-1:-1;;;304:5711:77;;;;;7738:117:65;:::i;:::-;304:5711:77;;;;;;;;;;:::i;:::-;8420:1:65;304:5711:77;;;;-1:-1:-1;;694:3:77;304:5711;1590:14:0;694:3:77;;304:5711;7926:37:65;;;:::i;:::-;304:5711:77;;;;1590:14:0;;;;7974:57:65;;2117:44;;7974:57;;;;;;;;2117:44;7974:57;;;:::i;:::-;;2117:44;;;860:68:77;304:5711;;;;;;7974:57:65;;;;;;8041:97;;304:5711:77;;8110:18:65;;7974:57;;8110:18;;:::i;8041:97::-;2117:44;;8041:97;;;;-1:-1:-1;;;;;304:5711:77;8041:97:65;;;;;;;;6047:287;;;;8041:97;;;304:5711:77;8041:97:65;304:5711:77;8041:97:65;;;;;;;:::i;:::-;;;;;7974:57;;;;2117:44;;;7974:57;;;;;;:::i;:::-;;;5941:50;;;;;2117:44;;;5941:50;;;;;;:::i;:::-;;;;3697:13;1590:14:0;3697:13:65;;1590:14:0;3697:13:65;;;;;;1590:14:0;3697:13:65;;;:::i;:::-;;;1590:14:0;;;;;3697:13:65;;;;;;;;-1:-1:-1;3697:13:65;;16720:176:8;304:5711:77;16769:41:8;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;304:5711:77;;;-1:-1:-1;;;16769:41:8;;2117:44:65;;-1:-1:-1;;;;;304:5711:77;;;2117:44:65;16769:41:8;;304:5711:77;12810:59:8;;;304:5711:77;;;;12810:59:8;;;304:5711:77;;;12810:59:8;;;16769:41;2117:44:65;;;-1:-1:-1;;;;;;;;;;;16769:41:8;;;;;;;;16720:176;304:5711:77;;;-1:-1:-1;;;16824:61:8;;1590:14:0;2117:44:65;16824:61:8;;12810:59;304:5711:77;44640:78:15;12810:59:8;;304:5711:77;12810:59:8;304:5711:77;;;12810:59:8;-1:-1:-1;;;304:5711:77;12810:59:8;;;304:5711:77;;16824:61:8;16769:41;2117:44:65;;16769:41:8;;;:::i;:::-;304:5711:77;;;;16769:41:8;;;304:5711:77;2117:44:65;;;304:5711:77;16724:29:8;523:5:65;;304:5711:77;523:5:65;16736:17:8;;;;16724:29;;;11078:3;11114:10;;;523:5:65;304:5711:77;523:5:65;11114:10:8;:::i;:::-;304:5711:77;;;;;;;1590:14:0;304:5711:77;;;;;;;;;523:5:65;;;;8487:1;523:5;;11142:1:8;523:5:65;;;;;;;;;;8487:1;523:5;304:5711:77;11097:47:8;;;;;8420:1:65;11078:3:8;;694::77;11078::8;;11054:13;;304:5711:77;;;;-1:-1:-1;;304:5711:77;;2117:44:65;304:5711:77;44640:78:15;-1:-1:-1;;304:5711:77;11010:29:8;;;;;16587:43;2117:44:65;16587:43:8;;;:::i;:::-;2117:44:65;304:5711:77;;16587:43:8;;;;304:5711:77;;;1590:14:0;2117:44:65;1590:14:0;;;;;16424:32:8;;;;1590:14:0;16424:32:8;;1590:14:0;16424:32:8;;;;;;1590:14:0;16424:32:8;;;:::i;:::-;;;1590:14:0;;;;;;;16424:32:8;;;;;-1:-1:-1;16424:32:8;;15938:460;16028:34;;;;:::i;:::-;16021:3;694::77;16021::8;694::77;;;;304:5711;;;;;;;;-1:-1:-1;;;16314:19:8;;8420:1:65;304:5711:77;;2117:44:65;16314:19:8;;304:5711:77;-1:-1:-1;304:5711:77;44640:78:15;304:5711:77;-1:-1:-1;;;;;;;;;;;16314:19:8;;;;;;;16170:185;12810:59;1590:14:0;16314:19:8;8420:1:65;16314:19:8;2117:44:65;16314:19:8;;;15938:460;304:5711:77;;;;16170:185:8;;;-1:-1:-1;;;;;;;;;;;16170:185:8;;;12810:59;-1:-1:-1;;;;;;;;;;;304:5711:77;;12810:59:8;;;-1:-1:-1;;;1590:14:0;;12810:59:8;;;304:5711:77;;;;;;12810:59:8;;;304:5711:77;;;2117:44:65;304:5711:77;;;;16170:185:8;;694:3:77;;16170:185:8;;;;;;:::i;:::-;304:5711:77;523:5:65;304:5711:77;523:5:65;16103:21:8;12810:59;;;15938:460;;;12810:59;304:5711:77;;;-1:-1:-1;;;12810:59:8;;1590:14:0;2117:44:65;12810:59:8;;304:5711:77;;;;;;44640:78:15;304:5711:77;;;;:::i;16314:19:8:-;;;;;;2117:44:65;16314:19:8;;;;;;:::i;:::-;;;;15698:126;13208:33;;:::i;:::-;;15698:126;;2822:49:65;;;;;;2117:44;2822:49;;;;;;:::i;:::-;;;;8365:37;8397:5;523;;;8365:37;;2467:50;;;;;;2117:44;2467:50;;;;;;:::i;:::-;;;;2117:44;;;;;;;;;;;;;:::i;:::-;;;;14296:110:1;;-1:-1:-1;;;;;;;;;;;14375:24:1;;;;304:5711:77;;1590:14:0;;;;14375:24:1;;;;;304:5711:77;;;;;-1:-1:-1;14375:24:1;;;-1:-1:-1;;;;;;;;;;;14375:24:1;;;;;;;;14296:110;:::o;304:5711:77:-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;304:5711:77;;;;:::o;:::-;;;:::o;6764:749:58:-;3256:31:33;;3304:55;;-1:-1:-1;;;;;304:5711:77;;;;2626:1:33;;;;3256:31;;2626:1;304:5711:77;3256:31:33;;;;:::i;:::-;3304:55;;:::i;:::-;304:5711:77;;7289:21:58;;7285:222;;6764:749;;:::o;7285:222::-;3256:31:33;7390:30:58;;;;;;;;;:::i;:::-;304:5711:77;;;6764:749:58:o;304:5711:77:-;;;-1:-1:-1;;;304:5711:77;;3256:31:33;304:5711:77;;;;;;;;;;;;;;-1:-1:-1;;;304:5711:77;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13228:134:1:-;-1:-1:-1;;;;;;;;;;;13326:29:1;;;;304:5711:77;;2117:44:65;304:5711:77;;;1590:14:0;;;;;;;;13326:29:1;;;;;304:5711:77;;;;;;;;;;;;;;;;:::i;:::-;13326:29:1;;-1:-1:-1;;;;;;;;;;;13326:29:1;;;;;;;;13228:134;:::o;:::-;;-1:-1:-1;;;;;;;;;;;13326:29:1;;;;;304:5711:77;13326:29:1;304:5711:77;;1590:14:0;;;;;;;;13326:29:1;;;;;;:::i;6598:121:15:-;1222:159;304:5711:77;6669:42:15;6598:121;;304:5711:77;;6669:42:15;;;;;;;;;;;;;;304:5711:77;;;;;;:::i;6669:42:15:-;1222:159;304:5711:77;;1222:159:15;;591:42;1222:159;;;6598:121::o;7546:145::-;1590:14:0;7629:54:15;1222:159;7546:145;;;;304:5711:77;;7629:54:15;;;;;;;;;;304:5711:77;7629:54:15;;;1590:14:0;;;;;;:::i;:::-;;;;;304:5711:77;7629:54:15;694:3:77;;7629:54:15;;;;;;:::i;15596:134:1:-;;-1:-1:-1;;;;;;;;;;;15694:29:1;;;;;304:5711:77;15694:29:1;304:5711:77;;1590:14:0;;;;;;;;15694:29:1;;;;;;:::i;304:5711:77:-;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;304:5711:77;;;;;;;;;;;;-1:-1:-1;;;;;304:5711:77;;;;;;;;;;;;-1:-1:-1;;;;;304:5711:77;;;;;;;-1:-1:-1;;304:5711:77;;;;;;;;;-1:-1:-1;304:5711:77;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;:::o;7846:150:15:-;304:5711:77;7935:53:15;1222:159;7846:150;;304:5711:77;7846:150:15;;304:5711:77;;7935:53:15;;;;;;;;;;304:5711:77;7935:53:15;;;304:5711:77;;;;;;:::i;:::-;;;;-1:-1:-1;;304:5711:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::o;953:236:8:-;304:5711:77;1052:14:8;304:5711:77;;:::i;:::-;1052:14:8;;304:5711:77;;;;;;1109:10:8;304:5711:77;;;;;;1109:10:8;1077:1;304:5711:77;;1077:1:8;304:5711:77;;1077:1:8;304:5711:77;;;;;;;;;;;;;;:::i;:::-;;;523:5:65;;;;;;;304:5711:77;523:5:65;;;;;;;304:5711:77;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;694:3;;304:5711;;:::i;:::-;;;;;;;1077:1:8;11360:3;304:5711:77;;11346:12:8;;;;;11391:4;;1109:10;11391:4;;;:::i;:::-;304:5711:77;;11456:84:8;523:5:65;11456:84:8;;;;;694:3:77;11331:13:8;;11346:12;-1:-1:-1;11346:12:8;-1:-1:-1;1094:26:8:o;304:5711:77:-;;;;;1109:10:8;304:5711:77;;;;;;-1:-1:-1;304:5711:77;;;;;;;;1048:135:8;304:5711:77;;;;;;1052:14:8;304:5711:77;:::i;953:236:8:-;1052:14;;;304:5711:77;;;;;:::i;:::-;1052:21:8;;1109:10;;;;304:5711:77;;;;;;;;;;;;;;;1077:1:8;304:5711:77;;1077:1:8;304:5711:77;;1077:1:8;304:5711:77;;;;;;;;;;;;;;:::i;:::-;;;523:5:65;;;;;;;304:5711:77;523:5:65;;;;;;;304:5711:77;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;694:3;;304:5711;;:::i;:::-;;;;;;;1077:1:8;11360:3;304:5711:77;;11346:12:8;;;;;11391:4;;1109:10;11391:4;;;:::i;:::-;304:5711:77;;11456:84:8;523:5:65;11456:84:8;;;;;694:3:77;11331:13:8;;304:5711:77;;;;;1109:10:8;304:5711:77;;;;;;-1:-1:-1;304:5711:77;;;;;;;;1048:135:8;304:5711:77;;;;;;;;;;;:::i;1251:343:8:-;-1:-1:-1;304:5711:77;1364:48:8;1381:9;304:5711:77;1590:14:0;;1364:48:8;304:5711:77;1392:19:8;27635:8:3;1392:19:8;:::i;:::-;304:5711:77;;1364:48:8;;;;;;304:5711:77;;;;;;;;;;;;;;;;;;;;;;;;1364:48:8;;694:3:77;;1364:48:8;;;;;;:::i;:::-;1458:12;304:5711:77;1458:29:8;;;-1:-1:-1;;;;;304:5711:77;1458:29:8;;;;;:::i;:::-;1540:11;304:5711:77;;;;523:5:65;;;;;-1:-1:-1;;;;;523:5:65;;;;;-1:-1:-1;304:5711:77;;;1364:48:8;11010:13;;:29;1364:48;;;11010:29;1364:48;11010:29;;-1:-1:-1;11049:106:8;11069:7;;;;;;1563:24;;;;;1251:343;:::o;11078:3::-;11114:10;;;;;;;;:::i;:::-;304:5711:77;;;;;;;;;1364:48:8;304:5711:77;;1540:11:8;523:5:65;;;;;-1:-1:-1;;;;;;304:5711:77;523:5:65;;11142:1:8;523:5:65;;;;;;;;694:3:77;304:5711;;11097:47:8;11078:3;694::77;11054:13:8;;;;;11010:29;;;;1251:343;;-1:-1:-1;1381:9:8;1364:48;1381:9;;;304:5711:77;1590:14:0;;1364:48:8;304:5711:77;1392:19:8;;;:::i;1364:48::-;304:5711:77;1458:12:8;;304:5711:77;1458:29:8;;;-1:-1:-1;;;;;304:5711:77;1458:29:8;;1540:11;1458:29;;:::i;:::-;1540:11;;304:5711:77;523:5:65;;;;;-1:-1:-1;;;;;523:5:65;;;;;-1:-1:-1;304:5711:77;;;1364:48:8;11010:13;;:29;1364:48;;;11010:29;1364:48;11010:29;;-1:-1:-1;11049:106:8;11069:7;;;;;;1563:24;;;;;1251:343;:::o;11078:3::-;11114:10;;;;;;;;:::i;:::-;304:5711:77;;;;;;;;;1364:48:8;304:5711:77;;1540:11:8;523:5:65;;;;;-1:-1:-1;;;;;;304:5711:77;523:5:65;;11142:1:8;523:5:65;;;;;;;;694:3:77;304:5711;;11097:47:8;11078:3;694::77;11054:13:8;;;;;11010:29;;;;4421:582:33;;4593:8;;-1:-1:-1;304:5711:77;;5674:21:33;:17;;5846:142;;;;;;5670:385;6025:19;;;5694:1;6025:19;;5694:1;6025:19;4589:408;304:5711:77;;4841:22:33;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:33;4917:24;;;-1:-1:-1;;;;;304:5711:77;;;;4917:24:33;304:5711:77;1590:14:0;;4917:24:33;4841:49;4867:18;;;:23;4841:49;;643:59:8;;;;;;;;;;;;;;;:::i;:::-;304:5711:77;;;;;;;:::i;:::-;643:59:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;192::1;;643::8;;;;;;;;;;4249:2493;4361:12;304:5711:77;4397:9:8;304:5711:77;4438:11:8;304:5711:77;-1:-1:-1;;;;;304:5711:77;;;;;;1590:14:0;;4481:19:8;27635:8:3;4481:19:8;:::i;:::-;4551:15;304:5711:77;;;27635:8:3;304:5711:77;;;;;;;;;;;;;;;;;;;;;;4583:37:8;;;;;;;;;;:::i;:::-;304:5711:77;4573:48:8;;304:5711:77;;;;;4438:11:8;304:5711:77;;;4551:77:8;304:5711:77;;4547:255:8;;-1:-1:-1;;;;;;;;;;;4811:11:8;;;;304:5711:77;;-1:-1:-1;;;4811:11:8;;304:5711:77;;4361:12:8;304:5711:77;;-1:-1:-1;;;;;;;;;;;4811:11:8;;;;;;;;4249:2493;4857:16;;27635:8:3;4857:16:8;:::i;:::-;304:5711:77;;;;1590:14:0;;;4911:25:8;;;4361:12;4911:25;;304:5711:77;4911:25:8;;;;;-1:-1:-1;;;;;;;;;;;4911:25:8;;;;;;;;;;;4249:2493;-1:-1:-1;304:5711:77;;4951:12:8;;4984:74;304:5711:77;;12810:59:8;;;4984:74;;304:5711:77;4361:12:8;4984:74;;643:59;304:5711:77;4911:25:8;643:59;;304:5711:77;643:59:8;304:5711:77;;;643:59:8;;;;;;4984:74;4947:1461;5094:13;5127:3;304:5711:77;;5109:16:8;;;;;5178:8;304:5711:77;5178:8:8;;5165:22;5178:8;;:::i;:::-;304:5711:77;;;-1:-1:-1;;;5165:22:8;;-1:-1:-1;;;;;304:5711:77;;4361:12:8;5165:22;;304:5711:77;;;;;;;;;;;;;;;;;;5165:22:8;;;-1:-1:-1;;;;;;;;;;;5165:22:8;;;;;;;;;;;5127:3;5209:18;;;5205:114;;5127:3;5369:8;;;;:::i;:::-;304:5711:77;4361:12:8;304:5711:77;;;-1:-1:-1;;;1978:27:8;;-1:-1:-1;;;;;304:5711:77;;;4361:12:8;1978:27;;304:5711:77;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1978:27:8;;;;;;;;;;;5127:3;2057:16;;27635:8:3;2057:16:8;:::i;:::-;2102:65;;;:29;;:65;:29;;;-1:-1:-1;;2868:17:77;2102:65:8;-1:-1:-1;;;;;;;;;;;2177:37:8;;;;304:5711:77;;-1:-1:-1;;;2177:37:8;;-1:-1:-1;;;;;304:5711:77;;;;4361:12:8;2177:37;;304:5711:77;12810:59:8;;;304:5711:77;;;12810:59:8;;;304:5711:77;;;;;;12810:59:8;304:5711:77;;-1:-1:-1;;;;;;;;;;;2177:37:8;;;;;;;;;;;2102:65;2254:16;;;27635:8:3;2254:16:8;:::i;:::-;4361:12;304:5711:77;;;;-1:-1:-1;;;;;;304:5711:77;-1:-1:-1;;;;;;;;;;;2281:43:8;;;;304:5711:77;;-1:-1:-1;;;2281:43:8;;-1:-1:-1;;;;;304:5711:77;;;;4361:12:8;2281:43;;304:5711:77;12810:59:8;;;304:5711:77;;;;12810:59:8;;;304:5711:77;;;;;;12810:59:8;304:5711:77;;-1:-1:-1;;;;;;;;;;;2281:43:8;;;;;;;;;;;2102:65;2343:46;;;;;2102:65;5341:37;;;5337:92;;5447:50;;;304:5711:77;;5520:25:8;304:5711:77;;5516:256:8;;2102:65;12275:113;;;;;;;-1:-1:-1;;12275:113:8;;;5902:57;304:5711:77;;5998:29:8;;5994:84;;304:5711:77;;6319:8:8;304:5711:77;6101:89:8;643:59;304:5711:77;;6132:37:8;;304:5711:77;;;6132:37:8;;;304:5711:77;6132:37:8;;;;;:::i;:::-;304:5711:77;6122:48:8;;6180:8;;;;:::i;:::-;304:5711:77;;;;;;;643:59:8;304:5711:77;643:59:8;;304:5711:77;;643:59:8;;304:5711:77;643:59:8;;;304:5711:77;6101:89:8;6319:8;:::i;:::-;304:5711:77;;;;;643:59:8;304:5711:77;;;;;;-1:-1:-1;;;;;304:5711:77;;;;;4438:11:8;304:5711:77;;;;;;6302:58:8;;304:5711:77;;;;6302:58:8;;304:5711:77;;;643:59:8;6302:58;;643:59;694:3:77;643:59:8;;304:5711:77;;;27635:8:3;304:5711:77;;;;;;;;;;;;;;;;6240:37:8;;;;;;;;;;:::i;:::-;304:5711:77;6230:48:8;;304:5711:77;;;;;;;;;643:59:8;;304:5711:77;694:3;643:59:8;;;304:5711:77;4397:9:8;643:59;;;;;;304:5711:77;;;;;643:59:8;;;;;;;;5089:1309;304:5711:77;;;27635:8:3;304:5711:77;;;;;;;;;;;;;;;;6471:37:8;;;;;;;;;;:::i;:::-;304:5711:77;6461:48:8;;304:5711:77;;;;;4438:11:8;304:5711:77;;;6439:77:8;304:5711:77;;643:59:8;;;304:5711:77;6664:15:8;304:5711:77;;27635:8:3;304:5711:77;;;;;;;;;;6696:37:8;;304:5711:77;;;;;;6696:37:8;;;304:5711:77;6696:37:8;;;;;:::i;:::-;304:5711:77;6686:48:8;;304:5711:77;;;;;4249:2493:8;:::o;643:59::-;304:5711:77;;-1:-1:-1;;;643:59:8;;304:5711:77;4361:12:8;643:59;;;;4911:25;643:59;;304:5711:77;643:59:8;304:5711:77;;;643:59:8;-1:-1:-1;;;643:59:8;;;;;;;5994:84;6051:8;;;;694:3:77;6051:8:8;5094:13;694:3:77;5094:13:8;;5516:256;5654:8;;3216:27;5654:8;;;;;;:::i;:::-;304:5711:77;4361:12:8;304:5711:77;;;-1:-1:-1;;;3216:27:8;;-1:-1:-1;;;;;304:5711:77;;;4361:12:8;3216:27;;304:5711:77;;;;;;;;;;;;;;;;;;;;;;3216:27:8;;;-1:-1:-1;;;;;;;;;;;3216:27:8;;;;;;;;;;;5516:256;3293:28;;;27635:8:3;3293:28:8;:::i;:::-;3372:29;;;;;27635:8:3;3372:29:8;:::i;:::-;4361:12;304:5711:77;;;;;;-1:-1:-1;;;;;304:5711:77;-1:-1:-1;;;;;;;;;;;3497:43:8;;;;304:5711:77;;-1:-1:-1;;;3497:43:8;;-1:-1:-1;;;;;304:5711:77;;;;4361:12:8;3497:43;;304:5711:77;12810:59:8;;;304:5711:77;;;;12810:59:8;;;304:5711:77;;;;;;12810:59:8;304:5711:77;;-1:-1:-1;;;;;;;;;;;3497:43:8;;;;;;;;;;;5516:256;3558:23;;;;;5516:256;5601:62;;5689:6;5516:256;5685:69;5723:8;;;;;694:3:77;5723:8:8;;;3558:23;;-1:-1:-1;3558:23:8;;;3497:43;;;;;:::i;:::-;304:5711:77;;3497:43:8;;;;304:5711:77;;;;3497:43:8;304:5711:77;;1590:14:0;304:5711:77;;1590:14:0;;;;3497:43:8;304:5711:77;;;3216:27:8;;;;304:5711:77;3216:27:8;;;;;;;;;1590:14:0;3216:27:8;;;:::i;:::-;;;1590:14:0;;;;;3216:27:8;;;;;;;-1:-1:-1;3216:27:8;;5337:92;5402:8;;694:3:77;5402:8:8;;;2343:46;2355:33;;;-1:-1:-1;2343:46:8;;;;2281:43;;;;;:::i;:::-;304:5711:77;;2281:43:8;;;;304:5711:77;;;;2281:43:8;304:5711:77;;1590:14:0;304:5711:77;;1590:14:0;;;;2281:43:8;304:5711:77;;;2177:37:8;;;;;:::i;:::-;304:5711:77;;2177:37:8;;;;2102:65;;;;;1978:27;;;304:5711:77;1978:27:8;;;;;;;;;1590:14:0;1978:27:8;;;:::i;:::-;;;1590:14:0;;;;;1978:27:8;;;;;;-1:-1:-1;1978:27:8;;;304:5711:77;;1590:14:0;304:5711:77;;1590:14:0;;;;5205:114:8;5256:44;;5290:8;;;;:::i;:::-;304:5711:77;;;;-1:-1:-1;;;;;304:5711:77;;;;;;;;;;;;;;;;;;;5256:44:8;;;;5205:114;;5165:22;;;;304:5711:77;5165:22:8;;;;;;;;;1590:14:0;5165:22:8;;;:::i;:::-;;;1590:14:0;;;;;5165:22:8;;;;;;;-1:-1:-1;5165:22:8;;;304:5711:77;;1590:14:0;304:5711:77;;1590:14:0;;;;5109:16:8;;;;;;4911:25;;;;;;;;;;;;:::i;:::-;;;304:5711:77;643:59:8;;;;;;;;-1:-1:-1;;;;;643:59:8;;;;;;;;;;:::i;:::-;;304:5711:77;643:59:8;;;;-1:-1:-1;;;;;643:59:8;;;;;;;;;:::i;:::-;;4911:25;;;643:59;304:5711:77;;;643:59:8;304:5711:77;;;4811:11:8;;;;;304:5711:77;4811:11:8;;:::i;:::-;304:5711:77;4811:11:8;;;;4547:255;4720:15;;;;;304:5711:77;;27635:8:3;304:5711:77;;;;;;;;;;4752:37:8;;304:5711:77;;;;;;4752:37:8;;;304:5711:77;4752:37:8;;;;;:::i;:::-;304:5711:77;4742:48:8;;304:5711:77;;;;;;;4713:78:8;:::o;11586:239::-;1590:14:0;;;11652:12:8;304:5711:77;;11652:12:8;304:5711:77;;;11681:9:8;304:5711:77;;11681:9:8;304:5711:77;11707:10:8;304:5711:77;11645:19:8;11707:10;304:5711:77;;;;11586:239:8;304:5711:77;11645:19:8;11734:11;304:5711:77;;;11762:25:8;304:5711:77;;11762:25:8;304:5711:77;;11804:14:8;304:5711:77;;:::i;:::-;;;;11586:239:8;:::o;304:5711:77:-;;;;;;;;;11645:19:8;11804:14;304:5711:77;11586:239:8:o;304:5711:77:-;11804:14:8;11645:19;304:5711:77;;;;;;;;;;;;;;;;11804:14:8;11645:19;304:5711:77;11645:19:8;304:5711:77;;;;11804:14:8;304:5711:77;;2866:108:1:o;304:5711:77:-;;;;;;;;;11707:10:8;11645:19;304:5711:77;;;;;;;;;;;;;;;;11645:19:8;304:5711:77;;11707:10:8;304:5711:77;;;2560:514:8;;;2695:1;2698:12;2707:3;2698:12;;;;3050:17;;;;2695:1;3050:17;2695:1;2560:514;:::o;2712:8::-;694:3:77;2771::8;694::77;2771::8;694::77;;;;2824:12:8;;;304:5711:77;694:3;304:5711;;;;-1:-1:-1;;;;;304:5711:77;-1:-1:-1;;;;;;;;;;;2815:49:8;;;;304:5711:77;;-1:-1:-1;;;2815:49:8;;-1:-1:-1;;;;;304:5711:77;;;;2824:12:8;2815:49;;304:5711:77;12810:59:8;;;304:5711:77;;;12810:59:8;;;304:5711:77;;;;-1:-1:-1;304:5711:77;12810:59:8;304:5711:77;-1:-1:-1;;;;;;;;;;;;2815:49:8;;;;;;;;2712:8;2910:16;;;;:::i;:::-;2945:30;;;2712:8;2941:90;;;694:3:77;;2678:18:8;;2941:90;2995:21;;;694:3:77;2995:21:8;;:::o;2945:30::-;2957:17;;;;2945:30;;;2815:49;2695:1;2815:49;;;:::i;:::-;;;;2560:514;;;4551:10;2698:12;2707:3;2698:12;;;;3050:17;;;;4551:10;3050:17;4551:10;2560:514;:::o;2712:8::-;2824:12;;;304:5711:77;694:3;304:5711;;;-1:-1:-1;;;;;304:5711:77;-1:-1:-1;;;;;;;;;;;2815:49:8;;;;304:5711:77;;-1:-1:-1;;;2815:49:8;;-1:-1:-1;;;;;304:5711:77;;;;2824:12:8;2815:49;;304:5711:77;12810:59:8;;;304:5711:77;;;12810:59:8;;;304:5711:77;;;;-1:-1:-1;304:5711:77;12810:59:8;304:5711:77;-1:-1:-1;;;;;;;;;;;;2815:49:8;;;;;;;;2712:8;2910:16;;;;:::i;:::-;2945:30;;;2712:8;2941:90;;;694:3:77;;2678:18:8;;2945:30;2957:17;;;;2945:30;;;2815:49;4551:10;2815:49;;;:::i;:::-;;;","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","fractionToInt((uint256,uint256))":"08c41745","runPoolBehaviourTest(address,bytes32[])":"d170c3cc","setUp()":"0a9254e4","stringPctgs(uint256)":"a00872f1","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testGetCapabilities(bytes32,address,address)":"f6c25e82","testGetLimits()":"d3479a01","testPriceDecreasing()":"4a36e372","testPriceFuzz(uint256,uint256)":"a502846b","testSwapBuyIncreasing()":"fe3ee58b","testSwapFuzz(uint256,bool)":"7f55213e","testSwapSellIncreasing()":"111f3392","testUsv2PoolBehaviour()":"11ca2bc8"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"LimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"Unavailable\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"fsig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keysHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"SlotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"WARNING_UninitedSlot\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction\",\"name\":\"price\",\"type\":\"tuple\"}],\"name\":\"fractionToInt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISwapAdapter\",\"name\":\"adapter\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"poolIds\",\"type\":\"bytes32[]\"}],\"name\":\"runPoolBehaviourTest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"stringPctgs\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"pair\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"t0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"t1\",\"type\":\"address\"}],\"name\":\"testGetCapabilities\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetLimits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testPriceDecreasing\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"testPriceFuzz\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSwapBuyIncreasing\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isBuy\",\"type\":\"bool\"}],\"name\":\"testSwapFuzz\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSwapSellIncreasing\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testUsv2PoolBehaviour\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"LimitExceeded(uint256)\":[{\"details\":\"The LimitExceeded error is thrown when a limit has been exceeded. E.g. the specified amount can't be traded safely.\"}],\"NotImplemented(string)\":[{\"details\":\"The NotImplemented error is thrown when a function is not implemented.\"}],\"Unavailable(string)\":[{\"details\":\"The Unavailable error is thrown when a pool or swap is not available for unexpected reason. E.g. it was paused due to a bug.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/UniswapV2SwapAdapter.t.sol\":\"UniswapV2PairFunctionTest\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b\",\"dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54\",\"dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678\",\"dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdToml.sol\":{\"keccak256\":\"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d\",\"dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e\",\"dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a\",\"dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/libraries/EfficientERC20.sol\":{\"keccak256\":\"0x825d7f6aa98465b3c5b5a08d24cadfbb0a06f44693beec4e00ad2fe2824b4ef0\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2a5b53d7d634f50f27a1e45ce9136a054f1f19efc3dcfc1f85c8b1bbeac735fa\",\"dweb:/ipfs/QmQSeQyF86HLRnvKgQogia8W2eoWzncG2m1GkYMnp84DJZ\"]},\"src/libraries/FractionMath.sol\":{\"keccak256\":\"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c\",\"dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr\"]},\"src/uniswap-v2/UniswapV2SwapAdapter.sol\":{\"keccak256\":\"0xd4da168460c3a8859504bed2fa8ebb8de95eb8ff684f9c691ac47b4028a461d5\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://8a2428d5fcc612432c8bc1ab71d1b8f65a13fea67b6a9a64d0eb73f3fb53b853\",\"dweb:/ipfs/QmW5ggqCo9iThkw5ufDZkKJMcC14xrFeb516pQknsToubs\"]},\"test/AdapterTest.sol\":{\"keccak256\":\"0x56850be2bb3898eee065c3d77aadb6d181ee789da32f30b1d415d5521397fa43\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://8ca34143db16aa27c42ee3f8566ee466095d4aedcc4ea1c7726aa9c593f4fbd0\",\"dweb:/ipfs/QmWBTLXZKbTuT5kVpAbyGCxKRdhsmzWRPZPiTqZMg9BXhd\"]},\"test/UniswapV2SwapAdapter.t.sol\":{\"keccak256\":\"0xad67284d4c7573a891576e43100cc51dbff212064ee40875b21f551e39ffa9b9\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://7bca31a31253ee67e50b36fbfb4b21744f5e7e7607c24ee96b6ab642d52d2ad0\",\"dweb:/ipfs/QmVHCgxAiWPz1s2NoGnVRGNTc6wDsbTSJHmtPnhPGEDioZ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"type":"error","name":"LimitExceeded"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"NotImplemented"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"Unavailable"},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"bytes4","name":"fsig","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"keysHash","type":"bytes32","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"SlotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"WARNING_UninitedSlot","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct ISwapAdapterTypes.Fraction","name":"price","type":"tuple","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}],"stateMutability":"pure","type":"function","name":"fractionToInt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"contract ISwapAdapter","name":"adapter","type":"address"},{"internalType":"bytes32[]","name":"poolIds","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"runPoolBehaviourTest"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"stringPctgs","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[{"internalType":"bytes32","name":"pair","type":"bytes32"},{"internalType":"address","name":"t0","type":"address"},{"internalType":"address","name":"t1","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"testGetCapabilities"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testGetLimits"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testPriceDecreasing"},{"inputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testPriceFuzz"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testSwapBuyIncreasing"},{"inputs":[{"internalType":"uint256","name":"specifiedAmount","type":"uint256"},{"internalType":"bool","name":"isBuy","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"testSwapFuzz"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testSwapSellIncreasing"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testUsv2PoolBehaviour"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/UniswapV2SwapAdapter.t.sol":"UniswapV2PairFunctionTest"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef","urls":["bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b","dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d","urls":["bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54","dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3","urls":["bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678","dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdToml.sol":{"keccak256":"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab","urls":["bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d","dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe","urls":["bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e","dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456","urls":["bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a","dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/libraries/EfficientERC20.sol":{"keccak256":"0x825d7f6aa98465b3c5b5a08d24cadfbb0a06f44693beec4e00ad2fe2824b4ef0","urls":["bzz-raw://2a5b53d7d634f50f27a1e45ce9136a054f1f19efc3dcfc1f85c8b1bbeac735fa","dweb:/ipfs/QmQSeQyF86HLRnvKgQogia8W2eoWzncG2m1GkYMnp84DJZ"],"license":"UNLICENSED"},"src/libraries/FractionMath.sol":{"keccak256":"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735","urls":["bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c","dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr"],"license":"AGPL-3.0-or-later"},"src/uniswap-v2/UniswapV2SwapAdapter.sol":{"keccak256":"0xd4da168460c3a8859504bed2fa8ebb8de95eb8ff684f9c691ac47b4028a461d5","urls":["bzz-raw://8a2428d5fcc612432c8bc1ab71d1b8f65a13fea67b6a9a64d0eb73f3fb53b853","dweb:/ipfs/QmW5ggqCo9iThkw5ufDZkKJMcC14xrFeb516pQknsToubs"],"license":"AGPL-3.0-or-later"},"test/AdapterTest.sol":{"keccak256":"0x56850be2bb3898eee065c3d77aadb6d181ee789da32f30b1d415d5521397fa43","urls":["bzz-raw://8ca34143db16aa27c42ee3f8566ee466095d4aedcc4ea1c7726aa9c593f4fbd0","dweb:/ipfs/QmWBTLXZKbTuT5kVpAbyGCxKRdhsmzWRPZPiTqZMg9BXhd"],"license":"AGPL-3.0-or-later"},"test/UniswapV2SwapAdapter.t.sol":{"keccak256":"0xad67284d4c7573a891576e43100cc51dbff212064ee40875b21f551e39ffa9b9","urls":["bzz-raw://7bca31a31253ee67e50b36fbfb4b21744f5e7e7607c24ee96b6ab642d52d2ad0","dweb:/ipfs/QmVHCgxAiWPz1s2NoGnVRGNTc6wDsbTSJHmtPnhPGEDioZ"],"license":"AGPL-3.0-or-later"}},"version":1},"id":77} \ No newline at end of file diff --git a/evm/out/Vm.sol/Vm.json b/evm/out/Vm.sol/Vm.json deleted file mode 100644 index fea7abe..0000000 --- a/evm/out/Vm.sol/Vm.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"accesses","inputs":[{"name":"target","type":"address","internalType":"address"}],"outputs":[{"name":"readSlots","type":"bytes32[]","internalType":"bytes32[]"},{"name":"writeSlots","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"activeFork","inputs":[],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"addr","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"allowCheatcodes","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertFalse","inputs":[{"name":"condition","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertFalse","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertTrue","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertTrue","inputs":[{"name":"condition","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assume","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"breakpoint","inputs":[{"name":"char","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"breakpoint","inputs":[{"name":"char","type":"string","internalType":"string"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"chainId","inputs":[{"name":"newChainId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"clearMockedCalls","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"closeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"coinbase","inputs":[{"name":"newCoinbase","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"computeCreate2Address","inputs":[{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"initCodeHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"computeCreate2Address","inputs":[{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"initCodeHash","type":"bytes32","internalType":"bytes32"},{"name":"deployer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"computeCreateAddress","inputs":[{"name":"deployer","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"copyFile","inputs":[{"name":"from","type":"string","internalType":"string"},{"name":"to","type":"string","internalType":"string"}],"outputs":[{"name":"copied","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"createDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"recursive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createSelectFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createSelectFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createSelectFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createWallet","inputs":[{"name":"walletLabel","type":"string","internalType":"string"}],"outputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"createWallet","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"createWallet","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"walletLabel","type":"string","internalType":"string"}],"outputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"deal","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newBalance","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deleteSnapshot","inputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"deleteSnapshots","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"},{"name":"language","type":"string","internalType":"string"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"},{"name":"language","type":"string","internalType":"string"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"difficulty","inputs":[{"name":"newDifficulty","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"dumpState","inputs":[{"name":"pathToStateJson","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool","internalType":"bool"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256","internalType":"int256"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"view"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"etch","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"newRuntimeBytecode","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"eth_getLogs","inputs":[{"name":"fromBlock","type":"uint256","internalType":"uint256"},{"name":"toBlock","type":"uint256","internalType":"uint256"},{"name":"target","type":"address","internalType":"address"},{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"logs","type":"tuple[]","internalType":"struct VmSafe.EthGetLogs[]","components":[{"name":"emitter","type":"address","internalType":"address"},{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"blockNumber","type":"uint64","internalType":"uint64"},{"name":"transactionHash","type":"bytes32","internalType":"bytes32"},{"name":"transactionIndex","type":"uint64","internalType":"uint64"},{"name":"logIndex","type":"uint256","internalType":"uint256"},{"name":"removed","type":"bool","internalType":"bool"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"exists","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCallMinGas","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"minGas","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCallMinGas","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"minGas","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[{"name":"checkTopic1","type":"bool","internalType":"bool"},{"name":"checkTopic2","type":"bool","internalType":"bool"},{"name":"checkTopic3","type":"bool","internalType":"bool"},{"name":"checkData","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[{"name":"checkTopic1","type":"bool","internalType":"bool"},{"name":"checkTopic2","type":"bool","internalType":"bool"},{"name":"checkTopic3","type":"bool","internalType":"bool"},{"name":"checkData","type":"bool","internalType":"bool"},{"name":"emitter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[{"name":"emitter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectRevert","inputs":[{"name":"revertData","type":"bytes4","internalType":"bytes4"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectRevert","inputs":[{"name":"revertData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectRevert","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectSafeMemory","inputs":[{"name":"min","type":"uint64","internalType":"uint64"},{"name":"max","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectSafeMemoryCall","inputs":[{"name":"min","type":"uint64","internalType":"uint64"},{"name":"max","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fee","inputs":[{"name":"newBasefee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"ffi","inputs":[{"name":"commandInput","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"result","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"fsMetadata","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct VmSafe.FsMetadata","components":[{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"},{"name":"length","type":"uint256","internalType":"uint256"},{"name":"readOnly","type":"bool","internalType":"bool"},{"name":"modified","type":"uint256","internalType":"uint256"},{"name":"accessed","type":"uint256","internalType":"uint256"},{"name":"created","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getBlockNumber","inputs":[],"outputs":[{"name":"height","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlockTimestamp","inputs":[],"outputs":[{"name":"timestamp","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"creationBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getDeployedCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"runtimeBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getLabel","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"currentLabel","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getMappingKeyAndParentOf","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"elementSlot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"found","type":"bool","internalType":"bool"},{"name":"key","type":"bytes32","internalType":"bytes32"},{"name":"parent","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"getMappingLength","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"mappingSlot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"length","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"getMappingSlotAt","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"mappingSlot","type":"bytes32","internalType":"bytes32"},{"name":"idx","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"getNonce","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"nonce","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getNonce","inputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"nonce","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"getRecordedLogs","inputs":[],"outputs":[{"name":"logs","type":"tuple[]","internalType":"struct VmSafe.Log[]","components":[{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"emitter","type":"address","internalType":"address"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"isDir","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"isFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"isPersistent","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"persistent","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"keyExists","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"keyExistsJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"keyExistsToml","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"label","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newLabel","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"load","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"data","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"loadAllocs","inputs":[{"name":"pathToAllocsJson","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makePersistent","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makePersistent","inputs":[{"name":"account0","type":"address","internalType":"address"},{"name":"account1","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makePersistent","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makePersistent","inputs":[{"name":"account0","type":"address","internalType":"address"},{"name":"account1","type":"address","internalType":"address"},{"name":"account2","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"returnData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"returnData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCallRevert","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"revertData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCallRevert","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"revertData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"parseAddress","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseBool","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes32","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseInt","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonAddress","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonAddressArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBool","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBoolArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool[]","internalType":"bool[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytes","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytes32","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytes32Array","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytesArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonInt","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonIntArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256[]","internalType":"int256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonKeys","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"keys","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonString","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonStringArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonUint","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonUintArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseToml","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseToml","inputs":[{"name":"toml","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlAddress","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlAddressArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBool","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBoolArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool[]","internalType":"bool[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBytes","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBytes32","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBytes32Array","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBytesArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlInt","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlIntArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256[]","internalType":"int256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlKeys","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"keys","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlString","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlStringArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlUint","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlUintArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseUint","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"pauseGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prank","inputs":[{"name":"msgSender","type":"address","internalType":"address"},{"name":"txOrigin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prank","inputs":[{"name":"msgSender","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prevrandao","inputs":[{"name":"newPrevrandao","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"projectRoot","inputs":[],"outputs":[{"name":"path","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"prompt","inputs":[{"name":"promptText","type":"string","internalType":"string"}],"outputs":[{"name":"input","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"promptSecret","inputs":[{"name":"promptText","type":"string","internalType":"string"}],"outputs":[{"name":"input","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"readCallers","inputs":[],"outputs":[{"name":"callerMode","type":"uint8","internalType":"enum VmSafe.CallerMode"},{"name":"msgSender","type":"address","internalType":"address"},{"name":"txOrigin","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"maxDepth","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"maxDepth","type":"uint64","internalType":"uint64"},{"name":"followLinks","type":"bool","internalType":"bool"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"readLine","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"line","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readLink","inputs":[{"name":"linkPath","type":"string","internalType":"string"}],"outputs":[{"name":"targetPath","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"record","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"recordLogs","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rememberKey","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"recursive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"replace","inputs":[{"name":"input","type":"string","internalType":"string"},{"name":"from","type":"string","internalType":"string"},{"name":"to","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"resetNonce","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resumeGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revertTo","inputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"revertToAndDelete","inputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"revokePersistent","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokePersistent","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"roll","inputs":[{"name":"newHeight","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rpc","inputs":[{"name":"method","type":"string","internalType":"string"},{"name":"params","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"rpcUrl","inputs":[{"name":"rpcAlias","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"rpcUrlStructs","inputs":[],"outputs":[{"name":"urls","type":"tuple[]","internalType":"struct VmSafe.Rpc[]","components":[{"name":"key","type":"string","internalType":"string"},{"name":"url","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"rpcUrls","inputs":[],"outputs":[{"name":"urls","type":"string[2][]","internalType":"string[2][]"}],"stateMutability":"view"},{"type":"function","name":"selectFork","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeJson","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"setEnv","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNonce","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newNonce","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNonceUnsafe","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newNonce","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sign","inputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"sign","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"signP256","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"skip","inputs":[{"name":"skipTest","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sleep","inputs":[{"name":"duration","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"snapshot","inputs":[],"outputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"split","inputs":[{"name":"input","type":"string","internalType":"string"},{"name":"delimiter","type":"string","internalType":"string"}],"outputs":[{"name":"outputs","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"startBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startMappingRecording","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startPrank","inputs":[{"name":"msgSender","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startPrank","inputs":[{"name":"msgSender","type":"address","internalType":"address"},{"name":"txOrigin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startStateDiffRecording","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopAndReturnStateDiff","inputs":[],"outputs":[{"name":"accountAccesses","type":"tuple[]","internalType":"struct VmSafe.AccountAccess[]","components":[{"name":"chainInfo","type":"tuple","internalType":"struct VmSafe.ChainInfo","components":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"chainId","type":"uint256","internalType":"uint256"}]},{"name":"kind","type":"uint8","internalType":"enum VmSafe.AccountAccessKind"},{"name":"account","type":"address","internalType":"address"},{"name":"accessor","type":"address","internalType":"address"},{"name":"initialized","type":"bool","internalType":"bool"},{"name":"oldBalance","type":"uint256","internalType":"uint256"},{"name":"newBalance","type":"uint256","internalType":"uint256"},{"name":"deployedCode","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"reverted","type":"bool","internalType":"bool"},{"name":"storageAccesses","type":"tuple[]","internalType":"struct VmSafe.StorageAccess[]","components":[{"name":"account","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"},{"name":"isWrite","type":"bool","internalType":"bool"},{"name":"previousValue","type":"bytes32","internalType":"bytes32"},{"name":"newValue","type":"bytes32","internalType":"bytes32"},{"name":"reverted","type":"bool","internalType":"bool"}]},{"name":"depth","type":"uint64","internalType":"uint64"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"stopBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopExpectSafeMemory","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopMappingRecording","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopPrank","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"store","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"},{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"toBase64","inputs":[{"name":"data","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toBase64","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toBase64URL","inputs":[{"name":"data","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toBase64URL","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toLowercase","inputs":[{"name":"input","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toUppercase","inputs":[{"name":"input","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"transact","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transact","inputs":[{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"trim","inputs":[{"name":"input","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"tryFfi","inputs":[{"name":"commandInput","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"result","type":"tuple","internalType":"struct VmSafe.FfiResult","components":[{"name":"exitCode","type":"int32","internalType":"int32"},{"name":"stdout","type":"bytes","internalType":"bytes"},{"name":"stderr","type":"bytes","internalType":"bytes"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"txGasPrice","inputs":[{"name":"newGasPrice","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unixTime","inputs":[],"outputs":[{"name":"milliseconds","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"warp","inputs":[{"name":"newTimestamp","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeFile","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeLine","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeToml","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeToml","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"accesses(address)":"65bc9481","activeFork()":"2f103f22","addr(uint256)":"ffa18649","allowCheatcodes(address)":"ea060291","assertApproxEqAbs(int256,int256,uint256)":"240f839d","assertApproxEqAbs(int256,int256,uint256,string)":"8289e621","assertApproxEqAbs(uint256,uint256,uint256)":"16d207c6","assertApproxEqAbs(uint256,uint256,uint256,string)":"f710b062","assertApproxEqAbsDecimal(int256,int256,uint256,uint256)":"3d5bc8bc","assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)":"6a5066d4","assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)":"045c55ce","assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)":"60429eb2","assertApproxEqRel(int256,int256,uint256)":"fea2d14f","assertApproxEqRel(int256,int256,uint256,string)":"ef277d72","assertApproxEqRel(uint256,uint256,uint256)":"8cf25ef4","assertApproxEqRel(uint256,uint256,uint256,string)":"1ecb7d33","assertApproxEqRelDecimal(int256,int256,uint256,uint256)":"abbf21cc","assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)":"fccc11c4","assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)":"21ed2977","assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)":"82d6c8fd","assertEq(address,address)":"515361f6","assertEq(address,address,string)":"2f2769d1","assertEq(address[],address[])":"3868ac34","assertEq(address[],address[],string)":"3e9173c5","assertEq(bool,bool)":"f7fe3477","assertEq(bool,bool,string)":"4db19e7e","assertEq(bool[],bool[])":"707df785","assertEq(bool[],bool[],string)":"e48a8f8d","assertEq(bytes,bytes)":"97624631","assertEq(bytes,bytes,string)":"e24fed00","assertEq(bytes32,bytes32)":"7c84c69b","assertEq(bytes32,bytes32,string)":"c1fa1ed0","assertEq(bytes32[],bytes32[])":"0cc9ee84","assertEq(bytes32[],bytes32[],string)":"e03e9177","assertEq(bytes[],bytes[])":"e5fb9b4a","assertEq(bytes[],bytes[],string)":"f413f0b6","assertEq(int256,int256)":"fe74f05b","assertEq(int256,int256,string)":"714a2f13","assertEq(int256[],int256[])":"711043ac","assertEq(int256[],int256[],string)":"191f1b30","assertEq(string,string)":"f320d963","assertEq(string,string,string)":"36f656d8","assertEq(string[],string[])":"cf1c049c","assertEq(string[],string[],string)":"eff6b27d","assertEq(uint256,uint256)":"98296c54","assertEq(uint256,uint256,string)":"88b44c85","assertEq(uint256[],uint256[])":"975d5a12","assertEq(uint256[],uint256[],string)":"5d18c73a","assertEqDecimal(int256,int256,uint256)":"48016c04","assertEqDecimal(int256,int256,uint256,string)":"7e77b0c5","assertEqDecimal(uint256,uint256,uint256)":"27af7d9c","assertEqDecimal(uint256,uint256,uint256,string)":"d0cbbdef","assertFalse(bool)":"a5982885","assertFalse(bool,string)":"7ba04809","assertGe(int256,int256)":"0a30b771","assertGe(int256,int256,string)":"a84328dd","assertGe(uint256,uint256)":"a8d4d1d9","assertGe(uint256,uint256,string)":"e25242c0","assertGeDecimal(int256,int256,uint256)":"dc28c0f1","assertGeDecimal(int256,int256,uint256,string)":"5df93c9b","assertGeDecimal(uint256,uint256,uint256)":"3d1fe08a","assertGeDecimal(uint256,uint256,uint256,string)":"8bff9133","assertGt(int256,int256)":"5a362d45","assertGt(int256,int256,string)":"f8d33b9b","assertGt(uint256,uint256)":"db07fcd2","assertGt(uint256,uint256,string)":"d9a3c4d2","assertGtDecimal(int256,int256,uint256)":"78611f0e","assertGtDecimal(int256,int256,uint256,string)":"04a5c7ab","assertGtDecimal(uint256,uint256,uint256)":"eccd2437","assertGtDecimal(uint256,uint256,uint256,string)":"64949a8d","assertLe(int256,int256)":"95fd154e","assertLe(int256,int256,string)":"4dfe692c","assertLe(uint256,uint256)":"8466f415","assertLe(uint256,uint256,string)":"d17d4b0d","assertLeDecimal(int256,int256,uint256)":"11d1364a","assertLeDecimal(int256,int256,uint256,string)":"aa5cf788","assertLeDecimal(uint256,uint256,uint256)":"c304aab7","assertLeDecimal(uint256,uint256,uint256,string)":"7fefbbe0","assertLt(int256,int256)":"3e914080","assertLt(int256,int256,string)":"9ff531e3","assertLt(uint256,uint256)":"b12fc005","assertLt(uint256,uint256,string)":"65d5c135","assertLtDecimal(int256,int256,uint256)":"dbe8d88b","assertLtDecimal(int256,int256,uint256,string)":"40f0b4e0","assertLtDecimal(uint256,uint256,uint256)":"2077337e","assertLtDecimal(uint256,uint256,uint256,string)":"a972d037","assertNotEq(address,address)":"b12e1694","assertNotEq(address,address,string)":"8775a591","assertNotEq(address[],address[])":"46d0b252","assertNotEq(address[],address[],string)":"72c7e0b5","assertNotEq(bool,bool)":"236e4d66","assertNotEq(bool,bool,string)":"1091a261","assertNotEq(bool[],bool[])":"286fafea","assertNotEq(bool[],bool[],string)":"62c6f9fb","assertNotEq(bytes,bytes)":"3cf78e28","assertNotEq(bytes,bytes,string)":"9507540e","assertNotEq(bytes32,bytes32)":"898e83fc","assertNotEq(bytes32,bytes32,string)":"b2332f51","assertNotEq(bytes32[],bytes32[])":"0603ea68","assertNotEq(bytes32[],bytes32[],string)":"b873634c","assertNotEq(bytes[],bytes[])":"edecd035","assertNotEq(bytes[],bytes[],string)":"1dcd1f68","assertNotEq(int256,int256)":"f4c004e3","assertNotEq(int256,int256,string)":"4724c5b9","assertNotEq(int256[],int256[])":"0b72f4ef","assertNotEq(int256[],int256[],string)":"d3977322","assertNotEq(string,string)":"6a8237b3","assertNotEq(string,string,string)":"78bdcea7","assertNotEq(string[],string[])":"bdfacbe8","assertNotEq(string[],string[],string)":"b67187f3","assertNotEq(uint256,uint256)":"b7909320","assertNotEq(uint256,uint256,string)":"98f9bdbd","assertNotEq(uint256[],uint256[])":"56f29cba","assertNotEq(uint256[],uint256[],string)":"9a7fbd8f","assertNotEqDecimal(int256,int256,uint256)":"14e75680","assertNotEqDecimal(int256,int256,uint256,string)":"33949f0b","assertNotEqDecimal(uint256,uint256,uint256)":"669efca7","assertNotEqDecimal(uint256,uint256,uint256,string)":"f5a55558","assertTrue(bool)":"0c9fd581","assertTrue(bool,string)":"a34edc03","assume(bool)":"4c63e562","breakpoint(string)":"f0259e92","breakpoint(string,bool)":"f7d39a8d","broadcast()":"afc98040","broadcast(address)":"e6962cdb","broadcast(uint256)":"f67a965b","chainId(uint256)":"4049ddd2","clearMockedCalls()":"3fdf4e15","closeFile(string)":"48c3241f","coinbase(address)":"ff483c54","computeCreate2Address(bytes32,bytes32)":"890c283b","computeCreate2Address(bytes32,bytes32,address)":"d323826a","computeCreateAddress(address,uint256)":"74637a7a","copyFile(string,string)":"a54a87d8","createDir(string,bool)":"168b64d3","createFork(string)":"31ba3498","createFork(string,bytes32)":"7ca29682","createFork(string,uint256)":"6ba3ba2b","createSelectFork(string)":"98680034","createSelectFork(string,bytes32)":"84d52b7a","createSelectFork(string,uint256)":"71ee464d","createWallet(string)":"7404f1d2","createWallet(uint256)":"7a675bb6","createWallet(uint256,string)":"ed7c5462","deal(address,uint256)":"c88a5e6d","deleteSnapshot(uint256)":"a6368557","deleteSnapshots()":"421ae469","deriveKey(string,string,uint32)":"6bcb2c1b","deriveKey(string,string,uint32,string)":"29233b1f","deriveKey(string,uint32)":"6229498b","deriveKey(string,uint32,string)":"32c8176d","difficulty(uint256)":"46cc92d9","dumpState(string)":"709ecd3f","envAddress(string)":"350d56bf","envAddress(string,string)":"ad31b9fa","envBool(string)":"7ed1ec7d","envBool(string,string)":"aaaddeaf","envBytes(string)":"4d7baf06","envBytes(string,string)":"ddc2651b","envBytes32(string)":"97949042","envBytes32(string,string)":"5af231c1","envInt(string)":"892a0c61","envInt(string,string)":"42181150","envOr(string,address)":"561fe540","envOr(string,bool)":"4777f3cf","envOr(string,bytes)":"b3e47705","envOr(string,bytes32)":"b4a85892","envOr(string,int256)":"bbcb713e","envOr(string,string)":"d145736c","envOr(string,string,address[])":"c74e9deb","envOr(string,string,bool[])":"eb85e83b","envOr(string,string,bytes32[])":"2281f367","envOr(string,string,bytes[])":"64bc3e64","envOr(string,string,int256[])":"4700d74b","envOr(string,string,string[])":"859216bc","envOr(string,string,uint256[])":"74318528","envOr(string,uint256)":"5e97348f","envString(string)":"f877cb19","envString(string,string)":"14b02bc9","envUint(string)":"c1978d1f","envUint(string,string)":"f3dec099","etch(address,bytes)":"b4d6c782","eth_getLogs(uint256,uint256,address,bytes32[])":"35e1349b","exists(string)":"261a323e","expectCall(address,bytes)":"bd6af434","expectCall(address,bytes,uint64)":"c1adbbff","expectCall(address,uint256,bytes)":"f30c7ba3","expectCall(address,uint256,bytes,uint64)":"a2b1a1ae","expectCall(address,uint256,uint64,bytes)":"23361207","expectCall(address,uint256,uint64,bytes,uint64)":"65b7b7cc","expectCallMinGas(address,uint256,uint64,bytes)":"08e4e116","expectCallMinGas(address,uint256,uint64,bytes,uint64)":"e13a1834","expectEmit()":"440ed10d","expectEmit(address)":"86b9620d","expectEmit(bool,bool,bool,bool)":"491cc7c2","expectEmit(bool,bool,bool,bool,address)":"81bad6f3","expectRevert()":"f4844814","expectRevert(bytes)":"f28dceb3","expectRevert(bytes4)":"c31eb0e0","expectSafeMemory(uint64,uint64)":"6d016688","expectSafeMemoryCall(uint64,uint64)":"05838bf4","fee(uint256)":"39b37ab0","ffi(string[])":"89160467","fsMetadata(string)":"af368a08","getBlockNumber()":"42cbb15c","getBlockTimestamp()":"796b89b9","getCode(string)":"8d1cc925","getDeployedCode(string)":"3ebf73b4","getLabel(address)":"28a249b0","getMappingKeyAndParentOf(address,bytes32)":"876e24e6","getMappingLength(address,bytes32)":"2f2fd63f","getMappingSlotAt(address,bytes32,uint256)":"ebc73ab4","getNonce((address,uint256,uint256,uint256))":"a5748aad","getNonce(address)":"2d0335ab","getRecordedLogs()":"191553a4","isDir(string)":"7d15d019","isFile(string)":"e0eb04d4","isPersistent(address)":"d92d8efd","keyExists(string,string)":"528a683c","keyExistsJson(string,string)":"db4235f6","keyExistsToml(string,string)":"600903ad","label(address,string)":"c657c718","load(address,bytes32)":"667f9d70","loadAllocs(string)":"b3a056d7","makePersistent(address)":"57e22dde","makePersistent(address,address)":"4074e0a8","makePersistent(address,address,address)":"efb77a75","makePersistent(address[])":"1d9e269e","mockCall(address,bytes,bytes)":"b96213e4","mockCall(address,uint256,bytes,bytes)":"81409b91","mockCallRevert(address,bytes,bytes)":"dbaad147","mockCallRevert(address,uint256,bytes,bytes)":"d23cd037","parseAddress(string)":"c6ce059d","parseBool(string)":"974ef924","parseBytes(string)":"8f5d232d","parseBytes32(string)":"087e6e81","parseInt(string)":"42346c5e","parseJson(string)":"6a82600a","parseJson(string,string)":"85940ef1","parseJsonAddress(string,string)":"1e19e657","parseJsonAddressArray(string,string)":"2fce7883","parseJsonBool(string,string)":"9f86dc91","parseJsonBoolArray(string,string)":"91f3b94f","parseJsonBytes(string,string)":"fd921be8","parseJsonBytes32(string,string)":"1777e59d","parseJsonBytes32Array(string,string)":"91c75bc3","parseJsonBytesArray(string,string)":"6631aa99","parseJsonInt(string,string)":"7b048ccd","parseJsonIntArray(string,string)":"9983c28a","parseJsonKeys(string,string)":"213e4198","parseJsonString(string,string)":"49c4fac8","parseJsonStringArray(string,string)":"498fdcf4","parseJsonUint(string,string)":"addde2b6","parseJsonUintArray(string,string)":"522074ab","parseToml(string)":"592151f0","parseToml(string,string)":"37736e08","parseTomlAddress(string,string)":"65e7c844","parseTomlAddressArray(string,string)":"65c428e7","parseTomlBool(string,string)":"d30dced6","parseTomlBoolArray(string,string)":"127cfe9a","parseTomlBytes(string,string)":"d77bfdb9","parseTomlBytes32(string,string)":"8e214810","parseTomlBytes32Array(string,string)":"3e716f81","parseTomlBytesArray(string,string)":"b197c247","parseTomlInt(string,string)":"c1350739","parseTomlIntArray(string,string)":"d3522ae6","parseTomlKeys(string,string)":"812a44b2","parseTomlString(string,string)":"8bb8dd43","parseTomlStringArray(string,string)":"9f629281","parseTomlUint(string,string)":"cc7b0487","parseTomlUintArray(string,string)":"b5df27c8","parseUint(string)":"fa91454d","pauseGasMetering()":"d1a5b36f","prank(address)":"ca669fa7","prank(address,address)":"47e50cce","prevrandao(bytes32)":"3b925549","projectRoot()":"d930a0e6","prompt(string)":"47eaf474","promptSecret(string)":"1e279d41","readCallers()":"4ad0bac9","readDir(string)":"c4bc59e0","readDir(string,uint64)":"1497876c","readDir(string,uint64,bool)":"8102d70d","readFile(string)":"60f9bb11","readFileBinary(string)":"16ed7bc4","readLine(string)":"70f55728","readLink(string)":"9f5684a2","record()":"266cf109","recordLogs()":"41af2f52","rememberKey(uint256)":"22100064","removeDir(string,bool)":"45c62011","removeFile(string)":"f1afe04d","replace(string,string,string)":"e00ad03e","resetNonce(address)":"1c72346d","resumeGasMetering()":"2bcd50e0","revertTo(uint256)":"44d7f0a4","revertToAndDelete(uint256)":"03e0aca9","revokePersistent(address)":"997a0222","revokePersistent(address[])":"3ce969e6","roll(uint256)":"1f7b4f30","rollFork(bytes32)":"0f29772b","rollFork(uint256)":"d9bbf3a1","rollFork(uint256,bytes32)":"f2830f7b","rollFork(uint256,uint256)":"d74c83a4","rpc(string,string)":"1206c8a8","rpcUrl(string)":"975a6ce9","rpcUrlStructs()":"9d2ad72a","rpcUrls()":"a85a8418","selectFork(uint256)":"9ebf6827","serializeAddress(string,string,address)":"972c6062","serializeAddress(string,string,address[])":"1e356e1a","serializeBool(string,string,bool)":"ac22e971","serializeBool(string,string,bool[])":"92925aa1","serializeBytes(string,string,bytes)":"f21d52c7","serializeBytes(string,string,bytes[])":"9884b232","serializeBytes32(string,string,bytes32)":"2d812b44","serializeBytes32(string,string,bytes32[])":"201e43e2","serializeInt(string,string,int256)":"3f33db60","serializeInt(string,string,int256[])":"7676e127","serializeJson(string,string)":"9b3358b0","serializeString(string,string,string)":"88da6d35","serializeString(string,string,string[])":"561cd6f3","serializeUint(string,string,uint256)":"129e9002","serializeUint(string,string,uint256[])":"fee9a469","setEnv(string,string)":"3d5923ee","setNonce(address,uint64)":"f8e18b57","setNonceUnsafe(address,uint64)":"9b67b21c","sign((address,uint256,uint256,uint256),bytes32)":"b25c5a25","sign(uint256,bytes32)":"e341eaa4","signP256(uint256,bytes32)":"83211b40","skip(bool)":"dd82d13e","sleep(uint256)":"fa9d8713","snapshot()":"9711715a","split(string,string)":"8bb75533","startBroadcast()":"7fb5297f","startBroadcast(address)":"7fec2a8d","startBroadcast(uint256)":"ce817d47","startMappingRecording()":"3e9705c0","startPrank(address)":"06447d56","startPrank(address,address)":"45b56078","startStateDiffRecording()":"cf22e3c9","stopAndReturnStateDiff()":"aa5cf90e","stopBroadcast()":"76eadd36","stopExpectSafeMemory()":"0956441b","stopMappingRecording()":"0d4aae9b","stopPrank()":"90c5013b","store(address,bytes32,bytes32)":"70ca10bb","toBase64(bytes)":"a5cbfe65","toBase64(string)":"3f8be2c8","toBase64URL(bytes)":"c8bd0e4a","toBase64URL(string)":"ae3165b3","toLowercase(string)":"50bb0884","toString(address)":"56ca623e","toString(bool)":"71dce7da","toString(bytes)":"71aad10d","toString(bytes32)":"b11a19e8","toString(int256)":"a322c40e","toString(uint256)":"6900a3ae","toUppercase(string)":"074ae3d7","transact(bytes32)":"be646da1","transact(uint256,bytes32)":"4d8abc4b","trim(string)":"b2dad155","tryFfi(string[])":"f45c1ce7","txGasPrice(uint256)":"48f50c0f","unixTime()":"625387dc","warp(uint256)":"e5d6bf02","writeFile(string,string)":"897e0a97","writeFileBinary(string,bytes)":"1f21fc80","writeJson(string,string)":"e23cd19f","writeJson(string,string,string)":"35d6ad46","writeLine(string,string)":"619d897f","writeToml(string,string)":"c0865ba7","writeToml(string,string,string)":"51ac6a33"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"accesses\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"readSlots\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"writeSlots\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activeFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"allowCheatcodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertFalse\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assertFalse\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assertTrue\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertTrue\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assume\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"char\",\"type\":\"string\"}],\"name\":\"breakpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"char\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"breakpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newChainId\",\"type\":\"uint256\"}],\"name\":\"chainId\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"clearMockedCalls\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"closeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newCoinbase\",\"type\":\"address\"}],\"name\":\"coinbase\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"initCodeHash\",\"type\":\"bytes32\"}],\"name\":\"computeCreate2Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"initCodeHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"}],\"name\":\"computeCreate2Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"computeCreateAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"from\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"}],\"name\":\"copyFile\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"copied\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"recursive\",\"type\":\"bool\"}],\"name\":\"createDir\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"}],\"name\":\"createFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"createFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"createFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"createSelectFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"createSelectFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"}],\"name\":\"createSelectFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"walletLabel\",\"type\":\"string\"}],\"name\":\"createWallet\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"createWallet\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"walletLabel\",\"type\":\"string\"}],\"name\":\"createWallet\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"}],\"name\":\"deal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"name\":\"deleteSnapshot\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deleteSnapshots\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"internalType\":\"string\",\"name\":\"language\",\"type\":\"string\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"internalType\":\"string\",\"name\":\"language\",\"type\":\"string\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newDifficulty\",\"type\":\"uint256\"}],\"name\":\"difficulty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"pathToStateJson\",\"type\":\"string\"}],\"name\":\"dumpState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"defaultValue\",\"type\":\"bytes32[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"defaultValue\",\"type\":\"int256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"defaultValue\",\"type\":\"bool\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"defaultValue\",\"type\":\"address\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"defaultValue\",\"type\":\"uint256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"defaultValue\",\"type\":\"bytes[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"defaultValue\",\"type\":\"uint256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"defaultValue\",\"type\":\"string[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"defaultValue\",\"type\":\"bytes\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"defaultValue\",\"type\":\"bytes32\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"defaultValue\",\"type\":\"int256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"defaultValue\",\"type\":\"address[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"defaultValue\",\"type\":\"string\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"defaultValue\",\"type\":\"bool[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"newRuntimeBytecode\",\"type\":\"bytes\"}],\"name\":\"etch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fromBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"toBlock\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"}],\"name\":\"eth_getLogs\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"blockNumber\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"transactionHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"transactionIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"removed\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.EthGetLogs[]\",\"name\":\"logs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"gas\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"gas\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minGas\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCallMinGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minGas\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"expectCallMinGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"checkTopic1\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic2\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic3\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkData\",\"type\":\"bool\"}],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"checkTopic1\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic2\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic3\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkData\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"revertData\",\"type\":\"bytes4\"}],\"name\":\"expectRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"revertData\",\"type\":\"bytes\"}],\"name\":\"expectRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"expectRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"min\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"}],\"name\":\"expectSafeMemory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"min\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"}],\"name\":\"expectSafeMemoryCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newBasefee\",\"type\":\"uint256\"}],\"name\":\"fee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"commandInput\",\"type\":\"string[]\"}],\"name\":\"ffi\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"fsMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"readOnly\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"modified\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accessed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"created\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.FsMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"creationBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getDeployedCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"runtimeBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getLabel\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"currentLabel\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"elementSlot\",\"type\":\"bytes32\"}],\"name\":\"getMappingKeyAndParentOf\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"found\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"parent\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"mappingSlot\",\"type\":\"bytes32\"}],\"name\":\"getMappingLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"mappingSlot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"idx\",\"type\":\"uint256\"}],\"name\":\"getMappingSlotAt\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecordedLogs\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"internalType\":\"struct VmSafe.Log[]\",\"name\":\"logs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"isDir\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"isFile\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isPersistent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"persistent\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"keyExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"keyExistsJson\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"keyExistsToml\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"newLabel\",\"type\":\"string\"}],\"name\":\"label\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"load\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"pathToAllocsJson\",\"type\":\"string\"}],\"name\":\"loadAllocs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account1\",\"type\":\"address\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account1\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account2\",\"type\":\"address\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"name\":\"mockCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"name\":\"mockCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"revertData\",\"type\":\"bytes\"}],\"name\":\"mockCallRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"revertData\",\"type\":\"bytes\"}],\"name\":\"mockCallRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"parsedValue\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"parsedValue\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"parsedValue\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"parsedValue\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"parsedValue\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonAddressArray\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBoolArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32Array\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytesArray\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonIntArray\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"\",\"type\":\"int256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonKeys\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"keys\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonStringArray\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonUintArray\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseToml\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"}],\"name\":\"parseToml\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlAddressArray\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBoolArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBytes32Array\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBytesArray\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlIntArray\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"\",\"type\":\"int256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlKeys\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"keys\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlStringArray\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlUintArray\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"parsedValue\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"txOrigin\",\"type\":\"address\"}],\"name\":\"prank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"}],\"name\":\"prank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"newPrevrandao\",\"type\":\"bytes32\"}],\"name\":\"prevrandao\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"projectRoot\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"promptText\",\"type\":\"string\"}],\"name\":\"prompt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"promptText\",\"type\":\"string\"}],\"name\":\"promptSecret\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"readCallers\",\"outputs\":[{\"internalType\":\"enum VmSafe.CallerMode\",\"name\":\"callerMode\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"txOrigin\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"maxDepth\",\"type\":\"uint64\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"maxDepth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"followLinks\",\"type\":\"bool\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFile\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFileBinary\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readLine\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"line\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"linkPath\",\"type\":\"string\"}],\"name\":\"readLink\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"targetPath\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"record\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recordLogs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"rememberKey\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"recursive\",\"type\":\"bool\"}],\"name\":\"removeDir\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"removeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"from\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"}],\"name\":\"replace\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"resetNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resumeGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"name\":\"revertTo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"name\":\"revertToAndDelete\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"}],\"name\":\"revokePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newHeight\",\"type\":\"uint256\"}],\"name\":\"roll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"method\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"params\",\"type\":\"string\"}],\"name\":\"rpc\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"rpcAlias\",\"type\":\"string\"}],\"name\":\"rpcUrl\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrlStructs\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"}],\"internalType\":\"struct VmSafe.Rpc[]\",\"name\":\"urls\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrls\",\"outputs\":[{\"internalType\":\"string[2][]\",\"name\":\"urls\",\"type\":\"string[2][]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"name\":\"selectFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"values\",\"type\":\"address[]\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"values\",\"type\":\"bool[]\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"values\",\"type\":\"bytes[]\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"values\",\"type\":\"bytes32[]\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"values\",\"type\":\"int256[]\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"serializeJson\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"values\",\"type\":\"string[]\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"setEnv\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"newNonce\",\"type\":\"uint64\"}],\"name\":\"setNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"newNonce\",\"type\":\"uint64\"}],\"name\":\"setNonceUnsafe\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"signP256\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"skipTest\",\"type\":\"bool\"}],\"name\":\"skip\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"sleep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshot\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delimiter\",\"type\":\"string\"}],\"name\":\"split\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"outputs\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startMappingRecording\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"}],\"name\":\"startPrank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"txOrigin\",\"type\":\"address\"}],\"name\":\"startPrank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startStateDiffRecording\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopAndReturnStateDiff\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.ChainInfo\",\"name\":\"chainInfo\",\"type\":\"tuple\"},{\"internalType\":\"enum VmSafe.AccountAccessKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"accessor\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"oldBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"deployedCode\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"reverted\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"isWrite\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"previousValue\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newValue\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"reverted\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.StorageAccess[]\",\"name\":\"storageAccesses\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"}],\"internalType\":\"struct VmSafe.AccountAccess[]\",\"name\":\"accountAccesses\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopExpectSafeMemory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopMappingRecording\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopPrank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"store\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"toBase64\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"toBase64\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"toBase64URL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"toBase64URL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"name\":\"toLowercase\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"name\":\"toUppercase\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"transact\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"transact\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"name\":\"trim\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"commandInput\",\"type\":\"string[]\"}],\"name\":\"tryFfi\",\"outputs\":[{\"components\":[{\"internalType\":\"int32\",\"name\":\"exitCode\",\"type\":\"int32\"},{\"internalType\":\"bytes\",\"name\":\"stdout\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"stderr\",\"type\":\"bytes\"}],\"internalType\":\"struct VmSafe.FfiResult\",\"name\":\"result\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newGasPrice\",\"type\":\"uint256\"}],\"name\":\"txGasPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unixTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"milliseconds\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newTimestamp\",\"type\":\"uint256\"}],\"name\":\"warp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"writeFileBinary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeLine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"}],\"name\":\"writeToml\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"writeToml\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"accesses(address)\":{\"notice\":\"Gets all accessed reads and write slot from a `vm.record` session, for a given address.\"},\"activeFork()\":{\"notice\":\"Returns the identifier of the currently active fork. Reverts if no fork is currently active.\"},\"addr(uint256)\":{\"notice\":\"Gets the address for a given private key.\"},\"allowCheatcodes(address)\":{\"notice\":\"In forking mode, explicitly grant the given address cheatcode access.\"},\"assertApproxEqAbs(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`.\"},\"assertApproxEqAbs(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure.\"},\"assertApproxEqAbs(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`.\"},\"assertApproxEqAbs(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure.\"},\"assertApproxEqAbsDecimal(int256,int256,uint256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message.\"},\"assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message.\"},\"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertApproxEqRel(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%\"},\"assertApproxEqRel(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure.\"},\"assertApproxEqRel(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%\"},\"assertApproxEqRel(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure.\"},\"assertApproxEqRelDecimal(int256,int256,uint256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message.\"},\"assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message.\"},\"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertEq(address,address)\":{\"notice\":\"Asserts that two `address` values are equal.\"},\"assertEq(address,address,string)\":{\"notice\":\"Asserts that two `address` values are equal and includes error message into revert string on failure.\"},\"assertEq(address[],address[])\":{\"notice\":\"Asserts that two arrays of `address` values are equal.\"},\"assertEq(address[],address[],string)\":{\"notice\":\"Asserts that two arrays of `address` values are equal and includes error message into revert string on failure.\"},\"assertEq(bool,bool)\":{\"notice\":\"Asserts that two `bool` values are equal.\"},\"assertEq(bool,bool,string)\":{\"notice\":\"Asserts that two `bool` values are equal and includes error message into revert string on failure.\"},\"assertEq(bool[],bool[])\":{\"notice\":\"Asserts that two arrays of `bool` values are equal.\"},\"assertEq(bool[],bool[],string)\":{\"notice\":\"Asserts that two arrays of `bool` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes,bytes)\":{\"notice\":\"Asserts that two `bytes` values are equal.\"},\"assertEq(bytes,bytes,string)\":{\"notice\":\"Asserts that two `bytes` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes32,bytes32)\":{\"notice\":\"Asserts that two `bytes32` values are equal.\"},\"assertEq(bytes32,bytes32,string)\":{\"notice\":\"Asserts that two `bytes32` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes32[],bytes32[])\":{\"notice\":\"Asserts that two arrays of `bytes32` values are equal.\"},\"assertEq(bytes32[],bytes32[],string)\":{\"notice\":\"Asserts that two arrays of `bytes32` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes[],bytes[])\":{\"notice\":\"Asserts that two arrays of `bytes` values are equal.\"},\"assertEq(bytes[],bytes[],string)\":{\"notice\":\"Asserts that two arrays of `bytes` values are equal and includes error message into revert string on failure.\"},\"assertEq(int256,int256)\":{\"notice\":\"Asserts that two `int256` values are equal.\"},\"assertEq(int256,int256,string)\":{\"notice\":\"Asserts that two `int256` values are equal and includes error message into revert string on failure.\"},\"assertEq(int256[],int256[])\":{\"notice\":\"Asserts that two arrays of `int256` values are equal.\"},\"assertEq(int256[],int256[],string)\":{\"notice\":\"Asserts that two arrays of `int256` values are equal and includes error message into revert string on failure.\"},\"assertEq(string,string)\":{\"notice\":\"Asserts that two `string` values are equal.\"},\"assertEq(string,string,string)\":{\"notice\":\"Asserts that two `string` values are equal and includes error message into revert string on failure.\"},\"assertEq(string[],string[])\":{\"notice\":\"Asserts that two arrays of `string` values are equal.\"},\"assertEq(string[],string[],string)\":{\"notice\":\"Asserts that two arrays of `string` values are equal and includes error message into revert string on failure.\"},\"assertEq(uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are equal.\"},\"assertEq(uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are equal and includes error message into revert string on failure.\"},\"assertEq(uint256[],uint256[])\":{\"notice\":\"Asserts that two arrays of `uint256 values are equal.\"},\"assertEq(uint256[],uint256[],string)\":{\"notice\":\"Asserts that two arrays of `uint256` values are equal and includes error message into revert string on failure.\"},\"assertEqDecimal(int256,int256,uint256)\":{\"notice\":\"Asserts that two `int256` values are equal, formatting them with decimals in failure message.\"},\"assertEqDecimal(int256,int256,uint256,string)\":{\"notice\":\"Asserts that two `int256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertEqDecimal(uint256,uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are equal, formatting them with decimals in failure message.\"},\"assertEqDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertFalse(bool)\":{\"notice\":\"Asserts that the given condition is false.\"},\"assertFalse(bool,string)\":{\"notice\":\"Asserts that the given condition is false and includes error message into revert string on failure.\"},\"assertGe(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second.\"},\"assertGe(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure.\"},\"assertGe(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second.\"},\"assertGe(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure.\"},\"assertGeDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message.\"},\"assertGeDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertGeDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message.\"},\"assertGeDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertGt(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second.\"},\"assertGt(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second. Includes error message into revert string on failure.\"},\"assertGt(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second.\"},\"assertGt(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second. Includes error message into revert string on failure.\"},\"assertGtDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message.\"},\"assertGtDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertGtDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message.\"},\"assertGtDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLe(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second.\"},\"assertLe(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure.\"},\"assertLe(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second.\"},\"assertLe(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure.\"},\"assertLeDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message.\"},\"assertLeDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLeDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message.\"},\"assertLeDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLt(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second.\"},\"assertLt(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second. Includes error message into revert string on failure.\"},\"assertLt(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second.\"},\"assertLt(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second. Includes error message into revert string on failure.\"},\"assertLtDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message.\"},\"assertLtDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLtDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message.\"},\"assertLtDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertNotEq(address,address)\":{\"notice\":\"Asserts that two `address` values are not equal.\"},\"assertNotEq(address,address,string)\":{\"notice\":\"Asserts that two `address` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(address[],address[])\":{\"notice\":\"Asserts that two arrays of `address` values are not equal.\"},\"assertNotEq(address[],address[],string)\":{\"notice\":\"Asserts that two arrays of `address` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bool,bool)\":{\"notice\":\"Asserts that two `bool` values are not equal.\"},\"assertNotEq(bool,bool,string)\":{\"notice\":\"Asserts that two `bool` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bool[],bool[])\":{\"notice\":\"Asserts that two arrays of `bool` values are not equal.\"},\"assertNotEq(bool[],bool[],string)\":{\"notice\":\"Asserts that two arrays of `bool` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes,bytes)\":{\"notice\":\"Asserts that two `bytes` values are not equal.\"},\"assertNotEq(bytes,bytes,string)\":{\"notice\":\"Asserts that two `bytes` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes32,bytes32)\":{\"notice\":\"Asserts that two `bytes32` values are not equal.\"},\"assertNotEq(bytes32,bytes32,string)\":{\"notice\":\"Asserts that two `bytes32` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes32[],bytes32[])\":{\"notice\":\"Asserts that two arrays of `bytes32` values are not equal.\"},\"assertNotEq(bytes32[],bytes32[],string)\":{\"notice\":\"Asserts that two arrays of `bytes32` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes[],bytes[])\":{\"notice\":\"Asserts that two arrays of `bytes` values are not equal.\"},\"assertNotEq(bytes[],bytes[],string)\":{\"notice\":\"Asserts that two arrays of `bytes` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(int256,int256)\":{\"notice\":\"Asserts that two `int256` values are not equal.\"},\"assertNotEq(int256,int256,string)\":{\"notice\":\"Asserts that two `int256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(int256[],int256[])\":{\"notice\":\"Asserts that two arrays of `int256` values are not equal.\"},\"assertNotEq(int256[],int256[],string)\":{\"notice\":\"Asserts that two arrays of `int256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(string,string)\":{\"notice\":\"Asserts that two `string` values are not equal.\"},\"assertNotEq(string,string,string)\":{\"notice\":\"Asserts that two `string` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(string[],string[])\":{\"notice\":\"Asserts that two arrays of `string` values are not equal.\"},\"assertNotEq(string[],string[],string)\":{\"notice\":\"Asserts that two arrays of `string` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are not equal.\"},\"assertNotEq(uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(uint256[],uint256[])\":{\"notice\":\"Asserts that two arrays of `uint256` values are not equal.\"},\"assertNotEq(uint256[],uint256[],string)\":{\"notice\":\"Asserts that two arrays of `uint256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEqDecimal(int256,int256,uint256)\":{\"notice\":\"Asserts that two `int256` values are not equal, formatting them with decimals in failure message.\"},\"assertNotEqDecimal(int256,int256,uint256,string)\":{\"notice\":\"Asserts that two `int256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertNotEqDecimal(uint256,uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message.\"},\"assertNotEqDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertTrue(bool)\":{\"notice\":\"Asserts that the given condition is true.\"},\"assertTrue(bool,string)\":{\"notice\":\"Asserts that the given condition is true and includes error message into revert string on failure.\"},\"assume(bool)\":{\"notice\":\"If the condition is false, discard this run's fuzz inputs and generate new ones.\"},\"breakpoint(string)\":{\"notice\":\"Writes a breakpoint to jump to in the debugger.\"},\"breakpoint(string,bool)\":{\"notice\":\"Writes a conditional breakpoint to jump to in the debugger.\"},\"broadcast()\":{\"notice\":\"Using the address that calls the test contract, has the next call (at this call depth only) create a transaction that can later be signed and sent onchain.\"},\"broadcast(address)\":{\"notice\":\"Has the next call (at this call depth only) create a transaction with the address provided as the sender that can later be signed and sent onchain.\"},\"broadcast(uint256)\":{\"notice\":\"Has the next call (at this call depth only) create a transaction with the private key provided as the sender that can later be signed and sent onchain.\"},\"chainId(uint256)\":{\"notice\":\"Sets `block.chainid`.\"},\"clearMockedCalls()\":{\"notice\":\"Clears all mocked calls.\"},\"closeFile(string)\":{\"notice\":\"Closes file for reading, resetting the offset and allowing to read it from beginning with readLine. `path` is relative to the project root.\"},\"coinbase(address)\":{\"notice\":\"Sets `block.coinbase`.\"},\"computeCreate2Address(bytes32,bytes32)\":{\"notice\":\"Compute the address of a contract created with CREATE2 using the default CREATE2 deployer.\"},\"computeCreate2Address(bytes32,bytes32,address)\":{\"notice\":\"Compute the address of a contract created with CREATE2 using the given CREATE2 deployer.\"},\"computeCreateAddress(address,uint256)\":{\"notice\":\"Compute the address a contract will be deployed at for a given deployer address and nonce.\"},\"copyFile(string,string)\":{\"notice\":\"Copies the contents of one file to another. This function will **overwrite** the contents of `to`. On success, the total number of bytes copied is returned and it is equal to the length of the `to` file as reported by `metadata`. Both `from` and `to` are relative to the project root.\"},\"createDir(string,bool)\":{\"notice\":\"Creates a new, empty directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - User lacks permissions to modify `path`. - A parent of the given path doesn't exist and `recursive` is false. - `path` already exists and `recursive` is false. `path` is relative to the project root.\"},\"createFork(string)\":{\"notice\":\"Creates a new fork with the given endpoint and the _latest_ block and returns the identifier of the fork.\"},\"createFork(string,bytes32)\":{\"notice\":\"Creates a new fork with the given endpoint and at the block the given transaction was mined in, replays all transaction mined in the block before the transaction, and returns the identifier of the fork.\"},\"createFork(string,uint256)\":{\"notice\":\"Creates a new fork with the given endpoint and block and returns the identifier of the fork.\"},\"createSelectFork(string)\":{\"notice\":\"Creates and also selects a new fork with the given endpoint and the latest block and returns the identifier of the fork.\"},\"createSelectFork(string,bytes32)\":{\"notice\":\"Creates and also selects new fork with the given endpoint and at the block the given transaction was mined in, replays all transaction mined in the block before the transaction, returns the identifier of the fork.\"},\"createSelectFork(string,uint256)\":{\"notice\":\"Creates and also selects a new fork with the given endpoint and block and returns the identifier of the fork.\"},\"createWallet(string)\":{\"notice\":\"Derives a private key from the name, labels the account with that name, and returns the wallet.\"},\"createWallet(uint256)\":{\"notice\":\"Generates a wallet from the private key and returns the wallet.\"},\"createWallet(uint256,string)\":{\"notice\":\"Generates a wallet from the private key, labels the account with that name, and returns the wallet.\"},\"deal(address,uint256)\":{\"notice\":\"Sets an address' balance.\"},\"deleteSnapshot(uint256)\":{\"notice\":\"Removes the snapshot with the given ID created by `snapshot`. Takes the snapshot ID to delete. Returns `true` if the snapshot was successfully deleted. Returns `false` if the snapshot does not exist.\"},\"deleteSnapshots()\":{\"notice\":\"Removes _all_ snapshots previously created by `snapshot`.\"},\"deriveKey(string,string,uint32)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) at `{derivationPath}{index}`.\"},\"deriveKey(string,string,uint32,string)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at `{derivationPath}{index}`.\"},\"deriveKey(string,uint32)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) at the derivation path `m/44'/60'/0'/0/{index}`.\"},\"deriveKey(string,uint32,string)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at the derivation path `m/44'/60'/0'/0/{index}`.\"},\"difficulty(uint256)\":{\"notice\":\"Sets `block.difficulty`. Not available on EVM versions from Paris onwards. Use `prevrandao` instead. Reverts if used on unsupported EVM versions.\"},\"dumpState(string)\":{\"notice\":\"Dump a genesis JSON file's `allocs` to disk.\"},\"envAddress(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `address`. Reverts if the variable was not found or could not be parsed.\"},\"envAddress(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envBool(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable was not found or could not be parsed.\"},\"envBool(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes32(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes32(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envInt(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable was not found or could not be parsed.\"},\"envInt(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envOr(string,address)\":{\"notice\":\"Gets the environment variable `name` and parses it as `address`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,bool)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,bytes)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,bytes32)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,int256)\":{\"notice\":\"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `string`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,address[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,bool[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,bytes32[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,bytes[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,int256[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,string[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,uint256[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,uint256)\":{\"notice\":\"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envString(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `string`. Reverts if the variable was not found or could not be parsed.\"},\"envString(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envUint(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable was not found or could not be parsed.\"},\"envUint(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"etch(address,bytes)\":{\"notice\":\"Sets an address' code.\"},\"eth_getLogs(uint256,uint256,address,bytes32[])\":{\"notice\":\"Gets all the logs according to specified filter.\"},\"exists(string)\":{\"notice\":\"Returns true if the given path points to an existing entity, else returns false.\"},\"expectCall(address,bytes)\":{\"notice\":\"Expects a call to an address with the specified calldata. Calldata can either be a strict or a partial match.\"},\"expectCall(address,bytes,uint64)\":{\"notice\":\"Expects given number of calls to an address with the specified calldata.\"},\"expectCall(address,uint256,bytes)\":{\"notice\":\"Expects a call to an address with the specified `msg.value` and calldata.\"},\"expectCall(address,uint256,bytes,uint64)\":{\"notice\":\"Expects given number of calls to an address with the specified `msg.value` and calldata.\"},\"expectCall(address,uint256,uint64,bytes)\":{\"notice\":\"Expect a call to an address with the specified `msg.value`, gas, and calldata.\"},\"expectCall(address,uint256,uint64,bytes,uint64)\":{\"notice\":\"Expects given number of calls to an address with the specified `msg.value`, gas, and calldata.\"},\"expectCallMinGas(address,uint256,uint64,bytes)\":{\"notice\":\"Expect a call to an address with the specified `msg.value` and calldata, and a *minimum* amount of gas.\"},\"expectCallMinGas(address,uint256,uint64,bytes,uint64)\":{\"notice\":\"Expect given number of calls to an address with the specified `msg.value` and calldata, and a *minimum* amount of gas.\"},\"expectEmit()\":{\"notice\":\"Prepare an expected log with all topic and data checks enabled. Call this function, then emit an event, then call a function. Internally after the call, we check if logs were emitted in the expected order with the expected topics and data.\"},\"expectEmit(address)\":{\"notice\":\"Same as the previous method, but also checks supplied address against emitting contract.\"},\"expectEmit(bool,bool,bool,bool)\":{\"notice\":\"Prepare an expected log with (bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData.). Call this function, then emit an event, then call a function. Internally after the call, we check if logs were emitted in the expected order with the expected topics and data (as specified by the booleans).\"},\"expectEmit(bool,bool,bool,bool,address)\":{\"notice\":\"Same as the previous method, but also checks supplied address against emitting contract.\"},\"expectRevert()\":{\"notice\":\"Expects an error on next call with any revert data.\"},\"expectRevert(bytes)\":{\"notice\":\"Expects an error on next call that exactly matches the revert data.\"},\"expectRevert(bytes4)\":{\"notice\":\"Expects an error on next call that starts with the revert data.\"},\"expectSafeMemory(uint64,uint64)\":{\"notice\":\"Only allows memory writes to offsets [0x00, 0x60) \\u222a [min, max) in the current subcontext. If any other memory is written to, the test will fail. Can be called multiple times to add more ranges to the set.\"},\"expectSafeMemoryCall(uint64,uint64)\":{\"notice\":\"Only allows memory writes to offsets [0x00, 0x60) \\u222a [min, max) in the next created subcontext. If any other memory is written to, the test will fail. Can be called multiple times to add more ranges to the set.\"},\"fee(uint256)\":{\"notice\":\"Sets `block.basefee`.\"},\"ffi(string[])\":{\"notice\":\"Performs a foreign function call via the terminal.\"},\"fsMetadata(string)\":{\"notice\":\"Given a path, query the file system to get information about a file, directory, etc.\"},\"getBlockNumber()\":{\"notice\":\"Gets the current `block.number`. You should use this instead of `block.number` if you use `vm.roll`, as `block.number` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180\"},\"getBlockTimestamp()\":{\"notice\":\"Gets the current `block.timestamp`. You should use this instead of `block.timestamp` if you use `vm.warp`, as `block.timestamp` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180\"},\"getCode(string)\":{\"notice\":\"Gets the creation bytecode from an artifact file. Takes in the relative path to the json file.\"},\"getDeployedCode(string)\":{\"notice\":\"Gets the deployed bytecode from an artifact file. Takes in the relative path to the json file.\"},\"getLabel(address)\":{\"notice\":\"Gets the label for the specified address.\"},\"getMappingKeyAndParentOf(address,bytes32)\":{\"notice\":\"Gets the map key and parent of a mapping at a given slot, for a given address.\"},\"getMappingLength(address,bytes32)\":{\"notice\":\"Gets the number of elements in the mapping at the given slot, for a given address.\"},\"getMappingSlotAt(address,bytes32,uint256)\":{\"notice\":\"Gets the elements at index idx of the mapping at the given slot, for a given address. The index must be less than the length of the mapping (i.e. the number of keys in the mapping).\"},\"getNonce((address,uint256,uint256,uint256))\":{\"notice\":\"Get a `Wallet`'s nonce.\"},\"getNonce(address)\":{\"notice\":\"Gets the nonce of an account.\"},\"getRecordedLogs()\":{\"notice\":\"Gets all the recorded logs.\"},\"isDir(string)\":{\"notice\":\"Returns true if the path exists on disk and is pointing at a directory, else returns false.\"},\"isFile(string)\":{\"notice\":\"Returns true if the path exists on disk and is pointing at a regular file, else returns false.\"},\"isPersistent(address)\":{\"notice\":\"Returns true if the account is marked as persistent.\"},\"keyExists(string,string)\":{\"notice\":\"Checks if `key` exists in a JSON object `keyExists` is being deprecated in favor of `keyExistsJson`. It will be removed in future versions.\"},\"keyExistsJson(string,string)\":{\"notice\":\"Checks if `key` exists in a JSON object.\"},\"keyExistsToml(string,string)\":{\"notice\":\"Checks if `key` exists in a TOML table.\"},\"label(address,string)\":{\"notice\":\"Labels an address in call traces.\"},\"load(address,bytes32)\":{\"notice\":\"Loads a storage slot from an address.\"},\"loadAllocs(string)\":{\"notice\":\"Load a genesis JSON file's `allocs` into the in-memory revm state.\"},\"makePersistent(address)\":{\"notice\":\"Marks that the account(s) should use persistent storage across fork swaps in a multifork setup Meaning, changes made to the state of this account will be kept when switching forks.\"},\"makePersistent(address,address)\":{\"notice\":\"See `makePersistent(address)`.\"},\"makePersistent(address,address,address)\":{\"notice\":\"See `makePersistent(address)`.\"},\"makePersistent(address[])\":{\"notice\":\"See `makePersistent(address)`.\"},\"mockCall(address,bytes,bytes)\":{\"notice\":\"Mocks a call to an address, returning specified data. Calldata can either be strict or a partial match, e.g. if you only pass a Solidity selector to the expected calldata, then the entire Solidity function will be mocked.\"},\"mockCall(address,uint256,bytes,bytes)\":{\"notice\":\"Mocks a call to an address with a specific `msg.value`, returning specified data. Calldata match takes precedence over `msg.value` in case of ambiguity.\"},\"mockCallRevert(address,bytes,bytes)\":{\"notice\":\"Reverts a call to an address with specified revert data.\"},\"mockCallRevert(address,uint256,bytes,bytes)\":{\"notice\":\"Reverts a call to an address with a specific `msg.value`, with specified revert data.\"},\"parseAddress(string)\":{\"notice\":\"Parses the given `string` into an `address`.\"},\"parseBool(string)\":{\"notice\":\"Parses the given `string` into a `bool`.\"},\"parseBytes(string)\":{\"notice\":\"Parses the given `string` into `bytes`.\"},\"parseBytes32(string)\":{\"notice\":\"Parses the given `string` into a `bytes32`.\"},\"parseInt(string)\":{\"notice\":\"Parses the given `string` into a `int256`.\"},\"parseJson(string)\":{\"notice\":\"ABI-encodes a JSON object.\"},\"parseJson(string,string)\":{\"notice\":\"ABI-encodes a JSON object at `key`.\"},\"parseJsonAddress(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `address`.\"},\"parseJsonAddressArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `address[]`.\"},\"parseJsonBool(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bool`.\"},\"parseJsonBoolArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bool[]`.\"},\"parseJsonBytes(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes`.\"},\"parseJsonBytes32(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes32`.\"},\"parseJsonBytes32Array(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes32[]`.\"},\"parseJsonBytesArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes[]`.\"},\"parseJsonInt(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `int256`.\"},\"parseJsonIntArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `int256[]`.\"},\"parseJsonKeys(string,string)\":{\"notice\":\"Returns an array of all the keys in a JSON object.\"},\"parseJsonString(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `string`.\"},\"parseJsonStringArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `string[]`.\"},\"parseJsonUint(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `uint256`.\"},\"parseJsonUintArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `uint256[]`.\"},\"parseToml(string)\":{\"notice\":\"ABI-encodes a TOML table.\"},\"parseToml(string,string)\":{\"notice\":\"ABI-encodes a TOML table at `key`.\"},\"parseTomlAddress(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `address`.\"},\"parseTomlAddressArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `address[]`.\"},\"parseTomlBool(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bool`.\"},\"parseTomlBoolArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bool[]`.\"},\"parseTomlBytes(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bytes`.\"},\"parseTomlBytes32(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bytes32`.\"},\"parseTomlBytes32Array(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bytes32[]`.\"},\"parseTomlBytesArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bytes[]`.\"},\"parseTomlInt(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `int256`.\"},\"parseTomlIntArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `int256[]`.\"},\"parseTomlKeys(string,string)\":{\"notice\":\"Returns an array of all the keys in a TOML table.\"},\"parseTomlString(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `string`.\"},\"parseTomlStringArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `string[]`.\"},\"parseTomlUint(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `uint256`.\"},\"parseTomlUintArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `uint256[]`.\"},\"parseUint(string)\":{\"notice\":\"Parses the given `string` into a `uint256`.\"},\"pauseGasMetering()\":{\"notice\":\"Pauses gas metering (i.e. gas usage is not counted). Noop if already paused.\"},\"prank(address)\":{\"notice\":\"Sets the *next* call's `msg.sender` to be the input address.\"},\"prank(address,address)\":{\"notice\":\"Sets the *next* call's `msg.sender` to be the input address, and the `tx.origin` to be the second input.\"},\"prevrandao(bytes32)\":{\"notice\":\"Sets `block.prevrandao`. Not available on EVM versions before Paris. Use `difficulty` instead. If used on unsupported EVM versions it will revert.\"},\"projectRoot()\":{\"notice\":\"Get the path of the current project root.\"},\"prompt(string)\":{\"notice\":\"Prompts the user for a string value in the terminal.\"},\"promptSecret(string)\":{\"notice\":\"Prompts the user for a hidden string value in the terminal.\"},\"readCallers()\":{\"notice\":\"Reads the current `msg.sender` and `tx.origin` from state and reports if there is any active caller modification.\"},\"readDir(string)\":{\"notice\":\"Reads the directory at the given path recursively, up to `maxDepth`. `maxDepth` defaults to 1, meaning only the direct children of the given directory will be returned. Follows symbolic links if `followLinks` is true.\"},\"readDir(string,uint64)\":{\"notice\":\"See `readDir(string)`.\"},\"readDir(string,uint64,bool)\":{\"notice\":\"See `readDir(string)`.\"},\"readFile(string)\":{\"notice\":\"Reads the entire content of file to string. `path` is relative to the project root.\"},\"readFileBinary(string)\":{\"notice\":\"Reads the entire content of file as binary. `path` is relative to the project root.\"},\"readLine(string)\":{\"notice\":\"Reads next line of file to string.\"},\"readLink(string)\":{\"notice\":\"Reads a symbolic link, returning the path that the link points to. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` is not a symbolic link. - `path` does not exist.\"},\"record()\":{\"notice\":\"Records all storage reads and writes.\"},\"recordLogs()\":{\"notice\":\"Record all the transaction logs.\"},\"rememberKey(uint256)\":{\"notice\":\"Adds a private key to the local forge wallet and returns the address.\"},\"removeDir(string,bool)\":{\"notice\":\"Removes a directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` doesn't exist. - `path` isn't a directory. - User lacks permissions to modify `path`. - The directory is not empty and `recursive` is false. `path` is relative to the project root.\"},\"removeFile(string)\":{\"notice\":\"Removes a file from the filesystem. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` points to a directory. - The file doesn't exist. - The user lacks permissions to remove the file. `path` is relative to the project root.\"},\"replace(string,string,string)\":{\"notice\":\"Replaces occurrences of `from` in the given `string` with `to`.\"},\"resetNonce(address)\":{\"notice\":\"Resets the nonce of an account to 0 for EOAs and 1 for contract accounts.\"},\"resumeGasMetering()\":{\"notice\":\"Resumes gas metering (i.e. gas usage is counted again). Noop if already on.\"},\"revertTo(uint256)\":{\"notice\":\"Revert the state of the EVM to a previous snapshot Takes the snapshot ID to revert to. Returns `true` if the snapshot was successfully reverted. Returns `false` if the snapshot does not exist. **Note:** This does not automatically delete the snapshot. To delete the snapshot use `deleteSnapshot`.\"},\"revertToAndDelete(uint256)\":{\"notice\":\"Revert the state of the EVM to a previous snapshot and automatically deletes the snapshots Takes the snapshot ID to revert to. Returns `true` if the snapshot was successfully reverted and deleted. Returns `false` if the snapshot does not exist.\"},\"revokePersistent(address)\":{\"notice\":\"Revokes persistent status from the address, previously added via `makePersistent`.\"},\"revokePersistent(address[])\":{\"notice\":\"See `revokePersistent(address)`.\"},\"roll(uint256)\":{\"notice\":\"Sets `block.height`.\"},\"rollFork(bytes32)\":{\"notice\":\"Updates the currently active fork to given transaction. This will `rollFork` with the number of the block the transaction was mined in and replays all transaction mined before it in the block.\"},\"rollFork(uint256)\":{\"notice\":\"Updates the currently active fork to given block number This is similar to `roll` but for the currently active fork.\"},\"rollFork(uint256,bytes32)\":{\"notice\":\"Updates the given fork to block number of the given transaction and replays all transaction mined before it in the block.\"},\"rollFork(uint256,uint256)\":{\"notice\":\"Updates the given fork to given block number.\"},\"rpc(string,string)\":{\"notice\":\"Performs an Ethereum JSON-RPC request to the current fork URL.\"},\"rpcUrl(string)\":{\"notice\":\"Returns the RPC url for the given alias.\"},\"rpcUrlStructs()\":{\"notice\":\"Returns all rpc urls and their aliases as structs.\"},\"rpcUrls()\":{\"notice\":\"Returns all rpc urls and their aliases `[alias, url][]`.\"},\"selectFork(uint256)\":{\"notice\":\"Takes a fork identifier created by `createFork` and sets the corresponding forked state as active.\"},\"serializeAddress(string,string,address)\":{\"notice\":\"See `serializeJson`.\"},\"serializeAddress(string,string,address[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeBool(string,string,bool)\":{\"notice\":\"See `serializeJson`.\"},\"serializeBool(string,string,bool[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes(string,string,bytes)\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes(string,string,bytes[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes32(string,string,bytes32)\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes32(string,string,bytes32[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeInt(string,string,int256)\":{\"notice\":\"See `serializeJson`.\"},\"serializeInt(string,string,int256[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeJson(string,string)\":{\"notice\":\"Serializes a key and value to a JSON object stored in-memory that can be later written to a file. Returns the stringified version of the specific JSON file up to that moment.\"},\"serializeString(string,string,string)\":{\"notice\":\"See `serializeJson`.\"},\"serializeString(string,string,string[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeUint(string,string,uint256)\":{\"notice\":\"See `serializeJson`.\"},\"serializeUint(string,string,uint256[])\":{\"notice\":\"See `serializeJson`.\"},\"setEnv(string,string)\":{\"notice\":\"Sets environment variables.\"},\"setNonce(address,uint64)\":{\"notice\":\"Sets the nonce of an account. Must be higher than the current nonce of the account.\"},\"setNonceUnsafe(address,uint64)\":{\"notice\":\"Sets the nonce of an account to an arbitrary value.\"},\"sign((address,uint256,uint256,uint256),bytes32)\":{\"notice\":\"Signs data with a `Wallet`.\"},\"sign(uint256,bytes32)\":{\"notice\":\"Signs `digest` with `privateKey` using the secp256k1 curve.\"},\"signP256(uint256,bytes32)\":{\"notice\":\"Signs `digest` with `privateKey` using the secp256r1 curve.\"},\"skip(bool)\":{\"notice\":\"Marks a test as skipped. Must be called at the top of the test.\"},\"sleep(uint256)\":{\"notice\":\"Suspends execution of the main thread for `duration` milliseconds.\"},\"snapshot()\":{\"notice\":\"Snapshot the current state of the evm. Returns the ID of the snapshot that was created. To revert a snapshot use `revertTo`.\"},\"split(string,string)\":{\"notice\":\"Splits the given `string` into an array of strings divided by the `delimiter`.\"},\"startBroadcast()\":{\"notice\":\"Using the address that calls the test contract, has all subsequent calls (at this call depth only) create transactions that can later be signed and sent onchain.\"},\"startBroadcast(address)\":{\"notice\":\"Has all subsequent calls (at this call depth only) create transactions with the address provided that can later be signed and sent onchain.\"},\"startBroadcast(uint256)\":{\"notice\":\"Has all subsequent calls (at this call depth only) create transactions with the private key provided that can later be signed and sent onchain.\"},\"startMappingRecording()\":{\"notice\":\"Starts recording all map SSTOREs for later retrieval.\"},\"startPrank(address)\":{\"notice\":\"Sets all subsequent calls' `msg.sender` to be the input address until `stopPrank` is called.\"},\"startPrank(address,address)\":{\"notice\":\"Sets all subsequent calls' `msg.sender` to be the input address until `stopPrank` is called, and the `tx.origin` to be the second input.\"},\"startStateDiffRecording()\":{\"notice\":\"Record all account accesses as part of CREATE, CALL or SELFDESTRUCT opcodes in order, along with the context of the calls\"},\"stopAndReturnStateDiff()\":{\"notice\":\"Returns an ordered array of all account accesses from a `vm.startStateDiffRecording` session.\"},\"stopBroadcast()\":{\"notice\":\"Stops collecting onchain transactions.\"},\"stopExpectSafeMemory()\":{\"notice\":\"Stops all safe memory expectation in the current subcontext.\"},\"stopMappingRecording()\":{\"notice\":\"Stops recording all map SSTOREs for later retrieval and clears the recorded data.\"},\"stopPrank()\":{\"notice\":\"Resets subsequent calls' `msg.sender` to be `address(this)`.\"},\"store(address,bytes32,bytes32)\":{\"notice\":\"Stores a value to an address' storage slot.\"},\"toBase64(bytes)\":{\"notice\":\"Encodes a `bytes` value to a base64 string.\"},\"toBase64(string)\":{\"notice\":\"Encodes a `string` value to a base64 string.\"},\"toBase64URL(bytes)\":{\"notice\":\"Encodes a `bytes` value to a base64url string.\"},\"toBase64URL(string)\":{\"notice\":\"Encodes a `string` value to a base64url string.\"},\"toLowercase(string)\":{\"notice\":\"Converts the given `string` value to Lowercase.\"},\"toString(address)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(bool)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(bytes)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(bytes32)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(int256)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(uint256)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toUppercase(string)\":{\"notice\":\"Converts the given `string` value to Uppercase.\"},\"transact(bytes32)\":{\"notice\":\"Fetches the given transaction from the active fork and executes it on the current state.\"},\"transact(uint256,bytes32)\":{\"notice\":\"Fetches the given transaction from the given fork and executes it on the current state.\"},\"trim(string)\":{\"notice\":\"Trims leading and trailing whitespace from the given `string` value.\"},\"tryFfi(string[])\":{\"notice\":\"Performs a foreign function call via terminal and returns the exit code, stdout, and stderr.\"},\"txGasPrice(uint256)\":{\"notice\":\"Sets `tx.gasprice`.\"},\"unixTime()\":{\"notice\":\"Returns the time since unix epoch in milliseconds.\"},\"warp(uint256)\":{\"notice\":\"Sets `block.timestamp`.\"},\"writeFile(string,string)\":{\"notice\":\"Writes data to file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root.\"},\"writeFileBinary(string,bytes)\":{\"notice\":\"Writes binary data to a file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root.\"},\"writeJson(string,string)\":{\"notice\":\"Write a serialized JSON object to a file. If the file exists, it will be overwritten.\"},\"writeJson(string,string,string)\":{\"notice\":\"Write a serialized JSON object to an **existing** JSON file, replacing a value with key = This is useful to replace a specific value of a JSON file, without having to parse the entire thing.\"},\"writeLine(string,string)\":{\"notice\":\"Writes line to file, creating a file if it does not exist. `path` is relative to the project root.\"},\"writeToml(string,string)\":{\"notice\":\"Takes serialized JSON, converts to TOML and write a serialized TOML to a file.\"},\"writeToml(string,string,string)\":{\"notice\":\"Takes serialized JSON, converts to TOML and write a serialized TOML table to an **existing** TOML file, replacing a value with key = This is useful to replace a specific value of a TOML file, without having to parse the entire thing.\"}},\"notice\":\"The `Vm` interface does allow manipulation of the EVM state. These are all intended to be used in tests, but it is not recommended to use these cheats in scripts.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Vm.sol\":\"Vm\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a\",\"dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"accesses","outputs":[{"internalType":"bytes32[]","name":"readSlots","type":"bytes32[]"},{"internalType":"bytes32[]","name":"writeSlots","type":"bytes32[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"activeFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"pure","type":"function","name":"addr","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"allowCheatcodes"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertFalse"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertFalse"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertTrue"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertTrue"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assume"},{"inputs":[{"internalType":"string","name":"char","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"breakpoint"},{"inputs":[{"internalType":"string","name":"char","type":"string"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"breakpoint"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"uint256","name":"newChainId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"chainId"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"clearMockedCalls"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"closeFile"},{"inputs":[{"internalType":"address","name":"newCoinbase","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"coinbase"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes32","name":"initCodeHash","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"computeCreate2Address","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes32","name":"initCodeHash","type":"bytes32"},{"internalType":"address","name":"deployer","type":"address"}],"stateMutability":"pure","type":"function","name":"computeCreate2Address","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"deployer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"pure","type":"function","name":"computeCreateAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"from","type":"string"},{"internalType":"string","name":"to","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"copyFile","outputs":[{"internalType":"uint64","name":"copied","type":"uint64"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bool","name":"recursive","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"createDir"},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createSelectFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createSelectFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createSelectFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"walletLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createWallet","outputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createWallet","outputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"string","name":"walletLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createWallet","outputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"newBalance","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deal"},{"inputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deleteSnapshot","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"deleteSnapshots"},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"},{"internalType":"string","name":"language","type":"string"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"},{"internalType":"string","name":"language","type":"string"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"newDifficulty","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"difficulty"},{"inputs":[{"internalType":"string","name":"pathToStateJson","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"dumpState"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes32[]","name":"defaultValue","type":"bytes32[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"int256[]","name":"defaultValue","type":"int256[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bool","name":"defaultValue","type":"bool"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"defaultValue","type":"address"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"defaultValue","type":"uint256"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes[]","name":"defaultValue","type":"bytes[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"uint256[]","name":"defaultValue","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"string[]","name":"defaultValue","type":"string[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes","name":"defaultValue","type":"bytes"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"defaultValue","type":"bytes32"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"int256","name":"defaultValue","type":"int256"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"address[]","name":"defaultValue","type":"address[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"defaultValue","type":"string"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bool[]","name":"defaultValue","type":"bool[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"newRuntimeBytecode","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"etch"},{"inputs":[{"internalType":"uint256","name":"fromBlock","type":"uint256"},{"internalType":"uint256","name":"toBlock","type":"uint256"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"eth_getLogs","outputs":[{"internalType":"struct VmSafe.EthGetLogs[]","name":"logs","type":"tuple[]","components":[{"internalType":"address","name":"emitter","type":"address"},{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"uint64","name":"blockNumber","type":"uint64"},{"internalType":"bytes32","name":"transactionHash","type":"bytes32"},{"internalType":"uint64","name":"transactionIndex","type":"uint64"},{"internalType":"uint256","name":"logIndex","type":"uint256"},{"internalType":"bool","name":"removed","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"exists","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint64","name":"gas","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint64","name":"gas","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint64","name":"minGas","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCallMinGas"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint64","name":"minGas","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectCallMinGas"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[{"internalType":"bool","name":"checkTopic1","type":"bool"},{"internalType":"bool","name":"checkTopic2","type":"bool"},{"internalType":"bool","name":"checkTopic3","type":"bool"},{"internalType":"bool","name":"checkData","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[{"internalType":"bool","name":"checkTopic1","type":"bool"},{"internalType":"bool","name":"checkTopic2","type":"bool"},{"internalType":"bool","name":"checkTopic3","type":"bool"},{"internalType":"bool","name":"checkData","type":"bool"},{"internalType":"address","name":"emitter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[{"internalType":"address","name":"emitter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[{"internalType":"bytes4","name":"revertData","type":"bytes4"}],"stateMutability":"nonpayable","type":"function","name":"expectRevert"},{"inputs":[{"internalType":"bytes","name":"revertData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectRevert"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"expectRevert"},{"inputs":[{"internalType":"uint64","name":"min","type":"uint64"},{"internalType":"uint64","name":"max","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectSafeMemory"},{"inputs":[{"internalType":"uint64","name":"min","type":"uint64"},{"internalType":"uint64","name":"max","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectSafeMemoryCall"},{"inputs":[{"internalType":"uint256","name":"newBasefee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"fee"},{"inputs":[{"internalType":"string[]","name":"commandInput","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"ffi","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"fsMetadata","outputs":[{"internalType":"struct VmSafe.FsMetadata","name":"metadata","type":"tuple","components":[{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"},{"internalType":"uint256","name":"length","type":"uint256"},{"internalType":"bool","name":"readOnly","type":"bool"},{"internalType":"uint256","name":"modified","type":"uint256"},{"internalType":"uint256","name":"accessed","type":"uint256"},{"internalType":"uint256","name":"created","type":"uint256"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlockNumber","outputs":[{"internalType":"uint256","name":"height","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlockTimestamp","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getCode","outputs":[{"internalType":"bytes","name":"creationBytecode","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getDeployedCode","outputs":[{"internalType":"bytes","name":"runtimeBytecode","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getLabel","outputs":[{"internalType":"string","name":"currentLabel","type":"string"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"elementSlot","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"getMappingKeyAndParentOf","outputs":[{"internalType":"bool","name":"found","type":"bool"},{"internalType":"bytes32","name":"key","type":"bytes32"},{"internalType":"bytes32","name":"parent","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"mappingSlot","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"getMappingLength","outputs":[{"internalType":"uint256","name":"length","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"mappingSlot","type":"bytes32"},{"internalType":"uint256","name":"idx","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"getMappingSlotAt","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}]},{"inputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"getNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"getRecordedLogs","outputs":[{"internalType":"struct VmSafe.Log[]","name":"logs","type":"tuple[]","components":[{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"address","name":"emitter","type":"address"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"isDir","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"isFile","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isPersistent","outputs":[{"internalType":"bool","name":"persistent","type":"bool"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"view","type":"function","name":"keyExists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"view","type":"function","name":"keyExistsJson","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"view","type":"function","name":"keyExistsToml","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"string","name":"newLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"label"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"}],"stateMutability":"view","type":"function","name":"load","outputs":[{"internalType":"bytes32","name":"data","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"pathToAllocsJson","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"loadAllocs"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"account0","type":"address"},{"internalType":"address","name":"account1","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"account0","type":"address"},{"internalType":"address","name":"account1","type":"address"},{"internalType":"address","name":"account2","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"revertData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockCallRevert"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"revertData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockCallRevert"},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseAddress","outputs":[{"internalType":"address","name":"parsedValue","type":"address"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBool","outputs":[{"internalType":"bool","name":"parsedValue","type":"bool"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes","outputs":[{"internalType":"bytes","name":"parsedValue","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes32","outputs":[{"internalType":"bytes32","name":"parsedValue","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseInt","outputs":[{"internalType":"int256","name":"parsedValue","type":"int256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonAddressArray","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBool","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBoolArray","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytes32","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytes32Array","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytesArray","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonInt","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonIntArray","outputs":[{"internalType":"int256[]","name":"","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonKeys","outputs":[{"internalType":"string[]","name":"keys","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonString","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonStringArray","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonUintArray","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseToml","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"}],"stateMutability":"pure","type":"function","name":"parseToml","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlAddressArray","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBool","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBoolArray","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBytes32","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBytes32Array","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBytesArray","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlInt","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlIntArray","outputs":[{"internalType":"int256[]","name":"","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlKeys","outputs":[{"internalType":"string[]","name":"keys","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlString","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlStringArray","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlUintArray","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseUint","outputs":[{"internalType":"uint256","name":"parsedValue","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pauseGasMetering"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"address","name":"txOrigin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"prank"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"prank"},{"inputs":[{"internalType":"bytes32","name":"newPrevrandao","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"prevrandao"},{"inputs":[],"stateMutability":"view","type":"function","name":"projectRoot","outputs":[{"internalType":"string","name":"path","type":"string"}]},{"inputs":[{"internalType":"string","name":"promptText","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"prompt","outputs":[{"internalType":"string","name":"input","type":"string"}]},{"inputs":[{"internalType":"string","name":"promptText","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"promptSecret","outputs":[{"internalType":"string","name":"input","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"readCallers","outputs":[{"internalType":"enum VmSafe.CallerMode","name":"callerMode","type":"uint8"},{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"address","name":"txOrigin","type":"address"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"maxDepth","type":"uint64"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"maxDepth","type":"uint64"},{"internalType":"bool","name":"followLinks","type":"bool"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFile","outputs":[{"internalType":"string","name":"data","type":"string"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFileBinary","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readLine","outputs":[{"internalType":"string","name":"line","type":"string"}]},{"inputs":[{"internalType":"string","name":"linkPath","type":"string"}],"stateMutability":"view","type":"function","name":"readLink","outputs":[{"internalType":"string","name":"targetPath","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"record"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"recordLogs"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rememberKey","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bool","name":"recursive","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"removeDir"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"removeFile"},{"inputs":[{"internalType":"string","name":"input","type":"string"},{"internalType":"string","name":"from","type":"string"},{"internalType":"string","name":"to","type":"string"}],"stateMutability":"pure","type":"function","name":"replace","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"resetNonce"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"resumeGasMetering"},{"inputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"revertTo","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"revertToAndDelete","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"revokePersistent"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokePersistent"},{"inputs":[{"internalType":"uint256","name":"newHeight","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"roll"},{"inputs":[{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"string","name":"method","type":"string"},{"internalType":"string","name":"params","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"rpc","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"rpcAlias","type":"string"}],"stateMutability":"view","type":"function","name":"rpcUrl","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrlStructs","outputs":[{"internalType":"struct VmSafe.Rpc[]","name":"urls","type":"tuple[]","components":[{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"url","type":"string"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrls","outputs":[{"internalType":"string[2][]","name":"urls","type":"string[2][]"}]},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"selectFork"},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address[]","name":"values","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address","name":"value","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool[]","name":"values","type":"bool[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes[]","name":"values","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32[]","name":"values","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256[]","name":"values","type":"int256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"serializeJson","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string[]","name":"values","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setEnv"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint64","name":"newNonce","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setNonce"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint64","name":"newNonce","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setNonceUnsafe"},{"inputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"signP256","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"bool","name":"skipTest","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"skip"},{"inputs":[{"internalType":"uint256","name":"duration","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"sleep"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"snapshot","outputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"input","type":"string"},{"internalType":"string","name":"delimiter","type":"string"}],"stateMutability":"pure","type":"function","name":"split","outputs":[{"internalType":"string[]","name":"outputs","type":"string[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startMappingRecording"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startPrank"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"address","name":"txOrigin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startPrank"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startStateDiffRecording"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopAndReturnStateDiff","outputs":[{"internalType":"struct VmSafe.AccountAccess[]","name":"accountAccesses","type":"tuple[]","components":[{"internalType":"struct VmSafe.ChainInfo","name":"chainInfo","type":"tuple","components":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"uint256","name":"chainId","type":"uint256"}]},{"internalType":"enum VmSafe.AccountAccessKind","name":"kind","type":"uint8"},{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"accessor","type":"address"},{"internalType":"bool","name":"initialized","type":"bool"},{"internalType":"uint256","name":"oldBalance","type":"uint256"},{"internalType":"uint256","name":"newBalance","type":"uint256"},{"internalType":"bytes","name":"deployedCode","type":"bytes"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bool","name":"reverted","type":"bool"},{"internalType":"struct VmSafe.StorageAccess[]","name":"storageAccesses","type":"tuple[]","components":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"},{"internalType":"bool","name":"isWrite","type":"bool"},{"internalType":"bytes32","name":"previousValue","type":"bytes32"},{"internalType":"bytes32","name":"newValue","type":"bytes32"},{"internalType":"bool","name":"reverted","type":"bool"}]},{"internalType":"uint64","name":"depth","type":"uint64"}]}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopBroadcast"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopExpectSafeMemory"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopMappingRecording"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopPrank"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"},{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"store"},{"inputs":[{"internalType":"string","name":"data","type":"string"}],"stateMutability":"pure","type":"function","name":"toBase64","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toBase64","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"data","type":"string"}],"stateMutability":"pure","type":"function","name":"toBase64URL","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toBase64URL","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"input","type":"string"}],"stateMutability":"pure","type":"function","name":"toLowercase","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[{"internalType":"address","name":"value","type":"address"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"string","name":"input","type":"string"}],"stateMutability":"pure","type":"function","name":"toUppercase","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"transact"},{"inputs":[{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"transact"},{"inputs":[{"internalType":"string","name":"input","type":"string"}],"stateMutability":"pure","type":"function","name":"trim","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[{"internalType":"string[]","name":"commandInput","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"tryFfi","outputs":[{"internalType":"struct VmSafe.FfiResult","name":"result","type":"tuple","components":[{"internalType":"int32","name":"exitCode","type":"int32"},{"internalType":"bytes","name":"stdout","type":"bytes"},{"internalType":"bytes","name":"stderr","type":"bytes"}]}]},{"inputs":[{"internalType":"uint256","name":"newGasPrice","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"txGasPrice"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unixTime","outputs":[{"internalType":"uint256","name":"milliseconds","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"newTimestamp","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"warp"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeFile"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"writeFileBinary"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"valueKey","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeLine"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"valueKey","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeToml"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeToml"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{"accesses(address)":{"notice":"Gets all accessed reads and write slot from a `vm.record` session, for a given address."},"activeFork()":{"notice":"Returns the identifier of the currently active fork. Reverts if no fork is currently active."},"addr(uint256)":{"notice":"Gets the address for a given private key."},"allowCheatcodes(address)":{"notice":"In forking mode, explicitly grant the given address cheatcode access."},"assertApproxEqAbs(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`."},"assertApproxEqAbs(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure."},"assertApproxEqAbs(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`."},"assertApproxEqAbs(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure."},"assertApproxEqAbsDecimal(int256,int256,uint256,uint256)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message."},"assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message."},"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertApproxEqRel(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%"},"assertApproxEqRel(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure."},"assertApproxEqRel(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%"},"assertApproxEqRel(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure."},"assertApproxEqRelDecimal(int256,int256,uint256,uint256)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message."},"assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message."},"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertEq(address,address)":{"notice":"Asserts that two `address` values are equal."},"assertEq(address,address,string)":{"notice":"Asserts that two `address` values are equal and includes error message into revert string on failure."},"assertEq(address[],address[])":{"notice":"Asserts that two arrays of `address` values are equal."},"assertEq(address[],address[],string)":{"notice":"Asserts that two arrays of `address` values are equal and includes error message into revert string on failure."},"assertEq(bool,bool)":{"notice":"Asserts that two `bool` values are equal."},"assertEq(bool,bool,string)":{"notice":"Asserts that two `bool` values are equal and includes error message into revert string on failure."},"assertEq(bool[],bool[])":{"notice":"Asserts that two arrays of `bool` values are equal."},"assertEq(bool[],bool[],string)":{"notice":"Asserts that two arrays of `bool` values are equal and includes error message into revert string on failure."},"assertEq(bytes,bytes)":{"notice":"Asserts that two `bytes` values are equal."},"assertEq(bytes,bytes,string)":{"notice":"Asserts that two `bytes` values are equal and includes error message into revert string on failure."},"assertEq(bytes32,bytes32)":{"notice":"Asserts that two `bytes32` values are equal."},"assertEq(bytes32,bytes32,string)":{"notice":"Asserts that two `bytes32` values are equal and includes error message into revert string on failure."},"assertEq(bytes32[],bytes32[])":{"notice":"Asserts that two arrays of `bytes32` values are equal."},"assertEq(bytes32[],bytes32[],string)":{"notice":"Asserts that two arrays of `bytes32` values are equal and includes error message into revert string on failure."},"assertEq(bytes[],bytes[])":{"notice":"Asserts that two arrays of `bytes` values are equal."},"assertEq(bytes[],bytes[],string)":{"notice":"Asserts that two arrays of `bytes` values are equal and includes error message into revert string on failure."},"assertEq(int256,int256)":{"notice":"Asserts that two `int256` values are equal."},"assertEq(int256,int256,string)":{"notice":"Asserts that two `int256` values are equal and includes error message into revert string on failure."},"assertEq(int256[],int256[])":{"notice":"Asserts that two arrays of `int256` values are equal."},"assertEq(int256[],int256[],string)":{"notice":"Asserts that two arrays of `int256` values are equal and includes error message into revert string on failure."},"assertEq(string,string)":{"notice":"Asserts that two `string` values are equal."},"assertEq(string,string,string)":{"notice":"Asserts that two `string` values are equal and includes error message into revert string on failure."},"assertEq(string[],string[])":{"notice":"Asserts that two arrays of `string` values are equal."},"assertEq(string[],string[],string)":{"notice":"Asserts that two arrays of `string` values are equal and includes error message into revert string on failure."},"assertEq(uint256,uint256)":{"notice":"Asserts that two `uint256` values are equal."},"assertEq(uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are equal and includes error message into revert string on failure."},"assertEq(uint256[],uint256[])":{"notice":"Asserts that two arrays of `uint256 values are equal."},"assertEq(uint256[],uint256[],string)":{"notice":"Asserts that two arrays of `uint256` values are equal and includes error message into revert string on failure."},"assertEqDecimal(int256,int256,uint256)":{"notice":"Asserts that two `int256` values are equal, formatting them with decimals in failure message."},"assertEqDecimal(int256,int256,uint256,string)":{"notice":"Asserts that two `int256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertEqDecimal(uint256,uint256,uint256)":{"notice":"Asserts that two `uint256` values are equal, formatting them with decimals in failure message."},"assertEqDecimal(uint256,uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertFalse(bool)":{"notice":"Asserts that the given condition is false."},"assertFalse(bool,string)":{"notice":"Asserts that the given condition is false and includes error message into revert string on failure."},"assertGe(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second."},"assertGe(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure."},"assertGe(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second."},"assertGe(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure."},"assertGeDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message."},"assertGeDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertGeDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message."},"assertGeDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertGt(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be greater than second."},"assertGt(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than second. Includes error message into revert string on failure."},"assertGt(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second."},"assertGt(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second. Includes error message into revert string on failure."},"assertGtDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message."},"assertGtDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertGtDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message."},"assertGtDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLe(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second."},"assertLe(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure."},"assertLe(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second."},"assertLe(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure."},"assertLeDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message."},"assertLeDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLeDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message."},"assertLeDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLt(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be less than second."},"assertLt(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than second. Includes error message into revert string on failure."},"assertLt(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than second."},"assertLt(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than second. Includes error message into revert string on failure."},"assertLtDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message."},"assertLtDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLtDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message."},"assertLtDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertNotEq(address,address)":{"notice":"Asserts that two `address` values are not equal."},"assertNotEq(address,address,string)":{"notice":"Asserts that two `address` values are not equal and includes error message into revert string on failure."},"assertNotEq(address[],address[])":{"notice":"Asserts that two arrays of `address` values are not equal."},"assertNotEq(address[],address[],string)":{"notice":"Asserts that two arrays of `address` values are not equal and includes error message into revert string on failure."},"assertNotEq(bool,bool)":{"notice":"Asserts that two `bool` values are not equal."},"assertNotEq(bool,bool,string)":{"notice":"Asserts that two `bool` values are not equal and includes error message into revert string on failure."},"assertNotEq(bool[],bool[])":{"notice":"Asserts that two arrays of `bool` values are not equal."},"assertNotEq(bool[],bool[],string)":{"notice":"Asserts that two arrays of `bool` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes,bytes)":{"notice":"Asserts that two `bytes` values are not equal."},"assertNotEq(bytes,bytes,string)":{"notice":"Asserts that two `bytes` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes32,bytes32)":{"notice":"Asserts that two `bytes32` values are not equal."},"assertNotEq(bytes32,bytes32,string)":{"notice":"Asserts that two `bytes32` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes32[],bytes32[])":{"notice":"Asserts that two arrays of `bytes32` values are not equal."},"assertNotEq(bytes32[],bytes32[],string)":{"notice":"Asserts that two arrays of `bytes32` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes[],bytes[])":{"notice":"Asserts that two arrays of `bytes` values are not equal."},"assertNotEq(bytes[],bytes[],string)":{"notice":"Asserts that two arrays of `bytes` values are not equal and includes error message into revert string on failure."},"assertNotEq(int256,int256)":{"notice":"Asserts that two `int256` values are not equal."},"assertNotEq(int256,int256,string)":{"notice":"Asserts that two `int256` values are not equal and includes error message into revert string on failure."},"assertNotEq(int256[],int256[])":{"notice":"Asserts that two arrays of `int256` values are not equal."},"assertNotEq(int256[],int256[],string)":{"notice":"Asserts that two arrays of `int256` values are not equal and includes error message into revert string on failure."},"assertNotEq(string,string)":{"notice":"Asserts that two `string` values are not equal."},"assertNotEq(string,string,string)":{"notice":"Asserts that two `string` values are not equal and includes error message into revert string on failure."},"assertNotEq(string[],string[])":{"notice":"Asserts that two arrays of `string` values are not equal."},"assertNotEq(string[],string[],string)":{"notice":"Asserts that two arrays of `string` values are not equal and includes error message into revert string on failure."},"assertNotEq(uint256,uint256)":{"notice":"Asserts that two `uint256` values are not equal."},"assertNotEq(uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are not equal and includes error message into revert string on failure."},"assertNotEq(uint256[],uint256[])":{"notice":"Asserts that two arrays of `uint256` values are not equal."},"assertNotEq(uint256[],uint256[],string)":{"notice":"Asserts that two arrays of `uint256` values are not equal and includes error message into revert string on failure."},"assertNotEqDecimal(int256,int256,uint256)":{"notice":"Asserts that two `int256` values are not equal, formatting them with decimals in failure message."},"assertNotEqDecimal(int256,int256,uint256,string)":{"notice":"Asserts that two `int256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertNotEqDecimal(uint256,uint256,uint256)":{"notice":"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message."},"assertNotEqDecimal(uint256,uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertTrue(bool)":{"notice":"Asserts that the given condition is true."},"assertTrue(bool,string)":{"notice":"Asserts that the given condition is true and includes error message into revert string on failure."},"assume(bool)":{"notice":"If the condition is false, discard this run's fuzz inputs and generate new ones."},"breakpoint(string)":{"notice":"Writes a breakpoint to jump to in the debugger."},"breakpoint(string,bool)":{"notice":"Writes a conditional breakpoint to jump to in the debugger."},"broadcast()":{"notice":"Using the address that calls the test contract, has the next call (at this call depth only) create a transaction that can later be signed and sent onchain."},"broadcast(address)":{"notice":"Has the next call (at this call depth only) create a transaction with the address provided as the sender that can later be signed and sent onchain."},"broadcast(uint256)":{"notice":"Has the next call (at this call depth only) create a transaction with the private key provided as the sender that can later be signed and sent onchain."},"chainId(uint256)":{"notice":"Sets `block.chainid`."},"clearMockedCalls()":{"notice":"Clears all mocked calls."},"closeFile(string)":{"notice":"Closes file for reading, resetting the offset and allowing to read it from beginning with readLine. `path` is relative to the project root."},"coinbase(address)":{"notice":"Sets `block.coinbase`."},"computeCreate2Address(bytes32,bytes32)":{"notice":"Compute the address of a contract created with CREATE2 using the default CREATE2 deployer."},"computeCreate2Address(bytes32,bytes32,address)":{"notice":"Compute the address of a contract created with CREATE2 using the given CREATE2 deployer."},"computeCreateAddress(address,uint256)":{"notice":"Compute the address a contract will be deployed at for a given deployer address and nonce."},"copyFile(string,string)":{"notice":"Copies the contents of one file to another. This function will **overwrite** the contents of `to`. On success, the total number of bytes copied is returned and it is equal to the length of the `to` file as reported by `metadata`. Both `from` and `to` are relative to the project root."},"createDir(string,bool)":{"notice":"Creates a new, empty directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - User lacks permissions to modify `path`. - A parent of the given path doesn't exist and `recursive` is false. - `path` already exists and `recursive` is false. `path` is relative to the project root."},"createFork(string)":{"notice":"Creates a new fork with the given endpoint and the _latest_ block and returns the identifier of the fork."},"createFork(string,bytes32)":{"notice":"Creates a new fork with the given endpoint and at the block the given transaction was mined in, replays all transaction mined in the block before the transaction, and returns the identifier of the fork."},"createFork(string,uint256)":{"notice":"Creates a new fork with the given endpoint and block and returns the identifier of the fork."},"createSelectFork(string)":{"notice":"Creates and also selects a new fork with the given endpoint and the latest block and returns the identifier of the fork."},"createSelectFork(string,bytes32)":{"notice":"Creates and also selects new fork with the given endpoint and at the block the given transaction was mined in, replays all transaction mined in the block before the transaction, returns the identifier of the fork."},"createSelectFork(string,uint256)":{"notice":"Creates and also selects a new fork with the given endpoint and block and returns the identifier of the fork."},"createWallet(string)":{"notice":"Derives a private key from the name, labels the account with that name, and returns the wallet."},"createWallet(uint256)":{"notice":"Generates a wallet from the private key and returns the wallet."},"createWallet(uint256,string)":{"notice":"Generates a wallet from the private key, labels the account with that name, and returns the wallet."},"deal(address,uint256)":{"notice":"Sets an address' balance."},"deleteSnapshot(uint256)":{"notice":"Removes the snapshot with the given ID created by `snapshot`. Takes the snapshot ID to delete. Returns `true` if the snapshot was successfully deleted. Returns `false` if the snapshot does not exist."},"deleteSnapshots()":{"notice":"Removes _all_ snapshots previously created by `snapshot`."},"deriveKey(string,string,uint32)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) at `{derivationPath}{index}`."},"deriveKey(string,string,uint32,string)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at `{derivationPath}{index}`."},"deriveKey(string,uint32)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) at the derivation path `m/44'/60'/0'/0/{index}`."},"deriveKey(string,uint32,string)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at the derivation path `m/44'/60'/0'/0/{index}`."},"difficulty(uint256)":{"notice":"Sets `block.difficulty`. Not available on EVM versions from Paris onwards. Use `prevrandao` instead. Reverts if used on unsupported EVM versions."},"dumpState(string)":{"notice":"Dump a genesis JSON file's `allocs` to disk."},"envAddress(string)":{"notice":"Gets the environment variable `name` and parses it as `address`. Reverts if the variable was not found or could not be parsed."},"envAddress(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envBool(string)":{"notice":"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable was not found or could not be parsed."},"envBool(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envBytes(string)":{"notice":"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable was not found or could not be parsed."},"envBytes(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envBytes32(string)":{"notice":"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable was not found or could not be parsed."},"envBytes32(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envInt(string)":{"notice":"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable was not found or could not be parsed."},"envInt(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envOr(string,address)":{"notice":"Gets the environment variable `name` and parses it as `address`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,bool)":{"notice":"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,bytes)":{"notice":"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,bytes32)":{"notice":"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,int256)":{"notice":"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string)":{"notice":"Gets the environment variable `name` and parses it as `string`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,address[])":{"notice":"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,bool[])":{"notice":"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,bytes32[])":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,bytes[])":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,int256[])":{"notice":"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,string[])":{"notice":"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,uint256[])":{"notice":"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,uint256)":{"notice":"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envString(string)":{"notice":"Gets the environment variable `name` and parses it as `string`. Reverts if the variable was not found or could not be parsed."},"envString(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envUint(string)":{"notice":"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable was not found or could not be parsed."},"envUint(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"etch(address,bytes)":{"notice":"Sets an address' code."},"eth_getLogs(uint256,uint256,address,bytes32[])":{"notice":"Gets all the logs according to specified filter."},"exists(string)":{"notice":"Returns true if the given path points to an existing entity, else returns false."},"expectCall(address,bytes)":{"notice":"Expects a call to an address with the specified calldata. Calldata can either be a strict or a partial match."},"expectCall(address,bytes,uint64)":{"notice":"Expects given number of calls to an address with the specified calldata."},"expectCall(address,uint256,bytes)":{"notice":"Expects a call to an address with the specified `msg.value` and calldata."},"expectCall(address,uint256,bytes,uint64)":{"notice":"Expects given number of calls to an address with the specified `msg.value` and calldata."},"expectCall(address,uint256,uint64,bytes)":{"notice":"Expect a call to an address with the specified `msg.value`, gas, and calldata."},"expectCall(address,uint256,uint64,bytes,uint64)":{"notice":"Expects given number of calls to an address with the specified `msg.value`, gas, and calldata."},"expectCallMinGas(address,uint256,uint64,bytes)":{"notice":"Expect a call to an address with the specified `msg.value` and calldata, and a *minimum* amount of gas."},"expectCallMinGas(address,uint256,uint64,bytes,uint64)":{"notice":"Expect given number of calls to an address with the specified `msg.value` and calldata, and a *minimum* amount of gas."},"expectEmit()":{"notice":"Prepare an expected log with all topic and data checks enabled. Call this function, then emit an event, then call a function. Internally after the call, we check if logs were emitted in the expected order with the expected topics and data."},"expectEmit(address)":{"notice":"Same as the previous method, but also checks supplied address against emitting contract."},"expectEmit(bool,bool,bool,bool)":{"notice":"Prepare an expected log with (bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData.). Call this function, then emit an event, then call a function. Internally after the call, we check if logs were emitted in the expected order with the expected topics and data (as specified by the booleans)."},"expectEmit(bool,bool,bool,bool,address)":{"notice":"Same as the previous method, but also checks supplied address against emitting contract."},"expectRevert()":{"notice":"Expects an error on next call with any revert data."},"expectRevert(bytes)":{"notice":"Expects an error on next call that exactly matches the revert data."},"expectRevert(bytes4)":{"notice":"Expects an error on next call that starts with the revert data."},"expectSafeMemory(uint64,uint64)":{"notice":"Only allows memory writes to offsets [0x00, 0x60) ∪ [min, max) in the current subcontext. If any other memory is written to, the test will fail. Can be called multiple times to add more ranges to the set."},"expectSafeMemoryCall(uint64,uint64)":{"notice":"Only allows memory writes to offsets [0x00, 0x60) ∪ [min, max) in the next created subcontext. If any other memory is written to, the test will fail. Can be called multiple times to add more ranges to the set."},"fee(uint256)":{"notice":"Sets `block.basefee`."},"ffi(string[])":{"notice":"Performs a foreign function call via the terminal."},"fsMetadata(string)":{"notice":"Given a path, query the file system to get information about a file, directory, etc."},"getBlockNumber()":{"notice":"Gets the current `block.number`. You should use this instead of `block.number` if you use `vm.roll`, as `block.number` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180"},"getBlockTimestamp()":{"notice":"Gets the current `block.timestamp`. You should use this instead of `block.timestamp` if you use `vm.warp`, as `block.timestamp` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180"},"getCode(string)":{"notice":"Gets the creation bytecode from an artifact file. Takes in the relative path to the json file."},"getDeployedCode(string)":{"notice":"Gets the deployed bytecode from an artifact file. Takes in the relative path to the json file."},"getLabel(address)":{"notice":"Gets the label for the specified address."},"getMappingKeyAndParentOf(address,bytes32)":{"notice":"Gets the map key and parent of a mapping at a given slot, for a given address."},"getMappingLength(address,bytes32)":{"notice":"Gets the number of elements in the mapping at the given slot, for a given address."},"getMappingSlotAt(address,bytes32,uint256)":{"notice":"Gets the elements at index idx of the mapping at the given slot, for a given address. The index must be less than the length of the mapping (i.e. the number of keys in the mapping)."},"getNonce((address,uint256,uint256,uint256))":{"notice":"Get a `Wallet`'s nonce."},"getNonce(address)":{"notice":"Gets the nonce of an account."},"getRecordedLogs()":{"notice":"Gets all the recorded logs."},"isDir(string)":{"notice":"Returns true if the path exists on disk and is pointing at a directory, else returns false."},"isFile(string)":{"notice":"Returns true if the path exists on disk and is pointing at a regular file, else returns false."},"isPersistent(address)":{"notice":"Returns true if the account is marked as persistent."},"keyExists(string,string)":{"notice":"Checks if `key` exists in a JSON object `keyExists` is being deprecated in favor of `keyExistsJson`. It will be removed in future versions."},"keyExistsJson(string,string)":{"notice":"Checks if `key` exists in a JSON object."},"keyExistsToml(string,string)":{"notice":"Checks if `key` exists in a TOML table."},"label(address,string)":{"notice":"Labels an address in call traces."},"load(address,bytes32)":{"notice":"Loads a storage slot from an address."},"loadAllocs(string)":{"notice":"Load a genesis JSON file's `allocs` into the in-memory revm state."},"makePersistent(address)":{"notice":"Marks that the account(s) should use persistent storage across fork swaps in a multifork setup Meaning, changes made to the state of this account will be kept when switching forks."},"makePersistent(address,address)":{"notice":"See `makePersistent(address)`."},"makePersistent(address,address,address)":{"notice":"See `makePersistent(address)`."},"makePersistent(address[])":{"notice":"See `makePersistent(address)`."},"mockCall(address,bytes,bytes)":{"notice":"Mocks a call to an address, returning specified data. Calldata can either be strict or a partial match, e.g. if you only pass a Solidity selector to the expected calldata, then the entire Solidity function will be mocked."},"mockCall(address,uint256,bytes,bytes)":{"notice":"Mocks a call to an address with a specific `msg.value`, returning specified data. Calldata match takes precedence over `msg.value` in case of ambiguity."},"mockCallRevert(address,bytes,bytes)":{"notice":"Reverts a call to an address with specified revert data."},"mockCallRevert(address,uint256,bytes,bytes)":{"notice":"Reverts a call to an address with a specific `msg.value`, with specified revert data."},"parseAddress(string)":{"notice":"Parses the given `string` into an `address`."},"parseBool(string)":{"notice":"Parses the given `string` into a `bool`."},"parseBytes(string)":{"notice":"Parses the given `string` into `bytes`."},"parseBytes32(string)":{"notice":"Parses the given `string` into a `bytes32`."},"parseInt(string)":{"notice":"Parses the given `string` into a `int256`."},"parseJson(string)":{"notice":"ABI-encodes a JSON object."},"parseJson(string,string)":{"notice":"ABI-encodes a JSON object at `key`."},"parseJsonAddress(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `address`."},"parseJsonAddressArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `address[]`."},"parseJsonBool(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bool`."},"parseJsonBoolArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bool[]`."},"parseJsonBytes(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes`."},"parseJsonBytes32(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes32`."},"parseJsonBytes32Array(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes32[]`."},"parseJsonBytesArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes[]`."},"parseJsonInt(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `int256`."},"parseJsonIntArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `int256[]`."},"parseJsonKeys(string,string)":{"notice":"Returns an array of all the keys in a JSON object."},"parseJsonString(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `string`."},"parseJsonStringArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `string[]`."},"parseJsonUint(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `uint256`."},"parseJsonUintArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `uint256[]`."},"parseToml(string)":{"notice":"ABI-encodes a TOML table."},"parseToml(string,string)":{"notice":"ABI-encodes a TOML table at `key`."},"parseTomlAddress(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `address`."},"parseTomlAddressArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `address[]`."},"parseTomlBool(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bool`."},"parseTomlBoolArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bool[]`."},"parseTomlBytes(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bytes`."},"parseTomlBytes32(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bytes32`."},"parseTomlBytes32Array(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bytes32[]`."},"parseTomlBytesArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bytes[]`."},"parseTomlInt(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `int256`."},"parseTomlIntArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `int256[]`."},"parseTomlKeys(string,string)":{"notice":"Returns an array of all the keys in a TOML table."},"parseTomlString(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `string`."},"parseTomlStringArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `string[]`."},"parseTomlUint(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `uint256`."},"parseTomlUintArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `uint256[]`."},"parseUint(string)":{"notice":"Parses the given `string` into a `uint256`."},"pauseGasMetering()":{"notice":"Pauses gas metering (i.e. gas usage is not counted). Noop if already paused."},"prank(address)":{"notice":"Sets the *next* call's `msg.sender` to be the input address."},"prank(address,address)":{"notice":"Sets the *next* call's `msg.sender` to be the input address, and the `tx.origin` to be the second input."},"prevrandao(bytes32)":{"notice":"Sets `block.prevrandao`. Not available on EVM versions before Paris. Use `difficulty` instead. If used on unsupported EVM versions it will revert."},"projectRoot()":{"notice":"Get the path of the current project root."},"prompt(string)":{"notice":"Prompts the user for a string value in the terminal."},"promptSecret(string)":{"notice":"Prompts the user for a hidden string value in the terminal."},"readCallers()":{"notice":"Reads the current `msg.sender` and `tx.origin` from state and reports if there is any active caller modification."},"readDir(string)":{"notice":"Reads the directory at the given path recursively, up to `maxDepth`. `maxDepth` defaults to 1, meaning only the direct children of the given directory will be returned. Follows symbolic links if `followLinks` is true."},"readDir(string,uint64)":{"notice":"See `readDir(string)`."},"readDir(string,uint64,bool)":{"notice":"See `readDir(string)`."},"readFile(string)":{"notice":"Reads the entire content of file to string. `path` is relative to the project root."},"readFileBinary(string)":{"notice":"Reads the entire content of file as binary. `path` is relative to the project root."},"readLine(string)":{"notice":"Reads next line of file to string."},"readLink(string)":{"notice":"Reads a symbolic link, returning the path that the link points to. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` is not a symbolic link. - `path` does not exist."},"record()":{"notice":"Records all storage reads and writes."},"recordLogs()":{"notice":"Record all the transaction logs."},"rememberKey(uint256)":{"notice":"Adds a private key to the local forge wallet and returns the address."},"removeDir(string,bool)":{"notice":"Removes a directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` doesn't exist. - `path` isn't a directory. - User lacks permissions to modify `path`. - The directory is not empty and `recursive` is false. `path` is relative to the project root."},"removeFile(string)":{"notice":"Removes a file from the filesystem. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` points to a directory. - The file doesn't exist. - The user lacks permissions to remove the file. `path` is relative to the project root."},"replace(string,string,string)":{"notice":"Replaces occurrences of `from` in the given `string` with `to`."},"resetNonce(address)":{"notice":"Resets the nonce of an account to 0 for EOAs and 1 for contract accounts."},"resumeGasMetering()":{"notice":"Resumes gas metering (i.e. gas usage is counted again). Noop if already on."},"revertTo(uint256)":{"notice":"Revert the state of the EVM to a previous snapshot Takes the snapshot ID to revert to. Returns `true` if the snapshot was successfully reverted. Returns `false` if the snapshot does not exist. **Note:** This does not automatically delete the snapshot. To delete the snapshot use `deleteSnapshot`."},"revertToAndDelete(uint256)":{"notice":"Revert the state of the EVM to a previous snapshot and automatically deletes the snapshots Takes the snapshot ID to revert to. Returns `true` if the snapshot was successfully reverted and deleted. Returns `false` if the snapshot does not exist."},"revokePersistent(address)":{"notice":"Revokes persistent status from the address, previously added via `makePersistent`."},"revokePersistent(address[])":{"notice":"See `revokePersistent(address)`."},"roll(uint256)":{"notice":"Sets `block.height`."},"rollFork(bytes32)":{"notice":"Updates the currently active fork to given transaction. This will `rollFork` with the number of the block the transaction was mined in and replays all transaction mined before it in the block."},"rollFork(uint256)":{"notice":"Updates the currently active fork to given block number This is similar to `roll` but for the currently active fork."},"rollFork(uint256,bytes32)":{"notice":"Updates the given fork to block number of the given transaction and replays all transaction mined before it in the block."},"rollFork(uint256,uint256)":{"notice":"Updates the given fork to given block number."},"rpc(string,string)":{"notice":"Performs an Ethereum JSON-RPC request to the current fork URL."},"rpcUrl(string)":{"notice":"Returns the RPC url for the given alias."},"rpcUrlStructs()":{"notice":"Returns all rpc urls and their aliases as structs."},"rpcUrls()":{"notice":"Returns all rpc urls and their aliases `[alias, url][]`."},"selectFork(uint256)":{"notice":"Takes a fork identifier created by `createFork` and sets the corresponding forked state as active."},"serializeAddress(string,string,address)":{"notice":"See `serializeJson`."},"serializeAddress(string,string,address[])":{"notice":"See `serializeJson`."},"serializeBool(string,string,bool)":{"notice":"See `serializeJson`."},"serializeBool(string,string,bool[])":{"notice":"See `serializeJson`."},"serializeBytes(string,string,bytes)":{"notice":"See `serializeJson`."},"serializeBytes(string,string,bytes[])":{"notice":"See `serializeJson`."},"serializeBytes32(string,string,bytes32)":{"notice":"See `serializeJson`."},"serializeBytes32(string,string,bytes32[])":{"notice":"See `serializeJson`."},"serializeInt(string,string,int256)":{"notice":"See `serializeJson`."},"serializeInt(string,string,int256[])":{"notice":"See `serializeJson`."},"serializeJson(string,string)":{"notice":"Serializes a key and value to a JSON object stored in-memory that can be later written to a file. Returns the stringified version of the specific JSON file up to that moment."},"serializeString(string,string,string)":{"notice":"See `serializeJson`."},"serializeString(string,string,string[])":{"notice":"See `serializeJson`."},"serializeUint(string,string,uint256)":{"notice":"See `serializeJson`."},"serializeUint(string,string,uint256[])":{"notice":"See `serializeJson`."},"setEnv(string,string)":{"notice":"Sets environment variables."},"setNonce(address,uint64)":{"notice":"Sets the nonce of an account. Must be higher than the current nonce of the account."},"setNonceUnsafe(address,uint64)":{"notice":"Sets the nonce of an account to an arbitrary value."},"sign((address,uint256,uint256,uint256),bytes32)":{"notice":"Signs data with a `Wallet`."},"sign(uint256,bytes32)":{"notice":"Signs `digest` with `privateKey` using the secp256k1 curve."},"signP256(uint256,bytes32)":{"notice":"Signs `digest` with `privateKey` using the secp256r1 curve."},"skip(bool)":{"notice":"Marks a test as skipped. Must be called at the top of the test."},"sleep(uint256)":{"notice":"Suspends execution of the main thread for `duration` milliseconds."},"snapshot()":{"notice":"Snapshot the current state of the evm. Returns the ID of the snapshot that was created. To revert a snapshot use `revertTo`."},"split(string,string)":{"notice":"Splits the given `string` into an array of strings divided by the `delimiter`."},"startBroadcast()":{"notice":"Using the address that calls the test contract, has all subsequent calls (at this call depth only) create transactions that can later be signed and sent onchain."},"startBroadcast(address)":{"notice":"Has all subsequent calls (at this call depth only) create transactions with the address provided that can later be signed and sent onchain."},"startBroadcast(uint256)":{"notice":"Has all subsequent calls (at this call depth only) create transactions with the private key provided that can later be signed and sent onchain."},"startMappingRecording()":{"notice":"Starts recording all map SSTOREs for later retrieval."},"startPrank(address)":{"notice":"Sets all subsequent calls' `msg.sender` to be the input address until `stopPrank` is called."},"startPrank(address,address)":{"notice":"Sets all subsequent calls' `msg.sender` to be the input address until `stopPrank` is called, and the `tx.origin` to be the second input."},"startStateDiffRecording()":{"notice":"Record all account accesses as part of CREATE, CALL or SELFDESTRUCT opcodes in order, along with the context of the calls"},"stopAndReturnStateDiff()":{"notice":"Returns an ordered array of all account accesses from a `vm.startStateDiffRecording` session."},"stopBroadcast()":{"notice":"Stops collecting onchain transactions."},"stopExpectSafeMemory()":{"notice":"Stops all safe memory expectation in the current subcontext."},"stopMappingRecording()":{"notice":"Stops recording all map SSTOREs for later retrieval and clears the recorded data."},"stopPrank()":{"notice":"Resets subsequent calls' `msg.sender` to be `address(this)`."},"store(address,bytes32,bytes32)":{"notice":"Stores a value to an address' storage slot."},"toBase64(bytes)":{"notice":"Encodes a `bytes` value to a base64 string."},"toBase64(string)":{"notice":"Encodes a `string` value to a base64 string."},"toBase64URL(bytes)":{"notice":"Encodes a `bytes` value to a base64url string."},"toBase64URL(string)":{"notice":"Encodes a `string` value to a base64url string."},"toLowercase(string)":{"notice":"Converts the given `string` value to Lowercase."},"toString(address)":{"notice":"Converts the given value to a `string`."},"toString(bool)":{"notice":"Converts the given value to a `string`."},"toString(bytes)":{"notice":"Converts the given value to a `string`."},"toString(bytes32)":{"notice":"Converts the given value to a `string`."},"toString(int256)":{"notice":"Converts the given value to a `string`."},"toString(uint256)":{"notice":"Converts the given value to a `string`."},"toUppercase(string)":{"notice":"Converts the given `string` value to Uppercase."},"transact(bytes32)":{"notice":"Fetches the given transaction from the active fork and executes it on the current state."},"transact(uint256,bytes32)":{"notice":"Fetches the given transaction from the given fork and executes it on the current state."},"trim(string)":{"notice":"Trims leading and trailing whitespace from the given `string` value."},"tryFfi(string[])":{"notice":"Performs a foreign function call via terminal and returns the exit code, stdout, and stderr."},"txGasPrice(uint256)":{"notice":"Sets `tx.gasprice`."},"unixTime()":{"notice":"Returns the time since unix epoch in milliseconds."},"warp(uint256)":{"notice":"Sets `block.timestamp`."},"writeFile(string,string)":{"notice":"Writes data to file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root."},"writeFileBinary(string,bytes)":{"notice":"Writes binary data to a file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root."},"writeJson(string,string)":{"notice":"Write a serialized JSON object to a file. If the file exists, it will be overwritten."},"writeJson(string,string,string)":{"notice":"Write a serialized JSON object to an **existing** JSON file, replacing a value with key = This is useful to replace a specific value of a JSON file, without having to parse the entire thing."},"writeLine(string,string)":{"notice":"Writes line to file, creating a file if it does not exist. `path` is relative to the project root."},"writeToml(string,string)":{"notice":"Takes serialized JSON, converts to TOML and write a serialized TOML to a file."},"writeToml(string,string,string)":{"notice":"Takes serialized JSON, converts to TOML and write a serialized TOML table to an **existing** TOML file, replacing a value with key = This is useful to replace a specific value of a TOML file, without having to parse the entire thing."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Vm.sol":"Vm"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/Vm.sol":{"keccak256":"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456","urls":["bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a","dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK"],"license":"MIT OR Apache-2.0"}},"version":1},"id":13} \ No newline at end of file diff --git a/evm/out/Vm.sol/VmSafe.json b/evm/out/Vm.sol/VmSafe.json deleted file mode 100644 index be00b62..0000000 --- a/evm/out/Vm.sol/VmSafe.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"accesses","inputs":[{"name":"target","type":"address","internalType":"address"}],"outputs":[{"name":"readSlots","type":"bytes32[]","internalType":"bytes32[]"},{"name":"writeSlots","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"addr","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertFalse","inputs":[{"name":"condition","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertFalse","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertTrue","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertTrue","inputs":[{"name":"condition","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assume","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"breakpoint","inputs":[{"name":"char","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"breakpoint","inputs":[{"name":"char","type":"string","internalType":"string"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"closeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"computeCreate2Address","inputs":[{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"initCodeHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"computeCreate2Address","inputs":[{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"initCodeHash","type":"bytes32","internalType":"bytes32"},{"name":"deployer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"computeCreateAddress","inputs":[{"name":"deployer","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"copyFile","inputs":[{"name":"from","type":"string","internalType":"string"},{"name":"to","type":"string","internalType":"string"}],"outputs":[{"name":"copied","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"createDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"recursive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createWallet","inputs":[{"name":"walletLabel","type":"string","internalType":"string"}],"outputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"createWallet","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"createWallet","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"walletLabel","type":"string","internalType":"string"}],"outputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"},{"name":"language","type":"string","internalType":"string"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"},{"name":"language","type":"string","internalType":"string"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool","internalType":"bool"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256","internalType":"int256"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"view"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"eth_getLogs","inputs":[{"name":"fromBlock","type":"uint256","internalType":"uint256"},{"name":"toBlock","type":"uint256","internalType":"uint256"},{"name":"target","type":"address","internalType":"address"},{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"logs","type":"tuple[]","internalType":"struct VmSafe.EthGetLogs[]","components":[{"name":"emitter","type":"address","internalType":"address"},{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"blockNumber","type":"uint64","internalType":"uint64"},{"name":"transactionHash","type":"bytes32","internalType":"bytes32"},{"name":"transactionIndex","type":"uint64","internalType":"uint64"},{"name":"logIndex","type":"uint256","internalType":"uint256"},{"name":"removed","type":"bool","internalType":"bool"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"exists","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"ffi","inputs":[{"name":"commandInput","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"result","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"fsMetadata","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct VmSafe.FsMetadata","components":[{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"},{"name":"length","type":"uint256","internalType":"uint256"},{"name":"readOnly","type":"bool","internalType":"bool"},{"name":"modified","type":"uint256","internalType":"uint256"},{"name":"accessed","type":"uint256","internalType":"uint256"},{"name":"created","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getBlockNumber","inputs":[],"outputs":[{"name":"height","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlockTimestamp","inputs":[],"outputs":[{"name":"timestamp","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"creationBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getDeployedCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"runtimeBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getLabel","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"currentLabel","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getMappingKeyAndParentOf","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"elementSlot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"found","type":"bool","internalType":"bool"},{"name":"key","type":"bytes32","internalType":"bytes32"},{"name":"parent","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"getMappingLength","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"mappingSlot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"length","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"getMappingSlotAt","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"mappingSlot","type":"bytes32","internalType":"bytes32"},{"name":"idx","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"getNonce","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"nonce","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getNonce","inputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"nonce","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"getRecordedLogs","inputs":[],"outputs":[{"name":"logs","type":"tuple[]","internalType":"struct VmSafe.Log[]","components":[{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"emitter","type":"address","internalType":"address"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"isDir","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"isFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"keyExists","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"keyExistsJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"keyExistsToml","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"label","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newLabel","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"load","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"data","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"parseAddress","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseBool","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes32","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseInt","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonAddress","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonAddressArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBool","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBoolArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool[]","internalType":"bool[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytes","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytes32","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytes32Array","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytesArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonInt","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonIntArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256[]","internalType":"int256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonKeys","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"keys","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonString","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonStringArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonUint","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonUintArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseToml","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseToml","inputs":[{"name":"toml","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlAddress","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlAddressArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBool","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBoolArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool[]","internalType":"bool[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBytes","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBytes32","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBytes32Array","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBytesArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlInt","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlIntArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256[]","internalType":"int256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlKeys","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"keys","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlString","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlStringArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlUint","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlUintArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseUint","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"pauseGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"projectRoot","inputs":[],"outputs":[{"name":"path","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"prompt","inputs":[{"name":"promptText","type":"string","internalType":"string"}],"outputs":[{"name":"input","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"promptSecret","inputs":[{"name":"promptText","type":"string","internalType":"string"}],"outputs":[{"name":"input","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"maxDepth","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"maxDepth","type":"uint64","internalType":"uint64"},{"name":"followLinks","type":"bool","internalType":"bool"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"readLine","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"line","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readLink","inputs":[{"name":"linkPath","type":"string","internalType":"string"}],"outputs":[{"name":"targetPath","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"record","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"recordLogs","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rememberKey","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"recursive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"replace","inputs":[{"name":"input","type":"string","internalType":"string"},{"name":"from","type":"string","internalType":"string"},{"name":"to","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"resumeGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rpc","inputs":[{"name":"method","type":"string","internalType":"string"},{"name":"params","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"rpcUrl","inputs":[{"name":"rpcAlias","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"rpcUrlStructs","inputs":[],"outputs":[{"name":"urls","type":"tuple[]","internalType":"struct VmSafe.Rpc[]","components":[{"name":"key","type":"string","internalType":"string"},{"name":"url","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"rpcUrls","inputs":[],"outputs":[{"name":"urls","type":"string[2][]","internalType":"string[2][]"}],"stateMutability":"view"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeJson","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"setEnv","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sign","inputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"sign","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"signP256","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"sleep","inputs":[{"name":"duration","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"split","inputs":[{"name":"input","type":"string","internalType":"string"},{"name":"delimiter","type":"string","internalType":"string"}],"outputs":[{"name":"outputs","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"startBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startMappingRecording","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startStateDiffRecording","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopAndReturnStateDiff","inputs":[],"outputs":[{"name":"accountAccesses","type":"tuple[]","internalType":"struct VmSafe.AccountAccess[]","components":[{"name":"chainInfo","type":"tuple","internalType":"struct VmSafe.ChainInfo","components":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"chainId","type":"uint256","internalType":"uint256"}]},{"name":"kind","type":"uint8","internalType":"enum VmSafe.AccountAccessKind"},{"name":"account","type":"address","internalType":"address"},{"name":"accessor","type":"address","internalType":"address"},{"name":"initialized","type":"bool","internalType":"bool"},{"name":"oldBalance","type":"uint256","internalType":"uint256"},{"name":"newBalance","type":"uint256","internalType":"uint256"},{"name":"deployedCode","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"reverted","type":"bool","internalType":"bool"},{"name":"storageAccesses","type":"tuple[]","internalType":"struct VmSafe.StorageAccess[]","components":[{"name":"account","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"},{"name":"isWrite","type":"bool","internalType":"bool"},{"name":"previousValue","type":"bytes32","internalType":"bytes32"},{"name":"newValue","type":"bytes32","internalType":"bytes32"},{"name":"reverted","type":"bool","internalType":"bool"}]},{"name":"depth","type":"uint64","internalType":"uint64"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"stopBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopMappingRecording","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"toBase64","inputs":[{"name":"data","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toBase64","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toBase64URL","inputs":[{"name":"data","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toBase64URL","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toLowercase","inputs":[{"name":"input","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toUppercase","inputs":[{"name":"input","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"trim","inputs":[{"name":"input","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"tryFfi","inputs":[{"name":"commandInput","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"result","type":"tuple","internalType":"struct VmSafe.FfiResult","components":[{"name":"exitCode","type":"int32","internalType":"int32"},{"name":"stdout","type":"bytes","internalType":"bytes"},{"name":"stderr","type":"bytes","internalType":"bytes"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"unixTime","inputs":[],"outputs":[{"name":"milliseconds","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"writeFile","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeLine","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeToml","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeToml","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"accesses(address)":"65bc9481","addr(uint256)":"ffa18649","assertApproxEqAbs(int256,int256,uint256)":"240f839d","assertApproxEqAbs(int256,int256,uint256,string)":"8289e621","assertApproxEqAbs(uint256,uint256,uint256)":"16d207c6","assertApproxEqAbs(uint256,uint256,uint256,string)":"f710b062","assertApproxEqAbsDecimal(int256,int256,uint256,uint256)":"3d5bc8bc","assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)":"6a5066d4","assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)":"045c55ce","assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)":"60429eb2","assertApproxEqRel(int256,int256,uint256)":"fea2d14f","assertApproxEqRel(int256,int256,uint256,string)":"ef277d72","assertApproxEqRel(uint256,uint256,uint256)":"8cf25ef4","assertApproxEqRel(uint256,uint256,uint256,string)":"1ecb7d33","assertApproxEqRelDecimal(int256,int256,uint256,uint256)":"abbf21cc","assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)":"fccc11c4","assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)":"21ed2977","assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)":"82d6c8fd","assertEq(address,address)":"515361f6","assertEq(address,address,string)":"2f2769d1","assertEq(address[],address[])":"3868ac34","assertEq(address[],address[],string)":"3e9173c5","assertEq(bool,bool)":"f7fe3477","assertEq(bool,bool,string)":"4db19e7e","assertEq(bool[],bool[])":"707df785","assertEq(bool[],bool[],string)":"e48a8f8d","assertEq(bytes,bytes)":"97624631","assertEq(bytes,bytes,string)":"e24fed00","assertEq(bytes32,bytes32)":"7c84c69b","assertEq(bytes32,bytes32,string)":"c1fa1ed0","assertEq(bytes32[],bytes32[])":"0cc9ee84","assertEq(bytes32[],bytes32[],string)":"e03e9177","assertEq(bytes[],bytes[])":"e5fb9b4a","assertEq(bytes[],bytes[],string)":"f413f0b6","assertEq(int256,int256)":"fe74f05b","assertEq(int256,int256,string)":"714a2f13","assertEq(int256[],int256[])":"711043ac","assertEq(int256[],int256[],string)":"191f1b30","assertEq(string,string)":"f320d963","assertEq(string,string,string)":"36f656d8","assertEq(string[],string[])":"cf1c049c","assertEq(string[],string[],string)":"eff6b27d","assertEq(uint256,uint256)":"98296c54","assertEq(uint256,uint256,string)":"88b44c85","assertEq(uint256[],uint256[])":"975d5a12","assertEq(uint256[],uint256[],string)":"5d18c73a","assertEqDecimal(int256,int256,uint256)":"48016c04","assertEqDecimal(int256,int256,uint256,string)":"7e77b0c5","assertEqDecimal(uint256,uint256,uint256)":"27af7d9c","assertEqDecimal(uint256,uint256,uint256,string)":"d0cbbdef","assertFalse(bool)":"a5982885","assertFalse(bool,string)":"7ba04809","assertGe(int256,int256)":"0a30b771","assertGe(int256,int256,string)":"a84328dd","assertGe(uint256,uint256)":"a8d4d1d9","assertGe(uint256,uint256,string)":"e25242c0","assertGeDecimal(int256,int256,uint256)":"dc28c0f1","assertGeDecimal(int256,int256,uint256,string)":"5df93c9b","assertGeDecimal(uint256,uint256,uint256)":"3d1fe08a","assertGeDecimal(uint256,uint256,uint256,string)":"8bff9133","assertGt(int256,int256)":"5a362d45","assertGt(int256,int256,string)":"f8d33b9b","assertGt(uint256,uint256)":"db07fcd2","assertGt(uint256,uint256,string)":"d9a3c4d2","assertGtDecimal(int256,int256,uint256)":"78611f0e","assertGtDecimal(int256,int256,uint256,string)":"04a5c7ab","assertGtDecimal(uint256,uint256,uint256)":"eccd2437","assertGtDecimal(uint256,uint256,uint256,string)":"64949a8d","assertLe(int256,int256)":"95fd154e","assertLe(int256,int256,string)":"4dfe692c","assertLe(uint256,uint256)":"8466f415","assertLe(uint256,uint256,string)":"d17d4b0d","assertLeDecimal(int256,int256,uint256)":"11d1364a","assertLeDecimal(int256,int256,uint256,string)":"aa5cf788","assertLeDecimal(uint256,uint256,uint256)":"c304aab7","assertLeDecimal(uint256,uint256,uint256,string)":"7fefbbe0","assertLt(int256,int256)":"3e914080","assertLt(int256,int256,string)":"9ff531e3","assertLt(uint256,uint256)":"b12fc005","assertLt(uint256,uint256,string)":"65d5c135","assertLtDecimal(int256,int256,uint256)":"dbe8d88b","assertLtDecimal(int256,int256,uint256,string)":"40f0b4e0","assertLtDecimal(uint256,uint256,uint256)":"2077337e","assertLtDecimal(uint256,uint256,uint256,string)":"a972d037","assertNotEq(address,address)":"b12e1694","assertNotEq(address,address,string)":"8775a591","assertNotEq(address[],address[])":"46d0b252","assertNotEq(address[],address[],string)":"72c7e0b5","assertNotEq(bool,bool)":"236e4d66","assertNotEq(bool,bool,string)":"1091a261","assertNotEq(bool[],bool[])":"286fafea","assertNotEq(bool[],bool[],string)":"62c6f9fb","assertNotEq(bytes,bytes)":"3cf78e28","assertNotEq(bytes,bytes,string)":"9507540e","assertNotEq(bytes32,bytes32)":"898e83fc","assertNotEq(bytes32,bytes32,string)":"b2332f51","assertNotEq(bytes32[],bytes32[])":"0603ea68","assertNotEq(bytes32[],bytes32[],string)":"b873634c","assertNotEq(bytes[],bytes[])":"edecd035","assertNotEq(bytes[],bytes[],string)":"1dcd1f68","assertNotEq(int256,int256)":"f4c004e3","assertNotEq(int256,int256,string)":"4724c5b9","assertNotEq(int256[],int256[])":"0b72f4ef","assertNotEq(int256[],int256[],string)":"d3977322","assertNotEq(string,string)":"6a8237b3","assertNotEq(string,string,string)":"78bdcea7","assertNotEq(string[],string[])":"bdfacbe8","assertNotEq(string[],string[],string)":"b67187f3","assertNotEq(uint256,uint256)":"b7909320","assertNotEq(uint256,uint256,string)":"98f9bdbd","assertNotEq(uint256[],uint256[])":"56f29cba","assertNotEq(uint256[],uint256[],string)":"9a7fbd8f","assertNotEqDecimal(int256,int256,uint256)":"14e75680","assertNotEqDecimal(int256,int256,uint256,string)":"33949f0b","assertNotEqDecimal(uint256,uint256,uint256)":"669efca7","assertNotEqDecimal(uint256,uint256,uint256,string)":"f5a55558","assertTrue(bool)":"0c9fd581","assertTrue(bool,string)":"a34edc03","assume(bool)":"4c63e562","breakpoint(string)":"f0259e92","breakpoint(string,bool)":"f7d39a8d","broadcast()":"afc98040","broadcast(address)":"e6962cdb","broadcast(uint256)":"f67a965b","closeFile(string)":"48c3241f","computeCreate2Address(bytes32,bytes32)":"890c283b","computeCreate2Address(bytes32,bytes32,address)":"d323826a","computeCreateAddress(address,uint256)":"74637a7a","copyFile(string,string)":"a54a87d8","createDir(string,bool)":"168b64d3","createWallet(string)":"7404f1d2","createWallet(uint256)":"7a675bb6","createWallet(uint256,string)":"ed7c5462","deriveKey(string,string,uint32)":"6bcb2c1b","deriveKey(string,string,uint32,string)":"29233b1f","deriveKey(string,uint32)":"6229498b","deriveKey(string,uint32,string)":"32c8176d","envAddress(string)":"350d56bf","envAddress(string,string)":"ad31b9fa","envBool(string)":"7ed1ec7d","envBool(string,string)":"aaaddeaf","envBytes(string)":"4d7baf06","envBytes(string,string)":"ddc2651b","envBytes32(string)":"97949042","envBytes32(string,string)":"5af231c1","envInt(string)":"892a0c61","envInt(string,string)":"42181150","envOr(string,address)":"561fe540","envOr(string,bool)":"4777f3cf","envOr(string,bytes)":"b3e47705","envOr(string,bytes32)":"b4a85892","envOr(string,int256)":"bbcb713e","envOr(string,string)":"d145736c","envOr(string,string,address[])":"c74e9deb","envOr(string,string,bool[])":"eb85e83b","envOr(string,string,bytes32[])":"2281f367","envOr(string,string,bytes[])":"64bc3e64","envOr(string,string,int256[])":"4700d74b","envOr(string,string,string[])":"859216bc","envOr(string,string,uint256[])":"74318528","envOr(string,uint256)":"5e97348f","envString(string)":"f877cb19","envString(string,string)":"14b02bc9","envUint(string)":"c1978d1f","envUint(string,string)":"f3dec099","eth_getLogs(uint256,uint256,address,bytes32[])":"35e1349b","exists(string)":"261a323e","ffi(string[])":"89160467","fsMetadata(string)":"af368a08","getBlockNumber()":"42cbb15c","getBlockTimestamp()":"796b89b9","getCode(string)":"8d1cc925","getDeployedCode(string)":"3ebf73b4","getLabel(address)":"28a249b0","getMappingKeyAndParentOf(address,bytes32)":"876e24e6","getMappingLength(address,bytes32)":"2f2fd63f","getMappingSlotAt(address,bytes32,uint256)":"ebc73ab4","getNonce((address,uint256,uint256,uint256))":"a5748aad","getNonce(address)":"2d0335ab","getRecordedLogs()":"191553a4","isDir(string)":"7d15d019","isFile(string)":"e0eb04d4","keyExists(string,string)":"528a683c","keyExistsJson(string,string)":"db4235f6","keyExistsToml(string,string)":"600903ad","label(address,string)":"c657c718","load(address,bytes32)":"667f9d70","parseAddress(string)":"c6ce059d","parseBool(string)":"974ef924","parseBytes(string)":"8f5d232d","parseBytes32(string)":"087e6e81","parseInt(string)":"42346c5e","parseJson(string)":"6a82600a","parseJson(string,string)":"85940ef1","parseJsonAddress(string,string)":"1e19e657","parseJsonAddressArray(string,string)":"2fce7883","parseJsonBool(string,string)":"9f86dc91","parseJsonBoolArray(string,string)":"91f3b94f","parseJsonBytes(string,string)":"fd921be8","parseJsonBytes32(string,string)":"1777e59d","parseJsonBytes32Array(string,string)":"91c75bc3","parseJsonBytesArray(string,string)":"6631aa99","parseJsonInt(string,string)":"7b048ccd","parseJsonIntArray(string,string)":"9983c28a","parseJsonKeys(string,string)":"213e4198","parseJsonString(string,string)":"49c4fac8","parseJsonStringArray(string,string)":"498fdcf4","parseJsonUint(string,string)":"addde2b6","parseJsonUintArray(string,string)":"522074ab","parseToml(string)":"592151f0","parseToml(string,string)":"37736e08","parseTomlAddress(string,string)":"65e7c844","parseTomlAddressArray(string,string)":"65c428e7","parseTomlBool(string,string)":"d30dced6","parseTomlBoolArray(string,string)":"127cfe9a","parseTomlBytes(string,string)":"d77bfdb9","parseTomlBytes32(string,string)":"8e214810","parseTomlBytes32Array(string,string)":"3e716f81","parseTomlBytesArray(string,string)":"b197c247","parseTomlInt(string,string)":"c1350739","parseTomlIntArray(string,string)":"d3522ae6","parseTomlKeys(string,string)":"812a44b2","parseTomlString(string,string)":"8bb8dd43","parseTomlStringArray(string,string)":"9f629281","parseTomlUint(string,string)":"cc7b0487","parseTomlUintArray(string,string)":"b5df27c8","parseUint(string)":"fa91454d","pauseGasMetering()":"d1a5b36f","projectRoot()":"d930a0e6","prompt(string)":"47eaf474","promptSecret(string)":"1e279d41","readDir(string)":"c4bc59e0","readDir(string,uint64)":"1497876c","readDir(string,uint64,bool)":"8102d70d","readFile(string)":"60f9bb11","readFileBinary(string)":"16ed7bc4","readLine(string)":"70f55728","readLink(string)":"9f5684a2","record()":"266cf109","recordLogs()":"41af2f52","rememberKey(uint256)":"22100064","removeDir(string,bool)":"45c62011","removeFile(string)":"f1afe04d","replace(string,string,string)":"e00ad03e","resumeGasMetering()":"2bcd50e0","rpc(string,string)":"1206c8a8","rpcUrl(string)":"975a6ce9","rpcUrlStructs()":"9d2ad72a","rpcUrls()":"a85a8418","serializeAddress(string,string,address)":"972c6062","serializeAddress(string,string,address[])":"1e356e1a","serializeBool(string,string,bool)":"ac22e971","serializeBool(string,string,bool[])":"92925aa1","serializeBytes(string,string,bytes)":"f21d52c7","serializeBytes(string,string,bytes[])":"9884b232","serializeBytes32(string,string,bytes32)":"2d812b44","serializeBytes32(string,string,bytes32[])":"201e43e2","serializeInt(string,string,int256)":"3f33db60","serializeInt(string,string,int256[])":"7676e127","serializeJson(string,string)":"9b3358b0","serializeString(string,string,string)":"88da6d35","serializeString(string,string,string[])":"561cd6f3","serializeUint(string,string,uint256)":"129e9002","serializeUint(string,string,uint256[])":"fee9a469","setEnv(string,string)":"3d5923ee","sign((address,uint256,uint256,uint256),bytes32)":"b25c5a25","sign(uint256,bytes32)":"e341eaa4","signP256(uint256,bytes32)":"83211b40","sleep(uint256)":"fa9d8713","split(string,string)":"8bb75533","startBroadcast()":"7fb5297f","startBroadcast(address)":"7fec2a8d","startBroadcast(uint256)":"ce817d47","startMappingRecording()":"3e9705c0","startStateDiffRecording()":"cf22e3c9","stopAndReturnStateDiff()":"aa5cf90e","stopBroadcast()":"76eadd36","stopMappingRecording()":"0d4aae9b","toBase64(bytes)":"a5cbfe65","toBase64(string)":"3f8be2c8","toBase64URL(bytes)":"c8bd0e4a","toBase64URL(string)":"ae3165b3","toLowercase(string)":"50bb0884","toString(address)":"56ca623e","toString(bool)":"71dce7da","toString(bytes)":"71aad10d","toString(bytes32)":"b11a19e8","toString(int256)":"a322c40e","toString(uint256)":"6900a3ae","toUppercase(string)":"074ae3d7","trim(string)":"b2dad155","tryFfi(string[])":"f45c1ce7","unixTime()":"625387dc","writeFile(string,string)":"897e0a97","writeFileBinary(string,bytes)":"1f21fc80","writeJson(string,string)":"e23cd19f","writeJson(string,string,string)":"35d6ad46","writeLine(string,string)":"619d897f","writeToml(string,string)":"c0865ba7","writeToml(string,string,string)":"51ac6a33"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"accesses\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"readSlots\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"writeSlots\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertFalse\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assertFalse\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assertTrue\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertTrue\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assume\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"char\",\"type\":\"string\"}],\"name\":\"breakpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"char\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"breakpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"closeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"initCodeHash\",\"type\":\"bytes32\"}],\"name\":\"computeCreate2Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"initCodeHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"}],\"name\":\"computeCreate2Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"computeCreateAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"from\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"}],\"name\":\"copyFile\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"copied\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"recursive\",\"type\":\"bool\"}],\"name\":\"createDir\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"walletLabel\",\"type\":\"string\"}],\"name\":\"createWallet\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"createWallet\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"walletLabel\",\"type\":\"string\"}],\"name\":\"createWallet\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"internalType\":\"string\",\"name\":\"language\",\"type\":\"string\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"internalType\":\"string\",\"name\":\"language\",\"type\":\"string\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"defaultValue\",\"type\":\"bytes32[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"defaultValue\",\"type\":\"int256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"defaultValue\",\"type\":\"bool\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"defaultValue\",\"type\":\"address\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"defaultValue\",\"type\":\"uint256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"defaultValue\",\"type\":\"bytes[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"defaultValue\",\"type\":\"uint256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"defaultValue\",\"type\":\"string[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"defaultValue\",\"type\":\"bytes\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"defaultValue\",\"type\":\"bytes32\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"defaultValue\",\"type\":\"int256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"defaultValue\",\"type\":\"address[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"defaultValue\",\"type\":\"string\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"defaultValue\",\"type\":\"bool[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fromBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"toBlock\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"}],\"name\":\"eth_getLogs\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"blockNumber\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"transactionHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"transactionIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"removed\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.EthGetLogs[]\",\"name\":\"logs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"commandInput\",\"type\":\"string[]\"}],\"name\":\"ffi\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"fsMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"readOnly\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"modified\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accessed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"created\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.FsMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"creationBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getDeployedCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"runtimeBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getLabel\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"currentLabel\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"elementSlot\",\"type\":\"bytes32\"}],\"name\":\"getMappingKeyAndParentOf\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"found\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"parent\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"mappingSlot\",\"type\":\"bytes32\"}],\"name\":\"getMappingLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"mappingSlot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"idx\",\"type\":\"uint256\"}],\"name\":\"getMappingSlotAt\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecordedLogs\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"internalType\":\"struct VmSafe.Log[]\",\"name\":\"logs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"isDir\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"isFile\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"keyExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"keyExistsJson\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"keyExistsToml\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"newLabel\",\"type\":\"string\"}],\"name\":\"label\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"load\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"parsedValue\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"parsedValue\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"parsedValue\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"parsedValue\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"parsedValue\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonAddressArray\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBoolArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32Array\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytesArray\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonIntArray\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"\",\"type\":\"int256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonKeys\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"keys\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonStringArray\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonUintArray\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseToml\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"}],\"name\":\"parseToml\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlAddressArray\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBoolArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBytes32Array\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBytesArray\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlIntArray\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"\",\"type\":\"int256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlKeys\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"keys\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlStringArray\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlUintArray\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"parsedValue\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"projectRoot\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"promptText\",\"type\":\"string\"}],\"name\":\"prompt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"promptText\",\"type\":\"string\"}],\"name\":\"promptSecret\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"maxDepth\",\"type\":\"uint64\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"maxDepth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"followLinks\",\"type\":\"bool\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFile\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFileBinary\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readLine\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"line\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"linkPath\",\"type\":\"string\"}],\"name\":\"readLink\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"targetPath\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"record\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recordLogs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"rememberKey\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"recursive\",\"type\":\"bool\"}],\"name\":\"removeDir\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"removeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"from\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"}],\"name\":\"replace\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resumeGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"method\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"params\",\"type\":\"string\"}],\"name\":\"rpc\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"rpcAlias\",\"type\":\"string\"}],\"name\":\"rpcUrl\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrlStructs\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"}],\"internalType\":\"struct VmSafe.Rpc[]\",\"name\":\"urls\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrls\",\"outputs\":[{\"internalType\":\"string[2][]\",\"name\":\"urls\",\"type\":\"string[2][]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"values\",\"type\":\"address[]\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"values\",\"type\":\"bool[]\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"values\",\"type\":\"bytes[]\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"values\",\"type\":\"bytes32[]\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"values\",\"type\":\"int256[]\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"serializeJson\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"values\",\"type\":\"string[]\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"setEnv\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"signP256\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"sleep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delimiter\",\"type\":\"string\"}],\"name\":\"split\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"outputs\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startMappingRecording\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startStateDiffRecording\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopAndReturnStateDiff\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.ChainInfo\",\"name\":\"chainInfo\",\"type\":\"tuple\"},{\"internalType\":\"enum VmSafe.AccountAccessKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"accessor\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"oldBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"deployedCode\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"reverted\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"isWrite\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"previousValue\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newValue\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"reverted\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.StorageAccess[]\",\"name\":\"storageAccesses\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"}],\"internalType\":\"struct VmSafe.AccountAccess[]\",\"name\":\"accountAccesses\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopMappingRecording\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"toBase64\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"toBase64\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"toBase64URL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"toBase64URL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"name\":\"toLowercase\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"name\":\"toUppercase\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"name\":\"trim\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"commandInput\",\"type\":\"string[]\"}],\"name\":\"tryFfi\",\"outputs\":[{\"components\":[{\"internalType\":\"int32\",\"name\":\"exitCode\",\"type\":\"int32\"},{\"internalType\":\"bytes\",\"name\":\"stdout\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"stderr\",\"type\":\"bytes\"}],\"internalType\":\"struct VmSafe.FfiResult\",\"name\":\"result\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unixTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"milliseconds\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"writeFileBinary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeLine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"}],\"name\":\"writeToml\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"writeToml\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"accesses(address)\":{\"notice\":\"Gets all accessed reads and write slot from a `vm.record` session, for a given address.\"},\"addr(uint256)\":{\"notice\":\"Gets the address for a given private key.\"},\"assertApproxEqAbs(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`.\"},\"assertApproxEqAbs(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure.\"},\"assertApproxEqAbs(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`.\"},\"assertApproxEqAbs(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure.\"},\"assertApproxEqAbsDecimal(int256,int256,uint256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message.\"},\"assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message.\"},\"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertApproxEqRel(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%\"},\"assertApproxEqRel(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure.\"},\"assertApproxEqRel(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%\"},\"assertApproxEqRel(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure.\"},\"assertApproxEqRelDecimal(int256,int256,uint256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message.\"},\"assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message.\"},\"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertEq(address,address)\":{\"notice\":\"Asserts that two `address` values are equal.\"},\"assertEq(address,address,string)\":{\"notice\":\"Asserts that two `address` values are equal and includes error message into revert string on failure.\"},\"assertEq(address[],address[])\":{\"notice\":\"Asserts that two arrays of `address` values are equal.\"},\"assertEq(address[],address[],string)\":{\"notice\":\"Asserts that two arrays of `address` values are equal and includes error message into revert string on failure.\"},\"assertEq(bool,bool)\":{\"notice\":\"Asserts that two `bool` values are equal.\"},\"assertEq(bool,bool,string)\":{\"notice\":\"Asserts that two `bool` values are equal and includes error message into revert string on failure.\"},\"assertEq(bool[],bool[])\":{\"notice\":\"Asserts that two arrays of `bool` values are equal.\"},\"assertEq(bool[],bool[],string)\":{\"notice\":\"Asserts that two arrays of `bool` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes,bytes)\":{\"notice\":\"Asserts that two `bytes` values are equal.\"},\"assertEq(bytes,bytes,string)\":{\"notice\":\"Asserts that two `bytes` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes32,bytes32)\":{\"notice\":\"Asserts that two `bytes32` values are equal.\"},\"assertEq(bytes32,bytes32,string)\":{\"notice\":\"Asserts that two `bytes32` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes32[],bytes32[])\":{\"notice\":\"Asserts that two arrays of `bytes32` values are equal.\"},\"assertEq(bytes32[],bytes32[],string)\":{\"notice\":\"Asserts that two arrays of `bytes32` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes[],bytes[])\":{\"notice\":\"Asserts that two arrays of `bytes` values are equal.\"},\"assertEq(bytes[],bytes[],string)\":{\"notice\":\"Asserts that two arrays of `bytes` values are equal and includes error message into revert string on failure.\"},\"assertEq(int256,int256)\":{\"notice\":\"Asserts that two `int256` values are equal.\"},\"assertEq(int256,int256,string)\":{\"notice\":\"Asserts that two `int256` values are equal and includes error message into revert string on failure.\"},\"assertEq(int256[],int256[])\":{\"notice\":\"Asserts that two arrays of `int256` values are equal.\"},\"assertEq(int256[],int256[],string)\":{\"notice\":\"Asserts that two arrays of `int256` values are equal and includes error message into revert string on failure.\"},\"assertEq(string,string)\":{\"notice\":\"Asserts that two `string` values are equal.\"},\"assertEq(string,string,string)\":{\"notice\":\"Asserts that two `string` values are equal and includes error message into revert string on failure.\"},\"assertEq(string[],string[])\":{\"notice\":\"Asserts that two arrays of `string` values are equal.\"},\"assertEq(string[],string[],string)\":{\"notice\":\"Asserts that two arrays of `string` values are equal and includes error message into revert string on failure.\"},\"assertEq(uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are equal.\"},\"assertEq(uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are equal and includes error message into revert string on failure.\"},\"assertEq(uint256[],uint256[])\":{\"notice\":\"Asserts that two arrays of `uint256 values are equal.\"},\"assertEq(uint256[],uint256[],string)\":{\"notice\":\"Asserts that two arrays of `uint256` values are equal and includes error message into revert string on failure.\"},\"assertEqDecimal(int256,int256,uint256)\":{\"notice\":\"Asserts that two `int256` values are equal, formatting them with decimals in failure message.\"},\"assertEqDecimal(int256,int256,uint256,string)\":{\"notice\":\"Asserts that two `int256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertEqDecimal(uint256,uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are equal, formatting them with decimals in failure message.\"},\"assertEqDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertFalse(bool)\":{\"notice\":\"Asserts that the given condition is false.\"},\"assertFalse(bool,string)\":{\"notice\":\"Asserts that the given condition is false and includes error message into revert string on failure.\"},\"assertGe(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second.\"},\"assertGe(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure.\"},\"assertGe(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second.\"},\"assertGe(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure.\"},\"assertGeDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message.\"},\"assertGeDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertGeDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message.\"},\"assertGeDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertGt(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second.\"},\"assertGt(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second. Includes error message into revert string on failure.\"},\"assertGt(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second.\"},\"assertGt(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second. Includes error message into revert string on failure.\"},\"assertGtDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message.\"},\"assertGtDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertGtDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message.\"},\"assertGtDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLe(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second.\"},\"assertLe(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure.\"},\"assertLe(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second.\"},\"assertLe(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure.\"},\"assertLeDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message.\"},\"assertLeDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLeDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message.\"},\"assertLeDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLt(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second.\"},\"assertLt(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second. Includes error message into revert string on failure.\"},\"assertLt(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second.\"},\"assertLt(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second. Includes error message into revert string on failure.\"},\"assertLtDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message.\"},\"assertLtDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLtDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message.\"},\"assertLtDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertNotEq(address,address)\":{\"notice\":\"Asserts that two `address` values are not equal.\"},\"assertNotEq(address,address,string)\":{\"notice\":\"Asserts that two `address` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(address[],address[])\":{\"notice\":\"Asserts that two arrays of `address` values are not equal.\"},\"assertNotEq(address[],address[],string)\":{\"notice\":\"Asserts that two arrays of `address` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bool,bool)\":{\"notice\":\"Asserts that two `bool` values are not equal.\"},\"assertNotEq(bool,bool,string)\":{\"notice\":\"Asserts that two `bool` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bool[],bool[])\":{\"notice\":\"Asserts that two arrays of `bool` values are not equal.\"},\"assertNotEq(bool[],bool[],string)\":{\"notice\":\"Asserts that two arrays of `bool` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes,bytes)\":{\"notice\":\"Asserts that two `bytes` values are not equal.\"},\"assertNotEq(bytes,bytes,string)\":{\"notice\":\"Asserts that two `bytes` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes32,bytes32)\":{\"notice\":\"Asserts that two `bytes32` values are not equal.\"},\"assertNotEq(bytes32,bytes32,string)\":{\"notice\":\"Asserts that two `bytes32` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes32[],bytes32[])\":{\"notice\":\"Asserts that two arrays of `bytes32` values are not equal.\"},\"assertNotEq(bytes32[],bytes32[],string)\":{\"notice\":\"Asserts that two arrays of `bytes32` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes[],bytes[])\":{\"notice\":\"Asserts that two arrays of `bytes` values are not equal.\"},\"assertNotEq(bytes[],bytes[],string)\":{\"notice\":\"Asserts that two arrays of `bytes` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(int256,int256)\":{\"notice\":\"Asserts that two `int256` values are not equal.\"},\"assertNotEq(int256,int256,string)\":{\"notice\":\"Asserts that two `int256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(int256[],int256[])\":{\"notice\":\"Asserts that two arrays of `int256` values are not equal.\"},\"assertNotEq(int256[],int256[],string)\":{\"notice\":\"Asserts that two arrays of `int256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(string,string)\":{\"notice\":\"Asserts that two `string` values are not equal.\"},\"assertNotEq(string,string,string)\":{\"notice\":\"Asserts that two `string` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(string[],string[])\":{\"notice\":\"Asserts that two arrays of `string` values are not equal.\"},\"assertNotEq(string[],string[],string)\":{\"notice\":\"Asserts that two arrays of `string` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are not equal.\"},\"assertNotEq(uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(uint256[],uint256[])\":{\"notice\":\"Asserts that two arrays of `uint256` values are not equal.\"},\"assertNotEq(uint256[],uint256[],string)\":{\"notice\":\"Asserts that two arrays of `uint256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEqDecimal(int256,int256,uint256)\":{\"notice\":\"Asserts that two `int256` values are not equal, formatting them with decimals in failure message.\"},\"assertNotEqDecimal(int256,int256,uint256,string)\":{\"notice\":\"Asserts that two `int256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertNotEqDecimal(uint256,uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message.\"},\"assertNotEqDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertTrue(bool)\":{\"notice\":\"Asserts that the given condition is true.\"},\"assertTrue(bool,string)\":{\"notice\":\"Asserts that the given condition is true and includes error message into revert string on failure.\"},\"assume(bool)\":{\"notice\":\"If the condition is false, discard this run's fuzz inputs and generate new ones.\"},\"breakpoint(string)\":{\"notice\":\"Writes a breakpoint to jump to in the debugger.\"},\"breakpoint(string,bool)\":{\"notice\":\"Writes a conditional breakpoint to jump to in the debugger.\"},\"broadcast()\":{\"notice\":\"Using the address that calls the test contract, has the next call (at this call depth only) create a transaction that can later be signed and sent onchain.\"},\"broadcast(address)\":{\"notice\":\"Has the next call (at this call depth only) create a transaction with the address provided as the sender that can later be signed and sent onchain.\"},\"broadcast(uint256)\":{\"notice\":\"Has the next call (at this call depth only) create a transaction with the private key provided as the sender that can later be signed and sent onchain.\"},\"closeFile(string)\":{\"notice\":\"Closes file for reading, resetting the offset and allowing to read it from beginning with readLine. `path` is relative to the project root.\"},\"computeCreate2Address(bytes32,bytes32)\":{\"notice\":\"Compute the address of a contract created with CREATE2 using the default CREATE2 deployer.\"},\"computeCreate2Address(bytes32,bytes32,address)\":{\"notice\":\"Compute the address of a contract created with CREATE2 using the given CREATE2 deployer.\"},\"computeCreateAddress(address,uint256)\":{\"notice\":\"Compute the address a contract will be deployed at for a given deployer address and nonce.\"},\"copyFile(string,string)\":{\"notice\":\"Copies the contents of one file to another. This function will **overwrite** the contents of `to`. On success, the total number of bytes copied is returned and it is equal to the length of the `to` file as reported by `metadata`. Both `from` and `to` are relative to the project root.\"},\"createDir(string,bool)\":{\"notice\":\"Creates a new, empty directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - User lacks permissions to modify `path`. - A parent of the given path doesn't exist and `recursive` is false. - `path` already exists and `recursive` is false. `path` is relative to the project root.\"},\"createWallet(string)\":{\"notice\":\"Derives a private key from the name, labels the account with that name, and returns the wallet.\"},\"createWallet(uint256)\":{\"notice\":\"Generates a wallet from the private key and returns the wallet.\"},\"createWallet(uint256,string)\":{\"notice\":\"Generates a wallet from the private key, labels the account with that name, and returns the wallet.\"},\"deriveKey(string,string,uint32)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) at `{derivationPath}{index}`.\"},\"deriveKey(string,string,uint32,string)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at `{derivationPath}{index}`.\"},\"deriveKey(string,uint32)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) at the derivation path `m/44'/60'/0'/0/{index}`.\"},\"deriveKey(string,uint32,string)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at the derivation path `m/44'/60'/0'/0/{index}`.\"},\"envAddress(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `address`. Reverts if the variable was not found or could not be parsed.\"},\"envAddress(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envBool(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable was not found or could not be parsed.\"},\"envBool(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes32(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes32(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envInt(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable was not found or could not be parsed.\"},\"envInt(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envOr(string,address)\":{\"notice\":\"Gets the environment variable `name` and parses it as `address`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,bool)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,bytes)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,bytes32)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,int256)\":{\"notice\":\"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `string`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,address[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,bool[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,bytes32[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,bytes[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,int256[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,string[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,uint256[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,uint256)\":{\"notice\":\"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envString(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `string`. Reverts if the variable was not found or could not be parsed.\"},\"envString(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envUint(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable was not found or could not be parsed.\"},\"envUint(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"eth_getLogs(uint256,uint256,address,bytes32[])\":{\"notice\":\"Gets all the logs according to specified filter.\"},\"exists(string)\":{\"notice\":\"Returns true if the given path points to an existing entity, else returns false.\"},\"ffi(string[])\":{\"notice\":\"Performs a foreign function call via the terminal.\"},\"fsMetadata(string)\":{\"notice\":\"Given a path, query the file system to get information about a file, directory, etc.\"},\"getBlockNumber()\":{\"notice\":\"Gets the current `block.number`. You should use this instead of `block.number` if you use `vm.roll`, as `block.number` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180\"},\"getBlockTimestamp()\":{\"notice\":\"Gets the current `block.timestamp`. You should use this instead of `block.timestamp` if you use `vm.warp`, as `block.timestamp` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180\"},\"getCode(string)\":{\"notice\":\"Gets the creation bytecode from an artifact file. Takes in the relative path to the json file.\"},\"getDeployedCode(string)\":{\"notice\":\"Gets the deployed bytecode from an artifact file. Takes in the relative path to the json file.\"},\"getLabel(address)\":{\"notice\":\"Gets the label for the specified address.\"},\"getMappingKeyAndParentOf(address,bytes32)\":{\"notice\":\"Gets the map key and parent of a mapping at a given slot, for a given address.\"},\"getMappingLength(address,bytes32)\":{\"notice\":\"Gets the number of elements in the mapping at the given slot, for a given address.\"},\"getMappingSlotAt(address,bytes32,uint256)\":{\"notice\":\"Gets the elements at index idx of the mapping at the given slot, for a given address. The index must be less than the length of the mapping (i.e. the number of keys in the mapping).\"},\"getNonce((address,uint256,uint256,uint256))\":{\"notice\":\"Get a `Wallet`'s nonce.\"},\"getNonce(address)\":{\"notice\":\"Gets the nonce of an account.\"},\"getRecordedLogs()\":{\"notice\":\"Gets all the recorded logs.\"},\"isDir(string)\":{\"notice\":\"Returns true if the path exists on disk and is pointing at a directory, else returns false.\"},\"isFile(string)\":{\"notice\":\"Returns true if the path exists on disk and is pointing at a regular file, else returns false.\"},\"keyExists(string,string)\":{\"notice\":\"Checks if `key` exists in a JSON object `keyExists` is being deprecated in favor of `keyExistsJson`. It will be removed in future versions.\"},\"keyExistsJson(string,string)\":{\"notice\":\"Checks if `key` exists in a JSON object.\"},\"keyExistsToml(string,string)\":{\"notice\":\"Checks if `key` exists in a TOML table.\"},\"label(address,string)\":{\"notice\":\"Labels an address in call traces.\"},\"load(address,bytes32)\":{\"notice\":\"Loads a storage slot from an address.\"},\"parseAddress(string)\":{\"notice\":\"Parses the given `string` into an `address`.\"},\"parseBool(string)\":{\"notice\":\"Parses the given `string` into a `bool`.\"},\"parseBytes(string)\":{\"notice\":\"Parses the given `string` into `bytes`.\"},\"parseBytes32(string)\":{\"notice\":\"Parses the given `string` into a `bytes32`.\"},\"parseInt(string)\":{\"notice\":\"Parses the given `string` into a `int256`.\"},\"parseJson(string)\":{\"notice\":\"ABI-encodes a JSON object.\"},\"parseJson(string,string)\":{\"notice\":\"ABI-encodes a JSON object at `key`.\"},\"parseJsonAddress(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `address`.\"},\"parseJsonAddressArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `address[]`.\"},\"parseJsonBool(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bool`.\"},\"parseJsonBoolArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bool[]`.\"},\"parseJsonBytes(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes`.\"},\"parseJsonBytes32(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes32`.\"},\"parseJsonBytes32Array(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes32[]`.\"},\"parseJsonBytesArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes[]`.\"},\"parseJsonInt(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `int256`.\"},\"parseJsonIntArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `int256[]`.\"},\"parseJsonKeys(string,string)\":{\"notice\":\"Returns an array of all the keys in a JSON object.\"},\"parseJsonString(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `string`.\"},\"parseJsonStringArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `string[]`.\"},\"parseJsonUint(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `uint256`.\"},\"parseJsonUintArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `uint256[]`.\"},\"parseToml(string)\":{\"notice\":\"ABI-encodes a TOML table.\"},\"parseToml(string,string)\":{\"notice\":\"ABI-encodes a TOML table at `key`.\"},\"parseTomlAddress(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `address`.\"},\"parseTomlAddressArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `address[]`.\"},\"parseTomlBool(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bool`.\"},\"parseTomlBoolArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bool[]`.\"},\"parseTomlBytes(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bytes`.\"},\"parseTomlBytes32(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bytes32`.\"},\"parseTomlBytes32Array(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bytes32[]`.\"},\"parseTomlBytesArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bytes[]`.\"},\"parseTomlInt(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `int256`.\"},\"parseTomlIntArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `int256[]`.\"},\"parseTomlKeys(string,string)\":{\"notice\":\"Returns an array of all the keys in a TOML table.\"},\"parseTomlString(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `string`.\"},\"parseTomlStringArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `string[]`.\"},\"parseTomlUint(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `uint256`.\"},\"parseTomlUintArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `uint256[]`.\"},\"parseUint(string)\":{\"notice\":\"Parses the given `string` into a `uint256`.\"},\"pauseGasMetering()\":{\"notice\":\"Pauses gas metering (i.e. gas usage is not counted). Noop if already paused.\"},\"projectRoot()\":{\"notice\":\"Get the path of the current project root.\"},\"prompt(string)\":{\"notice\":\"Prompts the user for a string value in the terminal.\"},\"promptSecret(string)\":{\"notice\":\"Prompts the user for a hidden string value in the terminal.\"},\"readDir(string)\":{\"notice\":\"Reads the directory at the given path recursively, up to `maxDepth`. `maxDepth` defaults to 1, meaning only the direct children of the given directory will be returned. Follows symbolic links if `followLinks` is true.\"},\"readDir(string,uint64)\":{\"notice\":\"See `readDir(string)`.\"},\"readDir(string,uint64,bool)\":{\"notice\":\"See `readDir(string)`.\"},\"readFile(string)\":{\"notice\":\"Reads the entire content of file to string. `path` is relative to the project root.\"},\"readFileBinary(string)\":{\"notice\":\"Reads the entire content of file as binary. `path` is relative to the project root.\"},\"readLine(string)\":{\"notice\":\"Reads next line of file to string.\"},\"readLink(string)\":{\"notice\":\"Reads a symbolic link, returning the path that the link points to. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` is not a symbolic link. - `path` does not exist.\"},\"record()\":{\"notice\":\"Records all storage reads and writes.\"},\"recordLogs()\":{\"notice\":\"Record all the transaction logs.\"},\"rememberKey(uint256)\":{\"notice\":\"Adds a private key to the local forge wallet and returns the address.\"},\"removeDir(string,bool)\":{\"notice\":\"Removes a directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` doesn't exist. - `path` isn't a directory. - User lacks permissions to modify `path`. - The directory is not empty and `recursive` is false. `path` is relative to the project root.\"},\"removeFile(string)\":{\"notice\":\"Removes a file from the filesystem. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` points to a directory. - The file doesn't exist. - The user lacks permissions to remove the file. `path` is relative to the project root.\"},\"replace(string,string,string)\":{\"notice\":\"Replaces occurrences of `from` in the given `string` with `to`.\"},\"resumeGasMetering()\":{\"notice\":\"Resumes gas metering (i.e. gas usage is counted again). Noop if already on.\"},\"rpc(string,string)\":{\"notice\":\"Performs an Ethereum JSON-RPC request to the current fork URL.\"},\"rpcUrl(string)\":{\"notice\":\"Returns the RPC url for the given alias.\"},\"rpcUrlStructs()\":{\"notice\":\"Returns all rpc urls and their aliases as structs.\"},\"rpcUrls()\":{\"notice\":\"Returns all rpc urls and their aliases `[alias, url][]`.\"},\"serializeAddress(string,string,address)\":{\"notice\":\"See `serializeJson`.\"},\"serializeAddress(string,string,address[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeBool(string,string,bool)\":{\"notice\":\"See `serializeJson`.\"},\"serializeBool(string,string,bool[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes(string,string,bytes)\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes(string,string,bytes[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes32(string,string,bytes32)\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes32(string,string,bytes32[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeInt(string,string,int256)\":{\"notice\":\"See `serializeJson`.\"},\"serializeInt(string,string,int256[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeJson(string,string)\":{\"notice\":\"Serializes a key and value to a JSON object stored in-memory that can be later written to a file. Returns the stringified version of the specific JSON file up to that moment.\"},\"serializeString(string,string,string)\":{\"notice\":\"See `serializeJson`.\"},\"serializeString(string,string,string[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeUint(string,string,uint256)\":{\"notice\":\"See `serializeJson`.\"},\"serializeUint(string,string,uint256[])\":{\"notice\":\"See `serializeJson`.\"},\"setEnv(string,string)\":{\"notice\":\"Sets environment variables.\"},\"sign((address,uint256,uint256,uint256),bytes32)\":{\"notice\":\"Signs data with a `Wallet`.\"},\"sign(uint256,bytes32)\":{\"notice\":\"Signs `digest` with `privateKey` using the secp256k1 curve.\"},\"signP256(uint256,bytes32)\":{\"notice\":\"Signs `digest` with `privateKey` using the secp256r1 curve.\"},\"sleep(uint256)\":{\"notice\":\"Suspends execution of the main thread for `duration` milliseconds.\"},\"split(string,string)\":{\"notice\":\"Splits the given `string` into an array of strings divided by the `delimiter`.\"},\"startBroadcast()\":{\"notice\":\"Using the address that calls the test contract, has all subsequent calls (at this call depth only) create transactions that can later be signed and sent onchain.\"},\"startBroadcast(address)\":{\"notice\":\"Has all subsequent calls (at this call depth only) create transactions with the address provided that can later be signed and sent onchain.\"},\"startBroadcast(uint256)\":{\"notice\":\"Has all subsequent calls (at this call depth only) create transactions with the private key provided that can later be signed and sent onchain.\"},\"startMappingRecording()\":{\"notice\":\"Starts recording all map SSTOREs for later retrieval.\"},\"startStateDiffRecording()\":{\"notice\":\"Record all account accesses as part of CREATE, CALL or SELFDESTRUCT opcodes in order, along with the context of the calls\"},\"stopAndReturnStateDiff()\":{\"notice\":\"Returns an ordered array of all account accesses from a `vm.startStateDiffRecording` session.\"},\"stopBroadcast()\":{\"notice\":\"Stops collecting onchain transactions.\"},\"stopMappingRecording()\":{\"notice\":\"Stops recording all map SSTOREs for later retrieval and clears the recorded data.\"},\"toBase64(bytes)\":{\"notice\":\"Encodes a `bytes` value to a base64 string.\"},\"toBase64(string)\":{\"notice\":\"Encodes a `string` value to a base64 string.\"},\"toBase64URL(bytes)\":{\"notice\":\"Encodes a `bytes` value to a base64url string.\"},\"toBase64URL(string)\":{\"notice\":\"Encodes a `string` value to a base64url string.\"},\"toLowercase(string)\":{\"notice\":\"Converts the given `string` value to Lowercase.\"},\"toString(address)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(bool)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(bytes)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(bytes32)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(int256)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(uint256)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toUppercase(string)\":{\"notice\":\"Converts the given `string` value to Uppercase.\"},\"trim(string)\":{\"notice\":\"Trims leading and trailing whitespace from the given `string` value.\"},\"tryFfi(string[])\":{\"notice\":\"Performs a foreign function call via terminal and returns the exit code, stdout, and stderr.\"},\"unixTime()\":{\"notice\":\"Returns the time since unix epoch in milliseconds.\"},\"writeFile(string,string)\":{\"notice\":\"Writes data to file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root.\"},\"writeFileBinary(string,bytes)\":{\"notice\":\"Writes binary data to a file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root.\"},\"writeJson(string,string)\":{\"notice\":\"Write a serialized JSON object to a file. If the file exists, it will be overwritten.\"},\"writeJson(string,string,string)\":{\"notice\":\"Write a serialized JSON object to an **existing** JSON file, replacing a value with key = This is useful to replace a specific value of a JSON file, without having to parse the entire thing.\"},\"writeLine(string,string)\":{\"notice\":\"Writes line to file, creating a file if it does not exist. `path` is relative to the project root.\"},\"writeToml(string,string)\":{\"notice\":\"Takes serialized JSON, converts to TOML and write a serialized TOML to a file.\"},\"writeToml(string,string,string)\":{\"notice\":\"Takes serialized JSON, converts to TOML and write a serialized TOML table to an **existing** TOML file, replacing a value with key = This is useful to replace a specific value of a TOML file, without having to parse the entire thing.\"}},\"notice\":\"The `VmSafe` interface does not allow manipulation of the EVM state or other actions that may result in Script simulations differing from on-chain execution. It is recommended to only use these cheats in scripts.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Vm.sol\":\"VmSafe\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a\",\"dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"accesses","outputs":[{"internalType":"bytes32[]","name":"readSlots","type":"bytes32[]"},{"internalType":"bytes32[]","name":"writeSlots","type":"bytes32[]"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"pure","type":"function","name":"addr","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertFalse"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertFalse"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertTrue"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertTrue"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assume"},{"inputs":[{"internalType":"string","name":"char","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"breakpoint"},{"inputs":[{"internalType":"string","name":"char","type":"string"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"breakpoint"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"closeFile"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes32","name":"initCodeHash","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"computeCreate2Address","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes32","name":"initCodeHash","type":"bytes32"},{"internalType":"address","name":"deployer","type":"address"}],"stateMutability":"pure","type":"function","name":"computeCreate2Address","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"deployer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"pure","type":"function","name":"computeCreateAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"from","type":"string"},{"internalType":"string","name":"to","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"copyFile","outputs":[{"internalType":"uint64","name":"copied","type":"uint64"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bool","name":"recursive","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"createDir"},{"inputs":[{"internalType":"string","name":"walletLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createWallet","outputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createWallet","outputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"string","name":"walletLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createWallet","outputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"},{"internalType":"string","name":"language","type":"string"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"},{"internalType":"string","name":"language","type":"string"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes32[]","name":"defaultValue","type":"bytes32[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"int256[]","name":"defaultValue","type":"int256[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bool","name":"defaultValue","type":"bool"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"defaultValue","type":"address"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"defaultValue","type":"uint256"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes[]","name":"defaultValue","type":"bytes[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"uint256[]","name":"defaultValue","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"string[]","name":"defaultValue","type":"string[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes","name":"defaultValue","type":"bytes"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"defaultValue","type":"bytes32"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"int256","name":"defaultValue","type":"int256"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"address[]","name":"defaultValue","type":"address[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"defaultValue","type":"string"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bool[]","name":"defaultValue","type":"bool[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"fromBlock","type":"uint256"},{"internalType":"uint256","name":"toBlock","type":"uint256"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"eth_getLogs","outputs":[{"internalType":"struct VmSafe.EthGetLogs[]","name":"logs","type":"tuple[]","components":[{"internalType":"address","name":"emitter","type":"address"},{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"uint64","name":"blockNumber","type":"uint64"},{"internalType":"bytes32","name":"transactionHash","type":"bytes32"},{"internalType":"uint64","name":"transactionIndex","type":"uint64"},{"internalType":"uint256","name":"logIndex","type":"uint256"},{"internalType":"bool","name":"removed","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"exists","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"string[]","name":"commandInput","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"ffi","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"fsMetadata","outputs":[{"internalType":"struct VmSafe.FsMetadata","name":"metadata","type":"tuple","components":[{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"},{"internalType":"uint256","name":"length","type":"uint256"},{"internalType":"bool","name":"readOnly","type":"bool"},{"internalType":"uint256","name":"modified","type":"uint256"},{"internalType":"uint256","name":"accessed","type":"uint256"},{"internalType":"uint256","name":"created","type":"uint256"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlockNumber","outputs":[{"internalType":"uint256","name":"height","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlockTimestamp","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getCode","outputs":[{"internalType":"bytes","name":"creationBytecode","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getDeployedCode","outputs":[{"internalType":"bytes","name":"runtimeBytecode","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getLabel","outputs":[{"internalType":"string","name":"currentLabel","type":"string"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"elementSlot","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"getMappingKeyAndParentOf","outputs":[{"internalType":"bool","name":"found","type":"bool"},{"internalType":"bytes32","name":"key","type":"bytes32"},{"internalType":"bytes32","name":"parent","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"mappingSlot","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"getMappingLength","outputs":[{"internalType":"uint256","name":"length","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"mappingSlot","type":"bytes32"},{"internalType":"uint256","name":"idx","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"getMappingSlotAt","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}]},{"inputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"getNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"getRecordedLogs","outputs":[{"internalType":"struct VmSafe.Log[]","name":"logs","type":"tuple[]","components":[{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"address","name":"emitter","type":"address"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"isDir","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"isFile","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"view","type":"function","name":"keyExists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"view","type":"function","name":"keyExistsJson","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"view","type":"function","name":"keyExistsToml","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"string","name":"newLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"label"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"}],"stateMutability":"view","type":"function","name":"load","outputs":[{"internalType":"bytes32","name":"data","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseAddress","outputs":[{"internalType":"address","name":"parsedValue","type":"address"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBool","outputs":[{"internalType":"bool","name":"parsedValue","type":"bool"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes","outputs":[{"internalType":"bytes","name":"parsedValue","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes32","outputs":[{"internalType":"bytes32","name":"parsedValue","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseInt","outputs":[{"internalType":"int256","name":"parsedValue","type":"int256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonAddressArray","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBool","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBoolArray","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytes32","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytes32Array","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytesArray","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonInt","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonIntArray","outputs":[{"internalType":"int256[]","name":"","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonKeys","outputs":[{"internalType":"string[]","name":"keys","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonString","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonStringArray","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonUintArray","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseToml","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"}],"stateMutability":"pure","type":"function","name":"parseToml","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlAddressArray","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBool","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBoolArray","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBytes32","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBytes32Array","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBytesArray","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlInt","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlIntArray","outputs":[{"internalType":"int256[]","name":"","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlKeys","outputs":[{"internalType":"string[]","name":"keys","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlString","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlStringArray","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlUintArray","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseUint","outputs":[{"internalType":"uint256","name":"parsedValue","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pauseGasMetering"},{"inputs":[],"stateMutability":"view","type":"function","name":"projectRoot","outputs":[{"internalType":"string","name":"path","type":"string"}]},{"inputs":[{"internalType":"string","name":"promptText","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"prompt","outputs":[{"internalType":"string","name":"input","type":"string"}]},{"inputs":[{"internalType":"string","name":"promptText","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"promptSecret","outputs":[{"internalType":"string","name":"input","type":"string"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"maxDepth","type":"uint64"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"maxDepth","type":"uint64"},{"internalType":"bool","name":"followLinks","type":"bool"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFile","outputs":[{"internalType":"string","name":"data","type":"string"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFileBinary","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readLine","outputs":[{"internalType":"string","name":"line","type":"string"}]},{"inputs":[{"internalType":"string","name":"linkPath","type":"string"}],"stateMutability":"view","type":"function","name":"readLink","outputs":[{"internalType":"string","name":"targetPath","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"record"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"recordLogs"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rememberKey","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bool","name":"recursive","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"removeDir"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"removeFile"},{"inputs":[{"internalType":"string","name":"input","type":"string"},{"internalType":"string","name":"from","type":"string"},{"internalType":"string","name":"to","type":"string"}],"stateMutability":"pure","type":"function","name":"replace","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"resumeGasMetering"},{"inputs":[{"internalType":"string","name":"method","type":"string"},{"internalType":"string","name":"params","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"rpc","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"rpcAlias","type":"string"}],"stateMutability":"view","type":"function","name":"rpcUrl","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrlStructs","outputs":[{"internalType":"struct VmSafe.Rpc[]","name":"urls","type":"tuple[]","components":[{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"url","type":"string"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrls","outputs":[{"internalType":"string[2][]","name":"urls","type":"string[2][]"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address[]","name":"values","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address","name":"value","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool[]","name":"values","type":"bool[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes[]","name":"values","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32[]","name":"values","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256[]","name":"values","type":"int256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"serializeJson","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string[]","name":"values","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setEnv"},{"inputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"signP256","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"duration","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"sleep"},{"inputs":[{"internalType":"string","name":"input","type":"string"},{"internalType":"string","name":"delimiter","type":"string"}],"stateMutability":"pure","type":"function","name":"split","outputs":[{"internalType":"string[]","name":"outputs","type":"string[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startMappingRecording"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startStateDiffRecording"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopAndReturnStateDiff","outputs":[{"internalType":"struct VmSafe.AccountAccess[]","name":"accountAccesses","type":"tuple[]","components":[{"internalType":"struct VmSafe.ChainInfo","name":"chainInfo","type":"tuple","components":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"uint256","name":"chainId","type":"uint256"}]},{"internalType":"enum VmSafe.AccountAccessKind","name":"kind","type":"uint8"},{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"accessor","type":"address"},{"internalType":"bool","name":"initialized","type":"bool"},{"internalType":"uint256","name":"oldBalance","type":"uint256"},{"internalType":"uint256","name":"newBalance","type":"uint256"},{"internalType":"bytes","name":"deployedCode","type":"bytes"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bool","name":"reverted","type":"bool"},{"internalType":"struct VmSafe.StorageAccess[]","name":"storageAccesses","type":"tuple[]","components":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"},{"internalType":"bool","name":"isWrite","type":"bool"},{"internalType":"bytes32","name":"previousValue","type":"bytes32"},{"internalType":"bytes32","name":"newValue","type":"bytes32"},{"internalType":"bool","name":"reverted","type":"bool"}]},{"internalType":"uint64","name":"depth","type":"uint64"}]}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopBroadcast"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopMappingRecording"},{"inputs":[{"internalType":"string","name":"data","type":"string"}],"stateMutability":"pure","type":"function","name":"toBase64","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toBase64","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"data","type":"string"}],"stateMutability":"pure","type":"function","name":"toBase64URL","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toBase64URL","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"input","type":"string"}],"stateMutability":"pure","type":"function","name":"toLowercase","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[{"internalType":"address","name":"value","type":"address"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"string","name":"input","type":"string"}],"stateMutability":"pure","type":"function","name":"toUppercase","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[{"internalType":"string","name":"input","type":"string"}],"stateMutability":"pure","type":"function","name":"trim","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[{"internalType":"string[]","name":"commandInput","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"tryFfi","outputs":[{"internalType":"struct VmSafe.FfiResult","name":"result","type":"tuple","components":[{"internalType":"int32","name":"exitCode","type":"int32"},{"internalType":"bytes","name":"stdout","type":"bytes"},{"internalType":"bytes","name":"stderr","type":"bytes"}]}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unixTime","outputs":[{"internalType":"uint256","name":"milliseconds","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeFile"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"writeFileBinary"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"valueKey","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeLine"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"valueKey","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeToml"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeToml"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{"accesses(address)":{"notice":"Gets all accessed reads and write slot from a `vm.record` session, for a given address."},"addr(uint256)":{"notice":"Gets the address for a given private key."},"assertApproxEqAbs(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`."},"assertApproxEqAbs(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure."},"assertApproxEqAbs(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`."},"assertApproxEqAbs(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure."},"assertApproxEqAbsDecimal(int256,int256,uint256,uint256)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message."},"assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message."},"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertApproxEqRel(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%"},"assertApproxEqRel(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure."},"assertApproxEqRel(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%"},"assertApproxEqRel(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure."},"assertApproxEqRelDecimal(int256,int256,uint256,uint256)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message."},"assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message."},"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertEq(address,address)":{"notice":"Asserts that two `address` values are equal."},"assertEq(address,address,string)":{"notice":"Asserts that two `address` values are equal and includes error message into revert string on failure."},"assertEq(address[],address[])":{"notice":"Asserts that two arrays of `address` values are equal."},"assertEq(address[],address[],string)":{"notice":"Asserts that two arrays of `address` values are equal and includes error message into revert string on failure."},"assertEq(bool,bool)":{"notice":"Asserts that two `bool` values are equal."},"assertEq(bool,bool,string)":{"notice":"Asserts that two `bool` values are equal and includes error message into revert string on failure."},"assertEq(bool[],bool[])":{"notice":"Asserts that two arrays of `bool` values are equal."},"assertEq(bool[],bool[],string)":{"notice":"Asserts that two arrays of `bool` values are equal and includes error message into revert string on failure."},"assertEq(bytes,bytes)":{"notice":"Asserts that two `bytes` values are equal."},"assertEq(bytes,bytes,string)":{"notice":"Asserts that two `bytes` values are equal and includes error message into revert string on failure."},"assertEq(bytes32,bytes32)":{"notice":"Asserts that two `bytes32` values are equal."},"assertEq(bytes32,bytes32,string)":{"notice":"Asserts that two `bytes32` values are equal and includes error message into revert string on failure."},"assertEq(bytes32[],bytes32[])":{"notice":"Asserts that two arrays of `bytes32` values are equal."},"assertEq(bytes32[],bytes32[],string)":{"notice":"Asserts that two arrays of `bytes32` values are equal and includes error message into revert string on failure."},"assertEq(bytes[],bytes[])":{"notice":"Asserts that two arrays of `bytes` values are equal."},"assertEq(bytes[],bytes[],string)":{"notice":"Asserts that two arrays of `bytes` values are equal and includes error message into revert string on failure."},"assertEq(int256,int256)":{"notice":"Asserts that two `int256` values are equal."},"assertEq(int256,int256,string)":{"notice":"Asserts that two `int256` values are equal and includes error message into revert string on failure."},"assertEq(int256[],int256[])":{"notice":"Asserts that two arrays of `int256` values are equal."},"assertEq(int256[],int256[],string)":{"notice":"Asserts that two arrays of `int256` values are equal and includes error message into revert string on failure."},"assertEq(string,string)":{"notice":"Asserts that two `string` values are equal."},"assertEq(string,string,string)":{"notice":"Asserts that two `string` values are equal and includes error message into revert string on failure."},"assertEq(string[],string[])":{"notice":"Asserts that two arrays of `string` values are equal."},"assertEq(string[],string[],string)":{"notice":"Asserts that two arrays of `string` values are equal and includes error message into revert string on failure."},"assertEq(uint256,uint256)":{"notice":"Asserts that two `uint256` values are equal."},"assertEq(uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are equal and includes error message into revert string on failure."},"assertEq(uint256[],uint256[])":{"notice":"Asserts that two arrays of `uint256 values are equal."},"assertEq(uint256[],uint256[],string)":{"notice":"Asserts that two arrays of `uint256` values are equal and includes error message into revert string on failure."},"assertEqDecimal(int256,int256,uint256)":{"notice":"Asserts that two `int256` values are equal, formatting them with decimals in failure message."},"assertEqDecimal(int256,int256,uint256,string)":{"notice":"Asserts that two `int256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertEqDecimal(uint256,uint256,uint256)":{"notice":"Asserts that two `uint256` values are equal, formatting them with decimals in failure message."},"assertEqDecimal(uint256,uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertFalse(bool)":{"notice":"Asserts that the given condition is false."},"assertFalse(bool,string)":{"notice":"Asserts that the given condition is false and includes error message into revert string on failure."},"assertGe(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second."},"assertGe(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure."},"assertGe(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second."},"assertGe(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure."},"assertGeDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message."},"assertGeDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertGeDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message."},"assertGeDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertGt(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be greater than second."},"assertGt(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than second. Includes error message into revert string on failure."},"assertGt(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second."},"assertGt(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second. Includes error message into revert string on failure."},"assertGtDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message."},"assertGtDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertGtDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message."},"assertGtDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLe(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second."},"assertLe(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure."},"assertLe(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second."},"assertLe(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure."},"assertLeDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message."},"assertLeDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLeDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message."},"assertLeDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLt(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be less than second."},"assertLt(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than second. Includes error message into revert string on failure."},"assertLt(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than second."},"assertLt(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than second. Includes error message into revert string on failure."},"assertLtDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message."},"assertLtDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLtDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message."},"assertLtDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertNotEq(address,address)":{"notice":"Asserts that two `address` values are not equal."},"assertNotEq(address,address,string)":{"notice":"Asserts that two `address` values are not equal and includes error message into revert string on failure."},"assertNotEq(address[],address[])":{"notice":"Asserts that two arrays of `address` values are not equal."},"assertNotEq(address[],address[],string)":{"notice":"Asserts that two arrays of `address` values are not equal and includes error message into revert string on failure."},"assertNotEq(bool,bool)":{"notice":"Asserts that two `bool` values are not equal."},"assertNotEq(bool,bool,string)":{"notice":"Asserts that two `bool` values are not equal and includes error message into revert string on failure."},"assertNotEq(bool[],bool[])":{"notice":"Asserts that two arrays of `bool` values are not equal."},"assertNotEq(bool[],bool[],string)":{"notice":"Asserts that two arrays of `bool` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes,bytes)":{"notice":"Asserts that two `bytes` values are not equal."},"assertNotEq(bytes,bytes,string)":{"notice":"Asserts that two `bytes` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes32,bytes32)":{"notice":"Asserts that two `bytes32` values are not equal."},"assertNotEq(bytes32,bytes32,string)":{"notice":"Asserts that two `bytes32` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes32[],bytes32[])":{"notice":"Asserts that two arrays of `bytes32` values are not equal."},"assertNotEq(bytes32[],bytes32[],string)":{"notice":"Asserts that two arrays of `bytes32` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes[],bytes[])":{"notice":"Asserts that two arrays of `bytes` values are not equal."},"assertNotEq(bytes[],bytes[],string)":{"notice":"Asserts that two arrays of `bytes` values are not equal and includes error message into revert string on failure."},"assertNotEq(int256,int256)":{"notice":"Asserts that two `int256` values are not equal."},"assertNotEq(int256,int256,string)":{"notice":"Asserts that two `int256` values are not equal and includes error message into revert string on failure."},"assertNotEq(int256[],int256[])":{"notice":"Asserts that two arrays of `int256` values are not equal."},"assertNotEq(int256[],int256[],string)":{"notice":"Asserts that two arrays of `int256` values are not equal and includes error message into revert string on failure."},"assertNotEq(string,string)":{"notice":"Asserts that two `string` values are not equal."},"assertNotEq(string,string,string)":{"notice":"Asserts that two `string` values are not equal and includes error message into revert string on failure."},"assertNotEq(string[],string[])":{"notice":"Asserts that two arrays of `string` values are not equal."},"assertNotEq(string[],string[],string)":{"notice":"Asserts that two arrays of `string` values are not equal and includes error message into revert string on failure."},"assertNotEq(uint256,uint256)":{"notice":"Asserts that two `uint256` values are not equal."},"assertNotEq(uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are not equal and includes error message into revert string on failure."},"assertNotEq(uint256[],uint256[])":{"notice":"Asserts that two arrays of `uint256` values are not equal."},"assertNotEq(uint256[],uint256[],string)":{"notice":"Asserts that two arrays of `uint256` values are not equal and includes error message into revert string on failure."},"assertNotEqDecimal(int256,int256,uint256)":{"notice":"Asserts that two `int256` values are not equal, formatting them with decimals in failure message."},"assertNotEqDecimal(int256,int256,uint256,string)":{"notice":"Asserts that two `int256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertNotEqDecimal(uint256,uint256,uint256)":{"notice":"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message."},"assertNotEqDecimal(uint256,uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertTrue(bool)":{"notice":"Asserts that the given condition is true."},"assertTrue(bool,string)":{"notice":"Asserts that the given condition is true and includes error message into revert string on failure."},"assume(bool)":{"notice":"If the condition is false, discard this run's fuzz inputs and generate new ones."},"breakpoint(string)":{"notice":"Writes a breakpoint to jump to in the debugger."},"breakpoint(string,bool)":{"notice":"Writes a conditional breakpoint to jump to in the debugger."},"broadcast()":{"notice":"Using the address that calls the test contract, has the next call (at this call depth only) create a transaction that can later be signed and sent onchain."},"broadcast(address)":{"notice":"Has the next call (at this call depth only) create a transaction with the address provided as the sender that can later be signed and sent onchain."},"broadcast(uint256)":{"notice":"Has the next call (at this call depth only) create a transaction with the private key provided as the sender that can later be signed and sent onchain."},"closeFile(string)":{"notice":"Closes file for reading, resetting the offset and allowing to read it from beginning with readLine. `path` is relative to the project root."},"computeCreate2Address(bytes32,bytes32)":{"notice":"Compute the address of a contract created with CREATE2 using the default CREATE2 deployer."},"computeCreate2Address(bytes32,bytes32,address)":{"notice":"Compute the address of a contract created with CREATE2 using the given CREATE2 deployer."},"computeCreateAddress(address,uint256)":{"notice":"Compute the address a contract will be deployed at for a given deployer address and nonce."},"copyFile(string,string)":{"notice":"Copies the contents of one file to another. This function will **overwrite** the contents of `to`. On success, the total number of bytes copied is returned and it is equal to the length of the `to` file as reported by `metadata`. Both `from` and `to` are relative to the project root."},"createDir(string,bool)":{"notice":"Creates a new, empty directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - User lacks permissions to modify `path`. - A parent of the given path doesn't exist and `recursive` is false. - `path` already exists and `recursive` is false. `path` is relative to the project root."},"createWallet(string)":{"notice":"Derives a private key from the name, labels the account with that name, and returns the wallet."},"createWallet(uint256)":{"notice":"Generates a wallet from the private key and returns the wallet."},"createWallet(uint256,string)":{"notice":"Generates a wallet from the private key, labels the account with that name, and returns the wallet."},"deriveKey(string,string,uint32)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) at `{derivationPath}{index}`."},"deriveKey(string,string,uint32,string)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at `{derivationPath}{index}`."},"deriveKey(string,uint32)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) at the derivation path `m/44'/60'/0'/0/{index}`."},"deriveKey(string,uint32,string)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at the derivation path `m/44'/60'/0'/0/{index}`."},"envAddress(string)":{"notice":"Gets the environment variable `name` and parses it as `address`. Reverts if the variable was not found or could not be parsed."},"envAddress(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envBool(string)":{"notice":"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable was not found or could not be parsed."},"envBool(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envBytes(string)":{"notice":"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable was not found or could not be parsed."},"envBytes(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envBytes32(string)":{"notice":"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable was not found or could not be parsed."},"envBytes32(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envInt(string)":{"notice":"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable was not found or could not be parsed."},"envInt(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envOr(string,address)":{"notice":"Gets the environment variable `name` and parses it as `address`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,bool)":{"notice":"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,bytes)":{"notice":"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,bytes32)":{"notice":"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,int256)":{"notice":"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string)":{"notice":"Gets the environment variable `name` and parses it as `string`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,address[])":{"notice":"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,bool[])":{"notice":"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,bytes32[])":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,bytes[])":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,int256[])":{"notice":"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,string[])":{"notice":"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,uint256[])":{"notice":"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,uint256)":{"notice":"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envString(string)":{"notice":"Gets the environment variable `name` and parses it as `string`. Reverts if the variable was not found or could not be parsed."},"envString(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envUint(string)":{"notice":"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable was not found or could not be parsed."},"envUint(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"eth_getLogs(uint256,uint256,address,bytes32[])":{"notice":"Gets all the logs according to specified filter."},"exists(string)":{"notice":"Returns true if the given path points to an existing entity, else returns false."},"ffi(string[])":{"notice":"Performs a foreign function call via the terminal."},"fsMetadata(string)":{"notice":"Given a path, query the file system to get information about a file, directory, etc."},"getBlockNumber()":{"notice":"Gets the current `block.number`. You should use this instead of `block.number` if you use `vm.roll`, as `block.number` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180"},"getBlockTimestamp()":{"notice":"Gets the current `block.timestamp`. You should use this instead of `block.timestamp` if you use `vm.warp`, as `block.timestamp` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180"},"getCode(string)":{"notice":"Gets the creation bytecode from an artifact file. Takes in the relative path to the json file."},"getDeployedCode(string)":{"notice":"Gets the deployed bytecode from an artifact file. Takes in the relative path to the json file."},"getLabel(address)":{"notice":"Gets the label for the specified address."},"getMappingKeyAndParentOf(address,bytes32)":{"notice":"Gets the map key and parent of a mapping at a given slot, for a given address."},"getMappingLength(address,bytes32)":{"notice":"Gets the number of elements in the mapping at the given slot, for a given address."},"getMappingSlotAt(address,bytes32,uint256)":{"notice":"Gets the elements at index idx of the mapping at the given slot, for a given address. The index must be less than the length of the mapping (i.e. the number of keys in the mapping)."},"getNonce((address,uint256,uint256,uint256))":{"notice":"Get a `Wallet`'s nonce."},"getNonce(address)":{"notice":"Gets the nonce of an account."},"getRecordedLogs()":{"notice":"Gets all the recorded logs."},"isDir(string)":{"notice":"Returns true if the path exists on disk and is pointing at a directory, else returns false."},"isFile(string)":{"notice":"Returns true if the path exists on disk and is pointing at a regular file, else returns false."},"keyExists(string,string)":{"notice":"Checks if `key` exists in a JSON object `keyExists` is being deprecated in favor of `keyExistsJson`. It will be removed in future versions."},"keyExistsJson(string,string)":{"notice":"Checks if `key` exists in a JSON object."},"keyExistsToml(string,string)":{"notice":"Checks if `key` exists in a TOML table."},"label(address,string)":{"notice":"Labels an address in call traces."},"load(address,bytes32)":{"notice":"Loads a storage slot from an address."},"parseAddress(string)":{"notice":"Parses the given `string` into an `address`."},"parseBool(string)":{"notice":"Parses the given `string` into a `bool`."},"parseBytes(string)":{"notice":"Parses the given `string` into `bytes`."},"parseBytes32(string)":{"notice":"Parses the given `string` into a `bytes32`."},"parseInt(string)":{"notice":"Parses the given `string` into a `int256`."},"parseJson(string)":{"notice":"ABI-encodes a JSON object."},"parseJson(string,string)":{"notice":"ABI-encodes a JSON object at `key`."},"parseJsonAddress(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `address`."},"parseJsonAddressArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `address[]`."},"parseJsonBool(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bool`."},"parseJsonBoolArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bool[]`."},"parseJsonBytes(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes`."},"parseJsonBytes32(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes32`."},"parseJsonBytes32Array(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes32[]`."},"parseJsonBytesArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes[]`."},"parseJsonInt(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `int256`."},"parseJsonIntArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `int256[]`."},"parseJsonKeys(string,string)":{"notice":"Returns an array of all the keys in a JSON object."},"parseJsonString(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `string`."},"parseJsonStringArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `string[]`."},"parseJsonUint(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `uint256`."},"parseJsonUintArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `uint256[]`."},"parseToml(string)":{"notice":"ABI-encodes a TOML table."},"parseToml(string,string)":{"notice":"ABI-encodes a TOML table at `key`."},"parseTomlAddress(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `address`."},"parseTomlAddressArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `address[]`."},"parseTomlBool(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bool`."},"parseTomlBoolArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bool[]`."},"parseTomlBytes(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bytes`."},"parseTomlBytes32(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bytes32`."},"parseTomlBytes32Array(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bytes32[]`."},"parseTomlBytesArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bytes[]`."},"parseTomlInt(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `int256`."},"parseTomlIntArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `int256[]`."},"parseTomlKeys(string,string)":{"notice":"Returns an array of all the keys in a TOML table."},"parseTomlString(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `string`."},"parseTomlStringArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `string[]`."},"parseTomlUint(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `uint256`."},"parseTomlUintArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `uint256[]`."},"parseUint(string)":{"notice":"Parses the given `string` into a `uint256`."},"pauseGasMetering()":{"notice":"Pauses gas metering (i.e. gas usage is not counted). Noop if already paused."},"projectRoot()":{"notice":"Get the path of the current project root."},"prompt(string)":{"notice":"Prompts the user for a string value in the terminal."},"promptSecret(string)":{"notice":"Prompts the user for a hidden string value in the terminal."},"readDir(string)":{"notice":"Reads the directory at the given path recursively, up to `maxDepth`. `maxDepth` defaults to 1, meaning only the direct children of the given directory will be returned. Follows symbolic links if `followLinks` is true."},"readDir(string,uint64)":{"notice":"See `readDir(string)`."},"readDir(string,uint64,bool)":{"notice":"See `readDir(string)`."},"readFile(string)":{"notice":"Reads the entire content of file to string. `path` is relative to the project root."},"readFileBinary(string)":{"notice":"Reads the entire content of file as binary. `path` is relative to the project root."},"readLine(string)":{"notice":"Reads next line of file to string."},"readLink(string)":{"notice":"Reads a symbolic link, returning the path that the link points to. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` is not a symbolic link. - `path` does not exist."},"record()":{"notice":"Records all storage reads and writes."},"recordLogs()":{"notice":"Record all the transaction logs."},"rememberKey(uint256)":{"notice":"Adds a private key to the local forge wallet and returns the address."},"removeDir(string,bool)":{"notice":"Removes a directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` doesn't exist. - `path` isn't a directory. - User lacks permissions to modify `path`. - The directory is not empty and `recursive` is false. `path` is relative to the project root."},"removeFile(string)":{"notice":"Removes a file from the filesystem. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` points to a directory. - The file doesn't exist. - The user lacks permissions to remove the file. `path` is relative to the project root."},"replace(string,string,string)":{"notice":"Replaces occurrences of `from` in the given `string` with `to`."},"resumeGasMetering()":{"notice":"Resumes gas metering (i.e. gas usage is counted again). Noop if already on."},"rpc(string,string)":{"notice":"Performs an Ethereum JSON-RPC request to the current fork URL."},"rpcUrl(string)":{"notice":"Returns the RPC url for the given alias."},"rpcUrlStructs()":{"notice":"Returns all rpc urls and their aliases as structs."},"rpcUrls()":{"notice":"Returns all rpc urls and their aliases `[alias, url][]`."},"serializeAddress(string,string,address)":{"notice":"See `serializeJson`."},"serializeAddress(string,string,address[])":{"notice":"See `serializeJson`."},"serializeBool(string,string,bool)":{"notice":"See `serializeJson`."},"serializeBool(string,string,bool[])":{"notice":"See `serializeJson`."},"serializeBytes(string,string,bytes)":{"notice":"See `serializeJson`."},"serializeBytes(string,string,bytes[])":{"notice":"See `serializeJson`."},"serializeBytes32(string,string,bytes32)":{"notice":"See `serializeJson`."},"serializeBytes32(string,string,bytes32[])":{"notice":"See `serializeJson`."},"serializeInt(string,string,int256)":{"notice":"See `serializeJson`."},"serializeInt(string,string,int256[])":{"notice":"See `serializeJson`."},"serializeJson(string,string)":{"notice":"Serializes a key and value to a JSON object stored in-memory that can be later written to a file. Returns the stringified version of the specific JSON file up to that moment."},"serializeString(string,string,string)":{"notice":"See `serializeJson`."},"serializeString(string,string,string[])":{"notice":"See `serializeJson`."},"serializeUint(string,string,uint256)":{"notice":"See `serializeJson`."},"serializeUint(string,string,uint256[])":{"notice":"See `serializeJson`."},"setEnv(string,string)":{"notice":"Sets environment variables."},"sign((address,uint256,uint256,uint256),bytes32)":{"notice":"Signs data with a `Wallet`."},"sign(uint256,bytes32)":{"notice":"Signs `digest` with `privateKey` using the secp256k1 curve."},"signP256(uint256,bytes32)":{"notice":"Signs `digest` with `privateKey` using the secp256r1 curve."},"sleep(uint256)":{"notice":"Suspends execution of the main thread for `duration` milliseconds."},"split(string,string)":{"notice":"Splits the given `string` into an array of strings divided by the `delimiter`."},"startBroadcast()":{"notice":"Using the address that calls the test contract, has all subsequent calls (at this call depth only) create transactions that can later be signed and sent onchain."},"startBroadcast(address)":{"notice":"Has all subsequent calls (at this call depth only) create transactions with the address provided that can later be signed and sent onchain."},"startBroadcast(uint256)":{"notice":"Has all subsequent calls (at this call depth only) create transactions with the private key provided that can later be signed and sent onchain."},"startMappingRecording()":{"notice":"Starts recording all map SSTOREs for later retrieval."},"startStateDiffRecording()":{"notice":"Record all account accesses as part of CREATE, CALL or SELFDESTRUCT opcodes in order, along with the context of the calls"},"stopAndReturnStateDiff()":{"notice":"Returns an ordered array of all account accesses from a `vm.startStateDiffRecording` session."},"stopBroadcast()":{"notice":"Stops collecting onchain transactions."},"stopMappingRecording()":{"notice":"Stops recording all map SSTOREs for later retrieval and clears the recorded data."},"toBase64(bytes)":{"notice":"Encodes a `bytes` value to a base64 string."},"toBase64(string)":{"notice":"Encodes a `string` value to a base64 string."},"toBase64URL(bytes)":{"notice":"Encodes a `bytes` value to a base64url string."},"toBase64URL(string)":{"notice":"Encodes a `string` value to a base64url string."},"toLowercase(string)":{"notice":"Converts the given `string` value to Lowercase."},"toString(address)":{"notice":"Converts the given value to a `string`."},"toString(bool)":{"notice":"Converts the given value to a `string`."},"toString(bytes)":{"notice":"Converts the given value to a `string`."},"toString(bytes32)":{"notice":"Converts the given value to a `string`."},"toString(int256)":{"notice":"Converts the given value to a `string`."},"toString(uint256)":{"notice":"Converts the given value to a `string`."},"toUppercase(string)":{"notice":"Converts the given `string` value to Uppercase."},"trim(string)":{"notice":"Trims leading and trailing whitespace from the given `string` value."},"tryFfi(string[])":{"notice":"Performs a foreign function call via terminal and returns the exit code, stdout, and stderr."},"unixTime()":{"notice":"Returns the time since unix epoch in milliseconds."},"writeFile(string,string)":{"notice":"Writes data to file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root."},"writeFileBinary(string,bytes)":{"notice":"Writes binary data to a file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root."},"writeJson(string,string)":{"notice":"Write a serialized JSON object to a file. If the file exists, it will be overwritten."},"writeJson(string,string,string)":{"notice":"Write a serialized JSON object to an **existing** JSON file, replacing a value with key = This is useful to replace a specific value of a JSON file, without having to parse the entire thing."},"writeLine(string,string)":{"notice":"Writes line to file, creating a file if it does not exist. `path` is relative to the project root."},"writeToml(string,string)":{"notice":"Takes serialized JSON, converts to TOML and write a serialized TOML to a file."},"writeToml(string,string,string)":{"notice":"Takes serialized JSON, converts to TOML and write a serialized TOML table to an **existing** TOML file, replacing a value with key = This is useful to replace a specific value of a TOML file, without having to parse the entire thing."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Vm.sol":"VmSafe"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/Vm.sol":{"keccak256":"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456","urls":["bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a","dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK"],"license":"MIT OR Apache-2.0"}},"version":1},"id":13} \ No newline at end of file diff --git a/evm/out/_buildRuntime.s.sol/buildRuntime.json b/evm/out/_buildRuntime.s.sol/buildRuntime.json deleted file mode 100644 index 3e19e10..0000000 --- a/evm/out/_buildRuntime.s.sol/buildRuntime.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"IS_SCRIPT","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"run","inputs":[],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x608080604052346026576201000162ff00ff19600c541617600c55610606908161002b8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f5f3560e01c8063c0406226146100585763f8ccbf4714610030575f80fd5b34610055578060031936011261005557602060ff600c5460101c166040519015158152f35b80fd5b50346101ff575f3660031901126101ff5761007161031c565b60405163f877cb1960e01b815260206004820152601460248201527317d7d41493d4115313115497d0d3d395149050d560621b6044820152905f82606481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9182156101f4575f92610229575b5060405163f877cb1960e01b81526020600482015260146024820152735f5f50524f50454c4c45525f4f55545f46494c4560601b6044820152905f82606481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9182156101f4575f92610203575b5061014391926103ba565b90813b5f6101508261027b565b9361015e6040519586610245565b82855260208501903c737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101ff576101ac5f916101be6040519485938493623e43f960e71b85526040600486015260448501906102f8565b838103600319016024850152906102f8565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156101f4576101e6575080f35b6101f291505f90610245565b005b6040513d5f823e3d90fd5b5f80fd5b6101439250610223903d805f833e61021b8183610245565b810190610297565b91610138565b61023e9192503d805f833e61021b8183610245565b905f6100d4565b90601f8019910116810190811067ffffffffffffffff82111761026757604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161026757601f01601f191660200190565b6020818303126101ff5780519067ffffffffffffffff82116101ff570181601f820112156101ff576020815191016102ce8261027b565b926102dc6040519485610245565b828452828201116101ff57815f926020928386015e8301015290565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6040516326bdd78360e11b815260206004820152601760248201527f5f5f50524f50454c4c45525f4445504c4f595f4152475300000000000000000060448201525f81606481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa5f918161039e575b5061039b5750604051610395602082610245565b5f815290565b90565b6103b39192503d805f833e61021b8183610245565b905f610381565b908051155f146104a657505f6103ec9160405180938192638d1cc92560e01b83526020600484015260248301906102f8565b0381737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156101f4575f9161048c575b506020815191015ff06001600160a01b0381161561042e5790565b60405162461bcd60e51b815260206004820152603060248201527f537464436865617473206465706c6f79436f646528737472696e67293a20446560448201526f383637bcb6b2b73a103330b4b632b21760811b6064820152608490fd5b6104a091503d805f833e61021b8183610245565b5f610413565b5f6104cd9260405180948192638d1cc92560e01b83526020600484015260248301906102f8565b0381737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9182156101f4575f926105ad575b50610533602091826040519384928180850197805191829101895e8401908282015f8152815193849201905e01015f815203601f198101835282610245565b51905ff06001600160a01b038116156105495790565b60405162461bcd60e51b815260206004820152603660248201527f537464436865617473206465706c6f79436f646528737472696e672c6279746560448201527539949d102232b83637bcb6b2b73a103330b4b632b21760511b6064820152608490fd5b60209192506105c8610533913d805f833e61021b8183610245565b9291506104f456fea26469706673582212202bc0bde0995ae906a53f3752e9a7ebc1a1a7004630211a84a89a027a56265d2364736f6c634300081b0033","sourceMap":"104:982:19:-:0;;;;;;;;;;3166:4:2;104:982:19;;;3166:4:2;104:982:19;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f5f3560e01c8063c0406226146100585763f8ccbf4714610030575f80fd5b34610055578060031936011261005557602060ff600c5460101c166040519015158152f35b80fd5b50346101ff575f3660031901126101ff5761007161031c565b60405163f877cb1960e01b815260206004820152601460248201527317d7d41493d4115313115497d0d3d395149050d560621b6044820152905f82606481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9182156101f4575f92610229575b5060405163f877cb1960e01b81526020600482015260146024820152735f5f50524f50454c4c45525f4f55545f46494c4560601b6044820152905f82606481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9182156101f4575f92610203575b5061014391926103ba565b90813b5f6101508261027b565b9361015e6040519586610245565b82855260208501903c737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101ff576101ac5f916101be6040519485938493623e43f960e71b85526040600486015260448501906102f8565b838103600319016024850152906102f8565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156101f4576101e6575080f35b6101f291505f90610245565b005b6040513d5f823e3d90fd5b5f80fd5b6101439250610223903d805f833e61021b8183610245565b810190610297565b91610138565b61023e9192503d805f833e61021b8183610245565b905f6100d4565b90601f8019910116810190811067ffffffffffffffff82111761026757604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161026757601f01601f191660200190565b6020818303126101ff5780519067ffffffffffffffff82116101ff570181601f820112156101ff576020815191016102ce8261027b565b926102dc6040519485610245565b828452828201116101ff57815f926020928386015e8301015290565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6040516326bdd78360e11b815260206004820152601760248201527f5f5f50524f50454c4c45525f4445504c4f595f4152475300000000000000000060448201525f81606481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa5f918161039e575b5061039b5750604051610395602082610245565b5f815290565b90565b6103b39192503d805f833e61021b8183610245565b905f610381565b908051155f146104a657505f6103ec9160405180938192638d1cc92560e01b83526020600484015260248301906102f8565b0381737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156101f4575f9161048c575b506020815191015ff06001600160a01b0381161561042e5790565b60405162461bcd60e51b815260206004820152603060248201527f537464436865617473206465706c6f79436f646528737472696e67293a20446560448201526f383637bcb6b2b73a103330b4b632b21760811b6064820152608490fd5b6104a091503d805f833e61021b8183610245565b5f610413565b5f6104cd9260405180948192638d1cc92560e01b83526020600484015260248301906102f8565b0381737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9182156101f4575f926105ad575b50610533602091826040519384928180850197805191829101895e8401908282015f8152815193849201905e01015f815203601f198101835282610245565b51905ff06001600160a01b038116156105495790565b60405162461bcd60e51b815260206004820152603660248201527f537464436865617473206465706c6f79436f646528737472696e672c6279746560448201527539949d102232b83637bcb6b2b73a103330b4b632b21760511b6064820152608490fd5b60209192506105c8610533913d805f833e61021b8183610245565b9291506104f456fea26469706673582212202bc0bde0995ae906a53f3752e9a7ebc1a1a7004630211a84a89a027a56265d2364736f6c634300081b0033","sourceMap":"104:982:19:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;800:28:1;104:982:19;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;104:982:19;;;;202:15;;:::i;:::-;104:982;;-1:-1:-1;;;256:36:19;;1590:14:0;104:982:19;256:36;;1590:14:0;;;;;;-1:-1:-1;;;1590:14:0;;;;104:982:19;-1:-1:-1;104:982:19;256:36;104:982;;256:36;;;;;;;104:982;256:36;;;104:982;-1:-1:-1;104:982:19;;-1:-1:-1;;;330:36:19;;1590:14:0;104:982:19;330:36;;1590:14:0;;;;;;-1:-1:-1;;;1590:14:0;;;;104:982:19;-1:-1:-1;104:982:19;256:36;104:982;;330:36;;;;;;;104:982;330:36;;;104:982;404:40;;;;;:::i;:::-;1590:14:0;;;104:982:19;1590:14:0;;;:::i;:::-;104:982:19;1590:14:0;104:982:19;;1590:14:0;;;:::i;:::-;;;;;;;;;104:982:19;514:45;;;;1590:14:0;104:982:19;;1590:14:0;104:982:19;;1590:14:0;;;;;;;;514:45:19;;104:982;;514:45;;1590:14:0;;;;;;:::i;:::-;;;;-1:-1:-1;;1590:14:0;;;;;104:982:19;1590:14:0;:::i;:::-;514:45:19;;;104:982;514:45;;;;;;;;104:982;;;514:45;;;;104:982;514:45;;:::i;:::-;104:982;514:45;104:982;;1590:14:0;104:982:19;1590:14:0;;;;;514:45:19;104:982;;;330:36;404:40;330:36;;;;;;104:982;330:36;;;;;;:::i;:::-;;;;;:::i;:::-;;;;256;;;;;;;104:982;256:36;;;;;;:::i;:::-;;;;;1590:14:0;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;1590:14:0;;;;;-1:-1:-1;1590:14:0;;;;;;;;;-1:-1:-1;;1590:14:0;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;104:982:19;1590:14:0;104:982:19;;1590:14:0;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;1590:14:0;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;1590:14:0;;;;;;;;-1:-1:-1;;1590:14:0;;;;:::o;572:226:19:-;104:982;;-1:-1:-1;;;648:38:19;;104:982;648:38;;;104:982;;;;;1590:14:0;104:982:19;1590:14:0;;;104:982:19;-1:-1:-1;104:982:19;648:38;104:982;;648:38;;-1:-1:-1;;648:38:19;;;572:226;-1:-1:-1;644:148:19;;1590:14:0;104:982:19;;1590:14:0;104:982:19;1590:14:0;;:::i;:::-;-1:-1:-1;1590:14:0;;772:9:19;:::o;644:148::-;729:11;:::o;648:38::-;;;;;;;-1:-1:-1;648:38:19;;;;;;:::i;:::-;;;;;804:280;;1590:14:0;;936:16:19;932:146;936:11;;;104:982;;291:59:3;104:982:19;;;1590:14:0;;;;;;;18935:16:3;;291:59;18935:16;;;291:59;;;;;;:::i;:::-;18935:16;;104:982:19;18935:16:3;;;;;;;104:982:19;18935:16:3;;;932:146:19;19004:88:3;291:59;19004:88;;;;104:982:19;19004:88:3;-1:-1:-1;;;;;104:982:19;;19110:18:3;104:982:19;;968:31;:::o;104:982::-;;;-1:-1:-1;;;104:982:19;;291:59:3;18935:16;104:982:19;;;;291:59:3;104:982:19;;1590:14:0;104:982:19;1590:14:0;;;104:982:19;-1:-1:-1;;;104:982:19;;;;;;;18935:16:3;;;;;;104:982:19;18935:16:3;;;;;;:::i;:::-;;;;932:146:19;104:982;291:59:3;104:982:19;;;1590:14:0;;;;;;;18549:16:3;;291:59;18549:16;;;291:59;;;;;;:::i;:::-;18549:16;;104:982:19;18549:16:3;;;;;;;104:982:19;18549:16:3;;;932:146:19;104:982;18532:40:3;291:59;104:982:19;;;;18532:40:3;;;;;;;1590:14:0;;;291:59:3;;;;1590:14:0;;;;;;;;104:982:19;1590:14:0;;;;291:59:3;;;;1590:14:0;;;;104:982:19;1590:14:0;;18532:40:3;1590:14:0;;18532:40:3;;;;;;:::i;:::-;18625:88;;104:982:19;18625:88:3;-1:-1:-1;;;;;104:982:19;;18731:18:3;291:59;;1030:37:19;:::o;291:59:3:-;104:982:19;;-1:-1:-1;;;291:59:3;;;18549:16;291:59;;;;;;;1590:14:0;291:59:3;1590:14:0;;;291:59:3;-1:-1:-1;;;291:59:3;;;;;;;18549:16;291:59;18549:16;;;;18532:40;18549:16;;;104:982:19;18549:16:3;;;;;;:::i;:::-;;;;;","linkReferences":{}},"methodIdentifiers":{"IS_SCRIPT()":"f8ccbf47","run()":"c0406226"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"IS_SCRIPT\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"run\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"scripts/_buildRuntime.s.sol\":\"buildRuntime\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/Script.sol\":{\"keccak256\":\"0x2315be74cc2826f9da401bea3da46a10ad6a6efdf73176d79160b453286d0ed2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af0d4dc826911d6cb4d6272ed5cbdb6950e1476141cca328e178b808d848789c\",\"dweb:/ipfs/QmV2ytjUEkV84VtdMs1nZqQTBoVE987cHboQMpiha5yo3e\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b\",\"dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54\",\"dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678\",\"dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a\",\"dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"scripts/_buildRuntime.s.sol\":{\"keccak256\":\"0x0d2c139e8e126d7e192920d8821f5595a6db0e1afce1aa2c765781181589e818\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://633b74d6259c8da777e9409406a14e69689cbcb42ac8d6ba8afc6f0da873d8a2\",\"dweb:/ipfs/Qma8NQSG4heETeZSU8dz1EruwrjFku9c17QGYJdn9uwCSo\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"IS_SCRIPT","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"run"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"scripts/_buildRuntime.s.sol":"buildRuntime"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/Script.sol":{"keccak256":"0x2315be74cc2826f9da401bea3da46a10ad6a6efdf73176d79160b453286d0ed2","urls":["bzz-raw://af0d4dc826911d6cb4d6272ed5cbdb6950e1476141cca328e178b808d848789c","dweb:/ipfs/QmV2ytjUEkV84VtdMs1nZqQTBoVE987cHboQMpiha5yo3e"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef","urls":["bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b","dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d","urls":["bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54","dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3","urls":["bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678","dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456","urls":["bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a","dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"scripts/_buildRuntime.s.sol":{"keccak256":"0x0d2c139e8e126d7e192920d8821f5595a6db0e1afce1aa2c765781181589e818","urls":["bzz-raw://633b74d6259c8da777e9409406a14e69689cbcb42ac8d6ba8afc6f0da873d8a2","dweb:/ipfs/Qma8NQSG4heETeZSU8dz1EruwrjFku9c17QGYJdn9uwCSo"],"license":"AGPL-3.0-or-later"}},"version":1},"id":19} diff --git a/evm/out/build-info/1773b8b97607d36c.json b/evm/out/build-info/1773b8b97607d36c.json deleted file mode 100644 index f9e7135..0000000 --- a/evm/out/build-info/1773b8b97607d36c.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"1773b8b97607d36c","source_id_to_path":{"0":"lib/forge-std/src/Base.sol","1":"lib/forge-std/src/StdAssertions.sol","2":"lib/forge-std/src/StdChains.sol","3":"lib/forge-std/src/StdCheats.sol","4":"lib/forge-std/src/StdError.sol","5":"lib/forge-std/src/StdInvariant.sol","6":"lib/forge-std/src/StdJson.sol","7":"lib/forge-std/src/StdMath.sol","8":"lib/forge-std/src/StdStorage.sol","9":"lib/forge-std/src/StdStyle.sol","10":"lib/forge-std/src/StdToml.sol","11":"lib/forge-std/src/StdUtils.sol","12":"lib/forge-std/src/Test.sol","13":"lib/forge-std/src/Vm.sol","14":"lib/forge-std/src/console.sol","15":"lib/forge-std/src/console2.sol","16":"lib/forge-std/src/interfaces/IERC165.sol","17":"lib/forge-std/src/interfaces/IERC20.sol","18":"lib/forge-std/src/interfaces/IERC721.sol","19":"lib/forge-std/src/interfaces/IMulticall3.sol","20":"lib/forge-std/src/mocks/MockERC20.sol","21":"lib/forge-std/src/mocks/MockERC721.sol","22":"lib/forge-std/src/safeconsole.sol","23":"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol","24":"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol","25":"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol","26":"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol","27":"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","28":"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol","29":"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","30":"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC4626.sol","31":"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol","32":"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol","33":"lib/openzeppelin-contracts/contracts/utils/Address.sol","34":"lib/openzeppelin-contracts/contracts/utils/Context.sol","35":"lib/openzeppelin-contracts/contracts/utils/Errors.sol","36":"lib/openzeppelin-contracts/contracts/utils/Panic.sol","37":"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","38":"lib/openzeppelin-contracts/contracts/utils/math/Math.sol","39":"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol","40":"src/angle/AngleAdapter.sol","41":"src/balancer-v2/BalancerV2SwapAdapter.sol","42":"src/balancer-v3/BalancerV3SwapAdapter.sol","43":"src/balancer-v3/lib/BalancerCustomWrapHelpers.sol","44":"src/balancer-v3/lib/BalancerERC20Helpers.sol","45":"src/balancer-v3/lib/BalancerERC4626Helpers.sol","46":"src/balancer-v3/lib/BalancerInterfaces.sol","47":"src/balancer-v3/lib/BalancerStorage.sol","48":"src/balancer-v3/lib/BalancerSwapHelpers.sol","49":"src/balancer-v3/lib/BalancerV3Errors.sol","50":"src/curve/CurveAdapter.sol","51":"src/etherfi/EtherfiAdapter.sol","52":"src/integral/IntegralSwapAdapter.sol","53":"src/interfaces/ISwapAdapter.sol","54":"src/interfaces/ISwapAdapterTypes.sol","55":"src/interfaces/ISwapAdapterV2.sol","56":"src/interfaces/ISwapExecutor.sol","57":"src/libraries/CustomBytesAppend.sol","58":"src/libraries/EfficientERC20.sol","59":"src/libraries/FractionMath.sol","60":"src/maverick-v2/MaverickV2SwapAdapter.sol","61":"src/sfrax/FraxV3SFraxAdapter.sol","62":"src/sfraxeth/FraxV3FrxEthAdapter.sol","63":"src/template/TemplateSwapAdapter.sol","64":"src/uniswap-v2/UniswapV2SwapAdapter.sol","65":"test/AdapterTest.sol","66":"test/AngleAdapter.t.sol","67":"test/BalancerV2SwapAdapter.t.sol","68":"test/BalancerV3SwapAdapter.t.sol","69":"test/Constants.sol","70":"test/CurveAdapter.t.sol","71":"test/EtherfiAdapter.t.sol","72":"test/FraxV3FrxEthAdapter.t.sol","73":"test/FraxV3SFraxAdapter.t.sol","74":"test/IntegralSwapAdapter.t.sol","75":"test/MaverickV2SwapAdapter.t.sol","76":"test/TemplateSwapAdapter.t.sol","77":"test/UniswapV2SwapAdapter.t.sol","78":"test/interfaces/IBufferRouter.sol","79":"test/mocks/MockSETHx.sol","80":"test/mocks/MockSGOETH.sol","81":"test/mocks/MockSUSDC.sol"},"language":"Solidity"} \ No newline at end of file diff --git a/evm/out/console.sol/console.json b/evm/out/console.sol/console.json deleted file mode 100644 index fabc573..0000000 --- a/evm/out/console.sol/console.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220b05549f2b923141f16aa323b0e07b92516e9266035b613b10b07e55cf476ea9c64736f6c634300081b0033","sourceMap":"66:66622:14:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea2646970667358221220b05549f2b923141f16aa323b0e07b92516e9266035b613b10b07e55cf476ea9c64736f6c634300081b0033","sourceMap":"66:66622:14:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/console.sol\":\"console\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/console.sol":"console"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"}},"version":1},"id":14} \ No newline at end of file diff --git a/evm/out/console2.sol/console2.json b/evm/out/console2.sol/console2.json deleted file mode 100644 index 426274f..0000000 --- a/evm/out/console2.sol/console2.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea264697066735822122090dd5440fd8cc0419aa2089d3e5af5cc61e91e857ce520b70f5b3f3463cfc82964736f6c634300081b0033","sourceMap":"525:69152:15:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea264697066735822122090dd5440fd8cc0419aa2089d3e5af5cc61e91e857ce520b70f5b3f3463cfc82964736f6c634300081b0033","sourceMap":"525:69152:15:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"The original console.sol uses `int` and `uint` for computing function selectors, but it should use `int256` and `uint256`. This modified version fixes that. This version is recommended over `console.sol` if you don't need compatibility with Hardhat as the logs will show up in forge stack traces. If you do need compatibility with Hardhat, you must use `console.sol`. Reference: https://github.com/NomicFoundation/hardhat/issues/2178\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/console2.sol\":\"console2\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/console2.sol":"console2"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"}},"version":1},"id":15} \ No newline at end of file diff --git a/evm/out/draft-IERC6093.sol/IERC1155Errors.json b/evm/out/draft-IERC6093.sol/IERC1155Errors.json deleted file mode 100644 index 03f012a..0000000 --- a/evm/out/draft-IERC6093.sol/IERC1155Errors.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"ERC1155InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC1155InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155InvalidArrayLength","inputs":[{"name":"idsLength","type":"uint256","internalType":"uint256"},{"name":"valuesLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC1155InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155MissingApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\",\"errors\":{\"ERC1155InsufficientBalance(address,uint256,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.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC1155InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC1155InvalidArrayLength(uint256,uint256)\":[{\"details\":\"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.\",\"params\":{\"idsLength\":\"Length of the array of token identifiers\",\"valuesLength\":\"Length of the array of token amounts\"}}],\"ERC1155InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC1155InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC1155InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC1155MissingApprovalForAll(address,address)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"owner\":\"Address of the current owner of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":\"IERC1155Errors\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC1155InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC1155InvalidApprover"},{"inputs":[{"internalType":"uint256","name":"idsLength","type":"uint256"},{"internalType":"uint256","name":"valuesLength","type":"uint256"}],"type":"error","name":"ERC1155InvalidArrayLength"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC1155InvalidOperator"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC1155InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC1155InvalidSender"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC1155MissingApprovalForAll"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":"IERC1155Errors"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"}},"version":1},"id":27} \ No newline at end of file diff --git a/evm/out/draft-IERC6093.sol/IERC20Errors.json b/evm/out/draft-IERC6093.sol/IERC20Errors.json deleted file mode 100644 index cc124bf..0000000 --- a/evm/out/draft-IERC6093.sol/IERC20Errors.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"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":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"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\"}],\"devdoc\":{\"details\":\"Standard ERC-20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\",\"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.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":\"IERC20Errors\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"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"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":"IERC20Errors"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"}},"version":1},"id":27} \ No newline at end of file diff --git a/evm/out/draft-IERC6093.sol/IERC721Errors.json b/evm/out/draft-IERC6093.sol/IERC721Errors.json deleted file mode 100644 index bf2450b..0000000 --- a/evm/out/draft-IERC6093.sol/IERC721Errors.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"ERC721IncorrectOwner","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InsufficientApproval","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC721InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721NonexistentToken","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":\"IERC721Errors\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721IncorrectOwner"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721InsufficientApproval"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC721InvalidApprover"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC721InvalidOperator"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721InvalidOwner"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC721InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC721InvalidSender"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721NonexistentToken"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":"IERC721Errors"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"}},"version":1},"id":27} \ No newline at end of file diff --git a/evm/out/introspection/IERC165.sol/IERC165.json b/evm/out/introspection/IERC165.sol/IERC165.json deleted file mode 100644 index 0e74799..0000000 --- a/evm/out/introspection/IERC165.sol/IERC165.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[ERC]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"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.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"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."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":"IERC165"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"}},"version":1},"id":37} \ No newline at end of file diff --git a/evm/out/safeconsole.sol/safeconsole.json b/evm/out/safeconsole.sol/safeconsole.json deleted file mode 100644 index d5b4346..0000000 --- a/evm/out/safeconsole.sol/safeconsole.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea26469706673582212200a1c278ca19b0486a71905e41cded0dbe774fc516b6a80a39f124354caa9403b64736f6c634300081b0033","sourceMap":"163:397734:22:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea26469706673582212200a1c278ca19b0486a71905e41cded0dbe774fc516b6a80a39f124354caa9403b64736f6c634300081b0033","sourceMap":"163:397734:22:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"philogy \",\"details\":\"Code generated automatically by script.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/safeconsole.sol\":\"safeconsole\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/safeconsole.sol":"safeconsole"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"}},"version":1},"id":22} \ No newline at end of file diff --git a/protocol-testing/run.Dockerfile b/protocol-testing/run.Dockerfile index 45cf55b..c991a1c 100644 --- a/protocol-testing/run.Dockerfile +++ b/protocol-testing/run.Dockerfile @@ -1,7 +1,13 @@ -# Install cargo-chef -FROM rust:1.89-bookworm AS cargo-chef -WORKDIR /app -RUN cargo install cargo-chef +# =========== Third Party =========== +# Stage 1: Get substreams CLI +FROM ghcr.io/streamingfast/substreams:v1.16.4 AS substreams-cli + +# Stage 2: Install Foundry (Forge) +FROM debian:bookworm AS foundry-builder +WORKDIR /build +RUN apt-get update && apt-get install -y curl git +RUN curl -L https://foundry.paradigm.xyz | bash +RUN /root/.foundry/bin/foundryup # =========== Tycho Indexer =========== # Stage 1: Build tycho-indexer @@ -21,21 +27,12 @@ WORKDIR /build/tycho-protocol-sdk/protocol-testing RUN cargo build --release WORKDIR /build/tycho-protocol-sdk/substreams -COPY ./substreams/target/wasm32-unknown-unknown/release/*.wasm ./target/wasm32-unknown-unknown/release/ +RUN cargo build --target wasm32-unknown-unknown --release WORKDIR /build/tycho-protocol-sdk/evm -COPY ./evm/out ./out - -# =========== Third Party =========== -# Stage 1: Get substreams CLI -FROM ghcr.io/streamingfast/substreams:v1.16.4 AS substreams-cli - -# Stage 2: Install Foundry (Forge) -FROM debian:bookworm AS foundry-builder -WORKDIR /build -RUN apt-get update && apt-get install -y curl git -RUN curl -L https://foundry.paradigm.xyz | bash -RUN /root/.foundry/bin/foundryup +COPY --from=foundry-builder /root/.foundry/bin/forge /usr/local/bin/forge +RUN chmod +x /usr/local/bin/forge +RUN forge build # =========== Final Image =========== FROM debian:bookworm diff --git a/substreams/target/wasm32-unknown-unknown/release/ethereum_ambient.wasm b/substreams/target/wasm32-unknown-unknown/release/ethereum_ambient.wasm deleted file mode 100755 index 4403f44..0000000 Binary files a/substreams/target/wasm32-unknown-unknown/release/ethereum_ambient.wasm and /dev/null differ diff --git a/substreams/target/wasm32-unknown-unknown/release/ethereum_balancer_v2.wasm b/substreams/target/wasm32-unknown-unknown/release/ethereum_balancer_v2.wasm deleted file mode 100755 index 8d21753..0000000 Binary files a/substreams/target/wasm32-unknown-unknown/release/ethereum_balancer_v2.wasm and /dev/null differ diff --git a/substreams/target/wasm32-unknown-unknown/release/ethereum_balancer_v3.wasm b/substreams/target/wasm32-unknown-unknown/release/ethereum_balancer_v3.wasm deleted file mode 100755 index 26d8e37..0000000 Binary files a/substreams/target/wasm32-unknown-unknown/release/ethereum_balancer_v3.wasm and /dev/null differ diff --git a/substreams/target/wasm32-unknown-unknown/release/ethereum_curve.wasm b/substreams/target/wasm32-unknown-unknown/release/ethereum_curve.wasm deleted file mode 100755 index 6327221..0000000 Binary files a/substreams/target/wasm32-unknown-unknown/release/ethereum_curve.wasm and /dev/null differ diff --git a/substreams/target/wasm32-unknown-unknown/release/ethereum_ekubo_v2.wasm b/substreams/target/wasm32-unknown-unknown/release/ethereum_ekubo_v2.wasm deleted file mode 100755 index ea3f37d..0000000 Binary files a/substreams/target/wasm32-unknown-unknown/release/ethereum_ekubo_v2.wasm and /dev/null differ diff --git a/substreams/target/wasm32-unknown-unknown/release/ethereum_maverick_v2.wasm b/substreams/target/wasm32-unknown-unknown/release/ethereum_maverick_v2.wasm deleted file mode 100755 index 05dc849..0000000 Binary files a/substreams/target/wasm32-unknown-unknown/release/ethereum_maverick_v2.wasm and /dev/null differ diff --git a/substreams/target/wasm32-unknown-unknown/release/ethereum_pancakeswap_v3.wasm b/substreams/target/wasm32-unknown-unknown/release/ethereum_pancakeswap_v3.wasm deleted file mode 100755 index 4a21d86..0000000 Binary files a/substreams/target/wasm32-unknown-unknown/release/ethereum_pancakeswap_v3.wasm and /dev/null differ diff --git a/substreams/target/wasm32-unknown-unknown/release/ethereum_sfrax.wasm b/substreams/target/wasm32-unknown-unknown/release/ethereum_sfrax.wasm deleted file mode 100755 index 8cda356..0000000 Binary files a/substreams/target/wasm32-unknown-unknown/release/ethereum_sfrax.wasm and /dev/null differ diff --git a/substreams/target/wasm32-unknown-unknown/release/ethereum_sfraxeth.wasm b/substreams/target/wasm32-unknown-unknown/release/ethereum_sfraxeth.wasm deleted file mode 100755 index 007327c..0000000 Binary files a/substreams/target/wasm32-unknown-unknown/release/ethereum_sfraxeth.wasm and /dev/null differ diff --git a/substreams/target/wasm32-unknown-unknown/release/ethereum_template_factory.wasm b/substreams/target/wasm32-unknown-unknown/release/ethereum_template_factory.wasm deleted file mode 100755 index 6338fb9..0000000 Binary files a/substreams/target/wasm32-unknown-unknown/release/ethereum_template_factory.wasm and /dev/null differ diff --git a/substreams/target/wasm32-unknown-unknown/release/ethereum_template_singleton.wasm b/substreams/target/wasm32-unknown-unknown/release/ethereum_template_singleton.wasm deleted file mode 100755 index 4050597..0000000 Binary files a/substreams/target/wasm32-unknown-unknown/release/ethereum_template_singleton.wasm and /dev/null differ diff --git a/substreams/target/wasm32-unknown-unknown/release/ethereum_uniswap_v2.wasm b/substreams/target/wasm32-unknown-unknown/release/ethereum_uniswap_v2.wasm deleted file mode 100755 index 4227d55..0000000 Binary files a/substreams/target/wasm32-unknown-unknown/release/ethereum_uniswap_v2.wasm and /dev/null differ diff --git a/substreams/target/wasm32-unknown-unknown/release/ethereum_uniswap_v3.wasm b/substreams/target/wasm32-unknown-unknown/release/ethereum_uniswap_v3.wasm deleted file mode 100755 index b4b7679..0000000 Binary files a/substreams/target/wasm32-unknown-unknown/release/ethereum_uniswap_v3.wasm and /dev/null differ diff --git a/substreams/target/wasm32-unknown-unknown/release/ethereum_uniswap_v3_logs_only.wasm b/substreams/target/wasm32-unknown-unknown/release/ethereum_uniswap_v3_logs_only.wasm deleted file mode 100755 index 79976b1..0000000 Binary files a/substreams/target/wasm32-unknown-unknown/release/ethereum_uniswap_v3_logs_only.wasm and /dev/null differ diff --git a/substreams/target/wasm32-unknown-unknown/release/ethereum_uniswap_v4.wasm b/substreams/target/wasm32-unknown-unknown/release/ethereum_uniswap_v4.wasm deleted file mode 100755 index 72232d9..0000000 Binary files a/substreams/target/wasm32-unknown-unknown/release/ethereum_uniswap_v4.wasm and /dev/null differ